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 08d17d2bd2e210685f19167af74fcbc350ac6a60..6bb9acf627dfa2216c4966943bd78374fdc487cf 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h |
@@ -3433,6 +3433,63 @@ error::Error GLES2DecoderImpl::HandleDrawBuffersEXTImmediate( |
return error::kNoError; |
} |
+error::Error GLES2DecoderImpl::HandleMatrixMode( |
+ uint32 immediate_data_size, |
+ const gles2::cmds::MatrixMode& c) { |
+ GLenum mode = static_cast<GLenum>(c.mode); |
+ if (!validators_->matrix_mode.IsValid(mode)) { |
+ LOCAL_SET_GL_ERROR_INVALID_ENUM("glMatrixMode", mode, "mode"); |
+ return error::kNoError; |
+ } |
+ if (state_.matrix_mode != mode) { |
+ state_.matrix_mode = mode; |
+ glMatrixMode(mode); |
+ } |
+ return error::kNoError; |
+} |
+ |
+error::Error GLES2DecoderImpl::HandleLoadMatrixf( |
+ uint32 immediate_data_size, |
+ const gles2::cmds::LoadMatrixf& c) { |
+ uint32 data_size; |
+ if (!ComputeDataSize(1, sizeof(GLfloat), 16, &data_size)) { |
+ return error::kOutOfBounds; |
+ } |
+ const GLfloat* m = |
+ GetSharedMemoryAs<const GLfloat*>(c.m_shm_id, c.m_shm_offset, data_size); |
+ if (m == NULL) { |
+ return error::kOutOfBounds; |
+ } |
+ glLoadMatrixf(m); |
+ return error::kNoError; |
+} |
+ |
+error::Error GLES2DecoderImpl::HandleLoadMatrixfImmediate( |
+ uint32 immediate_data_size, |
+ const gles2::cmds::LoadMatrixfImmediate& c) { |
+ uint32 data_size; |
+ if (!ComputeDataSize(1, sizeof(GLfloat), 16, &data_size)) { |
+ return error::kOutOfBounds; |
+ } |
+ if (data_size > immediate_data_size) { |
+ return error::kOutOfBounds; |
+ } |
+ const GLfloat* m = |
+ GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); |
+ if (m == NULL) { |
+ return error::kOutOfBounds; |
+ } |
+ glLoadMatrixf(m); |
+ return error::kNoError; |
+} |
+ |
+error::Error GLES2DecoderImpl::HandleLoadIdentity( |
+ uint32 immediate_data_size, |
+ const gles2::cmds::LoadIdentity& c) { |
+ glLoadIdentity(); |
+ return error::kNoError; |
+} |
+ |
bool GLES2DecoderImpl::SetCapabilityState(GLenum cap, bool enabled) { |
switch (cap) { |
case GL_BLEND: |