<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Mar 12, 2014 at 5:50 PM, Brian Paul <span dir="ltr"><<a href="mailto:brianp@vmware.com" target="_blank">brianp@vmware.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>On 03/12/2014 05:41 PM, Anuj Phogat wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
mesa currently returns 4 when GL_VERTEX_ATTRIB_ARRAY_SIZE is queried<br>
for a vertex array initially set up with size=GL_BGRA. This patch<br>
makes changes to return size=GL_BGRA as required by the spec.<br>
<br>
Fixes Khronos OpenGL CTS test: vertex_array_bgra_basic.test<br>
<br>
Signed-off-by: Anuj Phogat <<a href="mailto:anuj.phogat@gmail.com" target="_blank">anuj.phogat@gmail.com</a>><br>
Cc: <<a href="mailto:mesa-stable@lists.freedesktop.org" target="_blank">mesa-stable@lists.<u></u>freedesktop.org</a>><br>
---<br>
  src/mesa/main/arrayobj.c | 1 +<br>
  src/mesa/main/mtypes.h   | 1 +<br>
  src/mesa/main/varray.c   | 5 ++++-<br>
  3 files changed, 6 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c<br>
index efb9930..2b234f3 100644<br>
--- a/src/mesa/main/arrayobj.c<br>
+++ b/src/mesa/main/arrayobj.c<br>
@@ -200,6 +200,7 @@ init_array(struct gl_context *ctx,<br>
     array->Enabled = GL_FALSE;<br>
     array->Normalized = GL_FALSE;<br>
     array->Integer = GL_FALSE;<br>
+   array->SizeBGRA = GL_FALSE;<br>
     array->_ElementSize = size * _mesa_sizeof_type(type);<br>
     array->VertexBinding = index;<br>
<br>
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h<br>
index 2bad4ca..52874a7 100644<br>
--- a/src/mesa/main/mtypes.h<br>
+++ b/src/mesa/main/mtypes.h<br>
@@ -1545,6 +1545,7 @@ struct gl_vertex_attrib_array<br>
     GLboolean Enabled;       /**< Whether the array is enabled */<br>
     GLboolean Normalized;    /**< Fixed-point values are normalized when converted to floats */<br>
     GLboolean Integer;       /**< Fixed-point values are not converted to floats */<br>
+   GLboolean SizeBGRA;      /**< True if Size is GL_BGRA */<br>
     GLuint _ElementSize;     /**< Size of each element in bytes */<br>
     GLuint VertexBinding;    /**< Vertex buffer binding */<br>
  };<br>
diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c<br>
index b4b6fa9..3bc361e 100644<br>
--- a/src/mesa/main/varray.c<br>
+++ b/src/mesa/main/varray.c<br>
@@ -207,6 +207,7 @@ update_array_format(struct gl_context *ctx,<br>
     GLbitfield typeBit;<br>
     GLuint elementSize;<br>
     GLenum format = GL_RGBA;<br>
+   GLboolean size_bgra = GL_FALSE;<br>
<br>
     if (_mesa_is_gles(ctx)) {<br>
        legalTypesMask &= ~(FIXED_GL_BIT | DOUBLE_BIT | UNSIGNED_INT_10F_11F_11F_REV_<u></u>BIT);<br>
@@ -291,6 +292,7 @@ update_array_format(struct gl_context *ctx,<br>
        }<br>
<br>
        format = GL_BGRA;<br>
+      size_bgra = GL_TRUE;<br>
        size = 4;<br>
     }<br>
     else if (size < sizeMin || size > sizeMax || size > 4) {<br>
@@ -335,6 +337,7 @@ update_array_format(struct gl_context *ctx,<br>
     array->Format = format;<br>
     array->Normalized = normalized;<br>
     array->Integer = integer;<br>
+   array->SizeBGRA = size_bgra;<br>
     array->RelativeOffset = relativeOffset;<br>
     array->_ElementSize = elementSize;<br>
<br>
@@ -738,7 +741,7 @@ get_vertex_array_attrib(struct gl_context *ctx, GLuint index, GLenum pname,<br>
     case GL_VERTEX_ATTRIB_ARRAY_<u></u>ENABLED_ARB:<br>
        return array->Enabled;<br>
     case GL_VERTEX_ATTRIB_ARRAY_SIZE_<u></u>ARB:<br>
-      return array->Size;<br>
+      return (array->SizeBGRA ? GL_BGRA : array->Size);<br>
</blockquote>
<br></div></div>
Instead of adding a new field, can't this be done as:<br>
<br>
return (array->Format == GL_BGRA) ? GL_BGRA : array->Size;<br></blockquote><div>Yes, that's what I should have done. Will send out V2.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<br>
-Brian<div><br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
     case GL_VERTEX_ATTRIB_ARRAY_STRIDE_<u></u>ARB:<br>
        return array->Stride;<br>
     case GL_VERTEX_ATTRIB_ARRAY_TYPE_<u></u>ARB:<br>
<br>
</blockquote>
<br></div>
______________________________<u></u>_________________<br>
mesa-stable mailing list<br>
<a href="mailto:mesa-stable@lists.freedesktop.org" target="_blank">mesa-stable@lists.freedesktop.<u></u>org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/mesa-stable" target="_blank">http://lists.freedesktop.org/<u></u>mailman/listinfo/mesa-stable</a><br>
</blockquote></div><br></div></div>