Mesa (master): mesa: Fix glGet of ES2's GL_MAX_*_VECTORS properties.
Kenneth Graunke
kwg at kemper.freedesktop.org
Wed Nov 24 22:11:50 UTC 2010
Module: Mesa
Branch: master
Commit: 1197393faa285bee0d99409a1c82f575dbcbc708
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1197393faa285bee0d99409a1c82f575dbcbc708
Author: Kenneth Graunke <kenneth at whitecape.org>
Date: Wed Nov 24 13:59:46 2010 -0800
mesa: Fix glGet of ES2's GL_MAX_*_VECTORS properties.
Previously, the get table listed all three as having custom locations,
yet find_custom_value did not have cases to handle them.
MAX_VARYING_VECTORS does not need a custom location since MaxVaryings is
already stored as float[4] (or vec4). MaxUniformComponents is stored as
the number of floats, however, so a custom implementation that divides
by 4 is necessary.
Fixes bugs.freedesktop.org #31495.
---
src/mesa/main/get.c | 17 +++++++++++------
1 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index b54af6e..c8c0b8b 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -700,12 +700,9 @@ static const struct value_desc values[] = {
#if FEATURE_ES2
/* Enums unique to OpenGL ES 2.0 */
{ 0, 0, TYPE_API_MASK, API_OPENGLES2_BIT, NO_EXTRA },
- { GL_MAX_FRAGMENT_UNIFORM_VECTORS, LOC_CUSTOM, TYPE_INT,
- offsetof(struct gl_context, Const.FragmentProgram.MaxUniformComponents), NO_EXTRA },
- { GL_MAX_VARYING_VECTORS, LOC_CUSTOM, TYPE_INT,
- offsetof(struct gl_context, Const.MaxVarying), NO_EXTRA },
- { GL_MAX_VERTEX_UNIFORM_VECTORS, LOC_CUSTOM, TYPE_INT,
- offsetof(struct gl_context, Const.VertexProgram.MaxUniformComponents), NO_EXTRA },
+ { GL_MAX_FRAGMENT_UNIFORM_VECTORS, LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA },
+ { GL_MAX_VARYING_VECTORS, CONTEXT_INT(Const.MaxVarying), NO_EXTRA },
+ { GL_MAX_VERTEX_UNIFORM_VECTORS, LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA },
{ GL_SHADER_COMPILER, CONST(1), NO_EXTRA },
/* OES_get_program_binary */
{ GL_NUM_SHADER_BINARY_FORMATS, CONST(0), NO_EXTRA },
@@ -1604,6 +1601,14 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
v->value_int = ctx->Array.ArrayObj->PointSize.BufferObj->Name;
break;
+
+ case GL_MAX_VERTEX_UNIFORM_VECTORS:
+ v->value_int = ctx->Const.VertexProgram.MaxUniformComponents / 4;
+ break;
+
+ case GL_MAX_FRAGMENT_UNIFORM_VECTORS:
+ v->value_int = ctx->Const.FragmentProgram.MaxUniformComponents / 4;
+ break;
}
}
More information about the mesa-commit
mailing list