varray.c: fix logic around BGRA with ARB_vertex_type_2_10_10_10_rev.
authorDave Airlie <airlied@redhat.com>
Wed, 7 Sep 2011 09:19:14 +0000 (10:19 +0100)
committerDave Airlie <airlied@redhat.com>
Wed, 7 Sep 2011 09:20:47 +0000 (10:20 +0100)
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>
src/mesa/main/varray.c

index 9c9d0d66ea957c3a97cb96cd5f080ae18e9691cb..13b3405e5acaa3b0c4ecb4e90dc69bb9d44e7e74 100644 (file)
@@ -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;
       }