aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLingfeng Yang <lfy@google.com>2020-06-12 19:23:17 -0700
committerLingfeng Yang <lfy@google.com>2020-06-16 12:27:19 -0700
commite947575d2239b7b324c9b77a4ec84abcc265002f (patch)
treee2bcfbb487b64ca31e07c96ee423d7e3920a23e2
parente41d0e536ca923795d2ca74cc38292a9c1187732 (diff)
downloaddevice_generic_goldfish-opengl-e947575d2239b7b324c9b77a4ec84abcc265002f.tar.gz
device_generic_goldfish-opengl-e947575d2239b7b324c9b77a4ec84abcc265002f.tar.bz2
device_generic_goldfish-opengl-e947575d2239b7b324c9b77a4ec84abcc265002f.zip
Squelch negative counts/lengths in glInvalidate(Sub)Framebuffer
Bug: 158890590 Change-Id: I8e4d688ea413cdef755f8efcfec1a1fd19822693 Merged-In: I8e4d688ea413cdef755f8efcfec1a1fd19822693
-rwxr-xr-xsystem/GLESv2_enc/GL2Encoder.cpp17
-rw-r--r--system/GLESv2_enc/GL2Encoder.h8
2 files changed, 25 insertions, 0 deletions
diff --git a/system/GLESv2_enc/GL2Encoder.cpp b/system/GLESv2_enc/GL2Encoder.cpp
index 3ad94208..1fbd3168 100755
--- a/system/GLESv2_enc/GL2Encoder.cpp
+++ b/system/GLESv2_enc/GL2Encoder.cpp
@@ -372,6 +372,9 @@ GL2Encoder::GL2Encoder(IOStream *stream, ChecksumCalculator *protocol)
OVERRIDE_CUSTOM(glReadnPixelsEXT);
OVERRIDE_CUSTOM(glGetnUniformfvEXT);
OVERRIDE_CUSTOM(glGetnUniformivEXT);
+
+ OVERRIDE(glInvalidateFramebuffer);
+ OVERRIDE(glInvalidateSubFramebuffer);
}
GL2Encoder::~GL2Encoder()
@@ -5436,3 +5439,17 @@ void GL2Encoder::s_glGetnUniformivEXT(void *self, GLuint program, GLint location
location)), GL_INVALID_OPERATION);
s_glGetUniformiv(self, program, location, params);
}
+
+void GL2Encoder::s_glInvalidateFramebuffer(void* self, GLenum target, GLsizei numAttachments, const GLenum *attachments) {
+ GL2Encoder *ctx = (GL2Encoder*)self;
+ SET_ERROR_IF(numAttachments < 0, GL_INVALID_VALUE);
+ ctx->m_glInvalidateFramebuffer_enc(ctx, target, numAttachments, attachments);
+}
+
+void GL2Encoder::s_glInvalidateSubFramebuffer(void* self, GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) {
+ GL2Encoder *ctx = (GL2Encoder*)self;
+ SET_ERROR_IF(numAttachments < 0, GL_INVALID_VALUE);
+ SET_ERROR_IF(width < 0, GL_INVALID_VALUE);
+ SET_ERROR_IF(height < 0, GL_INVALID_VALUE);
+ ctx->m_glInvalidateSubFramebuffer_enc(ctx, target, numAttachments, attachments, x, y, width, height);
+}
diff --git a/system/GLESv2_enc/GL2Encoder.h b/system/GLESv2_enc/GL2Encoder.h
index b85bc0da..0ceb9deb 100644
--- a/system/GLESv2_enc/GL2Encoder.h
+++ b/system/GLESv2_enc/GL2Encoder.h
@@ -761,6 +761,14 @@ private:
GLsizei bufSize, GLfloat* params);
static void s_glGetnUniformivEXT(void *self, GLuint program, GLint location,
GLsizei bufSize, GLint* params);
+
+ // Invalidate framebuffer
+ static void s_glInvalidateFramebuffer(void* self, GLenum target, GLsizei numAttachments, const GLenum *attachments);
+ static void s_glInvalidateSubFramebuffer(void* self, GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+
+ glInvalidateFramebuffer_client_proc_t m_glInvalidateFramebuffer_enc;
+ glInvalidateSubFramebuffer_client_proc_t m_glInvalidateSubFramebuffer_enc;;
+
public:
glEGLImageTargetTexture2DOES_client_proc_t m_glEGLImageTargetTexture2DOES_enc;