Index: gpu/command_buffer/service/gles2_cmd_decoder_autogen.h |
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h |
index ebdb62517e5a8703ec57929a05221e21f61ae14b..b84fc2abf47d8a0bd5d81e6435a26a83a66118d1 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h |
@@ -1493,6 +1493,74 @@ error::Error GLES2DecoderImpl::HandleHint(uint32_t immediate_data_size, |
return error::kNoError; |
} |
+error::Error GLES2DecoderImpl::HandleInvalidateFramebufferImmediate( |
+ uint32_t immediate_data_size, |
+ const void* cmd_data) { |
+ if (!unsafe_es3_apis_enabled()) |
+ return error::kUnknownCommand; |
+ const gles2::cmds::InvalidateFramebufferImmediate& c = |
+ *static_cast<const gles2::cmds::InvalidateFramebufferImmediate*>( |
+ cmd_data); |
+ (void)c; |
+ GLenum target = static_cast<GLenum>(c.target); |
+ GLsizei count = static_cast<GLsizei>(c.count); |
+ uint32_t data_size; |
+ if (!ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { |
+ return error::kOutOfBounds; |
+ } |
+ if (data_size > immediate_data_size) { |
+ return error::kOutOfBounds; |
+ } |
+ const GLenum* attachments = |
+ GetImmediateDataAs<const GLenum*>(c, data_size, immediate_data_size); |
+ if (attachments == NULL) { |
+ return error::kOutOfBounds; |
+ } |
+ glInvalidateFramebuffer(target, count, attachments); |
+ return error::kNoError; |
+} |
+ |
+error::Error GLES2DecoderImpl::HandleInvalidateSubFramebufferImmediate( |
+ uint32_t immediate_data_size, |
+ const void* cmd_data) { |
+ if (!unsafe_es3_apis_enabled()) |
+ return error::kUnknownCommand; |
+ const gles2::cmds::InvalidateSubFramebufferImmediate& c = |
+ *static_cast<const gles2::cmds::InvalidateSubFramebufferImmediate*>( |
+ cmd_data); |
+ (void)c; |
+ GLenum target = static_cast<GLenum>(c.target); |
+ GLsizei count = static_cast<GLsizei>(c.count); |
+ uint32_t data_size; |
+ if (!ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { |
+ return error::kOutOfBounds; |
+ } |
+ if (data_size > immediate_data_size) { |
+ return error::kOutOfBounds; |
+ } |
+ const GLenum* attachments = |
+ GetImmediateDataAs<const GLenum*>(c, data_size, immediate_data_size); |
+ GLint x = static_cast<GLint>(c.x); |
+ GLint y = static_cast<GLint>(c.y); |
+ GLsizei width = static_cast<GLsizei>(c.width); |
+ GLsizei height = static_cast<GLsizei>(c.height); |
+ if (attachments == NULL) { |
+ return error::kOutOfBounds; |
+ } |
+ if (width < 0) { |
+ LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glInvalidateSubFramebuffer", |
+ "width < 0"); |
+ return error::kNoError; |
+ } |
+ if (height < 0) { |
+ LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glInvalidateSubFramebuffer", |
+ "height < 0"); |
+ return error::kNoError; |
+ } |
+ glInvalidateSubFramebuffer(target, count, attachments, x, y, width, height); |
+ return error::kNoError; |
+} |
+ |
error::Error GLES2DecoderImpl::HandleIsBuffer(uint32_t immediate_data_size, |
const void* cmd_data) { |
const gles2::cmds::IsBuffer& c = |
@@ -1653,6 +1721,18 @@ error::Error GLES2DecoderImpl::HandlePolygonOffset(uint32_t immediate_data_size, |
return error::kNoError; |
} |
+error::Error GLES2DecoderImpl::HandleReadBuffer(uint32_t immediate_data_size, |
+ const void* cmd_data) { |
+ if (!unsafe_es3_apis_enabled()) |
+ return error::kUnknownCommand; |
+ const gles2::cmds::ReadBuffer& c = |
+ *static_cast<const gles2::cmds::ReadBuffer*>(cmd_data); |
+ (void)c; |
+ GLenum src = static_cast<GLenum>(c.src); |
+ glReadBuffer(src); |
+ return error::kNoError; |
+} |
+ |
error::Error GLES2DecoderImpl::HandleReleaseShaderCompiler( |
uint32_t immediate_data_size, |
const void* cmd_data) { |