summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBo Hu <bohu@google.com>2015-09-09 00:28:03 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-09-09 00:28:03 +0000
commit5ce6cd3192de65994909bb43f3ac7dd6bd73f437 (patch)
tree74ecdf89e0579a03e6b06568ce3f83053925fdd3
parent3682b601a7a89aa4bbcdf25e122474e10fe0b96a (diff)
parentd0e67c809cfc2a03030ac988ad2a4f9b351d8a4f (diff)
downloadgoldfish-5ce6cd3192de65994909bb43f3ac7dd6bd73f437.tar.gz
Merge "Fix glDrawArrays API issue"
-rwxr-xr-xopengl/system/GLESv2_enc/GL2Encoder.cpp21
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)
{