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 18b280865b86c74908922e10c0bf675bf32fe7b1..62d0391c508bf3d2e7096e3d790bc60472f6208e 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h |
@@ -1492,6 +1492,105 @@ error::Error GLES2DecoderImpl::HandleGetFramebufferAttachmentParameteriv( |
return error::kNoError; |
} |
+error::Error GLES2DecoderImpl::HandleGetInteger64v(uint32_t immediate_data_size, |
+ const void* cmd_data) { |
+ if (!unsafe_es3_apis_enabled()) |
+ return error::kUnknownCommand; |
+ const gles2::cmds::GetInteger64v& c = |
+ *static_cast<const gles2::cmds::GetInteger64v*>(cmd_data); |
+ (void)c; |
+ GLenum pname = static_cast<GLenum>(c.pname); |
+ typedef cmds::GetInteger64v::Result Result; |
+ GLsizei num_values = 0; |
+ GetNumValuesReturnedForGLGet(pname, &num_values); |
+ Result* result = GetSharedMemoryAs<Result*>( |
+ c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
+ GLint64* params = result ? result->GetData() : NULL; |
+ if (params == NULL) { |
+ return error::kOutOfBounds; |
+ } |
+ LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetInteger64v"); |
+ // Check that the client initialized the result. |
+ if (result->size != 0) { |
+ return error::kInvalidArguments; |
+ } |
+ DoGetInteger64v(pname, params); |
+ GLenum error = glGetError(); |
+ if (error == GL_NO_ERROR) { |
+ result->SetNumResults(num_values); |
+ } else { |
+ LOCAL_SET_GL_ERROR(error, "GetInteger64v", ""); |
+ } |
+ return error::kNoError; |
+} |
+ |
+error::Error GLES2DecoderImpl::HandleGetIntegeri_v(uint32_t immediate_data_size, |
+ const void* cmd_data) { |
+ if (!unsafe_es3_apis_enabled()) |
+ return error::kUnknownCommand; |
+ const gles2::cmds::GetIntegeri_v& c = |
+ *static_cast<const gles2::cmds::GetIntegeri_v*>(cmd_data); |
+ (void)c; |
+ GLenum pname = static_cast<GLenum>(c.pname); |
+ GLuint index = static_cast<GLuint>(c.index); |
+ typedef cmds::GetIntegeri_v::Result Result; |
+ GLsizei num_values = 0; |
+ GetNumValuesReturnedForGLGet(pname, &num_values); |
+ Result* result = GetSharedMemoryAs<Result*>(c.data_shm_id, c.data_shm_offset, |
+ Result::ComputeSize(num_values)); |
+ GLint* data = result ? result->GetData() : NULL; |
+ if (data == NULL) { |
+ return error::kOutOfBounds; |
+ } |
+ LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetIntegeri_v"); |
+ // Check that the client initialized the result. |
+ if (result->size != 0) { |
+ return error::kInvalidArguments; |
+ } |
+ glGetIntegeri_v(pname, index, data); |
+ GLenum error = glGetError(); |
+ if (error == GL_NO_ERROR) { |
+ result->SetNumResults(num_values); |
+ } else { |
+ LOCAL_SET_GL_ERROR(error, "GetIntegeri_v", ""); |
+ } |
+ return error::kNoError; |
+} |
+ |
+error::Error GLES2DecoderImpl::HandleGetInteger64i_v( |
+ uint32_t immediate_data_size, |
+ const void* cmd_data) { |
+ if (!unsafe_es3_apis_enabled()) |
+ return error::kUnknownCommand; |
+ const gles2::cmds::GetInteger64i_v& c = |
+ *static_cast<const gles2::cmds::GetInteger64i_v*>(cmd_data); |
+ (void)c; |
+ GLenum pname = static_cast<GLenum>(c.pname); |
+ GLuint index = static_cast<GLuint>(c.index); |
+ typedef cmds::GetInteger64i_v::Result Result; |
+ GLsizei num_values = 0; |
+ GetNumValuesReturnedForGLGet(pname, &num_values); |
+ Result* result = GetSharedMemoryAs<Result*>(c.data_shm_id, c.data_shm_offset, |
+ Result::ComputeSize(num_values)); |
+ GLint64* data = result ? result->GetData() : NULL; |
+ if (data == NULL) { |
+ return error::kOutOfBounds; |
+ } |
+ LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetInteger64i_v"); |
+ // Check that the client initialized the result. |
+ if (result->size != 0) { |
+ return error::kInvalidArguments; |
+ } |
+ glGetInteger64i_v(pname, index, data); |
+ GLenum error = glGetError(); |
+ if (error == GL_NO_ERROR) { |
+ result->SetNumResults(num_values); |
+ } else { |
+ LOCAL_SET_GL_ERROR(error, "GetInteger64i_v", ""); |
+ } |
+ return error::kNoError; |
+} |
+ |
error::Error GLES2DecoderImpl::HandleGetIntegerv(uint32_t immediate_data_size, |
const void* cmd_data) { |
const gles2::cmds::GetIntegerv& c = |
@@ -4879,6 +4978,14 @@ bool GLES2DecoderImpl::SetCapabilityState(GLenum cap, bool enabled) { |
return true; |
} |
return false; |
+ case GL_PRIMITIVE_RESTART_FIXED_INDEX: |
+ state_.enable_flags.primitive_restart_fixed_index = enabled; |
+ if (state_.enable_flags.cached_primitive_restart_fixed_index != enabled || |
+ state_.ignore_cached_state) { |
+ state_.enable_flags.cached_primitive_restart_fixed_index = enabled; |
+ return true; |
+ } |
+ return false; |
default: |
NOTREACHED(); |
return false; |