On 05/24/2013 01:17 PM, gregory hainaut wrote:
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.
Ugh! I'll submit a spec bug. :(
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
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev