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

Reply via email to