Add support for new GetAttrib queries for integer and unsigned integer vertex attributes.
TRAC #23391
Signed-off-by: Shannon Woods
Signed-off-by: Geoff Lang
Authored-by: Jamie Madill
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index c244817..89672bd 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -9619,8 +9619,30 @@
return gl::error(GL_INVALID_OPERATION);
}
- // glGetVertexAttribIiv
- UNIMPLEMENTED();
+ if (index >= gl::MAX_VERTEX_ATTRIBS)
+ {
+ return gl::error(GL_INVALID_VALUE);
+ }
+
+ const gl::VertexAttribute &attribState = context->getVertexAttribState(index);
+
+ if (!validateGetVertexAttribParameters(pname, context->getClientVersion()))
+ {
+ return;
+ }
+
+ if (pname == GL_CURRENT_VERTEX_ATTRIB)
+ {
+ const gl::VertexAttribCurrentValueData ¤tValueData = context->getVertexAttribCurrentValue(index);
+ for (int i = 0; i < 4; ++i)
+ {
+ params[i] = currentValueData.IntValues[i];
+ }
+ }
+ else
+ {
+ *params = attribState.querySingleParameter<GLint>(pname);
+ }
}
}
catch(std::bad_alloc&)
@@ -9645,8 +9667,30 @@
return gl::error(GL_INVALID_OPERATION);
}
- // glGetVertexAttribIuiv
- UNIMPLEMENTED();
+ if (index >= gl::MAX_VERTEX_ATTRIBS)
+ {
+ return gl::error(GL_INVALID_VALUE);
+ }
+
+ const gl::VertexAttribute &attribState = context->getVertexAttribState(index);
+
+ if (!validateGetVertexAttribParameters(pname, context->getClientVersion()))
+ {
+ return;
+ }
+
+ if (pname == GL_CURRENT_VERTEX_ATTRIB)
+ {
+ const gl::VertexAttribCurrentValueData ¤tValueData = context->getVertexAttribCurrentValue(index);
+ for (int i = 0; i < 4; ++i)
+ {
+ params[i] = currentValueData.UnsignedIntValues[i];
+ }
+ }
+ else
+ {
+ *params = attribState.querySingleParameter<GLuint>(pname);
+ }
}
}
catch(std::bad_alloc&)