summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2011-09-07 10:19:14 +0100
committerDave Airlie <airlied@redhat.com>2011-09-07 10:20:47 +0100
commit99c1a58b3067893d4fa444cd4abcf13bb43232ef (patch)
treee3f8c14a47b55a120b1f925ebcd029addd3cfcbf
parent6edef25a4b41583e1c285653fc0b84a316e9743d (diff)
varray.c: fix logic around BGRA with ARB_vertex_type_2_10_10_10_rev.
I introduced a regression in here, I've just split the logic ot now, so its easier to read/understand. Should fix: https://bugs.freedesktop.org/show_bug.cgi?id=40664 Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--src/mesa/main/varray.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c
index 9c9d0d66ea9..13b3405e5ac 100644
--- a/src/mesa/main/varray.c
+++ b/src/mesa/main/varray.c
@@ -160,10 +160,17 @@ update_array(struct gl_context *ctx,
if (ctx->Extensions.EXT_vertex_array_bgra &&
sizeMax == BGRA_OR_4 &&
size == GL_BGRA) {
- if (type != GL_UNSIGNED_BYTE &&
- (ctx->Extensions.ARB_vertex_type_2_10_10_10_rev &&
- (type != GL_UNSIGNED_INT_2_10_10_10_REV &&
- type != GL_INT_2_10_10_10_REV))) {
+ GLboolean bgra_error = GL_FALSE;
+
+ if (ctx->Extensions.ARB_vertex_type_2_10_10_10_rev) {
+ if (type != GL_UNSIGNED_INT_2_10_10_10_REV &&
+ type != GL_INT_2_10_10_10_REV &&
+ type != GL_UNSIGNED_BYTE)
+ bgra_error = GL_TRUE;
+ } else if (type != GL_UNSIGNED_BYTE)
+ bgra_error = GL_TRUE;
+
+ if (bgra_error) {
_mesa_error(ctx, GL_INVALID_VALUE, "%s(GL_BGRA/GLubyte)", func);
return;
}