[Mesa-dev] [PATCH 10/12] sso: update glGet: GL_PROGRAM_PIPELINE_BINDING

gregory hainaut gregory.hainaut at gmail.com
Sat May 4 02:35:22 PDT 2013


On Fri, 3 May 2013 12:04:48 -0700
Matt Turner <mattst88 at gmail.com> wrote:

> On Fri, May 3, 2013 at 10:44 AM, Gregory Hainaut
> <gregory.hainaut at gmail.com> wrote:
> > ---
> >  src/mesa/main/get.c              |    9 +++++++++
> >  src/mesa/main/get_hash_params.py |    3 +++
> >  2 files changed, 12 insertions(+)
> >
> > diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
> > index 54159c0..6cbb7db 100644
> > --- a/src/mesa/main/get.c
> > +++ b/src/mesa/main/get.c
> > @@ -369,6 +369,7 @@ EXTRA_EXT(ARB_map_buffer_alignment);
> >  EXTRA_EXT(ARB_texture_cube_map_array);
> >  EXTRA_EXT(ARB_texture_buffer_range);
> >  EXTRA_EXT(ARB_texture_multisample);
> > +EXTRA_EXT(ARB_separate_shader_objects);
> >
> >  static const int
> >  extra_ARB_color_buffer_float_or_glcore[] = {
> > @@ -889,6 +890,14 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
> >           _mesa_problem(ctx, "driver doesn't implement GetTimestamp");
> >        }
> >        break;
> > +   /* GL_ARB_separate_shader_objects */
> > +   case GL_PROGRAM_PIPELINE_BINDING:
> > +      if (ctx->Pipeline.Current) {
> > +         v->value_int = ctx->Pipeline.Current->Name;
> > +      } else {
> > +         v->value_int = 0;
> > +      }
> > +      break;
> >     }
> >  }
> 
> This looks believable, but I can't find a description in the extension
> spec or GL 4.1+ specs that say precisely what this query is supposed
> to do. Looks like it's just mentioned in the extension spec, and not
> at all in GL 4.1+ specs.


Yes you're right that strange. There is also a couple of line in glGet man page.

GL_PROGRAM_PIPELINE_BINDING
              
                        params a single value, the name of the currently bound program pipeline
                        object, or zero if no program pipeline object is bound.
                        See glBindProgramPipeline.
                    
Both Nvidia and AMD support this query. I did a quick update on my piglit test, on the AMD side:
* UseProgram(2)
* BindPipeline(5) (the pipeline isn't really bound because UseProgram got an higher priority)
* Get GL_PROGRAM_PIPELINE_BINDING => 5

I will try to check the behavior on Nvidia implementation.

> > diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
> > index 2b97da6..43a11cf 100644
> > --- a/src/mesa/main/get_hash_params.py
> > +++ b/src/mesa/main/get_hash_params.py
> > @@ -709,6 +709,9 @@ descriptor=[
> >
> >  # GL_ARB_texture_cube_map_array
> >    [ "TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB", "LOC_CUSTOM, TYPE_INT, TEXTURE_CUBE_ARRAY_INDEX, extra_ARB_texture_cube_map_array" ],
> > +
> > +# GL_ARB_separate_shader_objects
> > +  [ "PROGRAM_PIPELINE_BINDING", "LOC_CUSTOM, TYPE_INT, GL_PROGRAM_PIPELINE_BINDING, extra_ARB_separate_shader_objects" ],
> >  ]},
> >
> >  # Enums restricted to OpenGL Core profile
> > --
> > 1.7.10.4
> >
> > _______________________________________________
> > 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