mesa: fix glGet queries depending on derived framebuffer state (v2)
"ctx->DrawBuffer->Visual" might be invalid if (NewState &_NEW_BUFFERS) != 0. v2: also fix: - RGBA_INTEGER_MODE_EXT - RGBA_FLOAT_MODE_ARB (also check API support) - FRAMEBUFFER_SRGB_CAPABLE_EXT NOTE: This is a candidate for stable branches. Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
@@ -281,6 +281,12 @@ static const int extra_EXT_texture_integer[] = {
|
||||
EXTRA_END
|
||||
};
|
||||
|
||||
static const int extra_EXT_texture_integer_and_new_buffers[] = {
|
||||
EXT(EXT_texture_integer),
|
||||
EXTRA_NEW_BUFFERS,
|
||||
EXTRA_END
|
||||
};
|
||||
|
||||
static const int extra_GLSL_130[] = {
|
||||
EXTRA_GLSL_130,
|
||||
EXTRA_END
|
||||
@@ -317,6 +323,12 @@ static const int extra_ARB_ES3_compatibility_api_es3[] = {
|
||||
EXTRA_END
|
||||
};
|
||||
|
||||
static const int extra_EXT_framebuffer_sRGB_and_new_buffers[] = {
|
||||
EXT(EXT_framebuffer_sRGB),
|
||||
EXTRA_NEW_BUFFERS,
|
||||
EXTRA_END
|
||||
};
|
||||
|
||||
EXTRA_EXT(ARB_texture_cube_map);
|
||||
EXTRA_EXT(MESA_texture_array);
|
||||
EXTRA_EXT2(EXT_secondary_color, ARB_vertex_program);
|
||||
@@ -397,6 +409,13 @@ extra_NV_read_buffer_api_gl[] = {
|
||||
EXTRA_END
|
||||
};
|
||||
|
||||
static const int extra_core_ARB_color_buffer_float_and_new_buffers[] = {
|
||||
EXTRA_API_GL_CORE,
|
||||
EXT(ARB_color_buffer_float),
|
||||
EXTRA_NEW_BUFFERS,
|
||||
EXTRA_END
|
||||
};
|
||||
|
||||
/* This is the big table describing all the enums we accept in
|
||||
* glGet*v(). The table is partitioned into six parts: enums
|
||||
* understood by all GL APIs (OpenGL, GLES and GLES2), enums shared
|
||||
|
@@ -8,7 +8,7 @@ descriptor=[
|
||||
[ "COLOR_WRITEMASK", "LOC_CUSTOM, TYPE_INT_4, 0, NO_EXTRA" ],
|
||||
[ "CULL_FACE", "CONTEXT_BOOL(Polygon.CullFlag), NO_EXTRA" ],
|
||||
[ "CULL_FACE_MODE", "CONTEXT_ENUM(Polygon.CullFaceMode), NO_EXTRA" ],
|
||||
[ "DEPTH_BITS", "BUFFER_INT(Visual.depthBits), NO_EXTRA" ],
|
||||
[ "DEPTH_BITS", "BUFFER_INT(Visual.depthBits), extra_new_buffers" ],
|
||||
[ "DEPTH_CLEAR_VALUE", "CONTEXT_FIELD(Depth.Clear, TYPE_DOUBLEN), NO_EXTRA" ],
|
||||
[ "DEPTH_FUNC", "CONTEXT_ENUM(Depth.Func), NO_EXTRA" ],
|
||||
[ "DEPTH_RANGE", "CONTEXT_FIELD(Viewport.Near, TYPE_FLOATN_2), NO_EXTRA" ],
|
||||
@@ -31,7 +31,7 @@ descriptor=[
|
||||
[ "RED_BITS", "BUFFER_INT(Visual.redBits), extra_new_buffers" ],
|
||||
[ "SCISSOR_BOX", "LOC_CUSTOM, TYPE_INT_4, 0, NO_EXTRA" ],
|
||||
[ "SCISSOR_TEST", "CONTEXT_BOOL(Scissor.Enabled), NO_EXTRA" ],
|
||||
[ "STENCIL_BITS", "BUFFER_INT(Visual.stencilBits), NO_EXTRA" ],
|
||||
[ "STENCIL_BITS", "BUFFER_INT(Visual.stencilBits), extra_new_buffers" ],
|
||||
[ "STENCIL_CLEAR_VALUE", "CONTEXT_INT(Stencil.Clear), NO_EXTRA" ],
|
||||
[ "STENCIL_FAIL", "LOC_CUSTOM, TYPE_ENUM, NO_OFFSET, NO_EXTRA" ],
|
||||
[ "STENCIL_FUNC", "LOC_CUSTOM, TYPE_ENUM, NO_OFFSET, NO_EXTRA" ],
|
||||
@@ -80,8 +80,8 @@ descriptor=[
|
||||
[ "SAMPLE_COVERAGE_ARB", "CONTEXT_BOOL(Multisample.SampleCoverage), NO_EXTRA" ],
|
||||
[ "SAMPLE_COVERAGE_VALUE_ARB", "CONTEXT_FLOAT(Multisample.SampleCoverageValue), NO_EXTRA" ],
|
||||
[ "SAMPLE_COVERAGE_INVERT_ARB", "CONTEXT_BOOL(Multisample.SampleCoverageInvert), NO_EXTRA" ],
|
||||
[ "SAMPLE_BUFFERS_ARB", "BUFFER_INT(Visual.sampleBuffers), NO_EXTRA" ],
|
||||
[ "SAMPLES_ARB", "BUFFER_INT(Visual.samples), NO_EXTRA" ],
|
||||
[ "SAMPLE_BUFFERS_ARB", "BUFFER_INT(Visual.sampleBuffers), extra_new_buffers" ],
|
||||
[ "SAMPLES_ARB", "BUFFER_INT(Visual.samples), extra_new_buffers" ],
|
||||
|
||||
# GL_SGIS_generate_mipmap
|
||||
[ "GENERATE_MIPMAP_HINT_SGIS", "CONTEXT_ENUM(Hint.GenerateMipmap), NO_EXTRA" ],
|
||||
@@ -630,7 +630,7 @@ descriptor=[
|
||||
[ "TEXTURE_CUBE_MAP_SEAMLESS", "CONTEXT_BOOL(Texture.CubeMapSeamless), extra_ARB_seamless_cube_map" ],
|
||||
|
||||
# GL_EXT_texture_integer
|
||||
[ "RGBA_INTEGER_MODE_EXT", "BUFFER_BOOL(_IntegerColor), extra_EXT_texture_integer" ],
|
||||
[ "RGBA_INTEGER_MODE_EXT", "BUFFER_BOOL(_IntegerColor), extra_EXT_texture_integer_and_new_buffers" ],
|
||||
|
||||
# GL_ARB_transform_feedback3
|
||||
[ "MAX_TRANSFORM_FEEDBACK_BUFFERS", "CONTEXT_INT(Const.MaxTransformFeedbackBuffers), extra_ARB_transform_feedback3" ],
|
||||
@@ -645,7 +645,7 @@ descriptor=[
|
||||
[ "MAX_VERTEX_VARYING_COMPONENTS_ARB", "CONTEXT_INT(Const.MaxVertexVaryingComponents), extra_ARB_geometry_shader4" ],
|
||||
|
||||
# GL_ARB_color_buffer_float
|
||||
[ "RGBA_FLOAT_MODE_ARB", "BUFFER_FIELD(Visual.floatMode, TYPE_BOOLEAN), 0" ],
|
||||
[ "RGBA_FLOAT_MODE_ARB", "BUFFER_FIELD(Visual.floatMode, TYPE_BOOLEAN), extra_core_ARB_color_buffer_float_and_new_buffers" ],
|
||||
|
||||
# GL_EXT_gpu_shader4 / GLSL 1.30
|
||||
[ "MIN_PROGRAM_TEXEL_OFFSET", "CONTEXT_INT(Const.MinProgramTexelOffset), extra_GLSL_130" ],
|
||||
@@ -676,7 +676,7 @@ descriptor=[
|
||||
|
||||
# GL3.0 / GL_EXT_framebuffer_sRGB
|
||||
[ "FRAMEBUFFER_SRGB_EXT", "CONTEXT_BOOL(Color.sRGBEnabled), extra_EXT_framebuffer_sRGB" ],
|
||||
[ "FRAMEBUFFER_SRGB_CAPABLE_EXT", "BUFFER_INT(Visual.sRGBCapable), extra_EXT_framebuffer_sRGB" ],
|
||||
[ "FRAMEBUFFER_SRGB_CAPABLE_EXT", "BUFFER_INT(Visual.sRGBCapable), extra_EXT_framebuffer_sRGB_and_new_buffers" ],
|
||||
|
||||
# GL 3.1
|
||||
# NOTE: different enum values for GL_PRIMITIVE_RESTART_NV
|
||||
|
Reference in New Issue
Block a user