From: Ian Romanick <ian.d.roman...@intel.com> 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.roman...@intel.com> --- src/mesa/main/get.c | 6 +++++- src/mesa/main/get_hash_params.py | 26 ++++++++------------------ 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index 273a79f..41f4612 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -296,8 +296,12 @@ static const int extra_ARB_uniform_buffer_object_and_geometry_shader[] = { EXTRA_END }; +static const int extra_ARB_ES2_compatibility[] = { + EXTRA_API_ES2, + EXT(ARB_ES2_compatibility), + EXTRA_END +}; -EXTRA_EXT(ARB_ES2_compatibility); EXTRA_EXT(ARB_texture_cube_map); EXTRA_EXT(MESA_texture_array); EXTRA_EXT2(EXT_secondary_color, ARB_vertex_program); diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py index ac9c79c..9f67466 100644 --- a/src/mesa/main/get_hash_params.py +++ b/src/mesa/main/get_hash_params.py @@ -204,12 +204,6 @@ descriptor=[ [ "TEXTURE_COORD_ARRAY_TYPE", "LOC_CUSTOM, TYPE_ENUM, offsetof(struct gl_client_array, Type), NO_EXTRA" ], [ "TEXTURE_COORD_ARRAY_STRIDE", "LOC_CUSTOM, TYPE_INT, offsetof(struct gl_client_array, Stride), NO_EXTRA" ], -# GL_ARB_ES2_compatibility - [ "SHADER_COMPILER", "CONST(1), extra_ARB_ES2_compatibility" ], - [ "MAX_VARYING_VECTORS", "CONTEXT_INT(Const.MaxVarying), extra_ARB_ES2_compatibility" ], - [ "MAX_VERTEX_UNIFORM_VECTORS", "LOC_CUSTOM, TYPE_INT, 0, extra_ARB_ES2_compatibility" ], - [ "MAX_FRAGMENT_UNIFORM_VECTORS", "LOC_CUSTOM, TYPE_INT, 0, extra_ARB_ES2_compatibility" ], - # GL_ARB_multitexture [ "MAX_TEXTURE_UNITS", "CONTEXT_INT(Const.MaxTextureUnits), NO_EXTRA" ], [ "CLIENT_ACTIVE_TEXTURE", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ], @@ -317,6 +311,14 @@ descriptor=[ # GL_NV_read_buffer [ "READ_BUFFER", "LOC_CUSTOM, TYPE_ENUM, NO_OFFSET, extra_NV_read_buffer_api_gl" ], + +# GL_ARB_ES2_compatibility + [ "SHADER_COMPILER", "CONST(1), extra_ARB_ES2_compatibility" ], + [ "MAX_VARYING_VECTORS", "CONTEXT_INT(Const.MaxVarying), extra_ARB_ES2_compatibility" ], + [ "MAX_VERTEX_UNIFORM_VECTORS", "LOC_CUSTOM, TYPE_INT, 0, extra_ARB_ES2_compatibility" ], + [ "MAX_FRAGMENT_UNIFORM_VECTORS", "LOC_CUSTOM, TYPE_INT, 0, extra_ARB_ES2_compatibility" ], + [ "NUM_SHADER_BINARY_FORMATS", "CONST(0), extra_ARB_ES2_compatibility" ], + [ "SHADER_BINARY_FORMATS", "LOC_CUSTOM, TYPE_INVALID, 0, extra_ARB_ES2_compatibility" ], ]}, { "apis": ["GLES", "GLES2"], "params": [ @@ -325,18 +327,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": [ - [ "MAX_FRAGMENT_UNIFORM_VECTORS", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ], - [ "MAX_VARYING_VECTORS", "CONTEXT_INT(Const.MaxVarying), NO_EXTRA" ], - [ "MAX_VERTEX_UNIFORM_VECTORS", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ], - [ "SHADER_COMPILER", "CONST(1), NO_EXTRA" ], -# 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" ], -- 1.7.11.7 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev