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 2663a7032578c6bcf8359a080a1491b48ef5cf4b..b7877ff3ff4efa7dd029195bc7674287f8e17d1e 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h |
@@ -109,6 +109,21 @@ error::Error GLES2DecoderImpl::HandleBindTexture(uint32_t immediate_data_size, |
return error::kNoError; |
} |
+error::Error GLES2DecoderImpl::HandleBindTransformFeedback( |
+ uint32_t immediate_data_size, |
+ const void* cmd_data) { |
+ if (!unsafe_es3_apis_enabled()) |
+ return error::kUnknownCommand; |
+ const gles2::cmds::BindTransformFeedback& c = |
+ *static_cast<const gles2::cmds::BindTransformFeedback*>(cmd_data); |
+ (void)c; |
+ GLenum target = static_cast<GLenum>(c.target); |
+ GLuint transformfeedback = c.transformfeedback; |
+ group_->GetTransformFeedbackServiceId(transformfeedback, &transformfeedback); |
piman
2015/01/09 07:16:47
Here is the same as the other CLs. It ignores the
Zhenyao Mo
2015/01/09 17:27:51
My understanding is that our client IDs and servic
Zhenyao Mo
2015/01/09 17:44:41
Actually you are right. I just double checked the
|
+ glBindTransformFeedback(target, transformfeedback); |
+ return error::kNoError; |
+} |
+ |
error::Error GLES2DecoderImpl::HandleBlendColor(uint32_t immediate_data_size, |
const void* cmd_data) { |
const gles2::cmds::BlendColor& c = |
@@ -678,6 +693,35 @@ error::Error GLES2DecoderImpl::HandleDeleteTexturesImmediate( |
return error::kNoError; |
} |
+error::Error GLES2DecoderImpl::HandleDeleteTransformFeedbacksImmediate( |
+ uint32_t immediate_data_size, |
+ const void* cmd_data) { |
+ if (!unsafe_es3_apis_enabled()) |
+ return error::kUnknownCommand; |
+ const gles2::cmds::DeleteTransformFeedbacksImmediate& c = |
+ *static_cast<const gles2::cmds::DeleteTransformFeedbacksImmediate*>( |
+ cmd_data); |
+ (void)c; |
+ GLsizei n = static_cast<GLsizei>(c.n); |
+ uint32_t data_size; |
+ if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
+ return error::kOutOfBounds; |
+ } |
+ const GLuint* ids = |
+ GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); |
+ if (ids == NULL) { |
+ return error::kOutOfBounds; |
+ } |
+ for (GLsizei ii = 0; ii < n; ++ii) { |
+ GLuint service_id = 0; |
+ if (group_->GetTransformFeedbackServiceId(ids[ii], &service_id)) { |
+ glDeleteTransformFeedbacks(1, &service_id); |
+ group_->RemoveTransformFeedbackId(ids[ii]); |
+ } |
+ } |
+ return error::kNoError; |
+} |
+ |
error::Error GLES2DecoderImpl::HandleDepthFunc(uint32_t immediate_data_size, |
const void* cmd_data) { |
const gles2::cmds::DepthFunc& c = |
@@ -1029,6 +1073,37 @@ error::Error GLES2DecoderImpl::HandleGenTexturesImmediate( |
return error::kNoError; |
} |
+error::Error GLES2DecoderImpl::HandleGenTransformFeedbacksImmediate( |
+ uint32_t immediate_data_size, |
+ const void* cmd_data) { |
+ if (!unsafe_es3_apis_enabled()) |
+ return error::kUnknownCommand; |
+ const gles2::cmds::GenTransformFeedbacksImmediate& c = |
+ *static_cast<const gles2::cmds::GenTransformFeedbacksImmediate*>( |
+ cmd_data); |
+ (void)c; |
+ GLsizei n = static_cast<GLsizei>(c.n); |
+ uint32_t data_size; |
+ if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
+ return error::kOutOfBounds; |
+ } |
+ GLuint* ids = GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); |
+ if (ids == NULL) { |
+ return error::kOutOfBounds; |
+ } |
+ for (GLsizei ii = 0; ii < n; ++ii) { |
+ if (group_->GetTransformFeedbackServiceId(ids[ii], NULL)) { |
+ return error::kInvalidArguments; |
+ } |
+ } |
+ scoped_ptr<GLuint[]> service_ids(new GLuint[n]); |
+ glGenTransformFeedbacks(n, service_ids.get()); |
+ for (GLsizei ii = 0; ii < n; ++ii) { |
+ group_->AddTransformFeedbackId(ids[ii], service_ids[ii]); |
+ } |
+ return error::kNoError; |
+} |
+ |
error::Error GLES2DecoderImpl::HandleGetBooleanv(uint32_t immediate_data_size, |
const void* cmd_data) { |
const gles2::cmds::GetBooleanv& c = |
@@ -1803,6 +1878,7 @@ error::Error GLES2DecoderImpl::HandleIsSampler(uint32_t immediate_data_size, |
if (!result_dst) { |
return error::kOutOfBounds; |
} |
+ group_->GetSamplerServiceId(sampler, &sampler); |
*result_dst = glIsSampler(sampler); |
return error::kNoError; |
} |
@@ -1839,6 +1915,26 @@ error::Error GLES2DecoderImpl::HandleIsTexture(uint32_t immediate_data_size, |
return error::kNoError; |
} |
+error::Error GLES2DecoderImpl::HandleIsTransformFeedback( |
+ uint32_t immediate_data_size, |
+ const void* cmd_data) { |
+ if (!unsafe_es3_apis_enabled()) |
+ return error::kUnknownCommand; |
+ const gles2::cmds::IsTransformFeedback& c = |
+ *static_cast<const gles2::cmds::IsTransformFeedback*>(cmd_data); |
+ (void)c; |
+ GLuint transformfeedback = c.transformfeedback; |
+ typedef cmds::IsTransformFeedback::Result Result; |
+ Result* result_dst = GetSharedMemoryAs<Result*>( |
+ c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); |
+ if (!result_dst) { |
+ return error::kOutOfBounds; |
+ } |
+ group_->GetTransformFeedbackServiceId(transformfeedback, &transformfeedback); |
+ *result_dst = glIsTransformFeedback(transformfeedback); |
+ return error::kNoError; |
+} |
+ |
error::Error GLES2DecoderImpl::HandleLineWidth(uint32_t immediate_data_size, |
const void* cmd_data) { |
const gles2::cmds::LineWidth& c = |
@@ -1866,6 +1962,18 @@ error::Error GLES2DecoderImpl::HandleLinkProgram(uint32_t immediate_data_size, |
return error::kNoError; |
} |
+error::Error GLES2DecoderImpl::HandlePauseTransformFeedback( |
+ uint32_t immediate_data_size, |
+ const void* cmd_data) { |
+ if (!unsafe_es3_apis_enabled()) |
+ return error::kUnknownCommand; |
+ const gles2::cmds::PauseTransformFeedback& c = |
+ *static_cast<const gles2::cmds::PauseTransformFeedback*>(cmd_data); |
+ (void)c; |
+ glPauseTransformFeedback(); |
+ return error::kNoError; |
+} |
+ |
error::Error GLES2DecoderImpl::HandlePolygonOffset(uint32_t immediate_data_size, |
const void* cmd_data) { |
const gles2::cmds::PolygonOffset& c = |
@@ -1935,6 +2043,18 @@ error::Error GLES2DecoderImpl::HandleRenderbufferStorage( |
return error::kNoError; |
} |
+error::Error GLES2DecoderImpl::HandleResumeTransformFeedback( |
+ uint32_t immediate_data_size, |
+ const void* cmd_data) { |
+ if (!unsafe_es3_apis_enabled()) |
+ return error::kUnknownCommand; |
+ const gles2::cmds::ResumeTransformFeedback& c = |
+ *static_cast<const gles2::cmds::ResumeTransformFeedback*>(cmd_data); |
+ (void)c; |
+ glResumeTransformFeedback(); |
+ return error::kNoError; |
+} |
+ |
error::Error GLES2DecoderImpl::HandleSampleCoverage( |
uint32_t immediate_data_size, |
const void* cmd_data) { |
@@ -3662,6 +3782,31 @@ error::Error GLES2DecoderImpl::HandleDeleteQueriesEXTImmediate( |
return error::kNoError; |
} |
+error::Error GLES2DecoderImpl::HandleBeginTransformFeedback( |
+ uint32_t immediate_data_size, |
+ const void* cmd_data) { |
+ if (!unsafe_es3_apis_enabled()) |
+ return error::kUnknownCommand; |
+ const gles2::cmds::BeginTransformFeedback& c = |
+ *static_cast<const gles2::cmds::BeginTransformFeedback*>(cmd_data); |
+ (void)c; |
+ GLenum primitivemode = static_cast<GLenum>(c.primitivemode); |
+ glBeginTransformFeedback(primitivemode); |
+ return error::kNoError; |
+} |
+ |
+error::Error GLES2DecoderImpl::HandleEndTransformFeedback( |
+ uint32_t immediate_data_size, |
+ const void* cmd_data) { |
+ if (!unsafe_es3_apis_enabled()) |
+ return error::kUnknownCommand; |
+ const gles2::cmds::EndTransformFeedback& c = |
+ *static_cast<const gles2::cmds::EndTransformFeedback*>(cmd_data); |
+ (void)c; |
+ glEndTransformFeedback(); |
+ return error::kNoError; |
+} |
+ |
error::Error GLES2DecoderImpl::HandleInsertEventMarkerEXT( |
uint32_t immediate_data_size, |
const void* cmd_data) { |