diff options
author | Bo Hu <bohu@google.com> | 2015-09-09 00:28:03 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-09-09 00:28:03 +0000 |
commit | 5ce6cd3192de65994909bb43f3ac7dd6bd73f437 (patch) | |
tree | 74ecdf89e0579a03e6b06568ce3f83053925fdd3 | |
parent | 3682b601a7a89aa4bbcdf25e122474e10fe0b96a (diff) | |
parent | d0e67c809cfc2a03030ac988ad2a4f9b351d8a4f (diff) | |
download | goldfish-5ce6cd3192de65994909bb43f3ac7dd6bd73f437.tar.gz |
Merge "Fix glDrawArrays API issue"
-rwxr-xr-x | opengl/system/GLESv2_enc/GL2Encoder.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/opengl/system/GLESv2_enc/GL2Encoder.cpp b/opengl/system/GLESv2_enc/GL2Encoder.cpp index 3205f07d..927809b2 100755 --- a/opengl/system/GLESv2_enc/GL2Encoder.cpp +++ b/opengl/system/GLESv2_enc/GL2Encoder.cpp @@ -513,14 +513,6 @@ void GL2Encoder::sendVertexAttributes(GLint first, GLsizei count) } } -void GL2Encoder::s_glDrawArrays(void *self, GLenum mode, GLint first, GLsizei count) -{ - GL2Encoder *ctx = (GL2Encoder *)self; - ctx->sendVertexAttributes(first, count); - ctx->m_glDrawArrays_enc(ctx, mode, 0, count); -} - - static bool isValidDrawMode(GLenum mode) { switch(mode) { case GL_POINTS: @@ -541,6 +533,19 @@ static bool isValidDrawType(GLenum mode) { mode == GL_UNSIGNED_INT; } +void GL2Encoder::s_glDrawArrays(void *self, GLenum mode, GLint first, GLsizei count) +{ + GL2Encoder *ctx = (GL2Encoder *)self; + + SET_ERROR_IF(!isValidDrawMode(mode), GL_INVALID_ENUM); + SET_ERROR_IF(ctx->glCheckFramebufferStatus(ctx, GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, + GL_INVALID_FRAMEBUFFER_OPERATION); + SET_ERROR_IF(count<0, GL_INVALID_VALUE); + + ctx->sendVertexAttributes(first, count); + ctx->m_glDrawArrays_enc(ctx, mode, 0, count); +} + void GL2Encoder::s_glDrawElements(void *self, GLenum mode, GLsizei count, GLenum type, const void *indices) { |