On Sat, 4 May 2013 11:35:22 +0200 gregory hainaut <gregory.hain...@gmail.com> wrote:
> On Fri, 3 May 2013 12:04:48 -0700 > Matt Turner <matts...@gmail.com> wrote: > > > On Fri, May 3, 2013 at 10:44 AM, Gregory Hainaut > > <gregory.hain...@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. Nvidia implementation "is" this one: if (ctx->_Shader) { v->value_int = ctx->_Shader->Name; } else { v->value_int = 0; } So on my previous example * UseProgram(2) * BindPipeline(5) * Get GL_PROGRAM_PIPELINE_BINDING => 0 There is no spec but the SSO spec was written by Nvidia so I would say that Nvidia is correct. > > > 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@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