Fixed GL_VERTEX_ATTRIB_ARRAY_INTEGER queries Added pureInteger member to VertexAttribute in order to keep track of whether the attrib was set using glVertexAttribIPointer or glVertexAttribPointer and properly return that state when querying GL_VERTEX_ATTRIB_ARRAY_INTEGER. Fixes dEQP-GLES3.functional.state_query.shader.vertex_attrib_integer Change-Id: Ie6cfcd2008f7abb61d457a41124600fe7cea229a Reviewed-on: https://swiftshader-review.googlesource.com/14828 Tested-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/OpenGL/libGLESv2/libGLESv3.cpp b/src/OpenGL/libGLESv2/libGLESv3.cpp index 0e006c3..6c7f7a8 100644 --- a/src/OpenGL/libGLESv2/libGLESv3.cpp +++ b/src/OpenGL/libGLESv2/libGLESv3.cpp
@@ -2154,7 +2154,7 @@ return error(GL_INVALID_OPERATION); } - context->setVertexAttribState(index, context->getArrayBuffer(), size, type, false, stride, pointer); + context->setVertexAttribState(index, context->getArrayBuffer(), size, type, false, true, stride, pointer); } } @@ -2204,22 +2204,7 @@ } break; case GL_VERTEX_ATTRIB_ARRAY_INTEGER: - switch(attribState.mType) - { - case GL_BYTE: - case GL_UNSIGNED_BYTE: - case GL_SHORT: - case GL_UNSIGNED_SHORT: - case GL_INT: - case GL_INT_2_10_10_10_REV: - case GL_UNSIGNED_INT: - case GL_FIXED: - *params = GL_TRUE; - break; - default: - *params = GL_FALSE; - break; - } + *params = (attribState.mPureInteger ? GL_TRUE : GL_FALSE); break; case GL_VERTEX_ATTRIB_ARRAY_DIVISOR: *params = attribState.mDivisor; @@ -2275,22 +2260,7 @@ } break; case GL_VERTEX_ATTRIB_ARRAY_INTEGER: - switch(attribState.mType) - { - case GL_BYTE: - case GL_UNSIGNED_BYTE: - case GL_SHORT: - case GL_UNSIGNED_SHORT: - case GL_INT: - case GL_INT_2_10_10_10_REV: - case GL_UNSIGNED_INT: - case GL_FIXED: - *params = GL_TRUE; - break; - default: - *params = GL_FALSE; - break; - } + *params = (attribState.mPureInteger ? GL_TRUE : GL_FALSE); break; case GL_VERTEX_ATTRIB_ARRAY_DIVISOR: *params = attribState.mDivisor;