[Mesa-dev] [PATCH 4/7] glsl: add support for GL_OES_geometry_shader

Lofstedt, Marta marta.lofstedt at intel.com
Thu Sep 24 01:01:34 PDT 2015


> -----Original Message-----
> From: mesa-dev [mailto:mesa-dev-bounces at lists.freedesktop.org] On
> Behalf Of Ilia Mirkin
> Sent: Wednesday, September 23, 2015 5:20 PM
> To: Marta Lofstedt
> Cc: mesa-dev at lists.freedesktop.org
> Subject: Re: [Mesa-dev] [PATCH 4/7] glsl: add support for
> GL_OES_geometry_shader
> 
> On Wed, Sep 23, 2015 at 4:42 AM, Marta Lofstedt
> <marta.lofstedt at linux.intel.com> wrote:
> > From: Marta Lofstedt <marta.lofstedt at intel.com>
> >
> > This adds glsl support of GL_OES_geometry_shader for OpenGL ES 3.1.
> >
> > Signed-off-by: Marta Lofstedt <marta.lofstedt at linux.intel.com>
> > ---
> >  src/glsl/builtin_variables.cpp  | 16 +++++-----------
> >  src/glsl/glsl_parser.yy         |  4 ++--
> >  src/glsl/glsl_parser_extras.cpp |  1 +
> >  src/glsl/glsl_parser_extras.h   |  2 ++
> >  4 files changed, 10 insertions(+), 13 deletions(-)
> >
> > diff --git a/src/glsl/builtin_variables.cpp
> > b/src/glsl/builtin_variables.cpp index b5e2908..cd8d61c 100644
> > --- a/src/glsl/builtin_variables.cpp
> > +++ b/src/glsl/builtin_variables.cpp
> > @@ -611,7 +611,7 @@ builtin_variable_generator::generate_constants()
> >        add_const("gl_MaxVaryingComponents", state->ctx-
> >Const.MaxVarying * 4);
> >     }
> >
> > -   if (state->is_version(150, 0)) {
> > +   if (state->is_version(150, 0) ||
> > + state->OES_geometry_shader_enable) {
> 
> While you're at it, throw in 320 as well? (both here and below)

Yeah, cool then there are no reason for objections about the having the GL_OES_geometry_shader under GLES 3.2 in docs/GL3.txt. 
Thanks Ilia!

> 
> >        add_const("gl_MaxVertexOutputComponents",
> >                  state->Const.MaxVertexOutputComponents);
> >        add_const("gl_MaxGeometryInputComponents",
> > @@ -674,10 +674,7 @@ builtin_variable_generator::generate_constants()
> >        add_const("gl_MaxAtomicCounterBindings",
> >                  state->Const.MaxAtomicBufferBindings);
> >
> > -      /* When Mesa adds support for GL_OES_geometry_shader and
> > -       * GL_OES_tessellation_shader, this will need to change.
> > -       */
> > -      if (!state->es_shader) {
> > +      if (!state->es_shader || state->OES_geometry_shader_enable) {
> >           add_const("gl_MaxGeometryAtomicCounters",
> >                     state->Const.MaxGeometryAtomicCounters);
> >
> > @@ -701,10 +698,7 @@ builtin_variable_generator::generate_constants()
> >        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) {
> > +      if (!state->es_shader || state->OES_geometry_shader_enable) {
> >           add_const("gl_MaxGeometryAtomicCounterBuffers",
> >                     state->Const.MaxGeometryAtomicCounterBuffers);
> >           add_const("gl_MaxTessControlAtomicCounterBuffers",
> > @@ -762,7 +756,7 @@ builtin_variable_generator::generate_constants()
> >        add_const("gl_MaxCombinedImageUniforms",
> >                  state->Const.MaxCombinedImageUniforms);
> >
> > -      if (!state->es_shader) {
> > +      if (!state->es_shader || state->OES_geometry_shader_enable) {
> >           add_const("gl_MaxCombinedImageUnitsAndFragmentOutputs",
> >                     state->Const.MaxCombinedShaderOutputResources);
> >           add_const("gl_MaxImageSamples", @@ -993,7 +987,7 @@
> > builtin_variable_generator::generate_fs_special_vars()
> >     if (state->is_version(120, 100))
> >        add_input(VARYING_SLOT_PNTC, vec2_t, "gl_PointCoord");
> >
> > -   if (state->is_version(150, 0)) {
> > +   if (state->is_version(150, 0) ||
> > + state->OES_geometry_shader_enable) {
> >        ir_variable *var =
> >           add_input(VARYING_SLOT_PRIMITIVE_ID, int_t, "gl_PrimitiveID");
> >        var->data.interpolation = INTERP_QUALIFIER_FLAT; diff --git
> > a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy index
> > 59e4527..ab50c4b 100644
> > --- a/src/glsl/glsl_parser.yy
> > +++ b/src/glsl/glsl_parser.yy
> > @@ -1250,7 +1250,7 @@ layout_qualifier_id:
> >              }
> >           }
> >
> > -         if ($$.flags.i && !state->is_version(150, 0)) {
> > +         if ($$.flags.i && !state->is_version(150, 310)) {
> 
> Should this be 320 + && !state->OES_geometry_shader_enable ? (Also
> below.)
> 
> >              _mesa_glsl_error(& @1, state, "#version 150 layout "
> >                               "qualifier `%s' used", $1);
> >           }
> > @@ -1491,7 +1491,7 @@ layout_qualifier_id:
> >              YYERROR;
> >           } else {
> >              $$.max_vertices = $3;
> > -            if (!state->is_version(150, 0)) {
> > +            if (!state->is_version(150, 310)) {
> >                 _mesa_glsl_error(& @3, state,
> >                                  "#version 150 max_vertices qualifier "
> >                                  "specified", $3); diff --git
> > a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp
> > index dae5261..1cb34df 100644
> > --- a/src/glsl/glsl_parser_extras.cpp
> > +++ b/src/glsl/glsl_parser_extras.cpp
> > @@ -625,6 +625,7 @@ static const _mesa_glsl_extension
> _mesa_glsl_supported_extensions[] = {
> >     /* OES extensions go here, sorted alphabetically.
> >      */
> >     EXT(OES_EGL_image_external,         false, true,
> OES_EGL_image_external),
> > +   EXT(OES_geometry_shader,            false, true,      dummy_true),
> 
> Seems like this should depend on OES_geometry_shader, not
> dummy_true...
> 
> >     EXT(OES_standard_derivatives,       false, true,
> OES_standard_derivatives),
> >     EXT(OES_texture_3D,                 false, true,      EXT_texture3D),
> >     EXT(OES_texture_storage_multisample_2d_array, false, true,
> > ARB_texture_multisample), diff --git a/src/glsl/glsl_parser_extras.h
> > b/src/glsl/glsl_parser_extras.h index d3b091d..f271d37 100644
> > --- a/src/glsl/glsl_parser_extras.h
> > +++ b/src/glsl/glsl_parser_extras.h
> > @@ -567,6 +567,8 @@ struct _mesa_glsl_parse_state {
> >     bool AMD_vertex_shader_viewport_index_warn;
> >     bool EXT_draw_buffers_enable;
> >     bool EXT_draw_buffers_warn;
> > +   bool OES_geometry_shader_enable;
> > +   bool OES_geometry_shader_warn;
> >     bool EXT_separate_shader_objects_enable;
> >     bool EXT_separate_shader_objects_warn;
> >     bool EXT_shader_integer_mix_enable;
> > --
> > 2.1.4
> >
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list