diff options
Diffstat (limited to 'mesalib/src')
-rw-r--r-- | mesalib/src/gallium/auxiliary/util/u_dump.h | 3 | ||||
-rw-r--r-- | mesalib/src/gallium/auxiliary/util/u_dump_defines.c | 33 | ||||
-rw-r--r-- | mesalib/src/glsl/Makefile.am | 4 | ||||
-rw-r--r-- | mesalib/src/glsl/glsl_parser_extras.cpp | 2 | ||||
-rw-r--r-- | mesalib/src/glsl/linker.cpp | 5 | ||||
-rw-r--r-- | mesalib/src/glsl/lower_clip_distance.cpp | 5 | ||||
-rw-r--r-- | mesalib/src/mesa/drivers/dri/common/dri_util.c | 6 |
7 files changed, 55 insertions, 3 deletions
diff --git a/mesalib/src/gallium/auxiliary/util/u_dump.h b/mesalib/src/gallium/auxiliary/util/u_dump.h index 71750a635..58e7dfd82 100644 --- a/mesalib/src/gallium/auxiliary/util/u_dump.h +++ b/mesalib/src/gallium/auxiliary/util/u_dump.h @@ -85,6 +85,9 @@ util_dump_tex_mipfilter(unsigned value, boolean shortened); const char * util_dump_tex_filter(unsigned value, boolean shortened); +const char * +util_dump_query_type(unsigned value, boolean shortened); + /* * p_state.h, through a FILE diff --git a/mesalib/src/gallium/auxiliary/util/u_dump_defines.c b/mesalib/src/gallium/auxiliary/util/u_dump_defines.c index cc6268773..03fd15d0c 100644 --- a/mesalib/src/gallium/auxiliary/util/u_dump_defines.c +++ b/mesalib/src/gallium/auxiliary/util/u_dump_defines.c @@ -359,3 +359,36 @@ util_dump_tex_filter_short_names[] = { }; DEFINE_UTIL_DUMP_CONTINUOUS(tex_filter) + + +static const char * +util_dump_query_type_names[] = { + "PIPE_QUERY_OCCLUSION_COUNTER", + "PIPE_QUERY_OCCLUSION_PREDICATE", + "PIPE_QUERY_TIMESTAMP", + "PIPE_QUERY_TIMESTAMP_DISJOINT", + "PIPE_QUERY_TIME_ELAPSED", + "PIPE_QUERY_PRIMITIVES_GENERATED", + "PIPE_QUERY_PRIMITIVES_EMITTED", + "PIPE_QUERY_SO_STATISTICS", + "PIPE_QUERY_SO_OVERFLOW_PREDICATE", + "PIPE_QUERY_GPU_FINISHED", + "PIPE_QUERY_PIPELINE_STATISTICS", +}; + +static const char * +util_dump_query_type_short_names[] = { + "occlusion_counter", + "occlusion_predicate", + "timestamp", + "timestamp_disjoint", + "time_elapsed", + "primitives_generated", + "primitives_emitted", + "so_statistics", + "so_overflow_predicate", + "gpu_finished", + "pipeline_statistics", +}; + +DEFINE_UTIL_DUMP_CONTINUOUS(query_type) diff --git a/mesalib/src/glsl/Makefile.am b/mesalib/src/glsl/Makefile.am index b9ed5b62b..27e180e0a 100644 --- a/mesalib/src/glsl/Makefile.am +++ b/mesalib/src/glsl/Makefile.am @@ -111,7 +111,9 @@ libglcpp_la_SOURCES = \ glcpp_glcpp_SOURCES = \ glcpp/glcpp.c \ $(top_srcdir)/src/mesa/program/prog_hash_table.c -glcpp_glcpp_LDADD = libglcpp.la +glcpp_glcpp_LDADD = \ + libglcpp.la \ + -lm libglsl_la_LIBADD = libglcpp.la libglsl_la_SOURCES = \ diff --git a/mesalib/src/glsl/glsl_parser_extras.cpp b/mesalib/src/glsl/glsl_parser_extras.cpp index f401f03bc..d76d94b7a 100644 --- a/mesalib/src/glsl/glsl_parser_extras.cpp +++ b/mesalib/src/glsl/glsl_parser_extras.cpp @@ -191,6 +191,8 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx, this->gs_input_prim_type = GL_POINTS; this->gs_input_size = 0; this->out_qualifier = new(this) ast_type_qualifier(); + memset(this->atomic_counter_offsets, 0, + sizeof(this->atomic_counter_offsets)); } /** diff --git a/mesalib/src/glsl/linker.cpp b/mesalib/src/glsl/linker.cpp index fac186a63..1366077f7 100644 --- a/mesalib/src/glsl/linker.cpp +++ b/mesalib/src/glsl/linker.cpp @@ -2396,6 +2396,11 @@ done: if (prog->_LinkedShaders[i] == NULL) continue; + /* Do a final validation step to make sure that the IR wasn't + * invalidated by any modifications performed after intrastage linking. + */ + validate_ir_tree(prog->_LinkedShaders[i]->ir); + /* Retain any live IR, but trash the rest. */ reparent_ir(prog->_LinkedShaders[i]->ir, prog->_LinkedShaders[i]->ir); diff --git a/mesalib/src/glsl/lower_clip_distance.cpp b/mesalib/src/glsl/lower_clip_distance.cpp index 682c8fdcd..04fa6d410 100644 --- a/mesalib/src/glsl/lower_clip_distance.cpp +++ b/mesalib/src/glsl/lower_clip_distance.cpp @@ -381,6 +381,11 @@ lower_clip_distance_visitor::fix_lhs(ir_assignment *ir) ir_visitor_status lower_clip_distance_visitor::visit_leave(ir_assignment *ir) { + /* First invoke the base class visitor. This causes handle_rvalue() to be + * called on ir->rhs and ir->condition. + */ + ir_rvalue_visitor::visit_leave(ir); + if (this->is_clip_distance_vec8(ir->lhs) || this->is_clip_distance_vec8(ir->rhs)) { /* LHS or RHS of the assignment is the entire 1D gl_ClipDistance array diff --git a/mesalib/src/mesa/drivers/dri/common/dri_util.c b/mesalib/src/mesa/drivers/dri/common/dri_util.c index 44e47f94f..0bce77ea9 100644 --- a/mesalib/src/mesa/drivers/dri/common/dri_util.c +++ b/mesalib/src/mesa/drivers/dri/common/dri_util.c @@ -407,8 +407,10 @@ driCreateContextAttribs(__DRIscreen *screen, int api, mesa_api = API_OPENGL_CORE; } - if ((flags & ~(__DRI_CTX_FLAG_DEBUG | __DRI_CTX_FLAG_FORWARD_COMPATIBLE)) - != 0) { + const uint32_t allowed_flags = (__DRI_CTX_FLAG_DEBUG + | __DRI_CTX_FLAG_FORWARD_COMPATIBLE + | __DRI_CTX_FLAG_ROBUST_BUFFER_ACCESS); + if (flags & ~allowed_flags) { *error = __DRI_CTX_ERROR_UNKNOWN_FLAG; return NULL; } |