[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