aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src
diff options
context:
space:
mode:
Diffstat (limited to 'mesalib/src')
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_dump.h3
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_dump_defines.c33
-rw-r--r--mesalib/src/glsl/Makefile.am4
-rw-r--r--mesalib/src/glsl/glsl_parser_extras.cpp2
-rw-r--r--mesalib/src/glsl/linker.cpp5
-rw-r--r--mesalib/src/glsl/lower_clip_distance.cpp5
-rw-r--r--mesalib/src/mesa/drivers/dri/common/dri_util.c6
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 6ca75f41d..379935015 100644
--- a/mesalib/src/mesa/drivers/dri/common/dri_util.c
+++ b/mesalib/src/mesa/drivers/dri/common/dri_util.c
@@ -411,8 +411,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;
}