Index: gpu/command_buffer/service/gles2_cmd_decoder.cc |
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
index 2aa4407a930ec6ef00535bb20f4771e60fff8460..aad82bcbb4b48925c0d17bb6f7dcff8fd6e468a3 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
@@ -1664,10 +1664,8 @@ class GLES2DecoderImpl : public GLES2Decoder, |
// Generate a member function prototype for each command in an automated and |
// typesafe way. |
- #define GLES2_CMD_OP(name) \ |
- Error Handle ## name( \ |
- uint32 immediate_data_size, \ |
- const cmds::name& args); \ |
+#define GLES2_CMD_OP(name) \ |
+ Error Handle##name(uint32 immediate_data_size, const void* data); |
GLES2_COMMAND_LIST(GLES2_CMD_OP) |
@@ -3694,8 +3692,10 @@ bool GLES2DecoderImpl::ResizeOffscreenFrameBuffer(const gfx::Size& size) { |
return true; |
} |
-error::Error GLES2DecoderImpl::HandleResizeCHROMIUM( |
- uint32 immediate_data_size, const cmds::ResizeCHROMIUM& c) { |
+error::Error GLES2DecoderImpl::HandleResizeCHROMIUM(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::ResizeCHROMIUM& c = |
+ *static_cast<const gles2::cmds::ResizeCHROMIUM*>(cmd_data); |
if (!offscreen_target_frame_buffer_.get() && surface_->DeferDraws()) |
return error::kDeferCommandUntilLater; |
@@ -3772,17 +3772,18 @@ error::Error GLES2DecoderImpl::DoCommand( |
uint32 immediate_data_size = |
(arg_count - info_arg_count) * sizeof(CommandBufferEntry); // NOLINT |
- switch (command) { |
- #define GLES2_CMD_OP(name) \ |
- case cmds::name::kCmdId: \ |
- result = Handle ## name( \ |
- immediate_data_size, \ |
- *static_cast<const gles2::cmds::name*>(cmd_data)); \ |
- break; \ |
- |
- GLES2_COMMAND_LIST(GLES2_CMD_OP) |
- #undef GLES2_CMD_OP |
- } |
+ |
+ typedef gpu::gles2::GLES2Decoder::Error (GLES2DecoderImpl::*CmdHandler)( |
+ uint32 immediate_data_size, const void* data); |
+ |
+ static CmdHandler cmd_handlers[] = { |
piman
2014/09/05 22:10:16
nit: can we fold this into g_command_info? It seem
vmiura
2014/09/05 22:35:44
Done.
|
+#define GLES2_CMD_OP(name) &GLES2DecoderImpl::Handle##name, |
+ GLES2_COMMAND_LIST(GLES2_CMD_OP) |
+#undef GLES2_CMD_OP |
+ }; |
+ |
+ result = |
+ (this->*cmd_handlers[command_index])(immediate_data_size, cmd_data); |
if (doing_gpu_trace) |
gpu_tracer_->End(kTraceDecoder); |
@@ -4808,7 +4809,10 @@ void GLES2DecoderImpl::DoBindAttribLocation( |
} |
error::Error GLES2DecoderImpl::HandleBindAttribLocationBucket( |
- uint32 immediate_data_size, const cmds::BindAttribLocationBucket& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::BindAttribLocationBucket& c = |
+ *static_cast<const gles2::cmds::BindAttribLocationBucket*>(cmd_data); |
GLuint program = static_cast<GLuint>(c.program); |
GLuint index = static_cast<GLuint>(c.index); |
Bucket* bucket = GetBucket(c.name_bucket_id); |
@@ -4859,7 +4863,10 @@ void GLES2DecoderImpl::DoBindUniformLocationCHROMIUM( |
error::Error GLES2DecoderImpl::HandleBindUniformLocationCHROMIUMBucket( |
uint32 immediate_data_size, |
- const cmds::BindUniformLocationCHROMIUMBucket& c) { |
+ const void* cmd_data) { |
+ const gles2::cmds::BindUniformLocationCHROMIUMBucket& c = |
+ *static_cast<const gles2::cmds::BindUniformLocationCHROMIUMBucket*>( |
+ cmd_data); |
GLuint program = static_cast<GLuint>(c.program); |
GLint location = static_cast<GLint>(c.location); |
Bucket* bucket = GetBucket(c.name_bucket_id); |
@@ -4874,8 +4881,10 @@ error::Error GLES2DecoderImpl::HandleBindUniformLocationCHROMIUMBucket( |
return error::kNoError; |
} |
-error::Error GLES2DecoderImpl::HandleDeleteShader( |
- uint32 immediate_data_size, const cmds::DeleteShader& c) { |
+error::Error GLES2DecoderImpl::HandleDeleteShader(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::DeleteShader& c = |
+ *static_cast<const gles2::cmds::DeleteShader*>(cmd_data); |
GLuint client_id = c.shader; |
if (client_id) { |
Shader* shader = GetShader(client_id); |
@@ -4891,8 +4900,10 @@ error::Error GLES2DecoderImpl::HandleDeleteShader( |
return error::kNoError; |
} |
-error::Error GLES2DecoderImpl::HandleDeleteProgram( |
- uint32 immediate_data_size, const cmds::DeleteProgram& c) { |
+error::Error GLES2DecoderImpl::HandleDeleteProgram(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::DeleteProgram& c = |
+ *static_cast<const gles2::cmds::DeleteProgram*>(cmd_data); |
GLuint client_id = c.program; |
if (client_id) { |
Program* program = GetProgram(client_id); |
@@ -4917,7 +4928,10 @@ void GLES2DecoderImpl::DoDeleteSharedIdsCHROMIUM( |
} |
error::Error GLES2DecoderImpl::HandleDeleteSharedIdsCHROMIUM( |
- uint32 immediate_data_size, const cmds::DeleteSharedIdsCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::DeleteSharedIdsCHROMIUM& c = |
+ *static_cast<const gles2::cmds::DeleteSharedIdsCHROMIUM*>(cmd_data); |
GLuint namespace_id = static_cast<GLuint>(c.namespace_id); |
GLsizei n = static_cast<GLsizei>(c.n); |
uint32 data_size; |
@@ -4953,7 +4967,10 @@ void GLES2DecoderImpl::DoGenSharedIdsCHROMIUM( |
} |
error::Error GLES2DecoderImpl::HandleGenSharedIdsCHROMIUM( |
- uint32 immediate_data_size, const cmds::GenSharedIdsCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GenSharedIdsCHROMIUM& c = |
+ *static_cast<const gles2::cmds::GenSharedIdsCHROMIUM*>(cmd_data); |
GLuint namespace_id = static_cast<GLuint>(c.namespace_id); |
GLuint id_offset = static_cast<GLuint>(c.id_offset); |
GLsizei n = static_cast<GLsizei>(c.n); |
@@ -4991,7 +5008,10 @@ void GLES2DecoderImpl::DoRegisterSharedIdsCHROMIUM( |
} |
error::Error GLES2DecoderImpl::HandleRegisterSharedIdsCHROMIUM( |
- uint32 immediate_data_size, const cmds::RegisterSharedIdsCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::RegisterSharedIdsCHROMIUM& c = |
+ *static_cast<const gles2::cmds::RegisterSharedIdsCHROMIUM*>(cmd_data); |
GLuint namespace_id = static_cast<GLuint>(c.namespace_id); |
GLsizei n = static_cast<GLsizei>(c.n); |
uint32 data_size; |
@@ -6565,8 +6585,9 @@ error::Error GLES2DecoderImpl::DoDrawArrays( |
return error::kNoError; |
} |
-error::Error GLES2DecoderImpl::HandleDrawArrays( |
- uint32 immediate_data_size, const cmds::DrawArrays& c) { |
+error::Error GLES2DecoderImpl::HandleDrawArrays(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const cmds::DrawArrays& c = *static_cast<const cmds::DrawArrays*>(cmd_data); |
return DoDrawArrays("glDrawArrays", |
false, |
static_cast<GLenum>(c.mode), |
@@ -6576,7 +6597,10 @@ error::Error GLES2DecoderImpl::HandleDrawArrays( |
} |
error::Error GLES2DecoderImpl::HandleDrawArraysInstancedANGLE( |
- uint32 immediate_data_size, const cmds::DrawArraysInstancedANGLE& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::DrawArraysInstancedANGLE& c = |
+ *static_cast<const gles2::cmds::DrawArraysInstancedANGLE*>(cmd_data); |
if (!features().angle_instanced_arrays) { |
LOCAL_SET_GL_ERROR( |
GL_INVALID_OPERATION, |
@@ -6704,8 +6728,10 @@ error::Error GLES2DecoderImpl::DoDrawElements( |
return error::kNoError; |
} |
-error::Error GLES2DecoderImpl::HandleDrawElements( |
- uint32 immediate_data_size, const cmds::DrawElements& c) { |
+error::Error GLES2DecoderImpl::HandleDrawElements(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::DrawElements& c = |
+ *static_cast<const gles2::cmds::DrawElements*>(cmd_data); |
return DoDrawElements("glDrawElements", |
false, |
static_cast<GLenum>(c.mode), |
@@ -6716,7 +6742,10 @@ error::Error GLES2DecoderImpl::HandleDrawElements( |
} |
error::Error GLES2DecoderImpl::HandleDrawElementsInstancedANGLE( |
- uint32 immediate_data_size, const cmds::DrawElementsInstancedANGLE& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::DrawElementsInstancedANGLE& c = |
+ *static_cast<const gles2::cmds::DrawElementsInstancedANGLE*>(cmd_data); |
if (!features().angle_instanced_arrays) { |
LOCAL_SET_GL_ERROR( |
GL_INVALID_OPERATION, |
@@ -6770,7 +6799,10 @@ error::Error GLES2DecoderImpl::ShaderSourceHelper( |
} |
error::Error GLES2DecoderImpl::HandleShaderSourceBucket( |
- uint32 immediate_data_size, const cmds::ShaderSourceBucket& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::ShaderSourceBucket& c = |
+ *static_cast<const gles2::cmds::ShaderSourceBucket*>(cmd_data); |
Bucket* bucket = GetBucket(c.data_bucket_id); |
if (!bucket || bucket->size() == 0) { |
return error::kInvalidArguments; |
@@ -6825,8 +6857,10 @@ void GLES2DecoderImpl::DoGetShaderiv( |
glGetShaderiv(shader->service_id(), pname, params); |
} |
-error::Error GLES2DecoderImpl::HandleGetShaderSource( |
- uint32 immediate_data_size, const cmds::GetShaderSource& c) { |
+error::Error GLES2DecoderImpl::HandleGetShaderSource(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetShaderSource& c = |
+ *static_cast<const gles2::cmds::GetShaderSource*>(cmd_data); |
GLuint shader_id = c.shader; |
uint32 bucket_id = static_cast<uint32>(c.bucket_id); |
Bucket* bucket = CreateBucket(bucket_id); |
@@ -6841,7 +6875,10 @@ error::Error GLES2DecoderImpl::HandleGetShaderSource( |
error::Error GLES2DecoderImpl::HandleGetTranslatedShaderSourceANGLE( |
uint32 immediate_data_size, |
- const cmds::GetTranslatedShaderSourceANGLE& c) { |
+ const void* cmd_data) { |
+ const gles2::cmds::GetTranslatedShaderSourceANGLE& c = |
+ *static_cast<const gles2::cmds::GetTranslatedShaderSourceANGLE*>( |
+ cmd_data); |
GLuint shader_id = c.shader; |
uint32 bucket_id = static_cast<uint32>(c.bucket_id); |
Bucket* bucket = CreateBucket(bucket_id); |
@@ -6858,7 +6895,10 @@ error::Error GLES2DecoderImpl::HandleGetTranslatedShaderSourceANGLE( |
} |
error::Error GLES2DecoderImpl::HandleGetProgramInfoLog( |
- uint32 immediate_data_size, const cmds::GetProgramInfoLog& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetProgramInfoLog& c = |
+ *static_cast<const gles2::cmds::GetProgramInfoLog*>(cmd_data); |
GLuint program_id = c.program; |
uint32 bucket_id = static_cast<uint32>(c.bucket_id); |
Bucket* bucket = CreateBucket(bucket_id); |
@@ -6873,7 +6913,10 @@ error::Error GLES2DecoderImpl::HandleGetProgramInfoLog( |
} |
error::Error GLES2DecoderImpl::HandleGetShaderInfoLog( |
- uint32 immediate_data_size, const cmds::GetShaderInfoLog& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetShaderInfoLog& c = |
+ *static_cast<const gles2::cmds::GetShaderInfoLog*>(cmd_data); |
GLuint shader_id = c.shader; |
uint32 bucket_id = static_cast<uint32>(c.bucket_id); |
Bucket* bucket = CreateBucket(bucket_id); |
@@ -7166,7 +7209,10 @@ void GLES2DecoderImpl::DoVertexAttrib4fv(GLuint index, const GLfloat* v) { |
} |
error::Error GLES2DecoderImpl::HandleVertexAttribPointer( |
- uint32 immediate_data_size, const cmds::VertexAttribPointer& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::VertexAttribPointer& c = |
+ *static_cast<const gles2::cmds::VertexAttribPointer*>(cmd_data); |
if (!state_.bound_array_buffer.get() || |
state_.bound_array_buffer->IsDeleted()) { |
@@ -7260,7 +7306,10 @@ void GLES2DecoderImpl::DoViewport(GLint x, GLint y, GLsizei width, |
} |
error::Error GLES2DecoderImpl::HandleVertexAttribDivisorANGLE( |
- uint32 immediate_data_size, const cmds::VertexAttribDivisorANGLE& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::VertexAttribDivisorANGLE& c = |
+ *static_cast<const gles2::cmds::VertexAttribDivisorANGLE*>(cmd_data); |
if (!features().angle_instanced_arrays) { |
LOCAL_SET_GL_ERROR( |
GL_INVALID_OPERATION, |
@@ -7411,9 +7460,10 @@ void GLES2DecoderImpl::FinishReadPixels( |
} |
} |
- |
-error::Error GLES2DecoderImpl::HandleReadPixels( |
- uint32 immediate_data_size, const cmds::ReadPixels& c) { |
+error::Error GLES2DecoderImpl::HandleReadPixels(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::ReadPixels& c = |
+ *static_cast<const gles2::cmds::ReadPixels*>(cmd_data); |
TRACE_EVENT0("gpu", "GLES2DecoderImpl::HandleReadPixels"); |
error::Error fbo_error = WillAccessBoundFramebufferForRead(); |
if (fbo_error != error::kNoError) |
@@ -7579,8 +7629,10 @@ error::Error GLES2DecoderImpl::HandleReadPixels( |
return error::kNoError; |
} |
-error::Error GLES2DecoderImpl::HandlePixelStorei( |
- uint32 immediate_data_size, const cmds::PixelStorei& c) { |
+error::Error GLES2DecoderImpl::HandlePixelStorei(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::PixelStorei& c = |
+ *static_cast<const gles2::cmds::PixelStorei*>(cmd_data); |
GLenum pname = c.pname; |
GLenum param = c.param; |
if (!validators_->pixel_store.IsValid(pname)) { |
@@ -7628,7 +7680,10 @@ error::Error GLES2DecoderImpl::HandlePixelStorei( |
} |
error::Error GLES2DecoderImpl::HandlePostSubBufferCHROMIUM( |
- uint32 immediate_data_size, const cmds::PostSubBufferCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::PostSubBufferCHROMIUM& c = |
+ *static_cast<const gles2::cmds::PostSubBufferCHROMIUM*>(cmd_data); |
TRACE_EVENT0("gpu", "GLES2DecoderImpl::HandlePostSubBufferCHROMIUM"); |
{ |
TRACE_EVENT_SYNTHETIC_DELAY("gpu.PresentingFrame"); |
@@ -7658,7 +7713,9 @@ error::Error GLES2DecoderImpl::HandlePostSubBufferCHROMIUM( |
error::Error GLES2DecoderImpl::HandleScheduleOverlayPlaneCHROMIUM( |
uint32 immediate_data_size, |
- const cmds::ScheduleOverlayPlaneCHROMIUM& c) { |
+ const void* cmd_data) { |
+ const gles2::cmds::ScheduleOverlayPlaneCHROMIUM& c = |
+ *static_cast<const gles2::cmds::ScheduleOverlayPlaneCHROMIUM*>(cmd_data); |
TextureRef* ref = texture_manager()->GetTexture(c.overlay_texture_id); |
if (!ref) { |
LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, |
@@ -7727,7 +7784,10 @@ error::Error GLES2DecoderImpl::GetAttribLocationHelper( |
} |
error::Error GLES2DecoderImpl::HandleGetAttribLocation( |
- uint32 immediate_data_size, const cmds::GetAttribLocation& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetAttribLocation& c = |
+ *static_cast<const gles2::cmds::GetAttribLocation*>(cmd_data); |
Bucket* bucket = GetBucket(c.name_bucket_id); |
if (!bucket) { |
return error::kInvalidArguments; |
@@ -7773,7 +7833,10 @@ error::Error GLES2DecoderImpl::GetUniformLocationHelper( |
} |
error::Error GLES2DecoderImpl::HandleGetUniformLocation( |
- uint32 immediate_data_size, const cmds::GetUniformLocation& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetUniformLocation& c = |
+ *static_cast<const gles2::cmds::GetUniformLocation*>(cmd_data); |
Bucket* bucket = GetBucket(c.name_bucket_id); |
if (!bucket) { |
return error::kInvalidArguments; |
@@ -7786,8 +7849,10 @@ error::Error GLES2DecoderImpl::HandleGetUniformLocation( |
c.program, c.location_shm_id, c.location_shm_offset, name_str); |
} |
-error::Error GLES2DecoderImpl::HandleGetString( |
- uint32 immediate_data_size, const cmds::GetString& c) { |
+error::Error GLES2DecoderImpl::HandleGetString(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetString& c = |
+ *static_cast<const gles2::cmds::GetString*>(cmd_data); |
GLenum name = static_cast<GLenum>(c.name); |
if (!validators_->string_type.IsValid(name)) { |
LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetString", name, "name"); |
@@ -7860,8 +7925,10 @@ error::Error GLES2DecoderImpl::HandleGetString( |
return error::kNoError; |
} |
-error::Error GLES2DecoderImpl::HandleBufferData( |
- uint32 immediate_data_size, const cmds::BufferData& c) { |
+error::Error GLES2DecoderImpl::HandleBufferData(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::BufferData& c = |
+ *static_cast<const gles2::cmds::BufferData*>(cmd_data); |
GLenum target = static_cast<GLenum>(c.target); |
GLsizeiptr size = static_cast<GLsizeiptr>(c.size); |
uint32 data_shm_id = static_cast<uint32>(c.data_shm_id); |
@@ -8265,7 +8332,10 @@ error::Error GLES2DecoderImpl::DoCompressedTexImage2D( |
} |
error::Error GLES2DecoderImpl::HandleCompressedTexImage2D( |
- uint32 immediate_data_size, const cmds::CompressedTexImage2D& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::CompressedTexImage2D& c = |
+ *static_cast<const gles2::cmds::CompressedTexImage2D*>(cmd_data); |
GLenum target = static_cast<GLenum>(c.target); |
GLint level = static_cast<GLint>(c.level); |
GLenum internal_format = static_cast<GLenum>(c.internalformat); |
@@ -8288,7 +8358,10 @@ error::Error GLES2DecoderImpl::HandleCompressedTexImage2D( |
} |
error::Error GLES2DecoderImpl::HandleCompressedTexImage2DBucket( |
- uint32 immediate_data_size, const cmds::CompressedTexImage2DBucket& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::CompressedTexImage2DBucket& c = |
+ *static_cast<const gles2::cmds::CompressedTexImage2DBucket*>(cmd_data); |
GLenum target = static_cast<GLenum>(c.target); |
GLint level = static_cast<GLint>(c.level); |
GLenum internal_format = static_cast<GLenum>(c.internalformat); |
@@ -8312,7 +8385,9 @@ error::Error GLES2DecoderImpl::HandleCompressedTexImage2DBucket( |
error::Error GLES2DecoderImpl::HandleCompressedTexSubImage2DBucket( |
uint32 immediate_data_size, |
- const cmds::CompressedTexSubImage2DBucket& c) { |
+ const void* cmd_data) { |
+ const gles2::cmds::CompressedTexSubImage2DBucket& c = |
+ *static_cast<const gles2::cmds::CompressedTexSubImage2DBucket*>(cmd_data); |
GLenum target = static_cast<GLenum>(c.target); |
GLint level = static_cast<GLint>(c.level); |
GLint xoffset = static_cast<GLint>(c.xoffset); |
@@ -8360,8 +8435,10 @@ error::Error GLES2DecoderImpl::HandleCompressedTexSubImage2DBucket( |
return error::kNoError; |
} |
-error::Error GLES2DecoderImpl::HandleTexImage2D( |
- uint32 immediate_data_size, const cmds::TexImage2D& c) { |
+error::Error GLES2DecoderImpl::HandleTexImage2D(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::TexImage2D& c = |
+ *static_cast<const gles2::cmds::TexImage2D*>(cmd_data); |
TRACE_EVENT2("gpu", "GLES2DecoderImpl::HandleTexImage2D", |
"width", c.width, "height", c.height); |
// Set as failed for now, but if it successed, this will be set to not failed. |
@@ -8844,8 +8921,10 @@ error::Error GLES2DecoderImpl::DoTexSubImage2D( |
return error::kNoError; |
} |
-error::Error GLES2DecoderImpl::HandleTexSubImage2D( |
- uint32 immediate_data_size, const cmds::TexSubImage2D& c) { |
+error::Error GLES2DecoderImpl::HandleTexSubImage2D(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::TexSubImage2D& c = |
+ *static_cast<const gles2::cmds::TexSubImage2D*>(cmd_data); |
TRACE_EVENT2("gpu", "GLES2DecoderImpl::HandleTexSubImage2D", |
"width", c.width, "height", c.height); |
GLboolean internal = static_cast<GLboolean>(c.internal); |
@@ -8873,7 +8952,10 @@ error::Error GLES2DecoderImpl::HandleTexSubImage2D( |
} |
error::Error GLES2DecoderImpl::HandleGetVertexAttribPointerv( |
- uint32 immediate_data_size, const cmds::GetVertexAttribPointerv& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetVertexAttribPointerv& c = |
+ *static_cast<const gles2::cmds::GetVertexAttribPointerv*>(cmd_data); |
GLuint index = static_cast<GLuint>(c.index); |
GLenum pname = static_cast<GLenum>(c.pname); |
typedef cmds::GetVertexAttribPointerv::Result Result; |
@@ -8962,8 +9044,10 @@ bool GLES2DecoderImpl::GetUniformSetup( |
return true; |
} |
-error::Error GLES2DecoderImpl::HandleGetUniformiv( |
- uint32 immediate_data_size, const cmds::GetUniformiv& c) { |
+error::Error GLES2DecoderImpl::HandleGetUniformiv(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetUniformiv& c = |
+ *static_cast<const gles2::cmds::GetUniformiv*>(cmd_data); |
GLuint program = c.program; |
GLint fake_location = c.location; |
GLuint service_id; |
@@ -8981,8 +9065,10 @@ error::Error GLES2DecoderImpl::HandleGetUniformiv( |
return error; |
} |
-error::Error GLES2DecoderImpl::HandleGetUniformfv( |
- uint32 immediate_data_size, const cmds::GetUniformfv& c) { |
+error::Error GLES2DecoderImpl::HandleGetUniformfv(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetUniformfv& c = |
+ *static_cast<const gles2::cmds::GetUniformfv*>(cmd_data); |
GLuint program = c.program; |
GLint fake_location = c.location; |
GLuint service_id; |
@@ -9012,7 +9098,10 @@ error::Error GLES2DecoderImpl::HandleGetUniformfv( |
} |
error::Error GLES2DecoderImpl::HandleGetShaderPrecisionFormat( |
- uint32 immediate_data_size, const cmds::GetShaderPrecisionFormat& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetShaderPrecisionFormat& c = |
+ *static_cast<const gles2::cmds::GetShaderPrecisionFormat*>(cmd_data); |
GLenum shader_type = static_cast<GLenum>(c.shadertype); |
GLenum precision_type = static_cast<GLenum>(c.precisiontype); |
typedef cmds::GetShaderPrecisionFormat::Result Result; |
@@ -9050,7 +9139,10 @@ error::Error GLES2DecoderImpl::HandleGetShaderPrecisionFormat( |
} |
error::Error GLES2DecoderImpl::HandleGetAttachedShaders( |
- uint32 immediate_data_size, const cmds::GetAttachedShaders& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetAttachedShaders& c = |
+ *static_cast<const gles2::cmds::GetAttachedShaders*>(cmd_data); |
uint32 result_size = c.result_size; |
GLuint program_id = static_cast<GLuint>(c.program); |
Program* program = GetProgramInfoNotShader( |
@@ -9084,7 +9176,10 @@ error::Error GLES2DecoderImpl::HandleGetAttachedShaders( |
} |
error::Error GLES2DecoderImpl::HandleGetActiveUniform( |
- uint32 immediate_data_size, const cmds::GetActiveUniform& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetActiveUniform& c = |
+ *static_cast<const gles2::cmds::GetActiveUniform*>(cmd_data); |
GLuint program_id = c.program; |
GLuint index = c.index; |
uint32 name_bucket_id = c.name_bucket_id; |
@@ -9118,8 +9213,10 @@ error::Error GLES2DecoderImpl::HandleGetActiveUniform( |
return error::kNoError; |
} |
-error::Error GLES2DecoderImpl::HandleGetActiveAttrib( |
- uint32 immediate_data_size, const cmds::GetActiveAttrib& c) { |
+error::Error GLES2DecoderImpl::HandleGetActiveAttrib(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetActiveAttrib& c = |
+ *static_cast<const gles2::cmds::GetActiveAttrib*>(cmd_data); |
GLuint program_id = c.program; |
GLuint index = c.index; |
uint32 name_bucket_id = c.name_bucket_id; |
@@ -9153,8 +9250,8 @@ error::Error GLES2DecoderImpl::HandleGetActiveAttrib( |
return error::kNoError; |
} |
-error::Error GLES2DecoderImpl::HandleShaderBinary( |
- uint32 immediate_data_size, const cmds::ShaderBinary& c) { |
+error::Error GLES2DecoderImpl::HandleShaderBinary(uint32 immediate_data_size, |
+ const void* cmd_data) { |
#if 1 // No binary shader support. |
LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glShaderBinary", "not supported"); |
return error::kNoError; |
@@ -9310,7 +9407,10 @@ void GLES2DecoderImpl::DoSwapBuffers() { |
} |
error::Error GLES2DecoderImpl::HandleEnableFeatureCHROMIUM( |
- uint32 immediate_data_size, const cmds::EnableFeatureCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::EnableFeatureCHROMIUM& c = |
+ *static_cast<const gles2::cmds::EnableFeatureCHROMIUM*>(cmd_data); |
Bucket* bucket = GetBucket(c.bucket_id); |
if (!bucket || bucket->size() == 0) { |
return error::kInvalidArguments; |
@@ -9358,7 +9458,10 @@ error::Error GLES2DecoderImpl::HandleEnableFeatureCHROMIUM( |
error::Error GLES2DecoderImpl::HandleGetRequestableExtensionsCHROMIUM( |
uint32 immediate_data_size, |
- const cmds::GetRequestableExtensionsCHROMIUM& c) { |
+ const void* cmd_data) { |
+ const gles2::cmds::GetRequestableExtensionsCHROMIUM& c = |
+ *static_cast<const gles2::cmds::GetRequestableExtensionsCHROMIUM*>( |
+ cmd_data); |
Bucket* bucket = CreateBucket(c.bucket_id); |
scoped_refptr<FeatureInfo> info(new FeatureInfo()); |
info->Initialize(disallowed_features_); |
@@ -9367,7 +9470,10 @@ error::Error GLES2DecoderImpl::HandleGetRequestableExtensionsCHROMIUM( |
} |
error::Error GLES2DecoderImpl::HandleRequestExtensionCHROMIUM( |
- uint32 immediate_data_size, const cmds::RequestExtensionCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::RequestExtensionCHROMIUM& c = |
+ *static_cast<const gles2::cmds::RequestExtensionCHROMIUM*>(cmd_data); |
Bucket* bucket = GetBucket(c.bucket_id); |
if (!bucket || bucket->size() == 0) { |
return error::kInvalidArguments; |
@@ -9412,7 +9518,10 @@ error::Error GLES2DecoderImpl::HandleRequestExtensionCHROMIUM( |
} |
error::Error GLES2DecoderImpl::HandleGetMultipleIntegervCHROMIUM( |
- uint32 immediate_data_size, const cmds::GetMultipleIntegervCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetMultipleIntegervCHROMIUM& c = |
+ *static_cast<const gles2::cmds::GetMultipleIntegervCHROMIUM*>(cmd_data); |
GLuint count = c.count; |
uint32 pnames_size; |
if (!SafeMultiplyUint32(count, sizeof(GLenum), &pnames_size)) { |
@@ -9491,7 +9600,10 @@ error::Error GLES2DecoderImpl::HandleGetMultipleIntegervCHROMIUM( |
} |
error::Error GLES2DecoderImpl::HandleGetProgramInfoCHROMIUM( |
- uint32 immediate_data_size, const cmds::GetProgramInfoCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::GetProgramInfoCHROMIUM& c = |
+ *static_cast<const gles2::cmds::GetProgramInfoCHROMIUM*>(cmd_data); |
GLuint program_id = static_cast<GLuint>(c.program); |
uint32 bucket_id = c.bucket_id; |
Bucket* bucket = CreateBucket(bucket_id); |
@@ -9560,12 +9672,16 @@ void GLES2DecoderImpl::LoseContext(uint32 reset_status) { |
} |
error::Error GLES2DecoderImpl::HandleInsertSyncPointCHROMIUM( |
- uint32 immediate_data_size, const cmds::InsertSyncPointCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
return error::kUnknownCommand; |
} |
error::Error GLES2DecoderImpl::HandleWaitSyncPointCHROMIUM( |
- uint32 immediate_data_size, const cmds::WaitSyncPointCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::WaitSyncPointCHROMIUM& c = |
+ *static_cast<const gles2::cmds::WaitSyncPointCHROMIUM*>(cmd_data); |
group_->mailbox_manager()->PullTextureUpdates(); |
if (wait_sync_point_callback_.is_null()) |
return error::kNoError; |
@@ -9575,7 +9691,8 @@ error::Error GLES2DecoderImpl::HandleWaitSyncPointCHROMIUM( |
} |
error::Error GLES2DecoderImpl::HandleDiscardBackbufferCHROMIUM( |
- uint32 immediate_data_size, const cmds::DiscardBackbufferCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
if (surface_->DeferDraws()) |
return error::kDeferCommandUntilLater; |
if (!surface_->SetBackbufferAllocation(false)) |
@@ -9658,8 +9775,10 @@ void GLES2DecoderImpl::PerformIdleWork() { |
ProcessFinishedAsyncTransfers(); |
} |
-error::Error GLES2DecoderImpl::HandleBeginQueryEXT( |
- uint32 immediate_data_size, const cmds::BeginQueryEXT& c) { |
+error::Error GLES2DecoderImpl::HandleBeginQueryEXT(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::BeginQueryEXT& c = |
+ *static_cast<const gles2::cmds::BeginQueryEXT*>(cmd_data); |
GLenum target = static_cast<GLenum>(c.target); |
GLuint client_id = static_cast<GLuint>(c.id); |
int32 sync_shm_id = static_cast<int32>(c.sync_data_shm_id); |
@@ -9731,8 +9850,10 @@ error::Error GLES2DecoderImpl::HandleBeginQueryEXT( |
return error::kNoError; |
} |
-error::Error GLES2DecoderImpl::HandleEndQueryEXT( |
- uint32 immediate_data_size, const cmds::EndQueryEXT& c) { |
+error::Error GLES2DecoderImpl::HandleEndQueryEXT(uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::EndQueryEXT& c = |
+ *static_cast<const gles2::cmds::EndQueryEXT*>(cmd_data); |
GLenum target = static_cast<GLenum>(c.target); |
uint32 submit_count = static_cast<GLuint>(c.submit_count); |
ContextState::QueryMap::iterator it = state_.current_queries.find(target); |
@@ -10292,7 +10413,8 @@ void GLES2DecoderImpl::DoTexStorage2DEXT( |
} |
error::Error GLES2DecoderImpl::HandleGenMailboxCHROMIUM( |
- uint32 immediate_data_size, const cmds::GenMailboxCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
return error::kUnknownCommand; |
} |
@@ -10412,7 +10534,11 @@ void GLES2DecoderImpl::DoConsumeTextureCHROMIUM(GLenum target, |
error::Error GLES2DecoderImpl::HandleCreateAndConsumeTextureCHROMIUMImmediate( |
uint32_t immediate_data_size, |
- const gles2::cmds::CreateAndConsumeTextureCHROMIUMImmediate& c) { |
+ const void* cmd_data) { |
+ const gles2::cmds::CreateAndConsumeTextureCHROMIUMImmediate& c = |
+ *static_cast< |
+ const gles2::cmds::CreateAndConsumeTextureCHROMIUMImmediate*>( |
+ cmd_data); |
GLenum target = static_cast<GLenum>(c.target); |
uint32_t data_size; |
if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { |
@@ -10585,7 +10711,10 @@ void GLES2DecoderImpl::DoReleaseTexImage2DCHROMIUM( |
} |
error::Error GLES2DecoderImpl::HandleTraceBeginCHROMIUM( |
- uint32 immediate_data_size, const cmds::TraceBeginCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::TraceBeginCHROMIUM& c = |
+ *static_cast<const gles2::cmds::TraceBeginCHROMIUM*>(cmd_data); |
Bucket* bucket = GetBucket(c.bucket_id); |
if (!bucket || bucket->size() == 0) { |
return error::kInvalidArguments; |
@@ -10763,7 +10892,10 @@ base::Closure GLES2DecoderImpl::AsyncUploadTokenCompletionClosure( |
} |
error::Error GLES2DecoderImpl::HandleAsyncTexImage2DCHROMIUM( |
- uint32 immediate_data_size, const cmds::AsyncTexImage2DCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::AsyncTexImage2DCHROMIUM& c = |
+ *static_cast<const gles2::cmds::AsyncTexImage2DCHROMIUM*>(cmd_data); |
TRACE_EVENT0("gpu", "GLES2DecoderImpl::HandleAsyncTexImage2DCHROMIUM"); |
GLenum target = static_cast<GLenum>(c.target); |
GLint level = static_cast<GLint>(c.level); |
@@ -10867,7 +10999,10 @@ error::Error GLES2DecoderImpl::HandleAsyncTexImage2DCHROMIUM( |
} |
error::Error GLES2DecoderImpl::HandleAsyncTexSubImage2DCHROMIUM( |
- uint32 immediate_data_size, const cmds::AsyncTexSubImage2DCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::AsyncTexSubImage2DCHROMIUM& c = |
+ *static_cast<const gles2::cmds::AsyncTexSubImage2DCHROMIUM*>(cmd_data); |
TRACE_EVENT0("gpu", "GLES2DecoderImpl::HandleAsyncTexSubImage2DCHROMIUM"); |
GLenum target = static_cast<GLenum>(c.target); |
GLint level = static_cast<GLint>(c.level); |
@@ -10964,7 +11099,10 @@ error::Error GLES2DecoderImpl::HandleAsyncTexSubImage2DCHROMIUM( |
} |
error::Error GLES2DecoderImpl::HandleWaitAsyncTexImage2DCHROMIUM( |
- uint32 immediate_data_size, const cmds::WaitAsyncTexImage2DCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* cmd_data) { |
+ const gles2::cmds::WaitAsyncTexImage2DCHROMIUM& c = |
+ *static_cast<const gles2::cmds::WaitAsyncTexImage2DCHROMIUM*>(cmd_data); |
TRACE_EVENT0("gpu", "GLES2DecoderImpl::HandleWaitAsyncTexImage2DCHROMIUM"); |
GLenum target = static_cast<GLenum>(c.target); |
@@ -10995,7 +11133,8 @@ error::Error GLES2DecoderImpl::HandleWaitAsyncTexImage2DCHROMIUM( |
} |
error::Error GLES2DecoderImpl::HandleWaitAllAsyncTexImage2DCHROMIUM( |
- uint32 immediate_data_size, const cmds::WaitAllAsyncTexImage2DCHROMIUM& c) { |
+ uint32 immediate_data_size, |
+ const void* data) { |
TRACE_EVENT0("gpu", "GLES2DecoderImpl::HandleWaitAsyncTexImage2DCHROMIUM"); |
GetAsyncPixelTransferManager()->WaitAllAsyncTexImage2D(); |