OSDN Git Service

Validation for glGetVertexAttrib i/f v
authorLingfeng Yang <lfy@google.com>
Fri, 8 Apr 2016 19:38:35 +0000 (12:38 -0700)
committerLingfeng Yang <lfy@google.com>
Fri, 8 Apr 2016 19:38:35 +0000 (12:38 -0700)
dEQP-GLES2.functional.negative_api.state.get_vertex_attrib i/f v:
Fail -> Pass

Based on Intel's OpenGL validation for goldfish opengl,
introduced in nyc-dev

Change-Id: I9b539024e88a5afb7c78f8543e7c9ffff4f837e0

system/GLESv2_enc/GL2Encoder.cpp

index 19c8946..e31aa1b 100755 (executable)
@@ -397,6 +397,9 @@ void GL2Encoder::s_glGetVertexAttribiv(void *self, GLuint index, GLenum pname, G
 {
     GL2Encoder *ctx = (GL2Encoder *)self;
     assert(ctx->m_state);
+    GLint maxIndex;
+    ctx->glGetIntegerv(self, GL_MAX_VERTEX_ATTRIBS, &maxIndex);
+    SET_ERROR_IF(!(index < maxIndex), GL_INVALID_VALUE);
 
     if (!ctx->m_state->getVertexAttribParameter<GLint>(index, pname, params)) {
         ctx->m_glGetVertexAttribiv_enc(self, index, pname, params);
@@ -407,6 +410,9 @@ void GL2Encoder::s_glGetVertexAttribfv(void *self, GLuint index, GLenum pname, G
 {
     GL2Encoder *ctx = (GL2Encoder *)self;
     assert(ctx->m_state);
+    GLint maxIndex;
+    ctx->glGetIntegerv(self, GL_MAX_VERTEX_ATTRIBS, &maxIndex);
+    SET_ERROR_IF(!(index < maxIndex), GL_INVALID_VALUE);
 
     if (!ctx->m_state->getVertexAttribParameter<GLfloat>(index, pname, params)) {
         ctx->m_glGetVertexAttribfv_enc(self, index, pname, params);