On Wed, Apr 29, 2015 at 7:26 PM, Ian Romanick <i...@freedesktop.org> wrote: > From: Ian Romanick <ian.d.roman...@intel.com> > > Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> > --- > src/glsl/builtin_variables.cpp | 35 +++++++++++++++++++++++++++++++---- > src/glsl/glsl_parser_extras.cpp | 10 ++++++++++ > src/glsl/glsl_parser_extras.h | 12 +++++++++++- > 3 files changed, 52 insertions(+), 5 deletions(-) > > diff --git a/src/glsl/builtin_variables.cpp b/src/glsl/builtin_variables.cpp > index 9d0b272..6806aa1 100644 > --- a/src/glsl/builtin_variables.cpp > +++ b/src/glsl/builtin_variables.cpp > @@ -656,16 +656,43 @@ builtin_variable_generator::generate_constants() > if (state->has_atomic_counters()) { > add_const("gl_MaxVertexAtomicCounters", > state->Const.MaxVertexAtomicCounters); > - add_const("gl_MaxGeometryAtomicCounters", > - state->Const.MaxGeometryAtomicCounters); > add_const("gl_MaxFragmentAtomicCounters", > state->Const.MaxFragmentAtomicCounters); > add_const("gl_MaxCombinedAtomicCounters", > state->Const.MaxCombinedAtomicCounters); > add_const("gl_MaxAtomicCounterBindings", > state->Const.MaxAtomicBufferBindings); > - add_const("gl_MaxTessControlAtomicCounters", 0); > - add_const("gl_MaxTessEvaluationAtomicCounters", 0); > + > + /* When Mesa adds support for GL_OES_geometry_shader and > + * GL_OES_tessellation_shader, this will need to change. > + */ > + if (!state->es_shader) { > + add_const("gl_MaxGeometryAtomicCounters", > + state->Const.MaxGeometryAtomicCounters); > + add_const("gl_MaxTessControlAtomicCounters", 0); > + add_const("gl_MaxTessEvaluationAtomicCounters", 0); > + } > + } > + > + if (state->is_version(420, 310)) { > + add_const("gl_MaxVertexAtomicCounterBuffers", > + state->Const.MaxVertexAtomicCounterBuffers); > + add_const("gl_MaxFragmentAtomicCounterBuffers", > + state->Const.MaxFragmentAtomicCounterBuffers); > + add_const("gl_MaxCombinedAtomicCounterBuffers", > + state->Const.MaxCombinedAtomicCounterBuffers); > + add_const("gl_MaxAtomicCounterBufferSize", > + state->Const.MaxAtomicCounterBufferSize); > + > + /* When Mesa adds support for GL_OES_geometry_shader and > + * GL_OES_tessellation_shader, this will need to change. > + */ > + if (!state->es_shader) { > + add_const("gl_MaxGeometryAtomicCounterBuffers", > + state->Const.MaxGeometryAtomicCounterBuffers); > + add_const("gl_MaxTessControlAtomicCounterBuffers", 0); > + add_const("gl_MaxTessEvaluationAtomicCounterBuffers", 0); > + } > } > > if (state->is_version(430, 0) || state->ARB_compute_shader_enable) { > diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp > index 91f225e..59e1d6e 100644 > --- a/src/glsl/glsl_parser_extras.cpp > +++ b/src/glsl/glsl_parser_extras.cpp > @@ -117,6 +117,16 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct > gl_context *_ctx, > this->Const.MaxFragmentAtomicCounters = > ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxAtomicCounters; > this->Const.MaxCombinedAtomicCounters = > ctx->Const.MaxCombinedAtomicCounters; > this->Const.MaxAtomicBufferBindings = ctx->Const.MaxAtomicBufferBindings; > + this->Const.MaxVertexAtomicCounterBuffers = > + ctx->Const.Program[MESA_SHADER_VERTEX].MaxAtomicBuffers; > + this->Const.MaxGeometryAtomicCounterBuffers = > + ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxAtomicBuffers; > + this->Const.MaxFragmentAtomicCounterBuffers = > + ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxAtomicBuffers; > + this->Const.MaxCombinedAtomicCounterBuffers = > + ctx->Const.MaxCombinedAtomicBuffers; > + this->Const.MaxAtomicCounterBufferSize = > + ctx->Const.MaxAtomicBufferSize; > > /* Compute shader constants */ > for (unsigned i = 0; i < > ARRAY_SIZE(this->Const.MaxComputeWorkGroupCount); i++) > diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h > index 61d4c93..42b7442 100644 > --- a/src/glsl/glsl_parser_extras.h > +++ b/src/glsl/glsl_parser_extras.h > @@ -192,7 +192,7 @@ struct _mesa_glsl_parse_state { > > bool has_atomic_counters() const > { > - return ARB_shader_atomic_counters_enable || is_version(400, 0); > + return ARB_shader_atomic_counters_enable || is_version(400, 310);
It was like that already, but should this be 420, not 400? With that fixed, this patch is Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu> > } > > bool has_explicit_attrib_stream() const > @@ -353,6 +353,16 @@ struct _mesa_glsl_parse_state { > unsigned MaxCombinedAtomicCounters; > unsigned MaxAtomicBufferBindings; > > + /* These are also atomic counter related, but they weren't added to > + * until atomic counters were added to core in GLSL 4.20 and GLSL ES > + * 3.10. > + */ > + unsigned MaxVertexAtomicCounterBuffers; > + unsigned MaxGeometryAtomicCounterBuffers; > + unsigned MaxFragmentAtomicCounterBuffers; > + unsigned MaxCombinedAtomicCounterBuffers; > + unsigned MaxAtomicCounterBufferSize; > + > /* ARB_compute_shader */ > unsigned MaxComputeWorkGroupCount[3]; > unsigned MaxComputeWorkGroupSize[3]; > -- > 2.1.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev