mesa: Fix GL_SHADER_BINARY_FORMATS query
authorIan Romanick <ian.d.romanick@intel.com>
Tue, 4 Dec 2012 23:09:39 +0000 (15:09 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Sat, 12 Jan 2013 02:13:52 +0000 (18:13 -0800)
There were two bugs here.  First, this and several other queries were
not available in a desktop GL context with GL_ARB_ES2_compatibility.
Second, GL_NUM_SHADER_BINARY_FORMATS returns zero, but
GL_SHADER_BINARY_FORMATS writes one element of data to the buffer.  If
NUM is zero, no data should be written.

Fixes piglit test 'arb_get_program_binary-overrun shader'.

NOTE: This is a candidate for stable release branches.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/main/get_hash_params.py

index 3db820a7760538b7fbfe7ab2711b7164fb78f21e..1c64a27854ca6e0895d15736f043f71bd59a400f 100644 (file)
@@ -310,6 +310,8 @@ descriptor=[
   [ "MAX_VARYING_VECTORS", "CONTEXT_INT(Const.MaxVarying), extra_ARB_ES2_compatibility_api_es2" ],
   [ "MAX_VERTEX_UNIFORM_VECTORS", "LOC_CUSTOM, TYPE_INT, 0, extra_ARB_ES2_compatibility_api_es2" ],
   [ "MAX_FRAGMENT_UNIFORM_VECTORS", "LOC_CUSTOM, TYPE_INT, 0, extra_ARB_ES2_compatibility_api_es2" ],
+  [ "NUM_SHADER_BINARY_FORMATS", "CONST(0), extra_ARB_ES2_compatibility_api_es2" ],
+  [ "SHADER_BINARY_FORMATS", "CONST(0), extra_ARB_ES2_compatibility_api_es2" ],
 ]},
 
 # GLES3 is not a typo.
@@ -379,14 +381,6 @@ descriptor=[
   [ "TEXTURE_EXTERNAL_OES", "LOC_CUSTOM, TYPE_BOOLEAN, 0, extra_OES_EGL_image_external" ],
 ]},
 
-# Enums unique to OpenGL ES 2.0
-{ "apis": ["GLES2"], "params": [
-# OES_get_program_binary
-  [ "NUM_SHADER_BINARY_FORMATS", "CONST(0), NO_EXTRA" ],
-  [ "SHADER_BINARY_FORMATS", "CONST(0), NO_EXTRA" ],
-]},
-
-
 # Remaining enums are only in OpenGL
 { "apis": ["GL", "GL_CORE"], "params": [
   [ "ACCUM_RED_BITS", "BUFFER_INT(Visual.accumRedBits), NO_EXTRA" ],