From 1850ca92fc5c5faa2907b3befcf40067265148cc Mon Sep 17 00:00:00 2001 From: "Torne (Richard Coles)" Date: Wed, 12 Nov 2014 17:59:43 +0000 Subject: Merge from Chromium at DEPS revision 03655fd3f6d7 This commit was generated by merge_to_master.py. Change-Id: Ifba5396691b9164ba027be04398f7bc8e938750d --- gpu/BUILD.gn | 2 + .../CHROMIUM/CHROMIUM_subscribe_uniform.txt | 113 +++ gpu/GLES2/gl2chromium_autogen.h | 8 + gpu/GLES2/gl2extchromium.h | 29 + gpu/command_buffer/build_gles2_cmd_buffer.py | 63 ++ gpu/command_buffer/client/client_test_helper.cc | 11 +- gpu/command_buffer/client/client_test_helper.h | 2 + .../client/cmd_buffer_helper_test.cc | 2 +- gpu/command_buffer/client/gles2_c_lib_autogen.h | 169 ++-- .../client/gles2_cmd_helper_autogen.h | 188 ++--- gpu/command_buffer/client/gles2_implementation.cc | 55 +- gpu/command_buffer/client/gles2_implementation.h | 8 +- .../client/gles2_implementation_autogen.h | 16 + .../client/gles2_implementation_impl_autogen.h | 231 ++++-- .../client/gles2_implementation_unittest.cc | 4 +- .../client/gles2_implementation_unittest_autogen.h | 144 +++- .../client/gles2_interface_autogen.h | 10 + .../client/gles2_interface_stub_autogen.h | 9 + .../client/gles2_interface_stub_impl_autogen.h | 22 + .../client/gles2_trace_implementation_autogen.h | 9 + .../gles2_trace_implementation_impl_autogen.h | 133 +-- gpu/command_buffer/cmd_buffer_functions.txt | 7 + gpu/command_buffer/common/command_buffer.h | 10 +- gpu/command_buffer/common/command_buffer_mock.h | 1 + .../common/command_buffer_shared_test.cc | 1 - gpu/command_buffer/common/gles2_cmd_format.h | 1 + .../common/gles2_cmd_format_autogen.h | 458 ++++++++--- .../common/gles2_cmd_format_test_autogen.h | 912 +++++++++------------ gpu/command_buffer/common/gles2_cmd_ids_autogen.h | 43 +- .../common/gles2_cmd_utils_autogen.h | 2 + .../gles2_cmd_utils_implementation_autogen.h | 249 +++--- gpu/command_buffer/service/BUILD.gn | 2 + .../service/command_buffer_service.cc | 6 +- .../service/command_buffer_service.h | 4 + .../service/command_buffer_service_unittest.cc | 4 +- gpu/command_buffer/service/context_group.cc | 7 + gpu/command_buffer/service/context_group.h | 7 + gpu/command_buffer/service/context_state.h | 4 + .../service/context_state_impl_autogen.h | 78 +- gpu/command_buffer/service/gles2_cmd_decoder.cc | 217 ++++- .../service/gles2_cmd_decoder_autogen.h | 387 ++++++--- .../service/gles2_cmd_decoder_unittest_1_autogen.h | 211 ++--- .../service/gles2_cmd_decoder_unittest_2_autogen.h | 86 +- .../service/gles2_cmd_decoder_unittest_3_autogen.h | 9 + .../service/gles2_cmd_decoder_unittest_base.cc | 1 + .../service/gles2_cmd_decoder_unittest_base.h | 10 + .../gles2_cmd_decoder_unittest_valuebuffer.cc | 130 +++ .../service/gles2_cmd_validation_autogen.h | 2 + .../gles2_cmd_validation_implementation_autogen.h | 12 + gpu/command_buffer/service/gpu_scheduler.cc | 4 +- .../service/gpu_scheduler_unittest.cc | 14 +- gpu/command_buffer/service/program_manager.cc | 3 +- gpu/command_buffer/service/program_manager.h | 1 + gpu/command_buffer/service/valuebuffer_manager.cc | 117 +++ gpu/command_buffer/service/valuebuffer_manager.h | 123 +++ .../service/valuebuffer_manager_unittest.cc | 100 +++ gpu/command_buffer_service.gypi | 2 + gpu/command_buffer_service.target.darwin-arm.mk | 1 + gpu/command_buffer_service.target.darwin-arm64.mk | 1 + gpu/command_buffer_service.target.darwin-mips.mk | 1 + gpu/command_buffer_service.target.darwin-mips64.mk | 1 + gpu/command_buffer_service.target.darwin-x86.mk | 1 + gpu/command_buffer_service.target.darwin-x86_64.mk | 1 + gpu/command_buffer_service.target.linux-arm.mk | 1 + gpu/command_buffer_service.target.linux-arm64.mk | 1 + gpu/command_buffer_service.target.linux-mips.mk | 1 + gpu/command_buffer_service.target.linux-mips64.mk | 1 + gpu/command_buffer_service.target.linux-x86.mk | 1 + gpu/command_buffer_service.target.linux-x86_64.mk | 1 + gpu/config/BUILD.gn | 3 + gpu/gpu.gyp | 2 + gpu/ipc/gpu_command_buffer_traits.cc | 25 +- gpu/ipc/gpu_command_buffer_traits.h | 3 +- gpu/ipc/gpu_command_buffer_traits_multi.h | 29 + 74 files changed, 3034 insertions(+), 1493 deletions(-) create mode 100644 gpu/GLES2/extensions/CHROMIUM/CHROMIUM_subscribe_uniform.txt create mode 100644 gpu/command_buffer/service/gles2_cmd_decoder_unittest_valuebuffer.cc create mode 100644 gpu/command_buffer/service/valuebuffer_manager.cc create mode 100644 gpu/command_buffer/service/valuebuffer_manager.h create mode 100644 gpu/command_buffer/service/valuebuffer_manager_unittest.cc create mode 100644 gpu/ipc/gpu_command_buffer_traits_multi.h (limited to 'gpu') diff --git a/gpu/BUILD.gn b/gpu/BUILD.gn index 110fb443e9..c1857cef05 100644 --- a/gpu/BUILD.gn +++ b/gpu/BUILD.gn @@ -186,6 +186,7 @@ test("gpu_unittests") { "command_buffer/service/gles2_cmd_decoder_unittest_programs.cc", "command_buffer/service/gles2_cmd_decoder_unittest_textures.cc", "command_buffer/service/gles2_cmd_decoder_unittest_attribs.cc", + "command_buffer/service/gles2_cmd_decoder_unittest_valuebuffer.cc", "command_buffer/service/gl_surface_mock.cc", "command_buffer/service/gl_surface_mock.h", "command_buffer/service/gpu_scheduler_unittest.cc", @@ -197,6 +198,7 @@ test("gpu_unittests") { "command_buffer/service/mocks.cc", "command_buffer/service/mocks.h", "command_buffer/service/program_manager_unittest.cc", + "command_buffer/service/valuebuffer_manager_unittest.cc", "command_buffer/service/query_manager_unittest.cc", "command_buffer/service/renderbuffer_manager_unittest.cc", "command_buffer/service/program_cache_unittest.cc", diff --git a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_subscribe_uniform.txt b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_subscribe_uniform.txt new file mode 100644 index 0000000000..2427d329f3 --- /dev/null +++ b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_subscribe_uniform.txt @@ -0,0 +1,113 @@ +Name + + CHROMIUM_subscribe_uniform + +Name Strings + + CHROMIUM_subscribe_uniform + +Version + + Last Modifed Date: October 30, 2014 + +Dependencies + + OpenGL ES 2.0 is required. + +Overview + + Allows clients to subscribe to a set of input uniforms which can + be populated within buffers and used to modify uniform variables within + their programs. + + Decreases percieved latency for operations performed against these + uniforms. + +New Tokens + + Accepted by the parameter of glBindValueBufferCHROMIUM, + glSubscribeValueCHROMIUM, glPopulateSubscribedValuesCHROMIUM and + glUniformValueBufferCHROMIUM + + GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM 0x924B + + Accepted by the parameter of glSubscribeValueCHROMIUM and + glUniformValueBufferCHROMIUM: + + GL_MOUSE_POSITION_CHROMIUM 0x924C + +New Procedures and Functions + + The command + + void glGenValuebuffersCHROMIUM(GLsizei n, GLuint* buffers) + + Generates value buffer object names. + Specifies the number of value buffer object names to be generated. + Specifies an array in which the generated value buffer object + names are stored. + + The command + + void glDeleteValuebuffersCHROMIUM(GLsizei n, const GLuint* valuebuffers) + + Deletes named value buffer objects. + Specifies the number of value buffer objects to be deleted. + Specifies an array of value buffer objects to be deleted. + + The command + + boolean glIsValuebufferCHROMIUM(GLuint buffer); + + Returns whether an object is a value buffer object. + Specifies the name of a buffer object. + + The command + + void glBindValuebufferCHROMIUM(GLenum target, GLuint buffer); + + Lets you use a named value buffer object. + Specifies the target to which the buffer object is bound. + Specifies the name of a buffer object. + + The command + + void glSubscribeValueCHROMIUM(GLenum target, GLenum subscription) + + Subscribes the currently bound buffer object to a subscription target. + Specifies the target to which the buffer object is bound. + Specifies the subscription to which the currently bound + buffer object should be subscribed. + + The command + + void glPopulateSubscribedValuesCHROMIUM(GLenum target) + + Populates the currently bound buffer object with all subscription states + to which it is subscribed. + Specifies the target to which the buffer object is bound. + + The command + + void glUniformValueBufferCHROMIUM(GLint location, GLenum target, + GLenum subscription) + + Populates the uniform specified by location within the currently bound + program with the value in the currently bound buffer for the subscription + target. + Specifies the location of the uniform variable to by modified. + Specifies the target to which the buffer object is bound. + Specifies the subscription in the currently bound buffer + whose value should be used to populate the uniform. + +Errors + + None. + +New State + + None. + +Revision History + + 10/30/2014 Documented the extension diff --git a/gpu/GLES2/gl2chromium_autogen.h b/gpu/GLES2/gl2chromium_autogen.h index c6a3919856..44587e50a1 100644 --- a/gpu/GLES2/gl2chromium_autogen.h +++ b/gpu/GLES2/gl2chromium_autogen.h @@ -218,6 +218,14 @@ #define glCreateAndConsumeTextureCHROMIUM \ GLES2_GET_FUN(CreateAndConsumeTextureCHROMIUM) #define glBindUniformLocationCHROMIUM GLES2_GET_FUN(BindUniformLocationCHROMIUM) +#define glGenValuebuffersCHROMIUM GLES2_GET_FUN(GenValuebuffersCHROMIUM) +#define glDeleteValuebuffersCHROMIUM GLES2_GET_FUN(DeleteValuebuffersCHROMIUM) +#define glIsValuebufferCHROMIUM GLES2_GET_FUN(IsValuebufferCHROMIUM) +#define glBindValuebufferCHROMIUM GLES2_GET_FUN(BindValuebufferCHROMIUM) +#define glSubscribeValueCHROMIUM GLES2_GET_FUN(SubscribeValueCHROMIUM) +#define glPopulateSubscribedValuesCHROMIUM \ + GLES2_GET_FUN(PopulateSubscribedValuesCHROMIUM) +#define glUniformValuebufferCHROMIUM GLES2_GET_FUN(UniformValuebufferCHROMIUM) #define glBindTexImage2DCHROMIUM GLES2_GET_FUN(BindTexImage2DCHROMIUM) #define glReleaseTexImage2DCHROMIUM GLES2_GET_FUN(ReleaseTexImage2DCHROMIUM) #define glTraceBeginCHROMIUM GLES2_GET_FUN(TraceBeginCHROMIUM) diff --git a/gpu/GLES2/gl2extchromium.h b/gpu/GLES2/gl2extchromium.h index b52411243e..200c10f283 100644 --- a/gpu/GLES2/gl2extchromium.h +++ b/gpu/GLES2/gl2extchromium.h @@ -687,6 +687,35 @@ typedef void (GL_APIENTRYP PFNGLWAITSYNCPOINTCHROMIUMPROC) (GLuint sync_point); #define GL_OVERLAY_TRANSFORM_ROTATE_270_CHROMIUM 0x924A #endif +/* GL_CHROMIUM_subscribe_uniform */ +#ifndef GL_CHROMIUM_subscribe_uniform +#define GL_CHROMIUM_subscribe_uniform 1 + +#ifndef GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM +#define GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM 0x924B +#endif + +#ifndef GL_MOUSE_POSITION_CHROMIUM +#define GL_MOUSE_POSITION_CHROMIUM 0x924C +#endif + +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY +glGenValuebuffersCHROMIUM(GLsizei n, GLuint* buffers); +GL_APICALL void GL_APIENTRY +glDeleteValuebuffersCHROMIUM(GLsizei n, const GLuint* valuebuffers); +GL_APICALL GLboolean GL_APIENTRY glIsValuebufferCHROMIUM(GLuint valuebuffer); +GL_APICALL void GL_APIENTRY +glBindValuebufferCHROMIUM(GLenum target, GLuint valuebuffer); +GL_APICALL void GL_APIENTRY +glSubscribeValueCHROMIUM(GLenum target, GLenum subscription); +GL_APICALL void GL_APIENTRY glPopulateSubscribedValuesCHROMIUM(GLenum target); +GL_APICALL void GL_APIENTRY glUniformValuebufferCHROMIUM(GLint location, + GLenum target, + GLenum subscription); +#endif +#endif /* GL_CHROMIUM_subscribe_uniform */ + #ifdef GL_GLEXT_PROTOTYPES GL_APICALL void GL_APIENTRY glScheduleOverlayPlaneCHROMIUM(GLint plane_z_order, diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py index 94c3b3457f..8d7332ffa6 100755 --- a/gpu/command_buffer/build_gles2_cmd_buffer.py +++ b/gpu/command_buffer/build_gles2_cmd_buffer.py @@ -1195,6 +1195,18 @@ _NAMED_TYPE_INFO = { 'GL_SCANOUT_CHROMIUM' ], }, + 'ValueBufferTarget': { + 'type': 'GLenum', + 'valid': [ + 'GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM', + ], + }, + 'SubscriptionTarget': { + 'type': 'GLenum', + 'valid': [ + 'GL_MOUSE_POSITION_CHROMIUM', + ], + }, 'VertexAttribType': { 'type': 'GLenum', 'valid': [ @@ -1448,6 +1460,57 @@ _FUNCTION_INFO = { 'extension': "CHROMIUM_texture_mailbox", 'chromium': True, }, + 'GenValuebuffersCHROMIUM': { + 'type': 'GENn', + 'gl_test_func': 'glGenValuebuffersCHROMIUM', + 'resource_type': 'Valuebuffer', + 'resource_types': 'Valuebuffers', + 'unit_test': False, + 'extension': True, + 'chromium': True, + }, + 'DeleteValuebuffersCHROMIUM': { + 'type': 'DELn', + 'gl_test_func': 'glDeleteValuebuffersCHROMIUM', + 'resource_type': 'Valuebuffer', + 'resource_types': 'Valuebuffers', + 'unit_test': False, + 'extension': True, + 'chromium': True, + }, + 'IsValuebufferCHROMIUM': { + 'type': 'Is', + 'decoder_func': 'DoIsValuebufferCHROMIUM', + 'expectation': False, + 'extension': True, + 'chromium': True, + }, + 'BindValuebufferCHROMIUM': { + 'type': 'Bind', + 'decoder_func': 'DoBindValueBufferCHROMIUM', + 'gen_func': 'GenValueBuffersCHROMIUM', + 'unit_test': False, + 'extension': True, + 'chromium': True, + }, + 'SubscribeValueCHROMIUM': { + 'decoder_func': 'DoSubscribeValueCHROMIUM', + 'unit_test': False, + 'extension': True, + 'chromium': True, + }, + 'PopulateSubscribedValuesCHROMIUM': { + 'decoder_func': 'DoPopulateSubscribedValuesCHROMIUM', + 'unit_test': False, + 'extension': True, + 'chromium': True, + }, + 'UniformValuebufferCHROMIUM': { + 'decoder_func': 'DoUniformValueBufferCHROMIUM', + 'unit_test': False, + 'extension': True, + 'chromium': True, + }, 'ClearStencil': { 'type': 'StateSet', 'state': 'ClearStencil', diff --git a/gpu/command_buffer/client/client_test_helper.cc b/gpu/command_buffer/client/client_test_helper.cc index 8c633efebe..3c50f6b20c 100644 --- a/gpu/command_buffer/client/client_test_helper.cc +++ b/gpu/command_buffer/client/client_test_helper.cc @@ -15,7 +15,7 @@ using ::testing::Invoke; namespace gpu { -MockCommandBufferBase::MockCommandBufferBase() { +MockCommandBufferBase::MockCommandBufferBase() : put_offset_(0) { } MockCommandBufferBase::~MockCommandBufferBase() { @@ -40,7 +40,7 @@ void MockCommandBufferBase::SetGetOffset(int32 get_offset) { void MockCommandBufferBase::WaitForTokenInRange(int32 start, int32 end) {} void MockCommandBufferBase::WaitForGetOffsetInRange(int32 start, int32 end) { - state_.get_offset = state_.put_offset; + state_.get_offset = put_offset_; OnFlush(); } @@ -48,7 +48,6 @@ void MockCommandBufferBase::SetGetBuffer(int transfer_buffer_id) { ring_buffer_buffer_ = GetTransferBuffer(transfer_buffer_id); ring_buffer_ = static_cast(ring_buffer_buffer_->memory()); - state_.num_entries = ring_buffer_buffer_->size() / sizeof(ring_buffer_[0]); state_.token = 10000; // All token checks in the tests should pass. } @@ -91,7 +90,7 @@ scoped_refptr MockCommandBufferBase::GetTransferBuffer(int32 id) { } void MockCommandBufferBase::FlushHelper(int32 put_offset) { - state_.put_offset = put_offset; + put_offset_ = put_offset; } void MockCommandBufferBase::SetToken(int32 token) { @@ -110,6 +109,10 @@ void MockCommandBufferBase::SetContextLostReason( state_.context_lost_reason = reason; } +int32 MockCommandBufferBase::GetPutOffset() { + return put_offset_; +} + // GCC requires these declarations, but MSVC requires they not be present #ifndef _MSC_VER const int32 MockCommandBufferBase::kTransferBufferBaseId; diff --git a/gpu/command_buffer/client/client_test_helper.h b/gpu/command_buffer/client/client_test_helper.h index 2cf18e63c4..6778a831e4 100644 --- a/gpu/command_buffer/client/client_test_helper.h +++ b/gpu/command_buffer/client/client_test_helper.h @@ -41,6 +41,7 @@ class MockCommandBufferBase : public CommandBufferServiceBase { void SetToken(int32 token) override; void SetParseError(error::Error error) override; void SetContextLostReason(error::ContextLostReason reason) override; + int32 GetPutOffset() override; // Get's the Id of the next transfer buffer that will be returned // by CreateTransferBuffer. This is useful for testing expected ids. @@ -56,6 +57,7 @@ class MockCommandBufferBase : public CommandBufferServiceBase { CommandBufferEntry* ring_buffer_; scoped_refptr ring_buffer_buffer_; State state_; + int32 put_offset_; }; class MockClientCommandBuffer : public MockCommandBufferBase { diff --git a/gpu/command_buffer/client/cmd_buffer_helper_test.cc b/gpu/command_buffer/client/cmd_buffer_helper_test.cc index 3ff9d3a257..fe68887923 100644 --- a/gpu/command_buffer/client/cmd_buffer_helper_test.cc +++ b/gpu/command_buffer/client/cmd_buffer_helper_test.cc @@ -241,7 +241,7 @@ class CommandBufferHelperTest : public testing::Test { } int32 GetPutOffset() { - return command_buffer_->GetLastState().put_offset; + return command_buffer_->GetPutOffset(); } int32 GetHelperGetOffset() { return helper_->get_offset(); } diff --git a/gpu/command_buffer/client/gles2_c_lib_autogen.h b/gpu/command_buffer/client/gles2_c_lib_autogen.h index 392bb22f8e..f78007f64a 100644 --- a/gpu/command_buffer/client/gles2_c_lib_autogen.h +++ b/gpu/command_buffer/client/gles2_c_lib_autogen.h @@ -124,8 +124,8 @@ void GLES2CopyTexImage2D(GLenum target, GLsizei width, GLsizei height, GLint border) { - gles2::GetGLContext()->CopyTexImage2D( - target, level, internalformat, x, y, width, height, border); + gles2::GetGLContext()->CopyTexImage2D(target, level, internalformat, x, y, + width, height, border); } void GLES2CopyTexSubImage2D(GLenum target, GLint level, @@ -135,8 +135,8 @@ void GLES2CopyTexSubImage2D(GLenum target, GLint y, GLsizei width, GLsizei height) { - gles2::GetGLContext()->CopyTexSubImage2D( - target, level, xoffset, yoffset, x, y, width, height); + gles2::GetGLContext()->CopyTexSubImage2D(target, level, xoffset, yoffset, x, + y, width, height); } GLuint GLES2CreateProgram() { return gles2::GetGLContext()->CreateProgram(); @@ -216,8 +216,8 @@ void GLES2FramebufferTexture2D(GLenum target, GLenum textarget, GLuint texture, GLint level) { - gles2::GetGLContext()->FramebufferTexture2D( - target, attachment, textarget, texture, level); + gles2::GetGLContext()->FramebufferTexture2D(target, attachment, textarget, + texture, level); } void GLES2FrontFace(GLenum mode) { gles2::GetGLContext()->FrontFace(mode); @@ -244,8 +244,8 @@ void GLES2GetActiveAttrib(GLuint program, GLint* size, GLenum* type, char* name) { - gles2::GetGLContext()->GetActiveAttrib( - program, index, bufsize, length, size, type, name); + gles2::GetGLContext()->GetActiveAttrib(program, index, bufsize, length, size, + type, name); } void GLES2GetActiveUniform(GLuint program, GLuint index, @@ -254,8 +254,8 @@ void GLES2GetActiveUniform(GLuint program, GLint* size, GLenum* type, char* name) { - gles2::GetGLContext()->GetActiveUniform( - program, index, bufsize, length, size, type, name); + gles2::GetGLContext()->GetActiveUniform(program, index, bufsize, length, size, + type, name); } void GLES2GetAttachedShaders(GLuint program, GLsizei maxcount, @@ -282,8 +282,8 @@ void GLES2GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params) { - gles2::GetGLContext()->GetFramebufferAttachmentParameteriv( - target, attachment, pname, params); + gles2::GetGLContext()->GetFramebufferAttachmentParameteriv(target, attachment, + pname, params); } void GLES2GetIntegerv(GLenum pname, GLint* params) { gles2::GetGLContext()->GetIntegerv(pname, params); @@ -315,8 +315,8 @@ void GLES2GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) { - gles2::GetGLContext()->GetShaderPrecisionFormat( - shadertype, precisiontype, range, precision); + gles2::GetGLContext()->GetShaderPrecisionFormat(shadertype, precisiontype, + range, precision); } void GLES2GetShaderSource(GLuint shader, GLsizei bufsize, @@ -403,8 +403,8 @@ void GLES2RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { - gles2::GetGLContext()->RenderbufferStorage( - target, internalformat, width, height); + gles2::GetGLContext()->RenderbufferStorage(target, internalformat, width, + height); } void GLES2SampleCoverage(GLclampf value, GLboolean invert) { gles2::GetGLContext()->SampleCoverage(value, invert); @@ -464,15 +464,8 @@ void GLES2TexImage2D(GLenum target, GLenum format, GLenum type, const void* pixels) { - gles2::GetGLContext()->TexImage2D(target, - level, - internalformat, - width, - height, - border, - format, - type, - pixels); + gles2::GetGLContext()->TexImage2D(target, level, internalformat, width, + height, border, format, type, pixels); } void GLES2TexParameterf(GLenum target, GLenum pname, GLfloat param) { gles2::GetGLContext()->TexParameterf(target, pname, param); @@ -495,8 +488,8 @@ void GLES2TexSubImage2D(GLenum target, GLenum format, GLenum type, const void* pixels) { - gles2::GetGLContext()->TexSubImage2D( - target, level, xoffset, yoffset, width, height, format, type, pixels); + gles2::GetGLContext()->TexSubImage2D(target, level, xoffset, yoffset, width, + height, format, type, pixels); } void GLES2Uniform1f(GLint location, GLfloat x) { gles2::GetGLContext()->Uniform1f(location, x); @@ -608,8 +601,8 @@ void GLES2VertexAttribPointer(GLuint indx, GLboolean normalized, GLsizei stride, const void* ptr) { - gles2::GetGLContext()->VertexAttribPointer( - indx, size, type, normalized, stride, ptr); + gles2::GetGLContext()->VertexAttribPointer(indx, size, type, normalized, + stride, ptr); } void GLES2Viewport(GLint x, GLint y, GLsizei width, GLsizei height) { gles2::GetGLContext()->Viewport(x, y, width, height); @@ -657,8 +650,8 @@ void GLES2TexStorage2DEXT(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height) { - gles2::GetGLContext()->TexStorage2DEXT( - target, levels, internalFormat, width, height); + gles2::GetGLContext()->TexStorage2DEXT(target, levels, internalFormat, width, + height); } void GLES2GenQueriesEXT(GLsizei n, GLuint* queries) { gles2::GetGLContext()->GenQueriesEXT(n, queries); @@ -709,8 +702,8 @@ GLuint GLES2GetMaxValueInBufferCHROMIUM(GLuint buffer_id, GLsizei count, GLenum type, GLuint offset) { - return gles2::GetGLContext()->GetMaxValueInBufferCHROMIUM( - buffer_id, count, type, offset); + return gles2::GetGLContext()->GetMaxValueInBufferCHROMIUM(buffer_id, count, + type, offset); } GLboolean GLES2EnableFeatureCHROMIUM(const char* feature) { return gles2::GetGLContext()->EnableFeatureCHROMIUM(feature); @@ -725,8 +718,8 @@ void* GLES2MapBufferSubDataCHROMIUM(GLuint target, GLintptr offset, GLsizeiptr size, GLenum access) { - return gles2::GetGLContext()->MapBufferSubDataCHROMIUM( - target, offset, size, access); + return gles2::GetGLContext()->MapBufferSubDataCHROMIUM(target, offset, size, + access); } void GLES2UnmapBufferSubDataCHROMIUM(const void* mem) { gles2::GetGLContext()->UnmapBufferSubDataCHROMIUM(mem); @@ -762,8 +755,8 @@ void GLES2GetMultipleIntegervCHROMIUM(const GLenum* pnames, GLuint count, GLint* results, GLsizeiptr size) { - gles2::GetGLContext()->GetMultipleIntegervCHROMIUM( - pnames, count, results, size); + gles2::GetGLContext()->GetMultipleIntegervCHROMIUM(pnames, count, results, + size); } void GLES2GetProgramInfoCHROMIUM(GLuint program, GLsizei bufsize, @@ -778,8 +771,8 @@ GLuint GLES2CreateImageCHROMIUM(ClientBuffer buffer, GLsizei width, GLsizei height, GLenum internalformat) { - return gles2::GetGLContext()->CreateImageCHROMIUM( - buffer, width, height, internalformat); + return gles2::GetGLContext()->CreateImageCHROMIUM(buffer, width, height, + internalformat); } void GLES2DestroyImageCHROMIUM(GLuint image_id) { gles2::GetGLContext()->DestroyImageCHROMIUM(image_id); @@ -795,8 +788,8 @@ void GLES2GetTranslatedShaderSourceANGLE(GLuint shader, GLsizei bufsize, GLsizei* length, char* source) { - gles2::GetGLContext()->GetTranslatedShaderSourceANGLE( - shader, bufsize, length, source); + gles2::GetGLContext()->GetTranslatedShaderSourceANGLE(shader, bufsize, length, + source); } void GLES2PostSubBufferCHROMIUM(GLint x, GLint y, GLint width, GLint height) { gles2::GetGLContext()->PostSubBufferCHROMIUM(x, y, width, height); @@ -806,8 +799,8 @@ void GLES2TexImageIOSurface2DCHROMIUM(GLenum target, GLsizei height, GLuint ioSurfaceId, GLuint plane) { - gles2::GetGLContext()->TexImageIOSurface2DCHROMIUM( - target, width, height, ioSurfaceId, plane); + gles2::GetGLContext()->TexImageIOSurface2DCHROMIUM(target, width, height, + ioSurfaceId, plane); } void GLES2CopyTextureCHROMIUM(GLenum target, GLenum source_id, @@ -815,23 +808,23 @@ void GLES2CopyTextureCHROMIUM(GLenum target, GLint level, GLint internalformat, GLenum dest_type) { - gles2::GetGLContext()->CopyTextureCHROMIUM( - target, source_id, dest_id, level, internalformat, dest_type); + gles2::GetGLContext()->CopyTextureCHROMIUM(target, source_id, dest_id, level, + internalformat, dest_type); } void GLES2DrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei primcount) { - gles2::GetGLContext()->DrawArraysInstancedANGLE( - mode, first, count, primcount); + gles2::GetGLContext()->DrawArraysInstancedANGLE(mode, first, count, + primcount); } void GLES2DrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount) { - gles2::GetGLContext()->DrawElementsInstancedANGLE( - mode, count, type, indices, primcount); + gles2::GetGLContext()->DrawElementsInstancedANGLE(mode, count, type, indices, + primcount); } void GLES2VertexAttribDivisorANGLE(GLuint index, GLuint divisor) { gles2::GetGLContext()->VertexAttribDivisorANGLE(index, divisor); @@ -860,6 +853,30 @@ void GLES2BindUniformLocationCHROMIUM(GLuint program, const char* name) { gles2::GetGLContext()->BindUniformLocationCHROMIUM(program, location, name); } +void GLES2GenValuebuffersCHROMIUM(GLsizei n, GLuint* buffers) { + gles2::GetGLContext()->GenValuebuffersCHROMIUM(n, buffers); +} +void GLES2DeleteValuebuffersCHROMIUM(GLsizei n, const GLuint* valuebuffers) { + gles2::GetGLContext()->DeleteValuebuffersCHROMIUM(n, valuebuffers); +} +GLboolean GLES2IsValuebufferCHROMIUM(GLuint valuebuffer) { + return gles2::GetGLContext()->IsValuebufferCHROMIUM(valuebuffer); +} +void GLES2BindValuebufferCHROMIUM(GLenum target, GLuint valuebuffer) { + gles2::GetGLContext()->BindValuebufferCHROMIUM(target, valuebuffer); +} +void GLES2SubscribeValueCHROMIUM(GLenum target, GLenum subscription) { + gles2::GetGLContext()->SubscribeValueCHROMIUM(target, subscription); +} +void GLES2PopulateSubscribedValuesCHROMIUM(GLenum target) { + gles2::GetGLContext()->PopulateSubscribedValuesCHROMIUM(target); +} +void GLES2UniformValuebufferCHROMIUM(GLint location, + GLenum target, + GLenum subscription) { + gles2::GetGLContext()->UniformValuebufferCHROMIUM(location, target, + subscription); +} void GLES2BindTexImage2DCHROMIUM(GLenum target, GLint imageId) { gles2::GetGLContext()->BindTexImage2DCHROMIUM(target, imageId); } @@ -893,15 +910,9 @@ void GLES2AsyncTexImage2DCHROMIUM(GLenum target, GLenum format, GLenum type, const void* pixels) { - gles2::GetGLContext()->AsyncTexImage2DCHROMIUM(target, - level, - internalformat, - width, - height, - border, - format, - type, - pixels); + gles2::GetGLContext()->AsyncTexImage2DCHROMIUM(target, level, internalformat, + width, height, border, format, + type, pixels); } void GLES2WaitAsyncTexImage2DCHROMIUM(GLenum target) { gles2::GetGLContext()->WaitAsyncTexImage2DCHROMIUM(target); @@ -940,17 +951,9 @@ void GLES2ScheduleOverlayPlaneCHROMIUM(GLint plane_z_order, GLfloat uv_y, GLfloat uv_width, GLfloat uv_height) { - gles2::GetGLContext()->ScheduleOverlayPlaneCHROMIUM(plane_z_order, - plane_transform, - overlay_texture_id, - bounds_x, - bounds_y, - bounds_width, - bounds_height, - uv_x, - uv_y, - uv_width, - uv_height); + gles2::GetGLContext()->ScheduleOverlayPlaneCHROMIUM( + plane_z_order, plane_transform, overlay_texture_id, bounds_x, bounds_y, + bounds_width, bounds_height, uv_x, uv_y, uv_width, uv_height); } void GLES2MatrixLoadfCHROMIUM(GLenum matrixMode, const GLfloat* m) { gles2::GetGLContext()->MatrixLoadfCHROMIUM(matrixMode, m); @@ -1751,6 +1754,34 @@ extern const NameToFunc g_gles2_function_table[] = { "glBindUniformLocationCHROMIUM", reinterpret_cast(glBindUniformLocationCHROMIUM), }, + { + "glGenValuebuffersCHROMIUM", + reinterpret_cast(glGenValuebuffersCHROMIUM), + }, + { + "glDeleteValuebuffersCHROMIUM", + reinterpret_cast(glDeleteValuebuffersCHROMIUM), + }, + { + "glIsValuebufferCHROMIUM", + reinterpret_cast(glIsValuebufferCHROMIUM), + }, + { + "glBindValuebufferCHROMIUM", + reinterpret_cast(glBindValuebufferCHROMIUM), + }, + { + "glSubscribeValueCHROMIUM", + reinterpret_cast(glSubscribeValueCHROMIUM), + }, + { + "glPopulateSubscribedValuesCHROMIUM", + reinterpret_cast(glPopulateSubscribedValuesCHROMIUM), + }, + { + "glUniformValuebufferCHROMIUM", + reinterpret_cast(glUniformValuebufferCHROMIUM), + }, { "glBindTexImage2DCHROMIUM", reinterpret_cast(glBindTexImage2DCHROMIUM), diff --git a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h index 24d8be24c6..cfa7a5ddde 100644 --- a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h +++ b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h @@ -205,14 +205,8 @@ void CompressedTexImage2D(GLenum target, gles2::cmds::CompressedTexImage2D* c = GetCmdSpace(); if (c) { - c->Init(target, - level, - internalformat, - width, - height, - imageSize, - data_shm_id, - data_shm_offset); + c->Init(target, level, internalformat, width, height, imageSize, + data_shm_id, data_shm_offset); } } @@ -244,16 +238,8 @@ void CompressedTexSubImage2D(GLenum target, gles2::cmds::CompressedTexSubImage2D* c = GetCmdSpace(); if (c) { - c->Init(target, - level, - xoffset, - yoffset, - width, - height, - format, - imageSize, - data_shm_id, - data_shm_offset); + c->Init(target, level, xoffset, yoffset, width, height, format, imageSize, + data_shm_id, data_shm_offset); } } @@ -892,17 +878,8 @@ void ReadPixels(GLint x, GLboolean async) { gles2::cmds::ReadPixels* c = GetCmdSpace(); if (c) { - c->Init(x, - y, - width, - height, - format, - type, - pixels_shm_id, - pixels_shm_offset, - result_shm_id, - result_shm_offset, - async); + c->Init(x, y, width, height, format, type, pixels_shm_id, pixels_shm_offset, + result_shm_id, result_shm_offset, async); } } @@ -948,13 +925,8 @@ void ShaderBinary(GLsizei n, GLsizei length) { gles2::cmds::ShaderBinary* c = GetCmdSpace(); if (c) { - c->Init(n, - shaders_shm_id, - shaders_shm_offset, - binaryformat, - binary_shm_id, - binary_shm_offset, - length); + c->Init(n, shaders_shm_id, shaders_shm_offset, binaryformat, binary_shm_id, + binary_shm_offset, length); } } @@ -1022,15 +994,8 @@ void TexImage2D(GLenum target, uint32_t pixels_shm_offset) { gles2::cmds::TexImage2D* c = GetCmdSpace(); if (c) { - c->Init(target, - level, - internalformat, - width, - height, - format, - type, - pixels_shm_id, - pixels_shm_offset); + c->Init(target, level, internalformat, width, height, format, type, + pixels_shm_id, pixels_shm_offset); } } @@ -1081,17 +1046,8 @@ void TexSubImage2D(GLenum target, GLboolean internal) { gles2::cmds::TexSubImage2D* c = GetCmdSpace(); if (c) { - c->Init(target, - level, - xoffset, - yoffset, - width, - height, - format, - type, - pixels_shm_id, - pixels_shm_offset, - internal); + c->Init(target, level, xoffset, yoffset, width, height, format, type, + pixels_shm_id, pixels_shm_offset, internal); } } @@ -1377,8 +1333,8 @@ void BlitFramebufferCHROMIUM(GLint srcX0, gles2::cmds::BlitFramebufferCHROMIUM* c = GetCmdSpace(); if (c) { - c->Init( - srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + c->Init(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, + filter); } } @@ -1591,12 +1547,8 @@ void GetMultipleIntegervCHROMIUM(uint32_t pnames_shm_id, gles2::cmds::GetMultipleIntegervCHROMIUM* c = GetCmdSpace(); if (c) { - c->Init(pnames_shm_id, - pnames_shm_offset, - count, - results_shm_id, - results_shm_offset, - size); + c->Init(pnames_shm_id, pnames_shm_offset, count, results_shm_id, + results_shm_offset, size); } } @@ -1725,6 +1677,73 @@ void BindUniformLocationCHROMIUMBucket(GLuint program, } } +void GenValuebuffersCHROMIUMImmediate(GLsizei n, GLuint* buffers) { + const uint32_t size = + gles2::cmds::GenValuebuffersCHROMIUMImmediate::ComputeSize(n); + gles2::cmds::GenValuebuffersCHROMIUMImmediate* c = + GetImmediateCmdSpaceTotalSize< + gles2::cmds::GenValuebuffersCHROMIUMImmediate>(size); + if (c) { + c->Init(n, buffers); + } +} + +void DeleteValuebuffersCHROMIUMImmediate(GLsizei n, + const GLuint* valuebuffers) { + const uint32_t size = + gles2::cmds::DeleteValuebuffersCHROMIUMImmediate::ComputeSize(n); + gles2::cmds::DeleteValuebuffersCHROMIUMImmediate* c = + GetImmediateCmdSpaceTotalSize< + gles2::cmds::DeleteValuebuffersCHROMIUMImmediate>(size); + if (c) { + c->Init(n, valuebuffers); + } +} + +void IsValuebufferCHROMIUM(GLuint valuebuffer, + uint32_t result_shm_id, + uint32_t result_shm_offset) { + gles2::cmds::IsValuebufferCHROMIUM* c = + GetCmdSpace(); + if (c) { + c->Init(valuebuffer, result_shm_id, result_shm_offset); + } +} + +void BindValuebufferCHROMIUM(GLenum target, GLuint valuebuffer) { + gles2::cmds::BindValuebufferCHROMIUM* c = + GetCmdSpace(); + if (c) { + c->Init(target, valuebuffer); + } +} + +void SubscribeValueCHROMIUM(GLenum target, GLenum subscription) { + gles2::cmds::SubscribeValueCHROMIUM* c = + GetCmdSpace(); + if (c) { + c->Init(target, subscription); + } +} + +void PopulateSubscribedValuesCHROMIUM(GLenum target) { + gles2::cmds::PopulateSubscribedValuesCHROMIUM* c = + GetCmdSpace(); + if (c) { + c->Init(target); + } +} + +void UniformValuebufferCHROMIUM(GLint location, + GLenum target, + GLenum subscription) { + gles2::cmds::UniformValuebufferCHROMIUM* c = + GetCmdSpace(); + if (c) { + c->Init(location, target, subscription); + } +} + void BindTexImage2DCHROMIUM(GLenum target, GLint imageId) { gles2::cmds::BindTexImage2DCHROMIUM* c = GetCmdSpace(); @@ -1773,18 +1792,8 @@ void AsyncTexSubImage2DCHROMIUM(GLenum target, gles2::cmds::AsyncTexSubImage2DCHROMIUM* c = GetCmdSpace(); if (c) { - c->Init(target, - level, - xoffset, - yoffset, - width, - height, - format, - type, - data_shm_id, - data_shm_offset, - async_upload_token, - sync_data_shm_id, + c->Init(target, level, xoffset, yoffset, width, height, format, type, + data_shm_id, data_shm_offset, async_upload_token, sync_data_shm_id, sync_data_shm_offset); } } @@ -1804,18 +1813,9 @@ void AsyncTexImage2DCHROMIUM(GLenum target, gles2::cmds::AsyncTexImage2DCHROMIUM* c = GetCmdSpace(); if (c) { - c->Init(target, - level, - internalformat, - width, - height, - format, - type, - pixels_shm_id, - pixels_shm_offset, - async_upload_token, - sync_data_shm_id, - sync_data_shm_offset); + c->Init(target, level, internalformat, width, height, format, type, + pixels_shm_id, pixels_shm_offset, async_upload_token, + sync_data_shm_id, sync_data_shm_offset); } } @@ -1896,16 +1896,8 @@ void ScheduleOverlayPlaneCHROMIUM(GLint plane_z_order, gles2::cmds::ScheduleOverlayPlaneCHROMIUM* c = GetCmdSpace(); if (c) { - c->Init(plane_z_order, - plane_transform, - overlay_texture_id, - bounds_x, - bounds_y, - bounds_width, - bounds_height, - uv_x, - uv_y, - uv_width, + c->Init(plane_z_order, plane_transform, overlay_texture_id, bounds_x, + bounds_y, bounds_width, bounds_height, uv_x, uv_y, uv_width, uv_height); } } diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc index 66d8c2bb13..241056cefd 100644 --- a/gpu/command_buffer/client/gles2_implementation.cc +++ b/gpu/command_buffer/client/gles2_implementation.cc @@ -99,6 +99,7 @@ GLES2Implementation::GLES2Implementation( bound_framebuffer_(0), bound_read_framebuffer_(0), bound_renderbuffer_(0), + bound_valuebuffer_(0), current_program_(0), bound_array_buffer_id_(0), bound_pixel_pack_transfer_buffer_id_(0), @@ -2364,6 +2365,11 @@ void GLES2Implementation::GenQueriesEXTHelper( GLsizei /* n */, const GLuint* /* queries */) { } +void GLES2Implementation::GenValuebuffersCHROMIUMHelper( + GLsizei /* n */, + const GLuint* /* valuebuffers */) { +} + // NOTE #1: On old versions of OpenGL, calling glBindXXX with an unused id // generates a new resource. On newer versions of OpenGL they don't. The code // related to binding below will need to change if we switch to the new OpenGL @@ -2513,6 +2519,26 @@ bool GLES2Implementation::BindVertexArrayOESHelper(GLuint array) { return changed; } +bool GLES2Implementation::BindValuebufferCHROMIUMHelper(GLenum target, + GLuint valuebuffer) { + bool changed = false; + switch (target) { + case GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM: + if (bound_valuebuffer_ != valuebuffer) { + bound_valuebuffer_ = valuebuffer; + changed = true; + } + break; + default: + changed = true; + break; + } + // TODO(gman): There's a bug here. If the target is invalid the ID will not be + // used even though it's marked it as used here. + GetIdHandler(id_namespaces::kValuebuffers)->MarkAsUsedForBind(valuebuffer); + return changed; +} + bool GLES2Implementation::UseProgramHelper(GLuint program) { bool changed = false; if (current_program_ != program) { @@ -2629,6 +2655,11 @@ void GLES2Implementation::DeleteTexturesHelper( } } +void GLES2Implementation::DeleteTexturesStub(GLsizei n, + const GLuint* textures) { + helper_->DeleteTexturesImmediate(n, textures); +} + void GLES2Implementation::DeleteVertexArraysOESHelper( GLsizei n, const GLuint* arrays) { vertex_array_object_manager_->DeleteVertexArrays(n, arrays); @@ -2646,9 +2677,27 @@ void GLES2Implementation::DeleteVertexArraysOESStub( helper_->DeleteVertexArraysOESImmediate(n, arrays); } -void GLES2Implementation::DeleteTexturesStub( - GLsizei n, const GLuint* textures) { - helper_->DeleteTexturesImmediate(n, textures); +void GLES2Implementation::DeleteValuebuffersCHROMIUMHelper( + GLsizei n, + const GLuint* valuebuffers) { + if (!GetIdHandler(id_namespaces::kValuebuffers) + ->FreeIds(this, n, valuebuffers, + &GLES2Implementation::DeleteValuebuffersCHROMIUMStub)) { + SetGLError(GL_INVALID_VALUE, "glDeleteValuebuffersCHROMIUM", + "id not created by this context."); + return; + } + for (GLsizei ii = 0; ii < n; ++ii) { + if (valuebuffers[ii] == bound_valuebuffer_) { + bound_valuebuffer_ = 0; + } + } +} + +void GLES2Implementation::DeleteValuebuffersCHROMIUMStub( + GLsizei n, + const GLuint* valuebuffers) { + helper_->DeleteValuebuffersCHROMIUMImmediate(n, valuebuffers); } void GLES2Implementation::DisableVertexAttribArray(GLuint index) { diff --git a/gpu/command_buffer/client/gles2_implementation.h b/gpu/command_buffer/client/gles2_implementation.h index a612ac2f9a..c2e9edb3e7 100644 --- a/gpu/command_buffer/client/gles2_implementation.h +++ b/gpu/command_buffer/client/gles2_implementation.h @@ -495,17 +495,19 @@ class GLES2_IMPL_EXPORT GLES2Implementation // Returns true if id is reserved. bool IsBufferReservedId(GLuint id); - bool IsFramebufferReservedId(GLuint id) { return false; } + bool IsFramebufferReservedId(GLuint id) { return false; } bool IsRenderbufferReservedId(GLuint id) { return false; } bool IsTextureReservedId(GLuint id) { return false; } bool IsVertexArrayReservedId(GLuint id) { return false; } bool IsProgramReservedId(GLuint id) { return false; } + bool IsValuebufferReservedId(GLuint id) { return false; } bool BindBufferHelper(GLenum target, GLuint texture); bool BindFramebufferHelper(GLenum target, GLuint texture); bool BindRenderbufferHelper(GLenum target, GLuint texture); bool BindTextureHelper(GLenum target, GLuint texture); bool BindVertexArrayOESHelper(GLuint array); + bool BindValuebufferCHROMIUMHelper(GLenum target, GLuint valuebuffer); bool UseProgramHelper(GLuint program); void GenBuffersHelper(GLsizei n, const GLuint* buffers); @@ -514,6 +516,7 @@ class GLES2_IMPL_EXPORT GLES2Implementation void GenTexturesHelper(GLsizei n, const GLuint* textures); void GenVertexArraysOESHelper(GLsizei n, const GLuint* arrays); void GenQueriesEXTHelper(GLsizei n, const GLuint* queries); + void GenValuebuffersCHROMIUMHelper(GLsizei n, const GLuint* valuebuffers); void DeleteBuffersHelper(GLsizei n, const GLuint* buffers); void DeleteFramebuffersHelper(GLsizei n, const GLuint* framebuffers); @@ -523,6 +526,7 @@ class GLES2_IMPL_EXPORT GLES2Implementation bool DeleteShaderHelper(GLuint shader); void DeleteQueriesEXTHelper(GLsizei n, const GLuint* queries); void DeleteVertexArraysOESHelper(GLsizei n, const GLuint* arrays); + void DeleteValuebuffersCHROMIUMHelper(GLsizei n, const GLuint* valuebuffers); void DeleteBuffersStub(GLsizei n, const GLuint* buffers); void DeleteFramebuffersStub(GLsizei n, const GLuint* framebuffers); @@ -531,6 +535,7 @@ class GLES2_IMPL_EXPORT GLES2Implementation void DeleteProgramStub(GLsizei n, const GLuint* programs); void DeleteShaderStub(GLsizei n, const GLuint* shaders); void DeleteVertexArraysOESStub(GLsizei n, const GLuint* arrays); + void DeleteValuebuffersCHROMIUMStub(GLsizei n, const GLuint* valuebuffers); void BufferDataHelper( GLenum target, GLsizeiptr size, const void* data, GLenum usage); @@ -699,6 +704,7 @@ class GLES2_IMPL_EXPORT GLES2Implementation GLuint bound_framebuffer_; GLuint bound_read_framebuffer_; GLuint bound_renderbuffer_; + GLuint bound_valuebuffer_; // The program in use by glUseProgram GLuint current_program_; diff --git a/gpu/command_buffer/client/gles2_implementation_autogen.h b/gpu/command_buffer/client/gles2_implementation_autogen.h index 4e547d9264..3a11f10564 100644 --- a/gpu/command_buffer/client/gles2_implementation_autogen.h +++ b/gpu/command_buffer/client/gles2_implementation_autogen.h @@ -629,6 +629,22 @@ void BindUniformLocationCHROMIUM(GLuint program, GLint location, const char* name) override; +void GenValuebuffersCHROMIUM(GLsizei n, GLuint* buffers) override; + +void DeleteValuebuffersCHROMIUM(GLsizei n, const GLuint* valuebuffers) override; + +GLboolean IsValuebufferCHROMIUM(GLuint valuebuffer) override; + +void BindValuebufferCHROMIUM(GLenum target, GLuint valuebuffer) override; + +void SubscribeValueCHROMIUM(GLenum target, GLenum subscription) override; + +void PopulateSubscribedValuesCHROMIUM(GLenum target) override; + +void UniformValuebufferCHROMIUM(GLint location, + GLenum target, + GLenum subscription) override; + void BindTexImage2DCHROMIUM(GLenum target, GLint imageId) override; void ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) override; diff --git a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h index 32b134763e..8541e77742 100644 --- a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h +++ b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h @@ -42,8 +42,8 @@ void GLES2Implementation::BindFramebuffer(GLenum target, GLuint framebuffer) { << GLES2Util::GetStringFrameBufferTarget(target) << ", " << framebuffer << ")"); if (IsFramebufferReservedId(framebuffer)) { - SetGLError( - GL_INVALID_OPERATION, "BindFramebuffer", "framebuffer reserved id"); + SetGLError(GL_INVALID_OPERATION, "BindFramebuffer", + "framebuffer reserved id"); return; } if (BindFramebufferHelper(target, framebuffer)) { @@ -58,8 +58,8 @@ void GLES2Implementation::BindRenderbuffer(GLenum target, GLuint renderbuffer) { << GLES2Util::GetStringRenderBufferTarget(target) << ", " << renderbuffer << ")"); if (IsRenderbufferReservedId(renderbuffer)) { - SetGLError( - GL_INVALID_OPERATION, "BindRenderbuffer", "renderbuffer reserved id"); + SetGLError(GL_INVALID_OPERATION, "BindRenderbuffer", + "renderbuffer reserved id"); return; } if (BindRenderbufferHelper(target, renderbuffer)) { @@ -146,8 +146,8 @@ GLenum GLES2Implementation::CheckFramebufferStatus(GLenum target) { return GL_FRAMEBUFFER_UNSUPPORTED; } *result = 0; - helper_->CheckFramebufferStatus( - target, GetResultShmId(), GetResultShmOffset()); + helper_->CheckFramebufferStatus(target, GetResultShmId(), + GetResultShmOffset()); WaitForCmd(); GLenum result_value = *result; GPU_CLIENT_LOG("returned " << result_value); @@ -261,8 +261,8 @@ void GLES2Implementation::CopyTexSubImage2D(GLenum target, SetGLError(GL_INVALID_VALUE, "glCopyTexSubImage2D", "height < 0"); return; } - helper_->CopyTexSubImage2D( - target, level, xoffset, yoffset, x, y, width, height); + helper_->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, + height); CheckGLError(); } @@ -449,8 +449,8 @@ void GLES2Implementation::FramebufferRenderbuffer(GLenum target, << GLES2Util::GetStringAttachment(attachment) << ", " << GLES2Util::GetStringRenderBufferTarget( renderbuffertarget) << ", " << renderbuffer << ")"); - helper_->FramebufferRenderbuffer( - target, attachment, renderbuffertarget, renderbuffer); + helper_->FramebufferRenderbuffer(target, attachment, renderbuffertarget, + renderbuffer); CheckGLError(); } @@ -466,8 +466,8 @@ void GLES2Implementation::FramebufferTexture2D(GLenum target, << GLES2Util::GetStringTextureTarget(textarget) << ", " << texture << ", " << level << ")"); if (level != 0) { - SetGLError( - GL_INVALID_VALUE, "glFramebufferTexture2D", "level GL_INVALID_VALUE"); + SetGLError(GL_INVALID_VALUE, "glFramebufferTexture2D", + "level GL_INVALID_VALUE"); return; } helper_->FramebufferTexture2D(target, attachment, textarget, texture); @@ -620,8 +620,8 @@ void GLES2Implementation::GetBufferParameteriv(GLenum target, return; } result->SetNumResults(0); - helper_->GetBufferParameteriv( - target, pname, GetResultShmId(), GetResultShmOffset()); + helper_->GetBufferParameteriv(target, pname, GetResultShmId(), + GetResultShmOffset()); WaitForCmd(); result->CopyResult(params); GPU_CLIENT_LOG_CODE_BLOCK({ @@ -670,8 +670,8 @@ void GLES2Implementation::GetFramebufferAttachmentParameteriv(GLenum target, << static_cast(params) << ")"); TRACE_EVENT0("gpu", "GLES2Implementation::GetFramebufferAttachmentParameteriv"); - if (GetFramebufferAttachmentParameterivHelper( - target, attachment, pname, params)) { + if (GetFramebufferAttachmentParameterivHelper(target, attachment, pname, + params)) { return; } typedef cmds::GetFramebufferAttachmentParameteriv::Result Result; @@ -791,8 +791,8 @@ void GLES2Implementation::GetRenderbufferParameteriv(GLenum target, return; } result->SetNumResults(0); - helper_->GetRenderbufferParameteriv( - target, pname, GetResultShmId(), GetResultShmOffset()); + helper_->GetRenderbufferParameteriv(target, pname, GetResultShmId(), + GetResultShmOffset()); WaitForCmd(); result->CopyResult(params); GPU_CLIENT_LOG_CODE_BLOCK({ @@ -902,8 +902,8 @@ void GLES2Implementation::GetTexParameterfv(GLenum target, return; } result->SetNumResults(0); - helper_->GetTexParameterfv( - target, pname, GetResultShmId(), GetResultShmOffset()); + helper_->GetTexParameterfv(target, pname, GetResultShmId(), + GetResultShmOffset()); WaitForCmd(); result->CopyResult(params); GPU_CLIENT_LOG_CODE_BLOCK({ @@ -932,8 +932,8 @@ void GLES2Implementation::GetTexParameteriv(GLenum target, return; } result->SetNumResults(0); - helper_->GetTexParameteriv( - target, pname, GetResultShmId(), GetResultShmOffset()); + helper_->GetTexParameteriv(target, pname, GetResultShmId(), + GetResultShmOffset()); WaitForCmd(); result->CopyResult(params); GPU_CLIENT_LOG_CODE_BLOCK({ @@ -1497,8 +1497,8 @@ void GLES2Implementation::UniformMatrix2fv(GLint location, return; } if (transpose != false) { - SetGLError( - GL_INVALID_VALUE, "glUniformMatrix2fv", "transpose GL_INVALID_VALUE"); + SetGLError(GL_INVALID_VALUE, "glUniformMatrix2fv", + "transpose GL_INVALID_VALUE"); return; } helper_->UniformMatrix2fvImmediate(location, count, value); @@ -1529,8 +1529,8 @@ void GLES2Implementation::UniformMatrix3fv(GLint location, return; } if (transpose != false) { - SetGLError( - GL_INVALID_VALUE, "glUniformMatrix3fv", "transpose GL_INVALID_VALUE"); + SetGLError(GL_INVALID_VALUE, "glUniformMatrix3fv", + "transpose GL_INVALID_VALUE"); return; } helper_->UniformMatrix3fvImmediate(location, count, value); @@ -1564,8 +1564,8 @@ void GLES2Implementation::UniformMatrix4fv(GLint location, return; } if (transpose != false) { - SetGLError( - GL_INVALID_VALUE, "glUniformMatrix4fv", "transpose GL_INVALID_VALUE"); + SetGLError(GL_INVALID_VALUE, "glUniformMatrix4fv", + "transpose GL_INVALID_VALUE"); return; } helper_->UniformMatrix4fvImmediate(location, count, value); @@ -1705,8 +1705,8 @@ void GLES2Implementation::BlitFramebufferCHROMIUM(GLint srcX0, << ", " << dstX0 << ", " << dstY0 << ", " << dstX1 << ", " << dstY1 << ", " << mask << ", " << GLES2Util::GetStringBlitFilter(filter) << ")"); - helper_->BlitFramebufferCHROMIUM( - srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + helper_->BlitFramebufferCHROMIUM(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, + dstX1, dstY1, mask, filter); CheckGLError(); } @@ -1723,20 +1723,17 @@ void GLES2Implementation::RenderbufferStorageMultisampleCHROMIUM( << ", " << GLES2Util::GetStringRenderBufferFormat(internalformat) << ", " << width << ", " << height << ")"); if (samples < 0) { - SetGLError(GL_INVALID_VALUE, - "glRenderbufferStorageMultisampleCHROMIUM", + SetGLError(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleCHROMIUM", "samples < 0"); return; } if (width < 0) { - SetGLError(GL_INVALID_VALUE, - "glRenderbufferStorageMultisampleCHROMIUM", + SetGLError(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleCHROMIUM", "width < 0"); return; } if (height < 0) { - SetGLError(GL_INVALID_VALUE, - "glRenderbufferStorageMultisampleCHROMIUM", + SetGLError(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleCHROMIUM", "height < 0"); return; } @@ -1758,22 +1755,22 @@ void GLES2Implementation::RenderbufferStorageMultisampleEXT( << ", " << GLES2Util::GetStringRenderBufferFormat(internalformat) << ", " << width << ", " << height << ")"); if (samples < 0) { - SetGLError( - GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "samples < 0"); + SetGLError(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", + "samples < 0"); return; } if (width < 0) { - SetGLError( - GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "width < 0"); + SetGLError(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", + "width < 0"); return; } if (height < 0) { - SetGLError( - GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "height < 0"); + SetGLError(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", + "height < 0"); return; } - helper_->RenderbufferStorageMultisampleEXT( - target, samples, internalformat, width, height); + helper_->RenderbufferStorageMultisampleEXT(target, samples, internalformat, + width, height); CheckGLError(); } @@ -1791,19 +1788,17 @@ void GLES2Implementation::FramebufferTexture2DMultisampleEXT(GLenum target, << GLES2Util::GetStringTextureTarget(textarget) << ", " << texture << ", " << level << ", " << samples << ")"); if (level != 0) { - SetGLError(GL_INVALID_VALUE, - "glFramebufferTexture2DMultisampleEXT", + SetGLError(GL_INVALID_VALUE, "glFramebufferTexture2DMultisampleEXT", "level GL_INVALID_VALUE"); return; } if (samples < 0) { - SetGLError(GL_INVALID_VALUE, - "glFramebufferTexture2DMultisampleEXT", + SetGLError(GL_INVALID_VALUE, "glFramebufferTexture2DMultisampleEXT", "samples < 0"); return; } - helper_->FramebufferTexture2DMultisampleEXT( - target, attachment, textarget, texture, samples); + helper_->FramebufferTexture2DMultisampleEXT(target, attachment, textarget, + texture, samples); CheckGLError(); } @@ -2001,8 +1996,8 @@ void GLES2Implementation::TexImageIOSurface2DCHROMIUM(GLenum target, SetGLError(GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "height < 0"); return; } - helper_->TexImageIOSurface2DCHROMIUM( - target, width, height, ioSurfaceId, plane); + helper_->TexImageIOSurface2DCHROMIUM(target, width, height, ioSurfaceId, + plane); CheckGLError(); } @@ -2019,8 +2014,122 @@ void GLES2Implementation::CopyTextureCHROMIUM(GLenum target, << GLES2Util::GetStringEnum(dest_id) << ", " << level << ", " << internalformat << ", " << GLES2Util::GetStringPixelType(dest_type) << ")"); - helper_->CopyTextureCHROMIUM( - target, source_id, dest_id, level, internalformat, dest_type); + helper_->CopyTextureCHROMIUM(target, source_id, dest_id, level, + internalformat, dest_type); + CheckGLError(); +} + +void GLES2Implementation::GenValuebuffersCHROMIUM(GLsizei n, GLuint* buffers) { + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenValuebuffersCHROMIUM(" << n + << ", " << static_cast(buffers) << ")"); + if (n < 0) { + SetGLError(GL_INVALID_VALUE, "glGenValuebuffersCHROMIUM", "n < 0"); + return; + } + GPU_CLIENT_SINGLE_THREAD_CHECK(); + GetIdHandler(id_namespaces::kValuebuffers)->MakeIds(this, 0, n, buffers); + GenValuebuffersCHROMIUMHelper(n, buffers); + helper_->GenValuebuffersCHROMIUMImmediate(n, buffers); + if (share_group_->bind_generates_resource()) + helper_->CommandBufferHelper::Flush(); + GPU_CLIENT_LOG_CODE_BLOCK({ + for (GLsizei i = 0; i < n; ++i) { + GPU_CLIENT_LOG(" " << i << ": " << buffers[i]); + } + }); + CheckGLError(); +} + +void GLES2Implementation::DeleteValuebuffersCHROMIUM( + GLsizei n, + const GLuint* valuebuffers) { + GPU_CLIENT_SINGLE_THREAD_CHECK(); + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteValuebuffersCHROMIUM(" << n + << ", " << static_cast(valuebuffers) << ")"); + GPU_CLIENT_LOG_CODE_BLOCK({ + for (GLsizei i = 0; i < n; ++i) { + GPU_CLIENT_LOG(" " << i << ": " << valuebuffers[i]); + } + }); + GPU_CLIENT_DCHECK_CODE_BLOCK({ + for (GLsizei i = 0; i < n; ++i) { + DCHECK(valuebuffers[i] != 0); + } + }); + if (n < 0) { + SetGLError(GL_INVALID_VALUE, "glDeleteValuebuffersCHROMIUM", "n < 0"); + return; + } + DeleteValuebuffersCHROMIUMHelper(n, valuebuffers); + CheckGLError(); +} + +GLboolean GLES2Implementation::IsValuebufferCHROMIUM(GLuint valuebuffer) { + GPU_CLIENT_SINGLE_THREAD_CHECK(); + TRACE_EVENT0("gpu", "GLES2Implementation::IsValuebufferCHROMIUM"); + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsValuebufferCHROMIUM(" + << valuebuffer << ")"); + typedef cmds::IsValuebufferCHROMIUM::Result Result; + Result* result = GetResultAs(); + if (!result) { + return GL_FALSE; + } + *result = 0; + helper_->IsValuebufferCHROMIUM(valuebuffer, GetResultShmId(), + GetResultShmOffset()); + WaitForCmd(); + GLboolean result_value = *result != 0; + GPU_CLIENT_LOG("returned " << result_value); + CheckGLError(); + return result_value; +} + +void GLES2Implementation::BindValuebufferCHROMIUM(GLenum target, + GLuint valuebuffer) { + GPU_CLIENT_SINGLE_THREAD_CHECK(); + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindValuebufferCHROMIUM(" + << GLES2Util::GetStringValueBufferTarget(target) << ", " + << valuebuffer << ")"); + if (IsValuebufferReservedId(valuebuffer)) { + SetGLError(GL_INVALID_OPERATION, "BindValuebufferCHROMIUM", + "valuebuffer reserved id"); + return; + } + if (BindValuebufferCHROMIUMHelper(target, valuebuffer)) { + helper_->BindValuebufferCHROMIUM(target, valuebuffer); + } + CheckGLError(); +} + +void GLES2Implementation::SubscribeValueCHROMIUM(GLenum target, + GLenum subscription) { + GPU_CLIENT_SINGLE_THREAD_CHECK(); + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glSubscribeValueCHROMIUM(" + << GLES2Util::GetStringValueBufferTarget(target) << ", " + << GLES2Util::GetStringSubscriptionTarget(subscription) + << ")"); + helper_->SubscribeValueCHROMIUM(target, subscription); + CheckGLError(); +} + +void GLES2Implementation::PopulateSubscribedValuesCHROMIUM(GLenum target) { + GPU_CLIENT_SINGLE_THREAD_CHECK(); + GPU_CLIENT_LOG("[" << GetLogPrefix() + << "] glPopulateSubscribedValuesCHROMIUM(" + << GLES2Util::GetStringValueBufferTarget(target) << ")"); + helper_->PopulateSubscribedValuesCHROMIUM(target); + CheckGLError(); +} + +void GLES2Implementation::UniformValuebufferCHROMIUM(GLint location, + GLenum target, + GLenum subscription) { + GPU_CLIENT_SINGLE_THREAD_CHECK(); + GPU_CLIENT_LOG( + "[" << GetLogPrefix() << "] glUniformValuebufferCHROMIUM(" << location + << ", " << GLES2Util::GetStringValueBufferTarget(target) << ", " + << GLES2Util::GetStringSubscriptionTarget(subscription) << ")"); + helper_->UniformValuebufferCHROMIUM(location, target, subscription); CheckGLError(); } @@ -2124,17 +2233,9 @@ void GLES2Implementation::ScheduleOverlayPlaneCHROMIUM( << ", " << overlay_texture_id << ", " << bounds_x << ", " << bounds_y << ", " << bounds_width << ", " << bounds_height << ", " << uv_x << ", " << uv_y << ", " << uv_width << ", " << uv_height << ")"); - helper_->ScheduleOverlayPlaneCHROMIUM(plane_z_order, - plane_transform, - overlay_texture_id, - bounds_x, - bounds_y, - bounds_width, - bounds_height, - uv_x, - uv_y, - uv_width, - uv_height); + helper_->ScheduleOverlayPlaneCHROMIUM( + plane_z_order, plane_transform, overlay_texture_id, bounds_x, bounds_y, + bounds_width, bounds_height, uv_x, uv_y, uv_width, uv_height); CheckGLError(); } diff --git a/gpu/command_buffer/client/gles2_implementation_unittest.cc b/gpu/command_buffer/client/gles2_implementation_unittest.cc index 3d2f089e95..799618cb4d 100644 --- a/gpu/command_buffer/client/gles2_implementation_unittest.cc +++ b/gpu/command_buffer/client/gles2_implementation_unittest.cc @@ -383,6 +383,7 @@ class GLES2ImplementationTest : public testing::Test { static const GLuint kTexturesStartId = 1; static const GLuint kQueriesStartId = 1; static const GLuint kVertexArraysStartId = 1; + static const GLuint kValuebuffersStartId = 1; typedef MockTransferBuffer::ExpectedMemoryInfo ExpectedMemoryInfo; @@ -467,7 +468,7 @@ class GLES2ImplementationTest : public testing::Test { scoped_refptr ring_buffer = helper_->get_ring_buffer(); commands_ = static_cast(ring_buffer->memory()) + - command_buffer()->GetLastState().put_offset; + command_buffer()->GetPutOffset(); ClearCommands(); EXPECT_TRUE(transfer_buffer_->InSync()); @@ -755,6 +756,7 @@ const GLuint GLES2ImplementationTest::kRenderbuffersStartId; const GLuint GLES2ImplementationTest::kTexturesStartId; const GLuint GLES2ImplementationTest::kQueriesStartId; const GLuint GLES2ImplementationTest::kVertexArraysStartId; +const GLuint GLES2ImplementationTest::kValuebuffersStartId; #endif TEST_F(GLES2ImplementationTest, Basic) { diff --git a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h index a42d6d5d78..74a438c0f6 100644 --- a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h +++ b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h @@ -421,8 +421,8 @@ TEST_F(GLES2ImplementationTest, FramebufferRenderbuffer) { Cmds expected; expected.cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, 4); - gl_->FramebufferRenderbuffer( - GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, 4); + gl_->FramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_RENDERBUFFER, 4); EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); } @@ -433,14 +433,14 @@ TEST_F(GLES2ImplementationTest, FramebufferTexture2D) { Cmds expected; expected.cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4); - gl_->FramebufferTexture2D( - GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 0); + gl_->FramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, + 4, 0); EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); } TEST_F(GLES2ImplementationTest, FramebufferTexture2DInvalidConstantArg4) { - gl_->FramebufferTexture2D( - GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 1); + gl_->FramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, + 4, 1); EXPECT_TRUE(NoCommandsWritten()); EXPECT_EQ(GL_INVALID_VALUE, CheckError()); } @@ -602,18 +602,14 @@ TEST_F(GLES2ImplementationTest, GetFramebufferAttachmentParameteriv) { Result::Type result = 0; Cmds expected; ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); - expected.cmd.Init(123, - GL_COLOR_ATTACHMENT0, - GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, - result1.id, + expected.cmd.Init(123, GL_COLOR_ATTACHMENT0, + GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, result1.id, result1.offset); EXPECT_CALL(*command_buffer(), OnFlush()) .WillOnce(SetMemory(result1.ptr, SizedResultHelper(1))) .RetiresOnSaturation(); gl_->GetFramebufferAttachmentParameteriv( - 123, - GL_COLOR_ATTACHMENT0, - GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, + 123, GL_COLOR_ATTACHMENT0, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &result); EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); EXPECT_EQ(static_cast(1), result); @@ -735,8 +731,8 @@ TEST_F(GLES2ImplementationTest, GetVertexAttribfv) { Result::Type result = 0; Cmds expected; ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); - expected.cmd.Init( - 123, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, result1.id, result1.offset); + expected.cmd.Init(123, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, result1.id, + result1.offset); EXPECT_CALL(*command_buffer(), OnFlush()) .WillOnce(SetMemory(result1.ptr, SizedResultHelper(1))) .RetiresOnSaturation(); @@ -753,8 +749,8 @@ TEST_F(GLES2ImplementationTest, GetVertexAttribiv) { Result::Type result = 0; Cmds expected; ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); - expected.cmd.Init( - 123, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, result1.id, result1.offset); + expected.cmd.Init(123, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, result1.id, + result1.offset); EXPECT_CALL(*command_buffer(), OnFlush()) .WillOnce(SetMemory(result1.ptr, SizedResultHelper(1))) .RetiresOnSaturation(); @@ -1599,8 +1595,8 @@ TEST_F(GLES2ImplementationTest, RenderbufferStorageMultisampleCHROMIUM) { Cmds expected; expected.cmd.Init(GL_RENDERBUFFER, 2, GL_RGBA4, 4, 5); - gl_->RenderbufferStorageMultisampleCHROMIUM( - GL_RENDERBUFFER, 2, GL_RGBA4, 4, 5); + gl_->RenderbufferStorageMultisampleCHROMIUM(GL_RENDERBUFFER, 2, GL_RGBA4, 4, + 5); EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); } @@ -1622,15 +1618,15 @@ TEST_F(GLES2ImplementationTest, FramebufferTexture2DMultisampleEXT) { Cmds expected; expected.cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 6); - gl_->FramebufferTexture2DMultisampleEXT( - GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 0, 6); + gl_->FramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_TEXTURE_2D, 4, 0, 6); EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); } TEST_F(GLES2ImplementationTest, FramebufferTexture2DMultisampleEXTInvalidConstantArg4) { - gl_->FramebufferTexture2DMultisampleEXT( - GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 1, 6); + gl_->FramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_TEXTURE_2D, 4, 1, 6); EXPECT_TRUE(NoCommandsWritten()); EXPECT_EQ(GL_INVALID_VALUE, CheckError()); } @@ -1804,6 +1800,108 @@ TEST_F(GLES2ImplementationTest, VertexAttribDivisorANGLE) { // TODO: Implement unit test for GenMailboxCHROMIUM // TODO: Implement unit test for BindUniformLocationCHROMIUM +TEST_F(GLES2ImplementationTest, GenValuebuffersCHROMIUM) { + GLuint ids[2] = { + 0, + }; + struct Cmds { + cmds::GenValuebuffersCHROMIUMImmediate gen; + GLuint data[2]; + }; + Cmds expected; + expected.gen.Init(arraysize(ids), &ids[0]); + expected.data[0] = kValuebuffersStartId; + expected.data[1] = kValuebuffersStartId + 1; + gl_->GenValuebuffersCHROMIUM(arraysize(ids), &ids[0]); + EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); + EXPECT_EQ(kValuebuffersStartId, ids[0]); + EXPECT_EQ(kValuebuffersStartId + 1, ids[1]); +} + +TEST_F(GLES2ImplementationTest, DeleteValuebuffersCHROMIUM) { + GLuint ids[2] = {kValuebuffersStartId, kValuebuffersStartId + 1}; + struct Cmds { + cmds::DeleteValuebuffersCHROMIUMImmediate del; + GLuint data[2]; + }; + Cmds expected; + expected.del.Init(arraysize(ids), &ids[0]); + expected.data[0] = kValuebuffersStartId; + expected.data[1] = kValuebuffersStartId + 1; + gl_->DeleteValuebuffersCHROMIUM(arraysize(ids), &ids[0]); + EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); +} + +TEST_F(GLES2ImplementationTest, IsValuebufferCHROMIUM) { + struct Cmds { + cmds::IsValuebufferCHROMIUM cmd; + }; + + Cmds expected; + ExpectedMemoryInfo result1 = + GetExpectedResultMemory(sizeof(cmds::IsValuebufferCHROMIUM::Result)); + expected.cmd.Init(1, result1.id, result1.offset); + + EXPECT_CALL(*command_buffer(), OnFlush()) + .WillOnce(SetMemory(result1.ptr, uint32_t(1))) + .RetiresOnSaturation(); + + GLboolean result = gl_->IsValuebufferCHROMIUM(1); + EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); + EXPECT_TRUE(result); +} + +TEST_F(GLES2ImplementationTest, BindValuebufferCHROMIUM) { + struct Cmds { + cmds::BindValuebufferCHROMIUM cmd; + }; + Cmds expected; + expected.cmd.Init(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, 2); + + gl_->BindValuebufferCHROMIUM(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, 2); + EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); + ClearCommands(); + gl_->BindValuebufferCHROMIUM(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, 2); + EXPECT_TRUE(NoCommandsWritten()); +} + +TEST_F(GLES2ImplementationTest, SubscribeValueCHROMIUM) { + struct Cmds { + cmds::SubscribeValueCHROMIUM cmd; + }; + Cmds expected; + expected.cmd.Init(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, + GL_MOUSE_POSITION_CHROMIUM); + + gl_->SubscribeValueCHROMIUM(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, + GL_MOUSE_POSITION_CHROMIUM); + EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); +} + +TEST_F(GLES2ImplementationTest, PopulateSubscribedValuesCHROMIUM) { + struct Cmds { + cmds::PopulateSubscribedValuesCHROMIUM cmd; + }; + Cmds expected; + expected.cmd.Init(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM); + + gl_->PopulateSubscribedValuesCHROMIUM(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM); + EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); +} + +TEST_F(GLES2ImplementationTest, UniformValuebufferCHROMIUM) { + struct Cmds { + cmds::UniformValuebufferCHROMIUM cmd; + }; + Cmds expected; + expected.cmd.Init(1, GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, + GL_MOUSE_POSITION_CHROMIUM); + + gl_->UniformValuebufferCHROMIUM(1, GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, + GL_MOUSE_POSITION_CHROMIUM); + EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); +} + TEST_F(GLES2ImplementationTest, BindTexImage2DCHROMIUM) { struct Cmds { cmds::BindTexImage2DCHROMIUM cmd; diff --git a/gpu/command_buffer/client/gles2_interface_autogen.h b/gpu/command_buffer/client/gles2_interface_autogen.h index d8408047b9..af5db19d11 100644 --- a/gpu/command_buffer/client/gles2_interface_autogen.h +++ b/gpu/command_buffer/client/gles2_interface_autogen.h @@ -450,6 +450,16 @@ virtual GLuint CreateAndConsumeTextureCHROMIUM(GLenum target, virtual void BindUniformLocationCHROMIUM(GLuint program, GLint location, const char* name) = 0; +virtual void GenValuebuffersCHROMIUM(GLsizei n, GLuint* buffers) = 0; +virtual void DeleteValuebuffersCHROMIUM(GLsizei n, + const GLuint* valuebuffers) = 0; +virtual GLboolean IsValuebufferCHROMIUM(GLuint valuebuffer) = 0; +virtual void BindValuebufferCHROMIUM(GLenum target, GLuint valuebuffer) = 0; +virtual void SubscribeValueCHROMIUM(GLenum target, GLenum subscription) = 0; +virtual void PopulateSubscribedValuesCHROMIUM(GLenum target) = 0; +virtual void UniformValuebufferCHROMIUM(GLint location, + GLenum target, + GLenum subscription) = 0; virtual void BindTexImage2DCHROMIUM(GLenum target, GLint imageId) = 0; virtual void ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) = 0; virtual void TraceBeginCHROMIUM(const char* name) = 0; diff --git a/gpu/command_buffer/client/gles2_interface_stub_autogen.h b/gpu/command_buffer/client/gles2_interface_stub_autogen.h index 687ff48e77..c540360d87 100644 --- a/gpu/command_buffer/client/gles2_interface_stub_autogen.h +++ b/gpu/command_buffer/client/gles2_interface_stub_autogen.h @@ -441,6 +441,15 @@ GLuint CreateAndConsumeTextureCHROMIUM(GLenum target, void BindUniformLocationCHROMIUM(GLuint program, GLint location, const char* name) override; +void GenValuebuffersCHROMIUM(GLsizei n, GLuint* buffers) override; +void DeleteValuebuffersCHROMIUM(GLsizei n, const GLuint* valuebuffers) override; +GLboolean IsValuebufferCHROMIUM(GLuint valuebuffer) override; +void BindValuebufferCHROMIUM(GLenum target, GLuint valuebuffer) override; +void SubscribeValueCHROMIUM(GLenum target, GLenum subscription) override; +void PopulateSubscribedValuesCHROMIUM(GLenum target) override; +void UniformValuebufferCHROMIUM(GLint location, + GLenum target, + GLenum subscription) override; void BindTexImage2DCHROMIUM(GLenum target, GLint imageId) override; void ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) override; void TraceBeginCHROMIUM(const char* name) override; diff --git a/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h b/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h index e78b07cd9d..78fe6d36b7 100644 --- a/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h +++ b/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h @@ -781,6 +781,28 @@ void GLES2InterfaceStub::BindUniformLocationCHROMIUM(GLuint /* program */, GLint /* location */, const char* /* name */) { } +void GLES2InterfaceStub::GenValuebuffersCHROMIUM(GLsizei /* n */, + GLuint* /* buffers */) { +} +void GLES2InterfaceStub::DeleteValuebuffersCHROMIUM( + GLsizei /* n */, + const GLuint* /* valuebuffers */) { +} +GLboolean GLES2InterfaceStub::IsValuebufferCHROMIUM(GLuint /* valuebuffer */) { + return 0; +} +void GLES2InterfaceStub::BindValuebufferCHROMIUM(GLenum /* target */, + GLuint /* valuebuffer */) { +} +void GLES2InterfaceStub::SubscribeValueCHROMIUM(GLenum /* target */, + GLenum /* subscription */) { +} +void GLES2InterfaceStub::PopulateSubscribedValuesCHROMIUM(GLenum /* target */) { +} +void GLES2InterfaceStub::UniformValuebufferCHROMIUM(GLint /* location */, + GLenum /* target */, + GLenum /* subscription */) { +} void GLES2InterfaceStub::BindTexImage2DCHROMIUM(GLenum /* target */, GLint /* imageId */) { } diff --git a/gpu/command_buffer/client/gles2_trace_implementation_autogen.h b/gpu/command_buffer/client/gles2_trace_implementation_autogen.h index a599eb4058..cb6091084b 100644 --- a/gpu/command_buffer/client/gles2_trace_implementation_autogen.h +++ b/gpu/command_buffer/client/gles2_trace_implementation_autogen.h @@ -441,6 +441,15 @@ GLuint CreateAndConsumeTextureCHROMIUM(GLenum target, void BindUniformLocationCHROMIUM(GLuint program, GLint location, const char* name) override; +void GenValuebuffersCHROMIUM(GLsizei n, GLuint* buffers) override; +void DeleteValuebuffersCHROMIUM(GLsizei n, const GLuint* valuebuffers) override; +GLboolean IsValuebufferCHROMIUM(GLuint valuebuffer) override; +void BindValuebufferCHROMIUM(GLenum target, GLuint valuebuffer) override; +void SubscribeValueCHROMIUM(GLenum target, GLenum subscription) override; +void PopulateSubscribedValuesCHROMIUM(GLenum target) override; +void UniformValuebufferCHROMIUM(GLint location, + GLenum target, + GLenum subscription) override; void BindTexImage2DCHROMIUM(GLenum target, GLint imageId) override; void ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) override; void TraceBeginCHROMIUM(const char* name) override; diff --git a/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h b/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h index 3173a25e5e..dd9d201d6a 100644 --- a/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h +++ b/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h @@ -149,8 +149,8 @@ void GLES2TraceImplementation::CompressedTexImage2D(GLenum target, GLsizei imageSize, const void* data) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::CompressedTexImage2D"); - gl_->CompressedTexImage2D( - target, level, internalformat, width, height, border, imageSize, data); + gl_->CompressedTexImage2D(target, level, internalformat, width, height, + border, imageSize, data); } void GLES2TraceImplementation::CompressedTexSubImage2D(GLenum target, @@ -163,8 +163,8 @@ void GLES2TraceImplementation::CompressedTexSubImage2D(GLenum target, GLsizei imageSize, const void* data) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::CompressedTexSubImage2D"); - gl_->CompressedTexSubImage2D( - target, level, xoffset, yoffset, width, height, format, imageSize, data); + gl_->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, + format, imageSize, data); } void GLES2TraceImplementation::CopyTexImage2D(GLenum target, @@ -176,8 +176,8 @@ void GLES2TraceImplementation::CopyTexImage2D(GLenum target, GLsizei height, GLint border) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::CopyTexImage2D"); - gl_->CopyTexImage2D( - target, level, internalformat, x, y, width, height, border); + gl_->CopyTexImage2D(target, level, internalformat, x, y, width, height, + border); } void GLES2TraceImplementation::CopyTexSubImage2D(GLenum target, @@ -312,8 +312,8 @@ void GLES2TraceImplementation::FramebufferRenderbuffer( GLenum renderbuffertarget, GLuint renderbuffer) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::FramebufferRenderbuffer"); - gl_->FramebufferRenderbuffer( - target, attachment, renderbuffertarget, renderbuffer); + gl_->FramebufferRenderbuffer(target, attachment, renderbuffertarget, + renderbuffer); } void GLES2TraceImplementation::FramebufferTexture2D(GLenum target, @@ -719,15 +719,8 @@ void GLES2TraceImplementation::TexImage2D(GLenum target, GLenum type, const void* pixels) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::TexImage2D"); - gl_->TexImage2D(target, - level, - internalformat, - width, - height, - border, - format, - type, - pixels); + gl_->TexImage2D(target, level, internalformat, width, height, border, format, + type, pixels); } void GLES2TraceImplementation::TexParameterf(GLenum target, @@ -768,8 +761,8 @@ void GLES2TraceImplementation::TexSubImage2D(GLenum target, GLenum type, const void* pixels) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::TexSubImage2D"); - gl_->TexSubImage2D( - target, level, xoffset, yoffset, width, height, format, type, pixels); + gl_->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, + type, pixels); } void GLES2TraceImplementation::Uniform1f(GLint location, GLfloat x) { @@ -998,8 +991,8 @@ void GLES2TraceImplementation::BlitFramebufferCHROMIUM(GLint srcX0, GLbitfield mask, GLenum filter) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::BlitFramebufferCHROMIUM"); - gl_->BlitFramebufferCHROMIUM( - srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + gl_->BlitFramebufferCHROMIUM(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, + dstY1, mask, filter); } void GLES2TraceImplementation::RenderbufferStorageMultisampleCHROMIUM( @@ -1010,8 +1003,8 @@ void GLES2TraceImplementation::RenderbufferStorageMultisampleCHROMIUM( GLsizei height) { TRACE_EVENT_BINARY_EFFICIENT0( "gpu", "GLES2Trace::RenderbufferStorageMultisampleCHROMIUM"); - gl_->RenderbufferStorageMultisampleCHROMIUM( - target, samples, internalformat, width, height); + gl_->RenderbufferStorageMultisampleCHROMIUM(target, samples, internalformat, + width, height); } void GLES2TraceImplementation::RenderbufferStorageMultisampleEXT( @@ -1022,8 +1015,8 @@ void GLES2TraceImplementation::RenderbufferStorageMultisampleEXT( GLsizei height) { TRACE_EVENT_BINARY_EFFICIENT0( "gpu", "GLES2Trace::RenderbufferStorageMultisampleEXT"); - gl_->RenderbufferStorageMultisampleEXT( - target, samples, internalformat, width, height); + gl_->RenderbufferStorageMultisampleEXT(target, samples, internalformat, width, + height); } void GLES2TraceImplementation::FramebufferTexture2DMultisampleEXT( @@ -1035,8 +1028,8 @@ void GLES2TraceImplementation::FramebufferTexture2DMultisampleEXT( GLsizei samples) { TRACE_EVENT_BINARY_EFFICIENT0( "gpu", "GLES2Trace::FramebufferTexture2DMultisampleEXT"); - gl_->FramebufferTexture2DMultisampleEXT( - target, attachment, textarget, texture, level, samples); + gl_->FramebufferTexture2DMultisampleEXT(target, attachment, textarget, + texture, level, samples); } void GLES2TraceImplementation::TexStorage2DEXT(GLenum target, @@ -1180,8 +1173,8 @@ void* GLES2TraceImplementation::MapTexSubImage2DCHROMIUM(GLenum target, GLenum type, GLenum access) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::MapTexSubImage2DCHROMIUM"); - return gl_->MapTexSubImage2DCHROMIUM( - target, level, xoffset, yoffset, width, height, format, type, access); + return gl_->MapTexSubImage2DCHROMIUM(target, level, xoffset, yoffset, width, + height, format, type, access); } void GLES2TraceImplementation::UnmapTexSubImage2DCHROMIUM(const void* mem) { @@ -1257,8 +1250,8 @@ GLuint GLES2TraceImplementation::CreateGpuMemoryBufferImageCHROMIUM( GLenum usage) { TRACE_EVENT_BINARY_EFFICIENT0( "gpu", "GLES2Trace::CreateGpuMemoryBufferImageCHROMIUM"); - return gl_->CreateGpuMemoryBufferImageCHROMIUM( - width, height, internalformat, usage); + return gl_->CreateGpuMemoryBufferImageCHROMIUM(width, height, internalformat, + usage); } void GLES2TraceImplementation::GetTranslatedShaderSourceANGLE(GLuint shader, @@ -1295,8 +1288,8 @@ void GLES2TraceImplementation::CopyTextureCHROMIUM(GLenum target, GLint internalformat, GLenum dest_type) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::CopyTextureCHROMIUM"); - gl_->CopyTextureCHROMIUM( - target, source_id, dest_id, level, internalformat, dest_type); + gl_->CopyTextureCHROMIUM(target, source_id, dest_id, level, internalformat, + dest_type); } void GLES2TraceImplementation::DrawArraysInstancedANGLE(GLenum mode, @@ -1365,6 +1358,51 @@ void GLES2TraceImplementation::BindUniformLocationCHROMIUM(GLuint program, gl_->BindUniformLocationCHROMIUM(program, location, name); } +void GLES2TraceImplementation::GenValuebuffersCHROMIUM(GLsizei n, + GLuint* buffers) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::GenValuebuffersCHROMIUM"); + gl_->GenValuebuffersCHROMIUM(n, buffers); +} + +void GLES2TraceImplementation::DeleteValuebuffersCHROMIUM( + GLsizei n, + const GLuint* valuebuffers) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "GLES2Trace::DeleteValuebuffersCHROMIUM"); + gl_->DeleteValuebuffersCHROMIUM(n, valuebuffers); +} + +GLboolean GLES2TraceImplementation::IsValuebufferCHROMIUM(GLuint valuebuffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::IsValuebufferCHROMIUM"); + return gl_->IsValuebufferCHROMIUM(valuebuffer); +} + +void GLES2TraceImplementation::BindValuebufferCHROMIUM(GLenum target, + GLuint valuebuffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::BindValuebufferCHROMIUM"); + gl_->BindValuebufferCHROMIUM(target, valuebuffer); +} + +void GLES2TraceImplementation::SubscribeValueCHROMIUM(GLenum target, + GLenum subscription) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::SubscribeValueCHROMIUM"); + gl_->SubscribeValueCHROMIUM(target, subscription); +} + +void GLES2TraceImplementation::PopulateSubscribedValuesCHROMIUM(GLenum target) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "GLES2Trace::PopulateSubscribedValuesCHROMIUM"); + gl_->PopulateSubscribedValuesCHROMIUM(target); +} + +void GLES2TraceImplementation::UniformValuebufferCHROMIUM(GLint location, + GLenum target, + GLenum subscription) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "GLES2Trace::UniformValuebufferCHROMIUM"); + gl_->UniformValuebufferCHROMIUM(location, target, subscription); +} + void GLES2TraceImplementation::BindTexImage2DCHROMIUM(GLenum target, GLint imageId) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::BindTexImage2DCHROMIUM"); @@ -1398,8 +1436,8 @@ void GLES2TraceImplementation::AsyncTexSubImage2DCHROMIUM(GLenum target, const void* data) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::AsyncTexSubImage2DCHROMIUM"); - gl_->AsyncTexSubImage2DCHROMIUM( - target, level, xoffset, yoffset, width, height, format, type, data); + gl_->AsyncTexSubImage2DCHROMIUM(target, level, xoffset, yoffset, width, + height, format, type, data); } void GLES2TraceImplementation::AsyncTexImage2DCHROMIUM(GLenum target, @@ -1412,15 +1450,8 @@ void GLES2TraceImplementation::AsyncTexImage2DCHROMIUM(GLenum target, GLenum type, const void* pixels) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::AsyncTexImage2DCHROMIUM"); - gl_->AsyncTexImage2DCHROMIUM(target, - level, - internalformat, - width, - height, - border, - format, - type, - pixels); + gl_->AsyncTexImage2DCHROMIUM(target, level, internalformat, width, height, + border, format, type, pixels); } void GLES2TraceImplementation::WaitAsyncTexImage2DCHROMIUM(GLenum target) { @@ -1484,17 +1515,9 @@ void GLES2TraceImplementation::ScheduleOverlayPlaneCHROMIUM( GLfloat uv_height) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::ScheduleOverlayPlaneCHROMIUM"); - gl_->ScheduleOverlayPlaneCHROMIUM(plane_z_order, - plane_transform, - overlay_texture_id, - bounds_x, - bounds_y, - bounds_width, - bounds_height, - uv_x, - uv_y, - uv_width, - uv_height); + gl_->ScheduleOverlayPlaneCHROMIUM( + plane_z_order, plane_transform, overlay_texture_id, bounds_x, bounds_y, + bounds_width, bounds_height, uv_x, uv_y, uv_width, uv_height); } void GLES2TraceImplementation::MatrixLoadfCHROMIUM(GLenum matrixMode, diff --git a/gpu/command_buffer/cmd_buffer_functions.txt b/gpu/command_buffer/cmd_buffer_functions.txt index 37c33be0a2..92053e02d8 100644 --- a/gpu/command_buffer/cmd_buffer_functions.txt +++ b/gpu/command_buffer/cmd_buffer_functions.txt @@ -202,6 +202,13 @@ GL_APICALL void GL_APIENTRY glProduceTextureDirectCHROMIUM (GLidBindText GL_APICALL void GL_APIENTRY glConsumeTextureCHROMIUM (GLenumTextureBindTarget target, const GLbyte* mailbox); GL_APICALL GLuint GL_APIENTRY glCreateAndConsumeTextureCHROMIUM (GLenumTextureBindTarget target, const GLbyte* mailbox); GL_APICALL void GL_APIENTRY glBindUniformLocationCHROMIUM (GLidProgram program, GLint location, const char* name); +GL_APICALL void GL_APIENTRY glGenValuebuffersCHROMIUM (GLsizeiNotNegative n, GLuint* buffers); +GL_APICALL void GL_APIENTRY glDeleteValuebuffersCHROMIUM (GLsizeiNotNegative n, const GLuint* valuebuffers); +GL_APICALL GLboolean GL_APIENTRY glIsValuebufferCHROMIUM (GLidBindValuebuffer valuebuffer); +GL_APICALL void GL_APIENTRY glBindValuebufferCHROMIUM (GLenumValueBufferTarget target, GLidBindValuebuffer valuebuffer); +GL_APICALL void GL_APIENTRY glSubscribeValueCHROMIUM (GLenumValueBufferTarget target, GLenumSubscriptionTarget subscription); +GL_APICALL void GL_APIENTRY glPopulateSubscribedValuesCHROMIUM (GLenumValueBufferTarget target); +GL_APICALL void GL_APIENTRY glUniformValuebufferCHROMIUM (GLintUniformLocation location, GLenumValueBufferTarget target, GLenumSubscriptionTarget subscription); GL_APICALL void GL_APIENTRY glBindTexImage2DCHROMIUM (GLenumTextureBindTarget target, GLint imageId); GL_APICALL void GL_APIENTRY glReleaseTexImage2DCHROMIUM (GLenumTextureBindTarget target, GLint imageId); GL_APICALL void GL_APIENTRY glTraceBeginCHROMIUM (const char* name); diff --git a/gpu/command_buffer/common/command_buffer.h b/gpu/command_buffer/common/command_buffer.h index 61b91428f6..d846ec11a6 100644 --- a/gpu/command_buffer/common/command_buffer.h +++ b/gpu/command_buffer/common/command_buffer.h @@ -20,24 +20,16 @@ class GPU_EXPORT CommandBuffer { public: struct State { State() - : num_entries(0), - get_offset(0), - put_offset(0), + : get_offset(0), token(-1), error(error::kNoError), context_lost_reason(error::kUnknown), generation(0) { } - // Size of the command buffer in command buffer entries. - int32 num_entries; - // The offset (in entries) from which the reader is reading. int32 get_offset; - // The offset (in entries) at which the writer is writing. - int32 put_offset; - // The current token value. This is used by the writer to defer // changes to shared memory objects until the reader has reached a certain // point in the command buffer. The reader is responsible for updating the diff --git a/gpu/command_buffer/common/command_buffer_mock.h b/gpu/command_buffer/common/command_buffer_mock.h index 1877470a09..b7366f8c47 100644 --- a/gpu/command_buffer/common/command_buffer_mock.h +++ b/gpu/command_buffer/common/command_buffer_mock.h @@ -38,6 +38,7 @@ class MockCommandBuffer : public CommandBufferServiceBase { MOCK_METHOD1(SetContextLostReason, void(error::ContextLostReason context_lost_reason)); MOCK_METHOD0(InsertSyncPoint, uint32()); + MOCK_METHOD0(GetPutOffset, int32()); private: DISALLOW_COPY_AND_ASSIGN(MockCommandBuffer); diff --git a/gpu/command_buffer/common/command_buffer_shared_test.cc b/gpu/command_buffer/common/command_buffer_shared_test.cc index 65a2429f48..0615f7421d 100644 --- a/gpu/command_buffer/common/command_buffer_shared_test.cc +++ b/gpu/command_buffer/common/command_buffer_shared_test.cc @@ -29,7 +29,6 @@ TEST_F(CommandBufferSharedTest, TestBasic) { EXPECT_LT(state.generation, 0x80000000); EXPECT_EQ(state.get_offset, 0); - EXPECT_EQ(state.put_offset, 0); EXPECT_EQ(state.token, -1); EXPECT_EQ(state.error, gpu::error::kNoError); EXPECT_EQ(state.context_lost_reason, gpu::error::kUnknown); diff --git a/gpu/command_buffer/common/gles2_cmd_format.h b/gpu/command_buffer/common/gles2_cmd_format.h index 393303ec5c..c0bc66309b 100644 --- a/gpu/command_buffer/common/gles2_cmd_format.h +++ b/gpu/command_buffer/common/gles2_cmd_format.h @@ -59,6 +59,7 @@ enum IdNamespaces { kTextures, kQueries, kVertexArrays, + kValuebuffers, kNumIdNamespaces }; diff --git a/gpu/command_buffer/common/gles2_cmd_format_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_autogen.h index 487e8b799d..726a30c55b 100644 --- a/gpu/command_buffer/common/gles2_cmd_format_autogen.h +++ b/gpu/command_buffer/common/gles2_cmd_format_autogen.h @@ -962,13 +962,8 @@ struct CompressedTexImage2D { GLsizei _imageSize, uint32_t _data_shm_id, uint32_t _data_shm_offset) { - static_cast(cmd)->Init(_target, - _level, - _internalformat, - _width, - _height, - _imageSize, - _data_shm_id, + static_cast(cmd)->Init(_target, _level, _internalformat, _width, + _height, _imageSize, _data_shm_id, _data_shm_offset); return NextCmdAddress(cmd); } @@ -1046,14 +1041,8 @@ struct CompressedTexSubImage2DBucket { GLsizei _height, GLenum _format, GLuint _bucket_id) { - static_cast(cmd)->Init(_target, - _level, - _xoffset, - _yoffset, - _width, - _height, - _format, - _bucket_id); + static_cast(cmd)->Init(_target, _level, _xoffset, _yoffset, + _width, _height, _format, _bucket_id); return NextCmdAddress(cmd); } @@ -1135,16 +1124,9 @@ struct CompressedTexSubImage2D { GLsizei _imageSize, uint32_t _data_shm_id, uint32_t _data_shm_offset) { - static_cast(cmd)->Init(_target, - _level, - _xoffset, - _yoffset, - _width, - _height, - _format, - _imageSize, - _data_shm_id, - _data_shm_offset); + static_cast(cmd)->Init(_target, _level, _xoffset, _yoffset, + _width, _height, _format, _imageSize, + _data_shm_id, _data_shm_offset); return NextCmdAddress(cmd); } @@ -2436,8 +2418,8 @@ struct GetActiveAttrib { uint32_t _name_bucket_id, uint32_t _result_shm_id, uint32_t _result_shm_offset) { - static_cast(cmd)->Init( - _program, _index, _name_bucket_id, _result_shm_id, _result_shm_offset); + static_cast(cmd)->Init(_program, _index, _name_bucket_id, + _result_shm_id, _result_shm_offset); return NextCmdAddress(cmd); } @@ -2506,8 +2488,8 @@ struct GetActiveUniform { uint32_t _name_bucket_id, uint32_t _result_shm_id, uint32_t _result_shm_offset) { - static_cast(cmd)->Init( - _program, _index, _name_bucket_id, _result_shm_id, _result_shm_offset); + static_cast(cmd)->Init(_program, _index, _name_bucket_id, + _result_shm_id, _result_shm_offset); return NextCmdAddress(cmd); } @@ -2625,8 +2607,8 @@ struct GetAttribLocation { uint32_t _name_bucket_id, uint32_t _location_shm_id, uint32_t _location_shm_offset) { - static_cast(cmd)->Init( - _program, _name_bucket_id, _location_shm_id, _location_shm_offset); + static_cast(cmd)->Init(_program, _name_bucket_id, + _location_shm_id, _location_shm_offset); return NextCmdAddress(cmd); } @@ -2870,8 +2852,8 @@ struct GetFramebufferAttachmentParameteriv { GLenum _pname, uint32_t _params_shm_id, uint32_t _params_shm_offset) { - static_cast(cmd)->Init( - _target, _attachment, _pname, _params_shm_id, _params_shm_offset); + static_cast(cmd)->Init(_target, _attachment, _pname, + _params_shm_id, _params_shm_offset); return NextCmdAddress(cmd); } @@ -3572,8 +3554,8 @@ struct GetUniformLocation { uint32_t _name_bucket_id, uint32_t _location_shm_id, uint32_t _location_shm_offset) { - static_cast(cmd)->Init( - _program, _name_bucket_id, _location_shm_id, _location_shm_offset); + static_cast(cmd)->Init(_program, _name_bucket_id, + _location_shm_id, _location_shm_offset); return NextCmdAddress(cmd); } @@ -4313,17 +4295,9 @@ struct ReadPixels { uint32_t _result_shm_id, uint32_t _result_shm_offset, GLboolean _async) { - static_cast(cmd)->Init(_x, - _y, - _width, - _height, - _format, - _type, - _pixels_shm_id, - _pixels_shm_offset, - _result_shm_id, - _result_shm_offset, - _async); + static_cast(cmd) + ->Init(_x, _y, _width, _height, _format, _type, _pixels_shm_id, + _pixels_shm_offset, _result_shm_id, _result_shm_offset, _async); return NextCmdAddress(cmd); } @@ -4557,13 +4531,9 @@ struct ShaderBinary { uint32_t _binary_shm_id, uint32_t _binary_shm_offset, GLsizei _length) { - static_cast(cmd)->Init(_n, - _shaders_shm_id, - _shaders_shm_offset, - _binaryformat, - _binary_shm_id, - _binary_shm_offset, - _length); + static_cast(cmd)->Init(_n, _shaders_shm_id, _shaders_shm_offset, + _binaryformat, _binary_shm_id, + _binary_shm_offset, _length); return NextCmdAddress(cmd); } @@ -4914,14 +4884,8 @@ struct TexImage2D { GLenum _type, uint32_t _pixels_shm_id, uint32_t _pixels_shm_offset) { - static_cast(cmd)->Init(_target, - _level, - _internalformat, - _width, - _height, - _format, - _type, - _pixels_shm_id, + static_cast(cmd)->Init(_target, _level, _internalformat, _width, + _height, _format, _type, _pixels_shm_id, _pixels_shm_offset); return NextCmdAddress(cmd); } @@ -5178,17 +5142,9 @@ struct TexSubImage2D { uint32_t _pixels_shm_id, uint32_t _pixels_shm_offset, GLboolean _internal) { - static_cast(cmd)->Init(_target, - _level, - _xoffset, - _yoffset, - _width, - _height, - _format, - _type, - _pixels_shm_id, - _pixels_shm_offset, - _internal); + static_cast(cmd) + ->Init(_target, _level, _xoffset, _yoffset, _width, _height, _format, + _type, _pixels_shm_id, _pixels_shm_offset, _internal); return NextCmdAddress(cmd); } @@ -6615,16 +6571,8 @@ struct BlitFramebufferCHROMIUM { GLint _dstY1, GLbitfield _mask, GLenum _filter) { - static_cast(cmd)->Init(_srcX0, - _srcY0, - _srcX1, - _srcY1, - _dstX0, - _dstY0, - _dstX1, - _dstY1, - _mask, - _filter); + static_cast(cmd)->Init(_srcX0, _srcY0, _srcX1, _srcY1, _dstX0, + _dstY0, _dstX1, _dstY1, _mask, _filter); return NextCmdAddress(cmd); } @@ -7399,8 +7347,8 @@ struct GetMaxValueInBufferCHROMIUM { GLuint _offset, uint32_t _result_shm_id, uint32_t _result_shm_offset) { - static_cast(cmd)->Init( - _buffer_id, _count, _type, _offset, _result_shm_id, _result_shm_offset); + static_cast(cmd)->Init(_buffer_id, _count, _type, _offset, + _result_shm_id, _result_shm_offset); return NextCmdAddress(cmd); } @@ -7619,12 +7567,9 @@ struct GetMultipleIntegervCHROMIUM { uint32_t _results_shm_id, uint32_t _results_shm_offset, GLsizeiptr _size) { - static_cast(cmd)->Init(_pnames_shm_id, - _pnames_shm_offset, - _count, - _results_shm_id, - _results_shm_offset, - _size); + static_cast(cmd)->Init(_pnames_shm_id, _pnames_shm_offset, + _count, _results_shm_id, + _results_shm_offset, _size); return NextCmdAddress(cmd); } @@ -7878,8 +7823,8 @@ struct CopyTextureCHROMIUM { GLint _level, GLint _internalformat, GLenum _dest_type) { - static_cast(cmd)->Init( - _target, _source_id, _dest_id, _level, _internalformat, _dest_type); + static_cast(cmd)->Init(_target, _source_id, _dest_id, _level, + _internalformat, _dest_type); return NextCmdAddress(cmd); } @@ -8226,6 +8171,287 @@ COMPILE_ASSERT( offsetof(BindUniformLocationCHROMIUMBucket, name_bucket_id) == 12, OffsetOf_BindUniformLocationCHROMIUMBucket_name_bucket_id_not_12); +struct GenValuebuffersCHROMIUMImmediate { + typedef GenValuebuffersCHROMIUMImmediate ValueType; + static const CommandId kCmdId = kGenValuebuffersCHROMIUMImmediate; + static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN; + static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3); + + static uint32_t ComputeDataSize(GLsizei n) { + return static_cast(sizeof(GLuint) * n); // NOLINT + } + + static uint32_t ComputeSize(GLsizei n) { + return static_cast(sizeof(ValueType) + + ComputeDataSize(n)); // NOLINT + } + + void SetHeader(GLsizei n) { + header.SetCmdByTotalSize(ComputeSize(n)); + } + + void Init(GLsizei _n, GLuint* _buffers) { + SetHeader(_n); + n = _n; + memcpy(ImmediateDataAddress(this), _buffers, ComputeDataSize(_n)); + } + + void* Set(void* cmd, GLsizei _n, GLuint* _buffers) { + static_cast(cmd)->Init(_n, _buffers); + const uint32_t size = ComputeSize(_n); + return NextImmediateCmdAddressTotalSize(cmd, size); + } + + gpu::CommandHeader header; + int32_t n; +}; + +COMPILE_ASSERT(sizeof(GenValuebuffersCHROMIUMImmediate) == 8, + Sizeof_GenValuebuffersCHROMIUMImmediate_is_not_8); +COMPILE_ASSERT(offsetof(GenValuebuffersCHROMIUMImmediate, header) == 0, + OffsetOf_GenValuebuffersCHROMIUMImmediate_header_not_0); +COMPILE_ASSERT(offsetof(GenValuebuffersCHROMIUMImmediate, n) == 4, + OffsetOf_GenValuebuffersCHROMIUMImmediate_n_not_4); + +struct DeleteValuebuffersCHROMIUMImmediate { + typedef DeleteValuebuffersCHROMIUMImmediate ValueType; + static const CommandId kCmdId = kDeleteValuebuffersCHROMIUMImmediate; + static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN; + static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3); + + static uint32_t ComputeDataSize(GLsizei n) { + return static_cast(sizeof(GLuint) * n); // NOLINT + } + + static uint32_t ComputeSize(GLsizei n) { + return static_cast(sizeof(ValueType) + + ComputeDataSize(n)); // NOLINT + } + + void SetHeader(GLsizei n) { + header.SetCmdByTotalSize(ComputeSize(n)); + } + + void Init(GLsizei _n, const GLuint* _valuebuffers) { + SetHeader(_n); + n = _n; + memcpy(ImmediateDataAddress(this), _valuebuffers, ComputeDataSize(_n)); + } + + void* Set(void* cmd, GLsizei _n, const GLuint* _valuebuffers) { + static_cast(cmd)->Init(_n, _valuebuffers); + const uint32_t size = ComputeSize(_n); + return NextImmediateCmdAddressTotalSize(cmd, size); + } + + gpu::CommandHeader header; + int32_t n; +}; + +COMPILE_ASSERT(sizeof(DeleteValuebuffersCHROMIUMImmediate) == 8, + Sizeof_DeleteValuebuffersCHROMIUMImmediate_is_not_8); +COMPILE_ASSERT(offsetof(DeleteValuebuffersCHROMIUMImmediate, header) == 0, + OffsetOf_DeleteValuebuffersCHROMIUMImmediate_header_not_0); +COMPILE_ASSERT(offsetof(DeleteValuebuffersCHROMIUMImmediate, n) == 4, + OffsetOf_DeleteValuebuffersCHROMIUMImmediate_n_not_4); + +struct IsValuebufferCHROMIUM { + typedef IsValuebufferCHROMIUM ValueType; + static const CommandId kCmdId = kIsValuebufferCHROMIUM; + static const cmd::ArgFlags kArgFlags = cmd::kFixed; + static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3); + + typedef uint32_t Result; + + static uint32_t ComputeSize() { + return static_cast(sizeof(ValueType)); // NOLINT + } + + void SetHeader() { header.SetCmd(); } + + void Init(GLuint _valuebuffer, + uint32_t _result_shm_id, + uint32_t _result_shm_offset) { + SetHeader(); + valuebuffer = _valuebuffer; + result_shm_id = _result_shm_id; + result_shm_offset = _result_shm_offset; + } + + void* Set(void* cmd, + GLuint _valuebuffer, + uint32_t _result_shm_id, + uint32_t _result_shm_offset) { + static_cast(cmd) + ->Init(_valuebuffer, _result_shm_id, _result_shm_offset); + return NextCmdAddress(cmd); + } + + gpu::CommandHeader header; + uint32_t valuebuffer; + uint32_t result_shm_id; + uint32_t result_shm_offset; +}; + +COMPILE_ASSERT(sizeof(IsValuebufferCHROMIUM) == 16, + Sizeof_IsValuebufferCHROMIUM_is_not_16); +COMPILE_ASSERT(offsetof(IsValuebufferCHROMIUM, header) == 0, + OffsetOf_IsValuebufferCHROMIUM_header_not_0); +COMPILE_ASSERT(offsetof(IsValuebufferCHROMIUM, valuebuffer) == 4, + OffsetOf_IsValuebufferCHROMIUM_valuebuffer_not_4); +COMPILE_ASSERT(offsetof(IsValuebufferCHROMIUM, result_shm_id) == 8, + OffsetOf_IsValuebufferCHROMIUM_result_shm_id_not_8); +COMPILE_ASSERT(offsetof(IsValuebufferCHROMIUM, result_shm_offset) == 12, + OffsetOf_IsValuebufferCHROMIUM_result_shm_offset_not_12); + +struct BindValuebufferCHROMIUM { + typedef BindValuebufferCHROMIUM ValueType; + static const CommandId kCmdId = kBindValuebufferCHROMIUM; + static const cmd::ArgFlags kArgFlags = cmd::kFixed; + static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3); + + static uint32_t ComputeSize() { + return static_cast(sizeof(ValueType)); // NOLINT + } + + void SetHeader() { header.SetCmd(); } + + void Init(GLenum _target, GLuint _valuebuffer) { + SetHeader(); + target = _target; + valuebuffer = _valuebuffer; + } + + void* Set(void* cmd, GLenum _target, GLuint _valuebuffer) { + static_cast(cmd)->Init(_target, _valuebuffer); + return NextCmdAddress(cmd); + } + + gpu::CommandHeader header; + uint32_t target; + uint32_t valuebuffer; +}; + +COMPILE_ASSERT(sizeof(BindValuebufferCHROMIUM) == 12, + Sizeof_BindValuebufferCHROMIUM_is_not_12); +COMPILE_ASSERT(offsetof(BindValuebufferCHROMIUM, header) == 0, + OffsetOf_BindValuebufferCHROMIUM_header_not_0); +COMPILE_ASSERT(offsetof(BindValuebufferCHROMIUM, target) == 4, + OffsetOf_BindValuebufferCHROMIUM_target_not_4); +COMPILE_ASSERT(offsetof(BindValuebufferCHROMIUM, valuebuffer) == 8, + OffsetOf_BindValuebufferCHROMIUM_valuebuffer_not_8); + +struct SubscribeValueCHROMIUM { + typedef SubscribeValueCHROMIUM ValueType; + static const CommandId kCmdId = kSubscribeValueCHROMIUM; + static const cmd::ArgFlags kArgFlags = cmd::kFixed; + static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3); + + static uint32_t ComputeSize() { + return static_cast(sizeof(ValueType)); // NOLINT + } + + void SetHeader() { header.SetCmd(); } + + void Init(GLenum _target, GLenum _subscription) { + SetHeader(); + target = _target; + subscription = _subscription; + } + + void* Set(void* cmd, GLenum _target, GLenum _subscription) { + static_cast(cmd)->Init(_target, _subscription); + return NextCmdAddress(cmd); + } + + gpu::CommandHeader header; + uint32_t target; + uint32_t subscription; +}; + +COMPILE_ASSERT(sizeof(SubscribeValueCHROMIUM) == 12, + Sizeof_SubscribeValueCHROMIUM_is_not_12); +COMPILE_ASSERT(offsetof(SubscribeValueCHROMIUM, header) == 0, + OffsetOf_SubscribeValueCHROMIUM_header_not_0); +COMPILE_ASSERT(offsetof(SubscribeValueCHROMIUM, target) == 4, + OffsetOf_SubscribeValueCHROMIUM_target_not_4); +COMPILE_ASSERT(offsetof(SubscribeValueCHROMIUM, subscription) == 8, + OffsetOf_SubscribeValueCHROMIUM_subscription_not_8); + +struct PopulateSubscribedValuesCHROMIUM { + typedef PopulateSubscribedValuesCHROMIUM ValueType; + static const CommandId kCmdId = kPopulateSubscribedValuesCHROMIUM; + static const cmd::ArgFlags kArgFlags = cmd::kFixed; + static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3); + + static uint32_t ComputeSize() { + return static_cast(sizeof(ValueType)); // NOLINT + } + + void SetHeader() { header.SetCmd(); } + + void Init(GLenum _target) { + SetHeader(); + target = _target; + } + + void* Set(void* cmd, GLenum _target) { + static_cast(cmd)->Init(_target); + return NextCmdAddress(cmd); + } + + gpu::CommandHeader header; + uint32_t target; +}; + +COMPILE_ASSERT(sizeof(PopulateSubscribedValuesCHROMIUM) == 8, + Sizeof_PopulateSubscribedValuesCHROMIUM_is_not_8); +COMPILE_ASSERT(offsetof(PopulateSubscribedValuesCHROMIUM, header) == 0, + OffsetOf_PopulateSubscribedValuesCHROMIUM_header_not_0); +COMPILE_ASSERT(offsetof(PopulateSubscribedValuesCHROMIUM, target) == 4, + OffsetOf_PopulateSubscribedValuesCHROMIUM_target_not_4); + +struct UniformValuebufferCHROMIUM { + typedef UniformValuebufferCHROMIUM ValueType; + static const CommandId kCmdId = kUniformValuebufferCHROMIUM; + static const cmd::ArgFlags kArgFlags = cmd::kFixed; + static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3); + + static uint32_t ComputeSize() { + return static_cast(sizeof(ValueType)); // NOLINT + } + + void SetHeader() { header.SetCmd(); } + + void Init(GLint _location, GLenum _target, GLenum _subscription) { + SetHeader(); + location = _location; + target = _target; + subscription = _subscription; + } + + void* Set(void* cmd, GLint _location, GLenum _target, GLenum _subscription) { + static_cast(cmd)->Init(_location, _target, _subscription); + return NextCmdAddress(cmd); + } + + gpu::CommandHeader header; + int32_t location; + uint32_t target; + uint32_t subscription; +}; + +COMPILE_ASSERT(sizeof(UniformValuebufferCHROMIUM) == 16, + Sizeof_UniformValuebufferCHROMIUM_is_not_16); +COMPILE_ASSERT(offsetof(UniformValuebufferCHROMIUM, header) == 0, + OffsetOf_UniformValuebufferCHROMIUM_header_not_0); +COMPILE_ASSERT(offsetof(UniformValuebufferCHROMIUM, location) == 4, + OffsetOf_UniformValuebufferCHROMIUM_location_not_4); +COMPILE_ASSERT(offsetof(UniformValuebufferCHROMIUM, target) == 8, + OffsetOf_UniformValuebufferCHROMIUM_target_not_8); +COMPILE_ASSERT(offsetof(UniformValuebufferCHROMIUM, subscription) == 12, + OffsetOf_UniformValuebufferCHROMIUM_subscription_not_12); + struct BindTexImage2DCHROMIUM { typedef BindTexImage2DCHROMIUM ValueType; static const CommandId kCmdId = kBindTexImage2DCHROMIUM; @@ -8414,19 +8640,10 @@ struct AsyncTexSubImage2DCHROMIUM { uint32_t _async_upload_token, uint32_t _sync_data_shm_id, uint32_t _sync_data_shm_offset) { - static_cast(cmd)->Init(_target, - _level, - _xoffset, - _yoffset, - _width, - _height, - _format, - _type, - _data_shm_id, - _data_shm_offset, - _async_upload_token, - _sync_data_shm_id, - _sync_data_shm_offset); + static_cast(cmd) + ->Init(_target, _level, _xoffset, _yoffset, _width, _height, _format, + _type, _data_shm_id, _data_shm_offset, _async_upload_token, + _sync_data_shm_id, _sync_data_shm_offset); return NextCmdAddress(cmd); } @@ -8529,18 +8746,10 @@ struct AsyncTexImage2DCHROMIUM { uint32_t _async_upload_token, uint32_t _sync_data_shm_id, uint32_t _sync_data_shm_offset) { - static_cast(cmd)->Init(_target, - _level, - _internalformat, - _width, - _height, - _format, - _type, - _pixels_shm_id, - _pixels_shm_offset, - _async_upload_token, - _sync_data_shm_id, - _sync_data_shm_offset); + static_cast(cmd) + ->Init(_target, _level, _internalformat, _width, _height, _format, + _type, _pixels_shm_id, _pixels_shm_offset, _async_upload_token, + _sync_data_shm_id, _sync_data_shm_offset); return NextCmdAddress(cmd); } @@ -8886,17 +9095,10 @@ struct ScheduleOverlayPlaneCHROMIUM { GLfloat _uv_y, GLfloat _uv_width, GLfloat _uv_height) { - static_cast(cmd)->Init(_plane_z_order, - _plane_transform, - _overlay_texture_id, - _bounds_x, - _bounds_y, - _bounds_width, - _bounds_height, - _uv_x, - _uv_y, - _uv_width, - _uv_height); + static_cast(cmd)->Init(_plane_z_order, _plane_transform, + _overlay_texture_id, _bounds_x, + _bounds_y, _bounds_width, _bounds_height, + _uv_x, _uv_y, _uv_width, _uv_height); return NextCmdAddress(cmd); } diff --git a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h index b26afb1c97..a21c8b8bb2 100644 --- a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h +++ b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h @@ -39,10 +39,8 @@ TEST_F(GLES2FormatTest, AttachShader) { TEST_F(GLES2FormatTest, BindAttribLocationBucket) { cmds::BindAttribLocationBucket& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13)); EXPECT_EQ(static_cast(cmds::BindAttribLocationBucket::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -102,11 +100,9 @@ TEST_F(GLES2FormatTest, BindTexture) { TEST_F(GLES2FormatTest, BlendColor) { cmds::BlendColor& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::BlendColor::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -153,11 +149,9 @@ TEST_F(GLES2FormatTest, BlendFunc) { TEST_F(GLES2FormatTest, BlendFuncSeparate) { cmds::BlendFuncSeparate& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::BlendFuncSeparate::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -170,12 +164,10 @@ TEST_F(GLES2FormatTest, BlendFuncSeparate) { TEST_F(GLES2FormatTest, BufferData) { cmds::BufferData& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15)); EXPECT_EQ(static_cast(cmds::BufferData::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -189,12 +181,10 @@ TEST_F(GLES2FormatTest, BufferData) { TEST_F(GLES2FormatTest, BufferSubData) { cmds::BufferSubData& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15)); EXPECT_EQ(static_cast(cmds::BufferSubData::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -209,10 +199,9 @@ TEST_F(GLES2FormatTest, BufferSubData) { TEST_F(GLES2FormatTest, CheckFramebufferStatus) { cmds::CheckFramebufferStatus& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13)); EXPECT_EQ(static_cast(cmds::CheckFramebufferStatus::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -233,11 +222,9 @@ TEST_F(GLES2FormatTest, Clear) { TEST_F(GLES2FormatTest, ClearColor) { cmds::ClearColor& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::ClearColor::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -270,11 +257,9 @@ TEST_F(GLES2FormatTest, ClearStencil) { TEST_F(GLES2FormatTest, ColorMask) { cmds::ColorMask& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::ColorMask::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); EXPECT_EQ(static_cast(11), cmd.red); @@ -297,13 +282,10 @@ TEST_F(GLES2FormatTest, CompileShader) { TEST_F(GLES2FormatTest, CompressedTexImage2DBucket) { cmds::CompressedTexImage2DBucket& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15), static_cast(16)); EXPECT_EQ(static_cast(cmds::CompressedTexImage2DBucket::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -318,15 +300,11 @@ TEST_F(GLES2FormatTest, CompressedTexImage2DBucket) { TEST_F(GLES2FormatTest, CompressedTexImage2D) { cmds::CompressedTexImage2D& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16), - static_cast(17), - static_cast(18)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15), static_cast(16), + static_cast(17), static_cast(18)); EXPECT_EQ(static_cast(cmds::CompressedTexImage2D::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -344,15 +322,11 @@ TEST_F(GLES2FormatTest, CompressedTexImage2D) { TEST_F(GLES2FormatTest, CompressedTexSubImage2DBucket) { cmds::CompressedTexSubImage2DBucket& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16), - static_cast(17), - static_cast(18)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15), static_cast(16), + static_cast(17), static_cast(18)); EXPECT_EQ(static_cast(cmds::CompressedTexSubImage2DBucket::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -370,17 +344,12 @@ TEST_F(GLES2FormatTest, CompressedTexSubImage2DBucket) { TEST_F(GLES2FormatTest, CompressedTexSubImage2D) { cmds::CompressedTexSubImage2D& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16), - static_cast(17), - static_cast(18), - static_cast(19), - static_cast(20)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15), static_cast(16), + static_cast(17), static_cast(18), + static_cast(19), static_cast(20)); EXPECT_EQ(static_cast(cmds::CompressedTexSubImage2D::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -399,14 +368,10 @@ TEST_F(GLES2FormatTest, CompressedTexSubImage2D) { TEST_F(GLES2FormatTest, CopyTexImage2D) { cmds::CopyTexImage2D& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16), - static_cast(17)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13), + static_cast(14), static_cast(15), + static_cast(16), static_cast(17)); EXPECT_EQ(static_cast(cmds::CopyTexImage2D::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -422,15 +387,11 @@ TEST_F(GLES2FormatTest, CopyTexImage2D) { TEST_F(GLES2FormatTest, CopyTexSubImage2D) { cmds::CopyTexSubImage2D& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16), - static_cast(17), - static_cast(18)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15), static_cast(16), + static_cast(17), static_cast(18)); EXPECT_EQ(static_cast(cmds::CopyTexSubImage2D::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -632,10 +593,8 @@ TEST_F(GLES2FormatTest, DisableVertexAttribArray) { TEST_F(GLES2FormatTest, DrawArrays) { cmds::DrawArrays& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13)); EXPECT_EQ(static_cast(cmds::DrawArrays::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -647,11 +606,9 @@ TEST_F(GLES2FormatTest, DrawArrays) { TEST_F(GLES2FormatTest, DrawElements) { cmds::DrawElements& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::DrawElements::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -701,11 +658,9 @@ TEST_F(GLES2FormatTest, Flush) { TEST_F(GLES2FormatTest, FramebufferRenderbuffer) { cmds::FramebufferRenderbuffer& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::FramebufferRenderbuffer::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -718,11 +673,9 @@ TEST_F(GLES2FormatTest, FramebufferRenderbuffer) { TEST_F(GLES2FormatTest, FramebufferTexture2D) { cmds::FramebufferTexture2D& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::FramebufferTexture2D::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -824,12 +777,10 @@ TEST_F(GLES2FormatTest, GenTexturesImmediate) { TEST_F(GLES2FormatTest, GetActiveAttrib) { cmds::GetActiveAttrib& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15)); EXPECT_EQ(static_cast(cmds::GetActiveAttrib::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -843,12 +794,10 @@ TEST_F(GLES2FormatTest, GetActiveAttrib) { TEST_F(GLES2FormatTest, GetActiveUniform) { cmds::GetActiveUniform& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15)); EXPECT_EQ(static_cast(cmds::GetActiveUniform::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -862,11 +811,9 @@ TEST_F(GLES2FormatTest, GetActiveUniform) { TEST_F(GLES2FormatTest, GetAttachedShaders) { cmds::GetAttachedShaders& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetAttachedShaders::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -879,11 +826,9 @@ TEST_F(GLES2FormatTest, GetAttachedShaders) { TEST_F(GLES2FormatTest, GetAttribLocation) { cmds::GetAttribLocation& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetAttribLocation::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -896,10 +841,9 @@ TEST_F(GLES2FormatTest, GetAttribLocation) { TEST_F(GLES2FormatTest, GetBooleanv) { cmds::GetBooleanv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13)); EXPECT_EQ(static_cast(cmds::GetBooleanv::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -911,11 +855,9 @@ TEST_F(GLES2FormatTest, GetBooleanv) { TEST_F(GLES2FormatTest, GetBufferParameteriv) { cmds::GetBufferParameteriv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetBufferParameteriv::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -939,10 +881,9 @@ TEST_F(GLES2FormatTest, GetError) { TEST_F(GLES2FormatTest, GetFloatv) { cmds::GetFloatv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13)); EXPECT_EQ(static_cast(cmds::GetFloatv::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); EXPECT_EQ(static_cast(11), cmd.pname); @@ -954,12 +895,10 @@ TEST_F(GLES2FormatTest, GetFloatv) { TEST_F(GLES2FormatTest, GetFramebufferAttachmentParameteriv) { cmds::GetFramebufferAttachmentParameteriv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15)); EXPECT_EQ( static_cast(cmds::GetFramebufferAttachmentParameteriv::kCmdId), cmd.header.command); @@ -974,10 +913,9 @@ TEST_F(GLES2FormatTest, GetFramebufferAttachmentParameteriv) { TEST_F(GLES2FormatTest, GetIntegerv) { cmds::GetIntegerv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13)); EXPECT_EQ(static_cast(cmds::GetIntegerv::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -989,11 +927,9 @@ TEST_F(GLES2FormatTest, GetIntegerv) { TEST_F(GLES2FormatTest, GetProgramiv) { cmds::GetProgramiv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetProgramiv::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1019,11 +955,9 @@ TEST_F(GLES2FormatTest, GetProgramInfoLog) { TEST_F(GLES2FormatTest, GetRenderbufferParameteriv) { cmds::GetRenderbufferParameteriv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetRenderbufferParameteriv::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1036,11 +970,9 @@ TEST_F(GLES2FormatTest, GetRenderbufferParameteriv) { TEST_F(GLES2FormatTest, GetShaderiv) { cmds::GetShaderiv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetShaderiv::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1066,11 +998,9 @@ TEST_F(GLES2FormatTest, GetShaderInfoLog) { TEST_F(GLES2FormatTest, GetShaderPrecisionFormat) { cmds::GetShaderPrecisionFormat& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetShaderPrecisionFormat::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1106,11 +1036,9 @@ TEST_F(GLES2FormatTest, GetString) { TEST_F(GLES2FormatTest, GetTexParameterfv) { cmds::GetTexParameterfv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetTexParameterfv::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1123,11 +1051,9 @@ TEST_F(GLES2FormatTest, GetTexParameterfv) { TEST_F(GLES2FormatTest, GetTexParameteriv) { cmds::GetTexParameteriv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetTexParameteriv::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1140,11 +1066,9 @@ TEST_F(GLES2FormatTest, GetTexParameteriv) { TEST_F(GLES2FormatTest, GetUniformfv) { cmds::GetUniformfv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetUniformfv::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1157,11 +1081,9 @@ TEST_F(GLES2FormatTest, GetUniformfv) { TEST_F(GLES2FormatTest, GetUniformiv) { cmds::GetUniformiv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetUniformiv::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1174,11 +1096,9 @@ TEST_F(GLES2FormatTest, GetUniformiv) { TEST_F(GLES2FormatTest, GetUniformLocation) { cmds::GetUniformLocation& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetUniformLocation::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1191,11 +1111,9 @@ TEST_F(GLES2FormatTest, GetUniformLocation) { TEST_F(GLES2FormatTest, GetVertexAttribfv) { cmds::GetVertexAttribfv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetVertexAttribfv::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1208,11 +1126,9 @@ TEST_F(GLES2FormatTest, GetVertexAttribfv) { TEST_F(GLES2FormatTest, GetVertexAttribiv) { cmds::GetVertexAttribiv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetVertexAttribiv::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1226,11 +1142,9 @@ TEST_F(GLES2FormatTest, GetVertexAttribiv) { TEST_F(GLES2FormatTest, GetVertexAttribPointerv) { cmds::GetVertexAttribPointerv& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::GetVertexAttribPointerv::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1254,10 +1168,9 @@ TEST_F(GLES2FormatTest, Hint) { TEST_F(GLES2FormatTest, IsBuffer) { cmds::IsBuffer& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13)); EXPECT_EQ(static_cast(cmds::IsBuffer::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); EXPECT_EQ(static_cast(11), cmd.buffer); @@ -1268,10 +1181,9 @@ TEST_F(GLES2FormatTest, IsBuffer) { TEST_F(GLES2FormatTest, IsEnabled) { cmds::IsEnabled& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13)); EXPECT_EQ(static_cast(cmds::IsEnabled::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); EXPECT_EQ(static_cast(11), cmd.cap); @@ -1282,10 +1194,9 @@ TEST_F(GLES2FormatTest, IsEnabled) { TEST_F(GLES2FormatTest, IsFramebuffer) { cmds::IsFramebuffer& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13)); EXPECT_EQ(static_cast(cmds::IsFramebuffer::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1297,10 +1208,9 @@ TEST_F(GLES2FormatTest, IsFramebuffer) { TEST_F(GLES2FormatTest, IsProgram) { cmds::IsProgram& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13)); EXPECT_EQ(static_cast(cmds::IsProgram::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); EXPECT_EQ(static_cast(11), cmd.program); @@ -1311,10 +1221,9 @@ TEST_F(GLES2FormatTest, IsProgram) { TEST_F(GLES2FormatTest, IsRenderbuffer) { cmds::IsRenderbuffer& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13)); EXPECT_EQ(static_cast(cmds::IsRenderbuffer::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1326,10 +1235,9 @@ TEST_F(GLES2FormatTest, IsRenderbuffer) { TEST_F(GLES2FormatTest, IsShader) { cmds::IsShader& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13)); EXPECT_EQ(static_cast(cmds::IsShader::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); EXPECT_EQ(static_cast(11), cmd.shader); @@ -1340,10 +1248,9 @@ TEST_F(GLES2FormatTest, IsShader) { TEST_F(GLES2FormatTest, IsTexture) { cmds::IsTexture& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13)); EXPECT_EQ(static_cast(cmds::IsTexture::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); EXPECT_EQ(static_cast(11), cmd.texture); @@ -1397,17 +1304,11 @@ TEST_F(GLES2FormatTest, PolygonOffset) { TEST_F(GLES2FormatTest, ReadPixels) { cmds::ReadPixels& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16), - static_cast(17), - static_cast(18), - static_cast(19), - static_cast(20), + void* next_cmd = cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15), static_cast(16), + static_cast(17), static_cast(18), + static_cast(19), static_cast(20), static_cast(21)); EXPECT_EQ(static_cast(cmds::ReadPixels::kCmdId), cmd.header.command); @@ -1438,11 +1339,9 @@ TEST_F(GLES2FormatTest, ReleaseShaderCompiler) { TEST_F(GLES2FormatTest, RenderbufferStorage) { cmds::RenderbufferStorage& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::RenderbufferStorage::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1467,11 +1366,8 @@ TEST_F(GLES2FormatTest, SampleCoverage) { TEST_F(GLES2FormatTest, Scissor) { cmds::Scissor& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::Scissor::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); EXPECT_EQ(static_cast(11), cmd.x); @@ -1483,14 +1379,10 @@ TEST_F(GLES2FormatTest, Scissor) { TEST_F(GLES2FormatTest, ShaderBinary) { cmds::ShaderBinary& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16), - static_cast(17)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13), + static_cast(14), static_cast(15), + static_cast(16), static_cast(17)); EXPECT_EQ(static_cast(cmds::ShaderBinary::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1518,10 +1410,8 @@ TEST_F(GLES2FormatTest, ShaderSourceBucket) { TEST_F(GLES2FormatTest, StencilFunc) { cmds::StencilFunc& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13)); EXPECT_EQ(static_cast(cmds::StencilFunc::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1533,11 +1423,9 @@ TEST_F(GLES2FormatTest, StencilFunc) { TEST_F(GLES2FormatTest, StencilFuncSeparate) { cmds::StencilFuncSeparate& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::StencilFuncSeparate::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1572,10 +1460,8 @@ TEST_F(GLES2FormatTest, StencilMaskSeparate) { TEST_F(GLES2FormatTest, StencilOp) { cmds::StencilOp& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13)); EXPECT_EQ(static_cast(cmds::StencilOp::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); EXPECT_EQ(static_cast(11), cmd.fail); @@ -1586,11 +1472,9 @@ TEST_F(GLES2FormatTest, StencilOp) { TEST_F(GLES2FormatTest, StencilOpSeparate) { cmds::StencilOpSeparate& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::StencilOpSeparate::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1603,16 +1487,12 @@ TEST_F(GLES2FormatTest, StencilOpSeparate) { TEST_F(GLES2FormatTest, TexImage2D) { cmds::TexImage2D& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16), - static_cast(17), - static_cast(18), - static_cast(19)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15), static_cast(16), + static_cast(17), static_cast(18), + static_cast(19)); EXPECT_EQ(static_cast(cmds::TexImage2D::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1630,10 +1510,8 @@ TEST_F(GLES2FormatTest, TexImage2D) { TEST_F(GLES2FormatTest, TexParameterf) { cmds::TexParameterf& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13)); EXPECT_EQ(static_cast(cmds::TexParameterf::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1665,10 +1543,8 @@ TEST_F(GLES2FormatTest, TexParameterfvImmediate) { TEST_F(GLES2FormatTest, TexParameteri) { cmds::TexParameteri& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13)); EXPECT_EQ(static_cast(cmds::TexParameteri::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1700,18 +1576,12 @@ TEST_F(GLES2FormatTest, TexParameterivImmediate) { TEST_F(GLES2FormatTest, TexSubImage2D) { cmds::TexSubImage2D& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16), - static_cast(17), - static_cast(18), - static_cast(19), - static_cast(20), - static_cast(21)); + void* next_cmd = cmd.Set( + &cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), static_cast(15), + static_cast(16), static_cast(17), + static_cast(18), static_cast(19), + static_cast(20), static_cast(21)); EXPECT_EQ(static_cast(cmds::TexSubImage2D::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1797,10 +1667,8 @@ TEST_F(GLES2FormatTest, Uniform1ivImmediate) { TEST_F(GLES2FormatTest, Uniform2f) { cmds::Uniform2f& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13)); EXPECT_EQ(static_cast(cmds::Uniform2f::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); EXPECT_EQ(static_cast(11), cmd.location); @@ -1835,9 +1703,7 @@ TEST_F(GLES2FormatTest, Uniform2fvImmediate) { TEST_F(GLES2FormatTest, Uniform2i) { cmds::Uniform2i& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), + void* next_cmd = cmd.Set(&cmd, static_cast(11), static_cast(12), static_cast(13)); EXPECT_EQ(static_cast(cmds::Uniform2i::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -1873,11 +1739,9 @@ TEST_F(GLES2FormatTest, Uniform2ivImmediate) { TEST_F(GLES2FormatTest, Uniform3f) { cmds::Uniform3f& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::Uniform3f::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); EXPECT_EQ(static_cast(11), cmd.location); @@ -1915,11 +1779,8 @@ TEST_F(GLES2FormatTest, Uniform3fvImmediate) { TEST_F(GLES2FormatTest, Uniform3i) { cmds::Uniform3i& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::Uniform3i::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); EXPECT_EQ(static_cast(11), cmd.location); @@ -1957,12 +1818,9 @@ TEST_F(GLES2FormatTest, Uniform3ivImmediate) { TEST_F(GLES2FormatTest, Uniform4f) { cmds::Uniform4f& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13), + static_cast(14), static_cast(15)); EXPECT_EQ(static_cast(cmds::Uniform4f::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); EXPECT_EQ(static_cast(11), cmd.location); @@ -2003,11 +1861,8 @@ TEST_F(GLES2FormatTest, Uniform4fvImmediate) { TEST_F(GLES2FormatTest, Uniform4i) { cmds::Uniform4i& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), + void* next_cmd = cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), static_cast(15)); EXPECT_EQ(static_cast(cmds::Uniform4i::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2220,10 +2075,8 @@ TEST_F(GLES2FormatTest, VertexAttrib1fvImmediate) { TEST_F(GLES2FormatTest, VertexAttrib2f) { cmds::VertexAttrib2f& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13)); EXPECT_EQ(static_cast(cmds::VertexAttrib2f::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2254,11 +2107,9 @@ TEST_F(GLES2FormatTest, VertexAttrib2fvImmediate) { TEST_F(GLES2FormatTest, VertexAttrib3f) { cmds::VertexAttrib3f& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::VertexAttrib3f::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2291,12 +2142,9 @@ TEST_F(GLES2FormatTest, VertexAttrib3fvImmediate) { TEST_F(GLES2FormatTest, VertexAttrib4f) { cmds::VertexAttrib4f& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13), + static_cast(14), static_cast(15)); EXPECT_EQ(static_cast(cmds::VertexAttrib4f::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2331,13 +2179,10 @@ TEST_F(GLES2FormatTest, VertexAttrib4fvImmediate) { TEST_F(GLES2FormatTest, VertexAttribPointer) { cmds::VertexAttribPointer& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15), static_cast(16)); EXPECT_EQ(static_cast(cmds::VertexAttribPointer::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2352,11 +2197,8 @@ TEST_F(GLES2FormatTest, VertexAttribPointer) { TEST_F(GLES2FormatTest, Viewport) { cmds::Viewport& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::Viewport::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); EXPECT_EQ(static_cast(11), cmd.x); @@ -2369,17 +2211,11 @@ TEST_F(GLES2FormatTest, Viewport) { TEST_F(GLES2FormatTest, BlitFramebufferCHROMIUM) { cmds::BlitFramebufferCHROMIUM& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16), - static_cast(17), - static_cast(18), - static_cast(19), - static_cast(20)); + void* next_cmd = cmd.Set( + &cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), static_cast(15), + static_cast(16), static_cast(17), static_cast(18), + static_cast(19), static_cast(20)); EXPECT_EQ(static_cast(cmds::BlitFramebufferCHROMIUM::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2399,12 +2235,9 @@ TEST_F(GLES2FormatTest, BlitFramebufferCHROMIUM) { TEST_F(GLES2FormatTest, RenderbufferStorageMultisampleCHROMIUM) { cmds::RenderbufferStorageMultisampleCHROMIUM& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13), + static_cast(14), static_cast(15)); EXPECT_EQ(static_cast( cmds::RenderbufferStorageMultisampleCHROMIUM::kCmdId), cmd.header.command); @@ -2420,12 +2253,9 @@ TEST_F(GLES2FormatTest, RenderbufferStorageMultisampleCHROMIUM) { TEST_F(GLES2FormatTest, RenderbufferStorageMultisampleEXT) { cmds::RenderbufferStorageMultisampleEXT& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13), + static_cast(14), static_cast(15)); EXPECT_EQ( static_cast(cmds::RenderbufferStorageMultisampleEXT::kCmdId), cmd.header.command); @@ -2441,12 +2271,9 @@ TEST_F(GLES2FormatTest, RenderbufferStorageMultisampleEXT) { TEST_F(GLES2FormatTest, FramebufferTexture2DMultisampleEXT) { cmds::FramebufferTexture2DMultisampleEXT& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13), + static_cast(14), static_cast(15)); EXPECT_EQ( static_cast(cmds::FramebufferTexture2DMultisampleEXT::kCmdId), cmd.header.command); @@ -2461,12 +2288,9 @@ TEST_F(GLES2FormatTest, FramebufferTexture2DMultisampleEXT) { TEST_F(GLES2FormatTest, TexStorage2DEXT) { cmds::TexStorage2DEXT& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13), + static_cast(14), static_cast(15)); EXPECT_EQ(static_cast(cmds::TexStorage2DEXT::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2516,11 +2340,9 @@ TEST_F(GLES2FormatTest, DeleteQueriesEXTImmediate) { TEST_F(GLES2FormatTest, BeginQueryEXT) { cmds::BeginQueryEXT& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::BeginQueryEXT::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2610,10 +2432,9 @@ TEST_F(GLES2FormatTest, DeleteVertexArraysOESImmediate) { TEST_F(GLES2FormatTest, IsVertexArrayOES) { cmds::IsVertexArrayOES& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13)); EXPECT_EQ(static_cast(cmds::IsVertexArrayOES::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2645,13 +2466,10 @@ TEST_F(GLES2FormatTest, SwapBuffers) { TEST_F(GLES2FormatTest, GetMaxValueInBufferCHROMIUM) { cmds::GetMaxValueInBufferCHROMIUM& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15), static_cast(16)); EXPECT_EQ(static_cast(cmds::GetMaxValueInBufferCHROMIUM::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2667,10 +2485,9 @@ TEST_F(GLES2FormatTest, GetMaxValueInBufferCHROMIUM) { TEST_F(GLES2FormatTest, EnableFeatureCHROMIUM) { cmds::EnableFeatureCHROMIUM& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13)); EXPECT_EQ(static_cast(cmds::EnableFeatureCHROMIUM::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2682,10 +2499,8 @@ TEST_F(GLES2FormatTest, EnableFeatureCHROMIUM) { TEST_F(GLES2FormatTest, ResizeCHROMIUM) { cmds::ResizeCHROMIUM& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13)); EXPECT_EQ(static_cast(cmds::ResizeCHROMIUM::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2721,13 +2536,10 @@ TEST_F(GLES2FormatTest, RequestExtensionCHROMIUM) { TEST_F(GLES2FormatTest, GetMultipleIntegervCHROMIUM) { cmds::GetMultipleIntegervCHROMIUM& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15), static_cast(16)); EXPECT_EQ(static_cast(cmds::GetMultipleIntegervCHROMIUM::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2769,11 +2581,8 @@ TEST_F(GLES2FormatTest, GetTranslatedShaderSourceANGLE) { TEST_F(GLES2FormatTest, PostSubBufferCHROMIUM) { cmds::PostSubBufferCHROMIUM& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::PostSubBufferCHROMIUM::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2787,12 +2596,9 @@ TEST_F(GLES2FormatTest, PostSubBufferCHROMIUM) { TEST_F(GLES2FormatTest, TexImageIOSurface2DCHROMIUM) { cmds::TexImageIOSurface2DCHROMIUM& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13), + static_cast(14), static_cast(15)); EXPECT_EQ(static_cast(cmds::TexImageIOSurface2DCHROMIUM::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2806,13 +2612,10 @@ TEST_F(GLES2FormatTest, TexImageIOSurface2DCHROMIUM) { TEST_F(GLES2FormatTest, CopyTextureCHROMIUM) { cmds::CopyTextureCHROMIUM& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15), static_cast(16)); EXPECT_EQ(static_cast(cmds::CopyTextureCHROMIUM::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2828,11 +2631,9 @@ TEST_F(GLES2FormatTest, CopyTextureCHROMIUM) { TEST_F(GLES2FormatTest, DrawArraysInstancedANGLE) { cmds::DrawArraysInstancedANGLE& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14)); EXPECT_EQ(static_cast(cmds::DrawArraysInstancedANGLE::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -2846,12 +2647,9 @@ TEST_F(GLES2FormatTest, DrawArraysInstancedANGLE) { TEST_F(GLES2FormatTest, DrawElementsInstancedANGLE) { cmds::DrawElementsInstancedANGLE& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13), + static_cast(14), static_cast(15)); EXPECT_EQ(static_cast(cmds::DrawElementsInstancedANGLE::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -3129,10 +2927,8 @@ TEST_F(GLES2FormatTest, ConsumeTextureCHROMIUMImmediate) { TEST_F(GLES2FormatTest, BindUniformLocationCHROMIUMBucket) { cmds::BindUniformLocationCHROMIUMBucket& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13)); EXPECT_EQ( static_cast(cmds::BindUniformLocationCHROMIUMBucket::kCmdId), cmd.header.command); @@ -3143,6 +2939,111 @@ TEST_F(GLES2FormatTest, BindUniformLocationCHROMIUMBucket) { CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd)); } +TEST_F(GLES2FormatTest, GenValuebuffersCHROMIUMImmediate) { + static GLuint ids[] = { + 12, 23, 34, + }; + cmds::GenValuebuffersCHROMIUMImmediate& cmd = + *GetBufferAs(); + void* next_cmd = cmd.Set(&cmd, static_cast(arraysize(ids)), ids); + EXPECT_EQ( + static_cast(cmds::GenValuebuffersCHROMIUMImmediate::kCmdId), + cmd.header.command); + EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u), + cmd.header.size * 4u); + EXPECT_EQ(static_cast(arraysize(ids)), cmd.n); + CheckBytesWrittenMatchesExpectedSize( + next_cmd, + sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u)); + // TODO(gman): Check that ids were inserted; +} + +TEST_F(GLES2FormatTest, DeleteValuebuffersCHROMIUMImmediate) { + static GLuint ids[] = { + 12, 23, 34, + }; + cmds::DeleteValuebuffersCHROMIUMImmediate& cmd = + *GetBufferAs(); + void* next_cmd = cmd.Set(&cmd, static_cast(arraysize(ids)), ids); + EXPECT_EQ( + static_cast(cmds::DeleteValuebuffersCHROMIUMImmediate::kCmdId), + cmd.header.command); + EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(cmd.n * 4u), + cmd.header.size * 4u); + EXPECT_EQ(static_cast(arraysize(ids)), cmd.n); + CheckBytesWrittenMatchesExpectedSize( + next_cmd, + sizeof(cmd) + RoundSizeToMultipleOfEntries(arraysize(ids) * 4u)); + // TODO(gman): Check that ids were inserted; +} + +TEST_F(GLES2FormatTest, IsValuebufferCHROMIUM) { + cmds::IsValuebufferCHROMIUM& cmd = + *GetBufferAs(); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13)); + EXPECT_EQ(static_cast(cmds::IsValuebufferCHROMIUM::kCmdId), + cmd.header.command); + EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); + EXPECT_EQ(static_cast(11), cmd.valuebuffer); + EXPECT_EQ(static_cast(12), cmd.result_shm_id); + EXPECT_EQ(static_cast(13), cmd.result_shm_offset); + CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd)); +} + +TEST_F(GLES2FormatTest, BindValuebufferCHROMIUM) { + cmds::BindValuebufferCHROMIUM& cmd = + *GetBufferAs(); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12)); + EXPECT_EQ(static_cast(cmds::BindValuebufferCHROMIUM::kCmdId), + cmd.header.command); + EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); + EXPECT_EQ(static_cast(11), cmd.target); + EXPECT_EQ(static_cast(12), cmd.valuebuffer); + CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd)); +} + +TEST_F(GLES2FormatTest, SubscribeValueCHROMIUM) { + cmds::SubscribeValueCHROMIUM& cmd = + *GetBufferAs(); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12)); + EXPECT_EQ(static_cast(cmds::SubscribeValueCHROMIUM::kCmdId), + cmd.header.command); + EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); + EXPECT_EQ(static_cast(11), cmd.target); + EXPECT_EQ(static_cast(12), cmd.subscription); + CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd)); +} + +TEST_F(GLES2FormatTest, PopulateSubscribedValuesCHROMIUM) { + cmds::PopulateSubscribedValuesCHROMIUM& cmd = + *GetBufferAs(); + void* next_cmd = cmd.Set(&cmd, static_cast(11)); + EXPECT_EQ( + static_cast(cmds::PopulateSubscribedValuesCHROMIUM::kCmdId), + cmd.header.command); + EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); + EXPECT_EQ(static_cast(11), cmd.target); + CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd)); +} + +TEST_F(GLES2FormatTest, UniformValuebufferCHROMIUM) { + cmds::UniformValuebufferCHROMIUM& cmd = + *GetBufferAs(); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13)); + EXPECT_EQ(static_cast(cmds::UniformValuebufferCHROMIUM::kCmdId), + cmd.header.command); + EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); + EXPECT_EQ(static_cast(11), cmd.location); + EXPECT_EQ(static_cast(12), cmd.target); + EXPECT_EQ(static_cast(13), cmd.subscription); + CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd)); +} + TEST_F(GLES2FormatTest, BindTexImage2DCHROMIUM) { cmds::BindTexImage2DCHROMIUM& cmd = *GetBufferAs(); @@ -3191,20 +3092,13 @@ TEST_F(GLES2FormatTest, TraceEndCHROMIUM) { TEST_F(GLES2FormatTest, AsyncTexSubImage2DCHROMIUM) { cmds::AsyncTexSubImage2DCHROMIUM& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16), - static_cast(17), - static_cast(18), - static_cast(19), - static_cast(20), - static_cast(21), - static_cast(22), - static_cast(23)); + void* next_cmd = cmd.Set( + &cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), static_cast(15), + static_cast(16), static_cast(17), + static_cast(18), static_cast(19), + static_cast(20), static_cast(21), + static_cast(22), static_cast(23)); EXPECT_EQ(static_cast(cmds::AsyncTexSubImage2DCHROMIUM::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -3227,19 +3121,13 @@ TEST_F(GLES2FormatTest, AsyncTexSubImage2DCHROMIUM) { TEST_F(GLES2FormatTest, AsyncTexImage2DCHROMIUM) { cmds::AsyncTexImage2DCHROMIUM& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16), - static_cast(17), - static_cast(18), - static_cast(19), - static_cast(20), - static_cast(21), - static_cast(22)); + void* next_cmd = + cmd.Set(&cmd, static_cast(11), static_cast(12), + static_cast(13), static_cast(14), + static_cast(15), static_cast(16), + static_cast(17), static_cast(18), + static_cast(19), static_cast(20), + static_cast(21), static_cast(22)); EXPECT_EQ(static_cast(cmds::AsyncTexImage2DCHROMIUM::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); @@ -3359,18 +3247,12 @@ TEST_F(GLES2FormatTest, DiscardBackbufferCHROMIUM) { TEST_F(GLES2FormatTest, ScheduleOverlayPlaneCHROMIUM) { cmds::ScheduleOverlayPlaneCHROMIUM& cmd = *GetBufferAs(); - void* next_cmd = cmd.Set(&cmd, - static_cast(11), - static_cast(12), - static_cast(13), - static_cast(14), - static_cast(15), - static_cast(16), - static_cast(17), - static_cast(18), - static_cast(19), - static_cast(20), - static_cast(21)); + void* next_cmd = cmd.Set(&cmd, static_cast(11), + static_cast(12), static_cast(13), + static_cast(14), static_cast(15), + static_cast(16), static_cast(17), + static_cast(18), static_cast(19), + static_cast(20), static_cast(21)); EXPECT_EQ(static_cast(cmds::ScheduleOverlayPlaneCHROMIUM::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); diff --git a/gpu/command_buffer/common/gles2_cmd_ids_autogen.h b/gpu/command_buffer/common/gles2_cmd_ids_autogen.h index 8bd5c0a950..a34e7d2b6c 100644 --- a/gpu/command_buffer/common/gles2_cmd_ids_autogen.h +++ b/gpu/command_buffer/common/gles2_cmd_ids_autogen.h @@ -193,24 +193,31 @@ OP(ConsumeTextureCHROMIUMImmediate) /* 434 */ \ OP(CreateAndConsumeTextureCHROMIUMImmediate) /* 435 */ \ OP(BindUniformLocationCHROMIUMBucket) /* 436 */ \ - OP(BindTexImage2DCHROMIUM) /* 437 */ \ - OP(ReleaseTexImage2DCHROMIUM) /* 438 */ \ - OP(TraceBeginCHROMIUM) /* 439 */ \ - OP(TraceEndCHROMIUM) /* 440 */ \ - OP(AsyncTexSubImage2DCHROMIUM) /* 441 */ \ - OP(AsyncTexImage2DCHROMIUM) /* 442 */ \ - OP(WaitAsyncTexImage2DCHROMIUM) /* 443 */ \ - OP(WaitAllAsyncTexImage2DCHROMIUM) /* 444 */ \ - OP(DiscardFramebufferEXTImmediate) /* 445 */ \ - OP(LoseContextCHROMIUM) /* 446 */ \ - OP(InsertSyncPointCHROMIUM) /* 447 */ \ - OP(WaitSyncPointCHROMIUM) /* 448 */ \ - OP(DrawBuffersEXTImmediate) /* 449 */ \ - OP(DiscardBackbufferCHROMIUM) /* 450 */ \ - OP(ScheduleOverlayPlaneCHROMIUM) /* 451 */ \ - OP(MatrixLoadfCHROMIUMImmediate) /* 452 */ \ - OP(MatrixLoadIdentityCHROMIUM) /* 453 */ \ - OP(BlendBarrierKHR) /* 454 */ + OP(GenValuebuffersCHROMIUMImmediate) /* 437 */ \ + OP(DeleteValuebuffersCHROMIUMImmediate) /* 438 */ \ + OP(IsValuebufferCHROMIUM) /* 439 */ \ + OP(BindValuebufferCHROMIUM) /* 440 */ \ + OP(SubscribeValueCHROMIUM) /* 441 */ \ + OP(PopulateSubscribedValuesCHROMIUM) /* 442 */ \ + OP(UniformValuebufferCHROMIUM) /* 443 */ \ + OP(BindTexImage2DCHROMIUM) /* 444 */ \ + OP(ReleaseTexImage2DCHROMIUM) /* 445 */ \ + OP(TraceBeginCHROMIUM) /* 446 */ \ + OP(TraceEndCHROMIUM) /* 447 */ \ + OP(AsyncTexSubImage2DCHROMIUM) /* 448 */ \ + OP(AsyncTexImage2DCHROMIUM) /* 449 */ \ + OP(WaitAsyncTexImage2DCHROMIUM) /* 450 */ \ + OP(WaitAllAsyncTexImage2DCHROMIUM) /* 451 */ \ + OP(DiscardFramebufferEXTImmediate) /* 452 */ \ + OP(LoseContextCHROMIUM) /* 453 */ \ + OP(InsertSyncPointCHROMIUM) /* 454 */ \ + OP(WaitSyncPointCHROMIUM) /* 455 */ \ + OP(DrawBuffersEXTImmediate) /* 456 */ \ + OP(DiscardBackbufferCHROMIUM) /* 457 */ \ + OP(ScheduleOverlayPlaneCHROMIUM) /* 458 */ \ + OP(MatrixLoadfCHROMIUMImmediate) /* 459 */ \ + OP(MatrixLoadIdentityCHROMIUM) /* 460 */ \ + OP(BlendBarrierKHR) /* 461 */ enum CommandId { kStartPoint = cmd::kLastCommonId, // All GLES2 commands start after this. diff --git a/gpu/command_buffer/common/gles2_cmd_utils_autogen.h b/gpu/command_buffer/common/gles2_cmd_utils_autogen.h index 18712010af..e8631e675a 100644 --- a/gpu/command_buffer/common/gles2_cmd_utils_autogen.h +++ b/gpu/command_buffer/common/gles2_cmd_utils_autogen.h @@ -55,6 +55,7 @@ static std::string GetStringShaderType(uint32_t value); static std::string GetStringSrcBlendFactor(uint32_t value); static std::string GetStringStencilOp(uint32_t value); static std::string GetStringStringType(uint32_t value); +static std::string GetStringSubscriptionTarget(uint32_t value); static std::string GetStringTextureBindTarget(uint32_t value); static std::string GetStringTextureFormat(uint32_t value); static std::string GetStringTextureInternalFormat(uint32_t value); @@ -66,6 +67,7 @@ static std::string GetStringTexturePool(uint32_t value); static std::string GetStringTextureTarget(uint32_t value); static std::string GetStringTextureUsage(uint32_t value); static std::string GetStringTextureWrapMode(uint32_t value); +static std::string GetStringValueBufferTarget(uint32_t value); static std::string GetStringVertexAttribType(uint32_t value); static std::string GetStringVertexAttribute(uint32_t value); static std::string GetStringVertexPointer(uint32_t value); diff --git a/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h b/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h index 5d7cebd0e5..1a0945a857 100644 --- a/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h +++ b/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h @@ -3064,6 +3064,14 @@ static const GLES2Util::EnumToString enum_to_string_table[] = { 0x8DE0, "GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT", }, + { + 0x924C, + "GL_MOUSE_POSITION_CHROMIUM", + }, + { + 0x924B, + "GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM", + }, { 0x924A, "GL_OVERLAY_TRANSFORM_ROTATE_270_CHROMIUM", @@ -3781,8 +3789,8 @@ std::string GLES2Util::GetStringAttachment(uint32_t value) { {GL_DEPTH_ATTACHMENT, "GL_DEPTH_ATTACHMENT"}, {GL_STENCIL_ATTACHMENT, "GL_STENCIL_ATTACHMENT"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringBackbufferAttachment(uint32_t value) { @@ -3791,24 +3799,24 @@ std::string GLES2Util::GetStringBackbufferAttachment(uint32_t value) { {GL_DEPTH_EXT, "GL_DEPTH_EXT"}, {GL_STENCIL_EXT, "GL_STENCIL_EXT"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringBlitFilter(uint32_t value) { static const EnumToString string_table[] = { {GL_NEAREST, "GL_NEAREST"}, {GL_LINEAR, "GL_LINEAR"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringBufferParameter(uint32_t value) { static const EnumToString string_table[] = { {GL_BUFFER_SIZE, "GL_BUFFER_SIZE"}, {GL_BUFFER_USAGE, "GL_BUFFER_USAGE"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringBufferTarget(uint32_t value) { @@ -3816,8 +3824,8 @@ std::string GLES2Util::GetStringBufferTarget(uint32_t value) { {GL_ARRAY_BUFFER, "GL_ARRAY_BUFFER"}, {GL_ELEMENT_ARRAY_BUFFER, "GL_ELEMENT_ARRAY_BUFFER"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringBufferUsage(uint32_t value) { @@ -3826,8 +3834,8 @@ std::string GLES2Util::GetStringBufferUsage(uint32_t value) { {GL_STATIC_DRAW, "GL_STATIC_DRAW"}, {GL_DYNAMIC_DRAW, "GL_DYNAMIC_DRAW"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringCapability(uint32_t value) { @@ -3842,8 +3850,8 @@ std::string GLES2Util::GetStringCapability(uint32_t value) { {GL_SCISSOR_TEST, "GL_SCISSOR_TEST"}, {GL_STENCIL_TEST, "GL_STENCIL_TEST"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringCmpFunction(uint32_t value) { @@ -3857,8 +3865,8 @@ std::string GLES2Util::GetStringCmpFunction(uint32_t value) { {GL_GEQUAL, "GL_GEQUAL"}, {GL_ALWAYS, "GL_ALWAYS"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringCompressedTextureFormat(uint32_t value) { @@ -3875,8 +3883,8 @@ std::string GLES2Util::GetStringDrawMode(uint32_t value) { {GL_TRIANGLE_FAN, "GL_TRIANGLE_FAN"}, {GL_TRIANGLES, "GL_TRIANGLES"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringDstBlendFactor(uint32_t value) { @@ -3896,8 +3904,8 @@ std::string GLES2Util::GetStringDstBlendFactor(uint32_t value) { {GL_CONSTANT_ALPHA, "GL_CONSTANT_ALPHA"}, {GL_ONE_MINUS_CONSTANT_ALPHA, "GL_ONE_MINUS_CONSTANT_ALPHA"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringEquation(uint32_t value) { @@ -3906,16 +3914,16 @@ std::string GLES2Util::GetStringEquation(uint32_t value) { {GL_FUNC_SUBTRACT, "GL_FUNC_SUBTRACT"}, {GL_FUNC_REVERSE_SUBTRACT, "GL_FUNC_REVERSE_SUBTRACT"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringFaceMode(uint32_t value) { static const EnumToString string_table[] = { {GL_CW, "GL_CW"}, {GL_CCW, "GL_CCW"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringFaceType(uint32_t value) { @@ -3924,8 +3932,8 @@ std::string GLES2Util::GetStringFaceType(uint32_t value) { {GL_BACK, "GL_BACK"}, {GL_FRONT_AND_BACK, "GL_FRONT_AND_BACK"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringFrameBufferParameter(uint32_t value) { @@ -3939,16 +3947,16 @@ std::string GLES2Util::GetStringFrameBufferParameter(uint32_t value) { {GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringFrameBufferTarget(uint32_t value) { static const EnumToString string_table[] = { {GL_FRAMEBUFFER, "GL_FRAMEBUFFER"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringGLState(uint32_t value) { @@ -4050,8 +4058,8 @@ std::string GLES2Util::GetStringGLState(uint32_t value) { {GL_SCISSOR_TEST, "GL_SCISSOR_TEST"}, {GL_STENCIL_TEST, "GL_STENCIL_TEST"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringGetMaxIndexType(uint32_t value) { @@ -4060,8 +4068,8 @@ std::string GLES2Util::GetStringGetMaxIndexType(uint32_t value) { {GL_UNSIGNED_SHORT, "GL_UNSIGNED_SHORT"}, {GL_UNSIGNED_INT, "GL_UNSIGNED_INT"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringGetTexParamTarget(uint32_t value) { @@ -4069,8 +4077,8 @@ std::string GLES2Util::GetStringGetTexParamTarget(uint32_t value) { {GL_TEXTURE_2D, "GL_TEXTURE_2D"}, {GL_TEXTURE_CUBE_MAP, "GL_TEXTURE_CUBE_MAP"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringHintMode(uint32_t value) { @@ -4079,24 +4087,24 @@ std::string GLES2Util::GetStringHintMode(uint32_t value) { {GL_NICEST, "GL_NICEST"}, {GL_DONT_CARE, "GL_DONT_CARE"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringHintTarget(uint32_t value) { static const EnumToString string_table[] = { {GL_GENERATE_MIPMAP_HINT, "GL_GENERATE_MIPMAP_HINT"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringImageInternalFormat(uint32_t value) { static const EnumToString string_table[] = { {GL_RGB, "GL_RGB"}, {GL_RGBA, "GL_RGBA"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringImageUsage(uint32_t value) { @@ -4104,8 +4112,8 @@ std::string GLES2Util::GetStringImageUsage(uint32_t value) { {GL_MAP_CHROMIUM, "GL_MAP_CHROMIUM"}, {GL_SCANOUT_CHROMIUM, "GL_SCANOUT_CHROMIUM"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringIndexType(uint32_t value) { @@ -4113,8 +4121,8 @@ std::string GLES2Util::GetStringIndexType(uint32_t value) { {GL_UNSIGNED_BYTE, "GL_UNSIGNED_BYTE"}, {GL_UNSIGNED_SHORT, "GL_UNSIGNED_SHORT"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringMatrixMode(uint32_t value) { @@ -4122,8 +4130,8 @@ std::string GLES2Util::GetStringMatrixMode(uint32_t value) { {GL_PATH_PROJECTION_CHROMIUM, "GL_PATH_PROJECTION_CHROMIUM"}, {GL_PATH_MODELVIEW_CHROMIUM, "GL_PATH_MODELVIEW_CHROMIUM"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringPixelStore(uint32_t value) { @@ -4136,8 +4144,8 @@ std::string GLES2Util::GetStringPixelStore(uint32_t value) { {GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, "GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringPixelType(uint32_t value) { @@ -4147,8 +4155,8 @@ std::string GLES2Util::GetStringPixelType(uint32_t value) { {GL_UNSIGNED_SHORT_4_4_4_4, "GL_UNSIGNED_SHORT_4_4_4_4"}, {GL_UNSIGNED_SHORT_5_5_5_1, "GL_UNSIGNED_SHORT_5_5_5_1"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringProgramParameter(uint32_t value) { @@ -4163,8 +4171,8 @@ std::string GLES2Util::GetStringProgramParameter(uint32_t value) { {GL_ACTIVE_UNIFORMS, "GL_ACTIVE_UNIFORMS"}, {GL_ACTIVE_UNIFORM_MAX_LENGTH, "GL_ACTIVE_UNIFORM_MAX_LENGTH"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringQueryObjectParameter(uint32_t value) { @@ -4172,16 +4180,16 @@ std::string GLES2Util::GetStringQueryObjectParameter(uint32_t value) { {GL_QUERY_RESULT_EXT, "GL_QUERY_RESULT_EXT"}, {GL_QUERY_RESULT_AVAILABLE_EXT, "GL_QUERY_RESULT_AVAILABLE_EXT"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringQueryParameter(uint32_t value) { static const EnumToString string_table[] = { {GL_CURRENT_QUERY_EXT, "GL_CURRENT_QUERY_EXT"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringQueryTarget(uint32_t value) { @@ -4197,16 +4205,16 @@ std::string GLES2Util::GetStringQueryTarget(uint32_t value) { "GL_ASYNC_PIXEL_PACK_COMPLETED_CHROMIUM"}, {GL_COMMANDS_COMPLETED_CHROMIUM, "GL_COMMANDS_COMPLETED_CHROMIUM"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringReadPixelFormat(uint32_t value) { static const EnumToString string_table[] = { {GL_ALPHA, "GL_ALPHA"}, {GL_RGB, "GL_RGB"}, {GL_RGBA, "GL_RGBA"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringReadPixelType(uint32_t value) { @@ -4216,8 +4224,8 @@ std::string GLES2Util::GetStringReadPixelType(uint32_t value) { {GL_UNSIGNED_SHORT_4_4_4_4, "GL_UNSIGNED_SHORT_4_4_4_4"}, {GL_UNSIGNED_SHORT_5_5_5_1, "GL_UNSIGNED_SHORT_5_5_5_1"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringRenderBufferFormat(uint32_t value) { @@ -4228,8 +4236,8 @@ std::string GLES2Util::GetStringRenderBufferFormat(uint32_t value) { {GL_DEPTH_COMPONENT16, "GL_DEPTH_COMPONENT16"}, {GL_STENCIL_INDEX8, "GL_STENCIL_INDEX8"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringRenderBufferParameter(uint32_t value) { @@ -4244,16 +4252,16 @@ std::string GLES2Util::GetStringRenderBufferParameter(uint32_t value) { {GL_RENDERBUFFER_HEIGHT, "GL_RENDERBUFFER_HEIGHT"}, {GL_RENDERBUFFER_INTERNAL_FORMAT, "GL_RENDERBUFFER_INTERNAL_FORMAT"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringRenderBufferTarget(uint32_t value) { static const EnumToString string_table[] = { {GL_RENDERBUFFER, "GL_RENDERBUFFER"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringResetStatus(uint32_t value) { @@ -4262,8 +4270,8 @@ std::string GLES2Util::GetStringResetStatus(uint32_t value) { {GL_INNOCENT_CONTEXT_RESET_ARB, "GL_INNOCENT_CONTEXT_RESET_ARB"}, {GL_UNKNOWN_CONTEXT_RESET_ARB, "GL_UNKNOWN_CONTEXT_RESET_ARB"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringShaderBinaryFormat(uint32_t value) { @@ -4280,8 +4288,8 @@ std::string GLES2Util::GetStringShaderParameter(uint32_t value) { {GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE, "GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringShaderPrecision(uint32_t value) { @@ -4293,8 +4301,8 @@ std::string GLES2Util::GetStringShaderPrecision(uint32_t value) { {GL_MEDIUM_INT, "GL_MEDIUM_INT"}, {GL_HIGH_INT, "GL_HIGH_INT"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringShaderType(uint32_t value) { @@ -4302,8 +4310,8 @@ std::string GLES2Util::GetStringShaderType(uint32_t value) { {GL_VERTEX_SHADER, "GL_VERTEX_SHADER"}, {GL_FRAGMENT_SHADER, "GL_FRAGMENT_SHADER"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringSrcBlendFactor(uint32_t value) { @@ -4324,8 +4332,8 @@ std::string GLES2Util::GetStringSrcBlendFactor(uint32_t value) { {GL_ONE_MINUS_CONSTANT_ALPHA, "GL_ONE_MINUS_CONSTANT_ALPHA"}, {GL_SRC_ALPHA_SATURATE, "GL_SRC_ALPHA_SATURATE"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringStencilOp(uint32_t value) { @@ -4339,8 +4347,8 @@ std::string GLES2Util::GetStringStencilOp(uint32_t value) { {GL_DECR_WRAP, "GL_DECR_WRAP"}, {GL_INVERT, "GL_INVERT"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringStringType(uint32_t value) { @@ -4351,8 +4359,16 @@ std::string GLES2Util::GetStringStringType(uint32_t value) { {GL_SHADING_LANGUAGE_VERSION, "GL_SHADING_LANGUAGE_VERSION"}, {GL_EXTENSIONS, "GL_EXTENSIONS"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); +} + +std::string GLES2Util::GetStringSubscriptionTarget(uint32_t value) { + static const EnumToString string_table[] = { + {GL_MOUSE_POSITION_CHROMIUM, "GL_MOUSE_POSITION_CHROMIUM"}, + }; + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringTextureBindTarget(uint32_t value) { @@ -4360,8 +4376,8 @@ std::string GLES2Util::GetStringTextureBindTarget(uint32_t value) { {GL_TEXTURE_2D, "GL_TEXTURE_2D"}, {GL_TEXTURE_CUBE_MAP, "GL_TEXTURE_CUBE_MAP"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringTextureFormat(uint32_t value) { @@ -4372,8 +4388,8 @@ std::string GLES2Util::GetStringTextureFormat(uint32_t value) { {GL_RGB, "GL_RGB"}, {GL_RGBA, "GL_RGBA"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringTextureInternalFormat(uint32_t value) { @@ -4384,8 +4400,8 @@ std::string GLES2Util::GetStringTextureInternalFormat(uint32_t value) { {GL_RGB, "GL_RGB"}, {GL_RGBA, "GL_RGBA"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringTextureInternalFormatStorage(uint32_t value) { @@ -4399,16 +4415,16 @@ std::string GLES2Util::GetStringTextureInternalFormatStorage(uint32_t value) { {GL_RGB8_OES, "GL_RGB8_OES"}, {GL_RGBA8_OES, "GL_RGBA8_OES"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringTextureMagFilterMode(uint32_t value) { static const EnumToString string_table[] = { {GL_NEAREST, "GL_NEAREST"}, {GL_LINEAR, "GL_LINEAR"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringTextureMinFilterMode(uint32_t value) { @@ -4420,8 +4436,8 @@ std::string GLES2Util::GetStringTextureMinFilterMode(uint32_t value) { {GL_NEAREST_MIPMAP_LINEAR, "GL_NEAREST_MIPMAP_LINEAR"}, {GL_LINEAR_MIPMAP_LINEAR, "GL_LINEAR_MIPMAP_LINEAR"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringTextureParameter(uint32_t value) { @@ -4432,8 +4448,8 @@ std::string GLES2Util::GetStringTextureParameter(uint32_t value) { {GL_TEXTURE_WRAP_S, "GL_TEXTURE_WRAP_S"}, {GL_TEXTURE_WRAP_T, "GL_TEXTURE_WRAP_T"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringTexturePool(uint32_t value) { @@ -4442,8 +4458,8 @@ std::string GLES2Util::GetStringTexturePool(uint32_t value) { {GL_TEXTURE_POOL_UNMANAGED_CHROMIUM, "GL_TEXTURE_POOL_UNMANAGED_CHROMIUM"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringTextureTarget(uint32_t value) { @@ -4456,8 +4472,8 @@ std::string GLES2Util::GetStringTextureTarget(uint32_t value) { {GL_TEXTURE_CUBE_MAP_POSITIVE_Z, "GL_TEXTURE_CUBE_MAP_POSITIVE_Z"}, {GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringTextureUsage(uint32_t value) { @@ -4465,8 +4481,8 @@ std::string GLES2Util::GetStringTextureUsage(uint32_t value) { {GL_NONE, "GL_NONE"}, {GL_FRAMEBUFFER_ATTACHMENT_ANGLE, "GL_FRAMEBUFFER_ATTACHMENT_ANGLE"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringTextureWrapMode(uint32_t value) { @@ -4475,8 +4491,17 @@ std::string GLES2Util::GetStringTextureWrapMode(uint32_t value) { {GL_MIRRORED_REPEAT, "GL_MIRRORED_REPEAT"}, {GL_REPEAT, "GL_REPEAT"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); +} + +std::string GLES2Util::GetStringValueBufferTarget(uint32_t value) { + static const EnumToString string_table[] = { + {GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, + "GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM"}, + }; + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringVertexAttribType(uint32_t value) { @@ -4487,8 +4512,8 @@ std::string GLES2Util::GetStringVertexAttribType(uint32_t value) { {GL_UNSIGNED_SHORT, "GL_UNSIGNED_SHORT"}, {GL_FLOAT, "GL_FLOAT"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringVertexAttribute(uint32_t value) { @@ -4502,16 +4527,16 @@ std::string GLES2Util::GetStringVertexAttribute(uint32_t value) { {GL_VERTEX_ATTRIB_ARRAY_TYPE, "GL_VERTEX_ATTRIB_ARRAY_TYPE"}, {GL_CURRENT_VERTEX_ATTRIB, "GL_CURRENT_VERTEX_ATTRIB"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } std::string GLES2Util::GetStringVertexPointer(uint32_t value) { static const EnumToString string_table[] = { {GL_VERTEX_ATTRIB_ARRAY_POINTER, "GL_VERTEX_ATTRIB_ARRAY_POINTER"}, }; - return GLES2Util::GetQualifiedEnumString( - string_table, arraysize(string_table), value); + return GLES2Util::GetQualifiedEnumString(string_table, + arraysize(string_table), value); } #endif // GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_UTILS_IMPLEMENTATION_AUTOGEN_H_ diff --git a/gpu/command_buffer/service/BUILD.gn b/gpu/command_buffer/service/BUILD.gn index 8293fbcef8..4013c3ac03 100644 --- a/gpu/command_buffer/service/BUILD.gn +++ b/gpu/command_buffer/service/BUILD.gn @@ -107,6 +107,8 @@ source_set("service") { "texture_manager.cc", "transfer_buffer_manager.cc", "transfer_buffer_manager.h", + "valuebuffer_manager.h", + "valuebuffer_manager.cc", "vertex_array_manager.h", "vertex_array_manager.cc", "vertex_attrib_manager.h", diff --git a/gpu/command_buffer/service/command_buffer_service.cc b/gpu/command_buffer/service/command_buffer_service.cc index 2c732c6735..1453a0acfb 100644 --- a/gpu/command_buffer/service/command_buffer_service.cc +++ b/gpu/command_buffer/service/command_buffer_service.cc @@ -39,9 +39,7 @@ bool CommandBufferService::Initialize() { CommandBufferService::State CommandBufferService::GetLastState() { State state; - state.num_entries = num_entries_; state.get_offset = get_offset_; - state.put_offset = put_offset_; state.token = token_; state.error = error_; state.context_lost_reason = context_lost_reason_; @@ -174,6 +172,10 @@ void CommandBufferService::SetContextLostReason( context_lost_reason_ = reason; } +int32 CommandBufferService::GetPutOffset() { + return put_offset_; +} + void CommandBufferService::SetPutOffsetChangeCallback( const base::Closure& callback) { put_offset_change_callback_ = callback; diff --git a/gpu/command_buffer/service/command_buffer_service.h b/gpu/command_buffer/service/command_buffer_service.h index 15f865fe8d..69b9ad76eb 100644 --- a/gpu/command_buffer/service/command_buffer_service.h +++ b/gpu/command_buffer/service/command_buffer_service.h @@ -33,6 +33,9 @@ class GPU_EXPORT CommandBufferServiceBase : public CommandBuffer { // NOTE: if calling this in conjunction with SetParseError, // call this first. virtual void SetContextLostReason(error::ContextLostReason) = 0; + + // Allows the reader to obtain the current put offset. + virtual int32 GetPutOffset() = 0; }; // An object that implements a shared memory command buffer and a synchronous @@ -61,6 +64,7 @@ class GPU_EXPORT CommandBufferService : public CommandBufferServiceBase { void SetToken(int32 token) override; void SetParseError(error::Error error) override; void SetContextLostReason(error::ContextLostReason) override; + int32 GetPutOffset() override; // Sets a callback that is called whenever the put offset is changed. When // called with sync==true, the callback must not return until some progress diff --git a/gpu/command_buffer/service/command_buffer_service_unittest.cc b/gpu/command_buffer/service/command_buffer_service_unittest.cc index 3af2d050ac..8a7d43ca98 100644 --- a/gpu/command_buffer/service/command_buffer_service_unittest.cc +++ b/gpu/command_buffer/service/command_buffer_service_unittest.cc @@ -38,7 +38,7 @@ class CommandBufferServiceTest : public testing::Test { } int32 GetPutOffset() { - return command_buffer_->GetLastState().put_offset; + return command_buffer_->GetPutOffset(); } int32 GetToken() { @@ -65,7 +65,7 @@ TEST_F(CommandBufferServiceTest, InitializesCommandBuffer) { EXPECT_TRUE(Initialize(1024)); CommandBuffer::State state = command_buffer_->GetLastState(); EXPECT_EQ(0, state.get_offset); - EXPECT_EQ(0, state.put_offset); + EXPECT_EQ(0, command_buffer_->GetPutOffset()); EXPECT_EQ(0, state.token); EXPECT_EQ(error::kNoError, state.error); } diff --git a/gpu/command_buffer/service/context_group.cc b/gpu/command_buffer/service/context_group.cc index 00e7ec38b9..6ee57e4c0d 100644 --- a/gpu/command_buffer/service/context_group.cc +++ b/gpu/command_buffer/service/context_group.cc @@ -21,6 +21,7 @@ #include "gpu/command_buffer/service/shader_manager.h" #include "gpu/command_buffer/service/texture_manager.h" #include "gpu/command_buffer/service/transfer_buffer_manager.h" +#include "gpu/command_buffer/service/valuebuffer_manager.h" #include "ui/gl/gl_implementation.h" namespace gpu { @@ -121,6 +122,7 @@ bool ContextGroup::Initialize( renderbuffer_manager_.reset(new RenderbufferManager( memory_tracker_.get(), max_renderbuffer_size, max_samples, depth24_supported)); + valuebuffer_manager_.reset(new ValuebufferManager()); shader_manager_.reset(new ShaderManager()); // Lookup GL things we need to know. @@ -300,6 +302,11 @@ void ContextGroup::Destroy(GLES2Decoder* decoder, bool have_context) { renderbuffer_manager_.reset(); } + if (valuebuffer_manager_ != NULL) { + valuebuffer_manager_->Destroy(); + valuebuffer_manager_.reset(); + } + if (texture_manager_ != NULL) { texture_manager_->Destroy(have_context); texture_manager_.reset(); diff --git a/gpu/command_buffer/service/context_group.h b/gpu/command_buffer/service/context_group.h index ae4550cbda..eb53252806 100644 --- a/gpu/command_buffer/service/context_group.h +++ b/gpu/command_buffer/service/context_group.h @@ -34,6 +34,7 @@ class RenderbufferManager; class ProgramManager; class ShaderManager; class TextureManager; +class ValuebufferManager; class MemoryTracker; struct DisallowedFeatures; @@ -126,6 +127,10 @@ class GPU_EXPORT ContextGroup : public base::RefCounted { return renderbuffer_manager_.get(); } + ValuebufferManager* valuebuffer_manager() const { + return valuebuffer_manager_.get(); + } + TextureManager* texture_manager() const { return texture_manager_.get(); } @@ -199,6 +204,8 @@ class GPU_EXPORT ContextGroup : public base::RefCounted { scoped_ptr renderbuffer_manager_; + scoped_ptr valuebuffer_manager_; + scoped_ptr texture_manager_; scoped_ptr program_manager_; diff --git a/gpu/command_buffer/service/context_state.h b/gpu/command_buffer/service/context_state.h index 7488f5786c..b4e812c295 100644 --- a/gpu/command_buffer/service/context_state.h +++ b/gpu/command_buffer/service/context_state.h @@ -13,6 +13,7 @@ #include "gpu/command_buffer/service/gl_utils.h" #include "gpu/command_buffer/service/query_manager.h" #include "gpu/command_buffer/service/texture_manager.h" +#include "gpu/command_buffer/service/valuebuffer_manager.h" #include "gpu/command_buffer/service/vertex_attrib_manager.h" #include "gpu/command_buffer/service/vertex_array_manager.h" #include "gpu/gpu_export.h" @@ -200,6 +201,9 @@ struct GPU_EXPORT ContextState { scoped_refptr bound_renderbuffer; bool bound_renderbuffer_valid; + // The currently bound valuebuffer + scoped_refptr bound_valuebuffer; + // A map of of target -> Query for current queries typedef std::map > QueryMap; QueryMap current_queries; diff --git a/gpu/command_buffer/service/context_state_impl_autogen.h b/gpu/command_buffer/service/context_state_impl_autogen.h index 1b1e5fe430..037ac6c1a0 100644 --- a/gpu/command_buffer/service/context_state_impl_autogen.h +++ b/gpu/command_buffer/service/context_state_impl_autogen.h @@ -182,9 +182,7 @@ void ContextState::InitState(const ContextState* prev_state) const { (blend_color_green != prev_state->blend_color_green) || (blend_color_blue != prev_state->blend_color_blue) || (blend_color_alpha != prev_state->blend_color_alpha)) - glBlendColor(blend_color_red, - blend_color_green, - blend_color_blue, + glBlendColor(blend_color_red, blend_color_green, blend_color_blue, blend_color_alpha); if ((blend_equation_rgb != prev_state->blend_equation_rgb) || (blend_equation_alpha != prev_state->blend_equation_alpha)) @@ -193,17 +191,13 @@ void ContextState::InitState(const ContextState* prev_state) const { (blend_dest_rgb != prev_state->blend_dest_rgb) || (blend_source_alpha != prev_state->blend_source_alpha) || (blend_dest_alpha != prev_state->blend_dest_alpha)) - glBlendFuncSeparate(blend_source_rgb, - blend_dest_rgb, - blend_source_alpha, + glBlendFuncSeparate(blend_source_rgb, blend_dest_rgb, blend_source_alpha, blend_dest_alpha); if ((color_clear_red != prev_state->color_clear_red) || (color_clear_green != prev_state->color_clear_green) || (color_clear_blue != prev_state->color_clear_blue) || (color_clear_alpha != prev_state->color_clear_alpha)) - glClearColor(color_clear_red, - color_clear_green, - color_clear_blue, + glClearColor(color_clear_red, color_clear_green, color_clear_blue, color_clear_alpha); if ((depth_clear != prev_state->depth_clear)) glClearDepth(depth_clear); @@ -213,10 +207,8 @@ void ContextState::InitState(const ContextState* prev_state) const { (cached_color_mask_green != prev_state->cached_color_mask_green) || (cached_color_mask_blue != prev_state->cached_color_mask_blue) || (cached_color_mask_alpha != prev_state->cached_color_mask_alpha)) - glColorMask(cached_color_mask_red, - cached_color_mask_green, - cached_color_mask_blue, - cached_color_mask_alpha); + glColorMask(cached_color_mask_red, cached_color_mask_green, + cached_color_mask_blue, cached_color_mask_alpha); if ((cull_mode != prev_state->cull_mode)) glCullFace(cull_mode); if ((depth_func != prev_state->depth_func)) @@ -240,15 +232,13 @@ void ContextState::InitState(const ContextState* prev_state) const { if ((line_width != prev_state->line_width)) glLineWidth(line_width); if (feature_info_->feature_flags().chromium_path_rendering) { - if (memcmp(prev_state->modelview_matrix, - modelview_matrix, + if (memcmp(prev_state->modelview_matrix, modelview_matrix, sizeof(GLfloat) * 16)) { glMatrixLoadfEXT(GL_PATH_MODELVIEW_CHROMIUM, modelview_matrix); } } if (feature_info_->feature_flags().chromium_path_rendering) { - if (memcmp(prev_state->projection_matrix, - projection_matrix, + if (memcmp(prev_state->projection_matrix, projection_matrix, sizeof(GLfloat) * 16)) { glMatrixLoadfEXT(GL_PATH_PROJECTION_CHROMIUM, projection_matrix); } @@ -273,13 +263,13 @@ void ContextState::InitState(const ContextState* prev_state) const { if ((stencil_front_func != prev_state->stencil_front_func) || (stencil_front_ref != prev_state->stencil_front_ref) || (stencil_front_mask != prev_state->stencil_front_mask)) - glStencilFuncSeparate( - GL_FRONT, stencil_front_func, stencil_front_ref, stencil_front_mask); + glStencilFuncSeparate(GL_FRONT, stencil_front_func, stencil_front_ref, + stencil_front_mask); if ((stencil_back_func != prev_state->stencil_back_func) || (stencil_back_ref != prev_state->stencil_back_ref) || (stencil_back_mask != prev_state->stencil_back_mask)) - glStencilFuncSeparate( - GL_BACK, stencil_back_func, stencil_back_ref, stencil_back_mask); + glStencilFuncSeparate(GL_BACK, stencil_back_func, stencil_back_ref, + stencil_back_mask); if ((cached_stencil_front_writemask != prev_state->cached_stencil_front_writemask)) glStencilMaskSeparate(GL_FRONT, cached_stencil_front_writemask); @@ -289,16 +279,12 @@ void ContextState::InitState(const ContextState* prev_state) const { if ((stencil_front_fail_op != prev_state->stencil_front_fail_op) || (stencil_front_z_fail_op != prev_state->stencil_front_z_fail_op) || (stencil_front_z_pass_op != prev_state->stencil_front_z_pass_op)) - glStencilOpSeparate(GL_FRONT, - stencil_front_fail_op, - stencil_front_z_fail_op, - stencil_front_z_pass_op); + glStencilOpSeparate(GL_FRONT, stencil_front_fail_op, + stencil_front_z_fail_op, stencil_front_z_pass_op); if ((stencil_back_fail_op != prev_state->stencil_back_fail_op) || (stencil_back_z_fail_op != prev_state->stencil_back_z_fail_op) || (stencil_back_z_pass_op != prev_state->stencil_back_z_pass_op)) - glStencilOpSeparate(GL_BACK, - stencil_back_fail_op, - stencil_back_z_fail_op, + glStencilOpSeparate(GL_BACK, stencil_back_fail_op, stencil_back_z_fail_op, stencil_back_z_pass_op); if ((viewport_x != prev_state->viewport_x) || (viewport_y != prev_state->viewport_y) || @@ -306,23 +292,17 @@ void ContextState::InitState(const ContextState* prev_state) const { (viewport_height != prev_state->viewport_height)) glViewport(viewport_x, viewport_y, viewport_width, viewport_height); } else { - glBlendColor(blend_color_red, - blend_color_green, - blend_color_blue, + glBlendColor(blend_color_red, blend_color_green, blend_color_blue, blend_color_alpha); glBlendEquationSeparate(blend_equation_rgb, blend_equation_alpha); - glBlendFuncSeparate( - blend_source_rgb, blend_dest_rgb, blend_source_alpha, blend_dest_alpha); - glClearColor(color_clear_red, - color_clear_green, - color_clear_blue, + glBlendFuncSeparate(blend_source_rgb, blend_dest_rgb, blend_source_alpha, + blend_dest_alpha); + glClearColor(color_clear_red, color_clear_green, color_clear_blue, color_clear_alpha); glClearDepth(depth_clear); glClearStencil(stencil_clear); - glColorMask(cached_color_mask_red, - cached_color_mask_green, - cached_color_mask_blue, - cached_color_mask_alpha); + glColorMask(cached_color_mask_red, cached_color_mask_green, + cached_color_mask_blue, cached_color_mask_alpha); glCullFace(cull_mode); glDepthFunc(depth_func); glDepthMask(cached_depth_mask); @@ -345,19 +325,15 @@ void ContextState::InitState(const ContextState* prev_state) const { glPolygonOffset(polygon_offset_factor, polygon_offset_units); glSampleCoverage(sample_coverage_value, sample_coverage_invert); glScissor(scissor_x, scissor_y, scissor_width, scissor_height); - glStencilFuncSeparate( - GL_FRONT, stencil_front_func, stencil_front_ref, stencil_front_mask); - glStencilFuncSeparate( - GL_BACK, stencil_back_func, stencil_back_ref, stencil_back_mask); + glStencilFuncSeparate(GL_FRONT, stencil_front_func, stencil_front_ref, + stencil_front_mask); + glStencilFuncSeparate(GL_BACK, stencil_back_func, stencil_back_ref, + stencil_back_mask); glStencilMaskSeparate(GL_FRONT, cached_stencil_front_writemask); glStencilMaskSeparate(GL_BACK, cached_stencil_back_writemask); - glStencilOpSeparate(GL_FRONT, - stencil_front_fail_op, - stencil_front_z_fail_op, - stencil_front_z_pass_op); - glStencilOpSeparate(GL_BACK, - stencil_back_fail_op, - stencil_back_z_fail_op, + glStencilOpSeparate(GL_FRONT, stencil_front_fail_op, + stencil_front_z_fail_op, stencil_front_z_pass_op); + glStencilOpSeparate(GL_BACK, stencil_back_fail_op, stencil_back_z_fail_op, stencil_back_z_pass_op); glViewport(viewport_x, viewport_y, viewport_width, viewport_height); } diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc index 9b028fd494..6905d2af0c 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc @@ -56,6 +56,7 @@ #include "gpu/command_buffer/service/shader_translator.h" #include "gpu/command_buffer/service/shader_translator_cache.h" #include "gpu/command_buffer/service/texture_manager.h" +#include "gpu/command_buffer/service/valuebuffer_manager.h" #include "gpu/command_buffer/service/vertex_array_manager.h" #include "gpu/command_buffer/service/vertex_attrib_manager.h" #include "third_party/smhasher/src/City.h" @@ -727,6 +728,8 @@ class GLES2DecoderImpl : public GLES2Decoder, void DeleteFramebuffersHelper(GLsizei n, const GLuint* client_ids); bool GenRenderbuffersHelper(GLsizei n, const GLuint* client_ids); void DeleteRenderbuffersHelper(GLsizei n, const GLuint* client_ids); + bool GenValuebuffersCHROMIUMHelper(GLsizei n, const GLuint* client_ids); + void DeleteValuebuffersCHROMIUMHelper(GLsizei n, const GLuint* client_ids); bool GenQueriesEXTHelper(GLsizei n, const GLuint* client_ids); void DeleteQueriesEXTHelper(GLsizei n, const GLuint* client_ids); bool GenVertexArraysOESHelper(GLsizei n, const GLuint* client_ids); @@ -756,6 +759,10 @@ class GLES2DecoderImpl : public GLES2Decoder, return group_->framebuffer_manager(); } + ValuebufferManager* valuebuffer_manager() { + return group_->valuebuffer_manager(); + } + ProgramManager* program_manager() { return group_->program_manager(); } @@ -944,6 +951,14 @@ class GLES2DecoderImpl : public GLES2Decoder, void DoCreateAndConsumeTextureCHROMIUM(GLenum target, const GLbyte* key, GLuint client_id); + bool DoIsValuebufferCHROMIUM(GLuint client_id); + void DoBindValueBufferCHROMIUM(GLenum target, GLuint valuebuffer); + void DoSubscribeValueCHROMIUM(GLenum target, GLenum subscription); + void DoPopulateSubscribedValuesCHROMIUM(GLenum target); + void DoUniformValueBufferCHROMIUM(GLint location, + GLenum target, + GLenum subscription); + void DoBindTexImage2DCHROMIUM( GLenum target, GLint image_id); @@ -1096,6 +1111,21 @@ class GLES2DecoderImpl : public GLES2Decoder, renderbuffer_manager()->RemoveRenderbuffer(client_id); } + // Creates a valuebuffer info for the given valuebuffer. + void CreateValuebuffer(GLuint client_id) { + return valuebuffer_manager()->CreateValuebuffer(client_id); + } + + // Gets the valuebuffer info for a given valuebuffer. + Valuebuffer* GetValuebuffer(GLuint client_id) { + return valuebuffer_manager()->GetValuebuffer(client_id); + } + + // Removes the valuebuffer info for the given valuebuffer. + void RemoveValuebuffer(GLuint client_id) { + valuebuffer_manager()->RemoveValuebuffer(client_id); + } + // Gets the vertex attrib manager for the given vertex array. VertexAttribManager* GetVertexAttribManager(GLuint client_id) { VertexAttribManager* info = @@ -1177,6 +1207,22 @@ class GLES2DecoderImpl : public GLES2Decoder, GLenum target, const char* func_name); + // Check if the current valuebuffer exists and is valid. If not generates + // the appropriate GL error. Returns true if the current valuebuffer is in + // a usable state. + bool CheckCurrentValuebuffer(const char* function_name); + + // Check if the current valuebuffer exists and is valiud and that the + // value buffer is actually subscribed to the given subscription + bool CheckCurrentValuebufferForSubscription(GLenum subscription, + const char* function_name); + + // Check if the location can be used for the given subscription target. If not + // generates the appropriate GL error. Returns true if the location is usable + bool CheckSubscriptionTarget(GLint location, + GLenum subscription, + const char* function_name); + // Checks if the current program exists and is valid. If not generates the // appropriate GL error. Returns true if the current program is in a usable // state. @@ -1193,6 +1239,13 @@ class GLES2DecoderImpl : public GLES2Decoder, // of the draw operation are the same. bool CheckDrawingFeedbackLoops(); + // Checks if |api_type| is valid for the given uniform + // If the api type is not valid generates the appropriate GL + // error. Returns true if |api_type| is valid for the uniform + bool CheckUniformForApiType(const Program::UniformInfo* info, + const char* function_name, + Program::UniformApiType api_type); + // Gets the type of a uniform for a location in the current program. Sets GL // errors if the current program is not valid. Returns true if the current // program is valid and the location exists. Adjusts count so it @@ -2670,6 +2723,7 @@ bool GLES2DecoderImpl::Initialize( DoBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); DoBindFramebuffer(GL_FRAMEBUFFER, 0); DoBindRenderbuffer(GL_RENDERBUFFER, 0); + DoBindValueBufferCHROMIUM(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, 0); bool call_gl_clear = !surfaceless_; #if defined(OS_ANDROID) @@ -2907,6 +2961,19 @@ bool GLES2DecoderImpl::GenRenderbuffersHelper( return true; } +bool GLES2DecoderImpl::GenValuebuffersCHROMIUMHelper(GLsizei n, + const GLuint* client_ids) { + for (GLsizei ii = 0; ii < n; ++ii) { + if (GetValuebuffer(client_ids[ii])) { + return false; + } + } + for (GLsizei ii = 0; ii < n; ++ii) { + CreateValuebuffer(client_ids[ii]); + } + return true; +} + bool GLES2DecoderImpl::GenTexturesHelper(GLsizei n, const GLuint* client_ids) { for (GLsizei ii = 0; ii < n; ++ii) { if (GetTexture(client_ids[ii])) { @@ -2996,6 +3063,20 @@ void GLES2DecoderImpl::DeleteRenderbuffersHelper( } } +void GLES2DecoderImpl::DeleteValuebuffersCHROMIUMHelper( + GLsizei n, + const GLuint* client_ids) { + for (GLsizei ii = 0; ii < n; ++ii) { + Valuebuffer* valuebuffer = GetValuebuffer(client_ids[ii]); + if (valuebuffer) { + if (state_.bound_valuebuffer.get() == valuebuffer) { + state_.bound_valuebuffer = NULL; + } + RemoveValuebuffer(client_ids[ii]); + } + } +} + void GLES2DecoderImpl::DeleteTexturesHelper( GLsizei n, const GLuint* client_ids) { bool supports_separate_framebuffer_binds = @@ -3425,6 +3506,7 @@ void GLES2DecoderImpl::Destroy(bool have_context) { framebuffer_state_.bound_read_framebuffer = NULL; framebuffer_state_.bound_draw_framebuffer = NULL; state_.bound_renderbuffer = NULL; + state_.bound_valuebuffer = NULL; if (offscreen_saved_color_texture_info_.get()) { DCHECK(offscreen_target_color_texture_); @@ -5722,6 +5804,55 @@ void GLES2DecoderImpl::DoTexParameteriv( "glTexParameteriv", GetErrorState(), texture, pname, *params); } +bool GLES2DecoderImpl::CheckCurrentValuebuffer(const char* function_name) { + if (!state_.bound_valuebuffer.get()) { + // There is no valuebuffer bound + LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, function_name, + "no valuebuffer in use"); + return false; + } + return true; +} + +bool GLES2DecoderImpl::CheckCurrentValuebufferForSubscription( + GLenum subscription, + const char* function_name) { + if (!CheckCurrentValuebuffer(function_name)) { + return false; + } + if (!state_.bound_valuebuffer.get()->IsSubscribed(subscription)) { + // The valuebuffer is not subscribed to the target + LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, function_name, + "valuebuffer is not subscribed"); + return false; + } + return true; +} + +bool GLES2DecoderImpl::CheckSubscriptionTarget(GLint location, + GLenum subscription, + const char* function_name) { + if (!CheckCurrentProgramForUniform(location, function_name)) { + return false; + } + GLint real_location = -1; + GLint array_index = -1; + const Program::UniformInfo* info = + state_.current_program->GetUniformInfoByFakeLocation( + location, &real_location, &array_index); + if (!info) { + LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, function_name, "unknown location"); + return false; + } + if ((ValuebufferManager::ApiTypeForSubscriptionTarget(subscription) & + info->accepts_api_type) == 0) { + LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, function_name, + "wrong type for subscription"); + return false; + } + return true; +} + bool GLES2DecoderImpl::CheckCurrentProgram(const char* function_name) { if (!state_.current_program.get()) { // The program does not exist. @@ -5777,6 +5908,19 @@ bool GLES2DecoderImpl::CheckDrawingFeedbackLoops() { return false; } +bool GLES2DecoderImpl::CheckUniformForApiType( + const Program::UniformInfo* info, + const char* function_name, + Program::UniformApiType api_type) { + DCHECK(info); + if ((api_type & info->accepts_api_type) == 0) { + LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, function_name, + "wrong uniform function for type"); + return false; + } + return true; +} + bool GLES2DecoderImpl::PrepForSetUniformByLocation( GLint fake_location, const char* function_name, @@ -5800,11 +5944,7 @@ bool GLES2DecoderImpl::PrepForSetUniformByLocation( GL_INVALID_OPERATION, function_name, "unknown location"); return false; } - - if ((api_type & info->accepts_api_type) == 0) { - LOCAL_SET_GL_ERROR( - GL_INVALID_OPERATION, function_name, - "wrong uniform function for type"); + if (!CheckUniformForApiType(info, function_name, api_type)) { return false; } if (*count > 1 && !info->is_array) { @@ -10696,6 +10836,73 @@ void GLES2DecoderImpl::DoCreateAndConsumeTextureCHROMIUM(GLenum target, texture_ref = texture_manager()->Consume(client_id, texture); } +bool GLES2DecoderImpl::DoIsValuebufferCHROMIUM(GLuint client_id) { + const Valuebuffer* valuebuffer = GetValuebuffer(client_id); + return valuebuffer && valuebuffer->IsValid(); +} + +void GLES2DecoderImpl::DoBindValueBufferCHROMIUM(GLenum target, + GLuint client_id) { + Valuebuffer* valuebuffer = NULL; + if (client_id != 0) { + valuebuffer = GetValuebuffer(client_id); + if (!valuebuffer) { + if (!group_->bind_generates_resource()) { + LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glBindValuebufferCHROMIUM", + "id not generated by glBindValuebufferCHROMIUM"); + return; + } + + // It's a new id so make a valuebuffer for it. + CreateValuebuffer(client_id); + valuebuffer = GetValuebuffer(client_id); + } + valuebuffer->MarkAsValid(); + } + state_.bound_valuebuffer = valuebuffer; +} + +void GLES2DecoderImpl::DoSubscribeValueCHROMIUM(GLenum target, + GLenum subscription) { + if (!CheckCurrentValuebuffer("glSubscribeValueCHROMIUM")) { + return; + } + state_.bound_valuebuffer.get()->AddSubscription(subscription); +} + +void GLES2DecoderImpl::DoPopulateSubscribedValuesCHROMIUM(GLenum target) { + if (!CheckCurrentValuebuffer("glPopulateSubscribedValuesCHROMIUM")) { + return; + } + valuebuffer_manager()->UpdateValuebufferState(state_.bound_valuebuffer.get()); +} + +void GLES2DecoderImpl::DoUniformValueBufferCHROMIUM(GLint location, + GLenum target, + GLenum subscription) { + if (!CheckCurrentValuebufferForSubscription( + subscription, "glPopulateSubscribedValuesCHROMIUM")) { + return; + } + if (!CheckSubscriptionTarget(location, subscription, + "glPopulateSubscribedValuesCHROMIUM")) { + return; + } + const ValueState* state = + state_.bound_valuebuffer.get()->GetState(subscription); + if (state) { + switch (subscription) { + case GL_MOUSE_POSITION_CHROMIUM: + DoUniform2iv(location, 1, state->int_value); + break; + default: + NOTREACHED() << "Unhandled uniform subscription target " + << subscription; + break; + } + } +} + void GLES2DecoderImpl::DoInsertEventMarkerEXT( GLsizei length, const GLchar* marker) { if (!marker) { diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h index 02d914f7c2..ee3bba56d1 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h +++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h @@ -143,13 +143,13 @@ error::Error GLES2DecoderImpl::HandleBlendEquationSeparate( GLenum modeRGB = static_cast(c.modeRGB); GLenum modeAlpha = static_cast(c.modeAlpha); if (!validators_->equation.IsValid(modeRGB)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glBlendEquationSeparate", modeRGB, "modeRGB"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glBlendEquationSeparate", modeRGB, + "modeRGB"); return error::kNoError; } if (!validators_->equation.IsValid(modeAlpha)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glBlendEquationSeparate", modeAlpha, "modeAlpha"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glBlendEquationSeparate", modeAlpha, + "modeAlpha"); return error::kNoError; } if (state_.blend_equation_rgb != modeRGB || @@ -207,13 +207,13 @@ error::Error GLES2DecoderImpl::HandleBlendFuncSeparate( return error::kNoError; } if (!validators_->src_blend_factor.IsValid(srcAlpha)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glBlendFuncSeparate", srcAlpha, "srcAlpha"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glBlendFuncSeparate", srcAlpha, + "srcAlpha"); return error::kNoError; } if (!validators_->dst_blend_factor.IsValid(dstAlpha)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glBlendFuncSeparate", dstAlpha, "dstAlpha"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glBlendFuncSeparate", dstAlpha, + "dstAlpha"); return error::kNoError; } if (state_.blend_source_rgb != srcRGB || state_.blend_dest_rgb != dstRGB || @@ -268,8 +268,8 @@ error::Error GLES2DecoderImpl::HandleCheckFramebufferStatus( return error::kOutOfBounds; } if (!validators_->frame_buffer_target.IsValid(target)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glCheckFramebufferStatus", target, "target"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glCheckFramebufferStatus", target, + "target"); return error::kNoError; } *result_dst = DoCheckFramebufferStatus(target); @@ -384,35 +384,35 @@ error::Error GLES2DecoderImpl::HandleCompressedTexSubImage2D( const void* data = GetSharedMemoryAs( c.data_shm_id, c.data_shm_offset, data_size); if (!validators_->texture_target.IsValid(target)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glCompressedTexSubImage2D", target, "target"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glCompressedTexSubImage2D", target, + "target"); return error::kNoError; } if (width < 0) { - LOCAL_SET_GL_ERROR( - GL_INVALID_VALUE, "glCompressedTexSubImage2D", "width < 0"); + LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCompressedTexSubImage2D", + "width < 0"); return error::kNoError; } if (height < 0) { - LOCAL_SET_GL_ERROR( - GL_INVALID_VALUE, "glCompressedTexSubImage2D", "height < 0"); + LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCompressedTexSubImage2D", + "height < 0"); return error::kNoError; } if (!validators_->compressed_texture_format.IsValid(format)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glCompressedTexSubImage2D", format, "format"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glCompressedTexSubImage2D", format, + "format"); return error::kNoError; } if (imageSize < 0) { - LOCAL_SET_GL_ERROR( - GL_INVALID_VALUE, "glCompressedTexSubImage2D", "imageSize < 0"); + LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCompressedTexSubImage2D", + "imageSize < 0"); return error::kNoError; } if (data == NULL) { return error::kOutOfBounds; } - DoCompressedTexSubImage2D( - target, level, xoffset, yoffset, width, height, format, imageSize, data); + DoCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, + format, imageSize, data); return error::kNoError; } @@ -439,8 +439,8 @@ error::Error GLES2DecoderImpl::HandleCopyTexImage2D( return error::kNoError; } if (!validators_->texture_internal_format.IsValid(internalformat)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glCopyTexImage2D", internalformat, "internalformat"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glCopyTexImage2D", internalformat, + "internalformat"); return error::kNoError; } if (width < 0) { @@ -750,22 +750,22 @@ error::Error GLES2DecoderImpl::HandleFramebufferRenderbuffer( GLenum renderbuffertarget = static_cast(c.renderbuffertarget); GLuint renderbuffer = c.renderbuffer; if (!validators_->frame_buffer_target.IsValid(target)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glFramebufferRenderbuffer", target, "target"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferRenderbuffer", target, + "target"); return error::kNoError; } if (!validators_->attachment.IsValid(attachment)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glFramebufferRenderbuffer", attachment, "attachment"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferRenderbuffer", attachment, + "attachment"); return error::kNoError; } if (!validators_->render_buffer_target.IsValid(renderbuffertarget)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glFramebufferRenderbuffer", renderbuffertarget, "renderbuffertarget"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferRenderbuffer", + renderbuffertarget, "renderbuffertarget"); return error::kNoError; } - DoFramebufferRenderbuffer( - target, attachment, renderbuffertarget, renderbuffer); + DoFramebufferRenderbuffer(target, attachment, renderbuffertarget, + renderbuffer); return error::kNoError; } @@ -785,13 +785,13 @@ error::Error GLES2DecoderImpl::HandleFramebufferTexture2D( return error::kNoError; } if (!validators_->attachment.IsValid(attachment)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glFramebufferTexture2D", attachment, "attachment"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferTexture2D", attachment, + "attachment"); return error::kNoError; } if (!validators_->texture_target.IsValid(textarget)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glFramebufferTexture2D", textarget, "textarget"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferTexture2D", textarget, + "textarget"); return error::kNoError; } DoFramebufferTexture2D(target, attachment, textarget, texture, level); @@ -1051,18 +1051,18 @@ error::Error GLES2DecoderImpl::HandleGetFramebufferAttachmentParameteriv( c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); GLint* params = result ? result->GetData() : NULL; if (!validators_->frame_buffer_target.IsValid(target)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glGetFramebufferAttachmentParameteriv", target, "target"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetFramebufferAttachmentParameteriv", + target, "target"); return error::kNoError; } if (!validators_->attachment.IsValid(attachment)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glGetFramebufferAttachmentParameteriv", attachment, "attachment"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetFramebufferAttachmentParameteriv", + attachment, "attachment"); return error::kNoError; } if (!validators_->frame_buffer_parameter.IsValid(pname)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glGetFramebufferAttachmentParameteriv", pname, "pname"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetFramebufferAttachmentParameteriv", + pname, "pname"); return error::kNoError; } if (params == NULL) { @@ -1167,13 +1167,13 @@ error::Error GLES2DecoderImpl::HandleGetRenderbufferParameteriv( c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); GLint* params = result ? result->GetData() : NULL; if (!validators_->render_buffer_target.IsValid(target)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glGetRenderbufferParameteriv", target, "target"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetRenderbufferParameteriv", target, + "target"); return error::kNoError; } if (!validators_->render_buffer_parameter.IsValid(pname)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glGetRenderbufferParameteriv", pname, "pname"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetRenderbufferParameteriv", pname, + "pname"); return error::kNoError; } if (params == NULL) { @@ -1599,8 +1599,8 @@ error::Error GLES2DecoderImpl::HandleRenderbufferStorage( return error::kNoError; } if (!validators_->render_buffer_format.IsValid(internalformat)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glRenderbufferStorage", internalformat, "internalformat"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glRenderbufferStorage", internalformat, + "internalformat"); return error::kNoError; } if (width < 0) { @@ -2549,8 +2549,7 @@ error::Error GLES2DecoderImpl::HandleBlitFramebufferCHROMIUM( *static_cast(cmd_data); (void)c; if (!features().chromium_framebuffer_multisample) { - LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, - "glBlitFramebufferCHROMIUM", + LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glBlitFramebufferCHROMIUM", "function not available"); return error::kNoError; } @@ -2573,12 +2572,12 @@ error::Error GLES2DecoderImpl::HandleBlitFramebufferCHROMIUM( GLbitfield mask = static_cast(c.mask); GLenum filter = static_cast(c.filter); if (!validators_->blit_filter.IsValid(filter)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glBlitFramebufferCHROMIUM", filter, "filter"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glBlitFramebufferCHROMIUM", filter, + "filter"); return error::kNoError; } - DoBlitFramebufferCHROMIUM( - srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + DoBlitFramebufferCHROMIUM(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, + dstY1, mask, filter); return error::kNoError; } @@ -2602,8 +2601,8 @@ error::Error GLES2DecoderImpl::HandleRenderbufferStorageMultisampleCHROMIUM( GLsizei width = static_cast(c.width); GLsizei height = static_cast(c.height); if (!validators_->render_buffer_target.IsValid(target)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glRenderbufferStorageMultisampleCHROMIUM", target, "target"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glRenderbufferStorageMultisampleCHROMIUM", + target, "target"); return error::kNoError; } if (samples < 0) { @@ -2614,14 +2613,12 @@ error::Error GLES2DecoderImpl::HandleRenderbufferStorageMultisampleCHROMIUM( } if (!validators_->render_buffer_format.IsValid(internalformat)) { LOCAL_SET_GL_ERROR_INVALID_ENUM("glRenderbufferStorageMultisampleCHROMIUM", - internalformat, - "internalformat"); + internalformat, "internalformat"); return error::kNoError; } if (width < 0) { LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, - "glRenderbufferStorageMultisampleCHROMIUM", - "width < 0"); + "glRenderbufferStorageMultisampleCHROMIUM", "width < 0"); return error::kNoError; } if (height < 0) { @@ -2630,8 +2627,8 @@ error::Error GLES2DecoderImpl::HandleRenderbufferStorageMultisampleCHROMIUM( "height < 0"); return error::kNoError; } - DoRenderbufferStorageMultisampleCHROMIUM( - target, samples, internalformat, width, height); + DoRenderbufferStorageMultisampleCHROMIUM(target, samples, internalformat, + width, height); return error::kNoError; } @@ -2655,33 +2652,32 @@ error::Error GLES2DecoderImpl::HandleRenderbufferStorageMultisampleEXT( GLsizei width = static_cast(c.width); GLsizei height = static_cast(c.height); if (!validators_->render_buffer_target.IsValid(target)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glRenderbufferStorageMultisampleEXT", target, "target"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glRenderbufferStorageMultisampleEXT", + target, "target"); return error::kNoError; } if (samples < 0) { - LOCAL_SET_GL_ERROR( - GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "samples < 0"); + LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", + "samples < 0"); return error::kNoError; } if (!validators_->render_buffer_format.IsValid(internalformat)) { LOCAL_SET_GL_ERROR_INVALID_ENUM("glRenderbufferStorageMultisampleEXT", - internalformat, - "internalformat"); + internalformat, "internalformat"); return error::kNoError; } if (width < 0) { - LOCAL_SET_GL_ERROR( - GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "width < 0"); + LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", + "width < 0"); return error::kNoError; } if (height < 0) { - LOCAL_SET_GL_ERROR( - GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "height < 0"); + LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", + "height < 0"); return error::kNoError; } - DoRenderbufferStorageMultisampleEXT( - target, samples, internalformat, width, height); + DoRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, + height); return error::kNoError; } @@ -2706,28 +2702,27 @@ error::Error GLES2DecoderImpl::HandleFramebufferTexture2DMultisampleEXT( GLint level = static_cast(c.level); GLsizei samples = static_cast(c.samples); if (!validators_->frame_buffer_target.IsValid(target)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glFramebufferTexture2DMultisampleEXT", target, "target"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferTexture2DMultisampleEXT", + target, "target"); return error::kNoError; } if (!validators_->attachment.IsValid(attachment)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glFramebufferTexture2DMultisampleEXT", attachment, "attachment"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferTexture2DMultisampleEXT", + attachment, "attachment"); return error::kNoError; } if (!validators_->texture_target.IsValid(textarget)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glFramebufferTexture2DMultisampleEXT", textarget, "textarget"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferTexture2DMultisampleEXT", + textarget, "textarget"); return error::kNoError; } if (samples < 0) { - LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, - "glFramebufferTexture2DMultisampleEXT", + LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glFramebufferTexture2DMultisampleEXT", "samples < 0"); return error::kNoError; } - DoFramebufferTexture2DMultisample( - target, attachment, textarget, texture, level, samples); + DoFramebufferTexture2DMultisample(target, attachment, textarget, texture, + level, samples); return error::kNoError; } @@ -2751,8 +2746,8 @@ error::Error GLES2DecoderImpl::HandleTexStorage2DEXT( return error::kNoError; } if (!validators_->texture_internal_format_storage.IsValid(internalFormat)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glTexStorage2DEXT", internalFormat, "internalFormat"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexStorage2DEXT", internalFormat, + "internalFormat"); return error::kNoError; } if (width < 0) { @@ -2956,13 +2951,13 @@ error::Error GLES2DecoderImpl::HandleGetMaxValueInBufferCHROMIUM( return error::kOutOfBounds; } if (count < 0) { - LOCAL_SET_GL_ERROR( - GL_INVALID_VALUE, "glGetMaxValueInBufferCHROMIUM", "count < 0"); + LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glGetMaxValueInBufferCHROMIUM", + "count < 0"); return error::kNoError; } if (!validators_->get_max_index_type.IsValid(type)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glGetMaxValueInBufferCHROMIUM", type, "type"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetMaxValueInBufferCHROMIUM", type, + "type"); return error::kNoError; } *result_dst = DoGetMaxValueInBufferCHROMIUM(buffer_id, count, type, offset); @@ -2981,18 +2976,18 @@ error::Error GLES2DecoderImpl::HandleTexImageIOSurface2DCHROMIUM( GLuint ioSurfaceId = static_cast(c.ioSurfaceId); GLuint plane = static_cast(c.plane); if (!validators_->texture_bind_target.IsValid(target)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glTexImageIOSurface2DCHROMIUM", target, "target"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexImageIOSurface2DCHROMIUM", target, + "target"); return error::kNoError; } if (width < 0) { - LOCAL_SET_GL_ERROR( - GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "width < 0"); + LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", + "width < 0"); return error::kNoError; } if (height < 0) { - LOCAL_SET_GL_ERROR( - GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "height < 0"); + LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", + "height < 0"); return error::kNoError; } DoTexImageIOSurface2DCHROMIUM(target, width, height, ioSurfaceId, plane); @@ -3012,18 +3007,17 @@ error::Error GLES2DecoderImpl::HandleCopyTextureCHROMIUM( GLint internalformat = static_cast(c.internalformat); GLenum dest_type = static_cast(c.dest_type); if (!validators_->texture_internal_format.IsValid(internalformat)) { - LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, - "glCopyTextureCHROMIUM", + LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCopyTextureCHROMIUM", "internalformat GL_INVALID_VALUE"); return error::kNoError; } if (!validators_->pixel_type.IsValid(dest_type)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glCopyTextureCHROMIUM", dest_type, "dest_type"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glCopyTextureCHROMIUM", dest_type, + "dest_type"); return error::kNoError; } - DoCopyTextureCHROMIUM( - target, source_id, dest_id, level, internalformat, dest_type); + DoCopyTextureCHROMIUM(target, source_id, dest_id, level, internalformat, + dest_type); return error::kNoError; } @@ -3045,8 +3039,8 @@ error::Error GLES2DecoderImpl::HandleProduceTextureCHROMIUMImmediate( const GLbyte* mailbox = GetImmediateDataAs(c, data_size, immediate_data_size); if (!validators_->texture_bind_target.IsValid(target)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glProduceTextureCHROMIUM", target, "target"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glProduceTextureCHROMIUM", target, + "target"); return error::kNoError; } if (mailbox == NULL) { @@ -3075,8 +3069,8 @@ error::Error GLES2DecoderImpl::HandleProduceTextureDirectCHROMIUMImmediate( const GLbyte* mailbox = GetImmediateDataAs(c, data_size, immediate_data_size); if (!validators_->texture_bind_target.IsValid(target)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glProduceTextureDirectCHROMIUM", target, "target"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glProduceTextureDirectCHROMIUM", target, + "target"); return error::kNoError; } if (mailbox == NULL) { @@ -3104,8 +3098,8 @@ error::Error GLES2DecoderImpl::HandleConsumeTextureCHROMIUMImmediate( const GLbyte* mailbox = GetImmediateDataAs(c, data_size, immediate_data_size); if (!validators_->texture_bind_target.IsValid(target)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glConsumeTextureCHROMIUM", target, "target"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glConsumeTextureCHROMIUM", target, + "target"); return error::kNoError; } if (mailbox == NULL) { @@ -3115,6 +3109,146 @@ error::Error GLES2DecoderImpl::HandleConsumeTextureCHROMIUMImmediate( return error::kNoError; } +error::Error GLES2DecoderImpl::HandleGenValuebuffersCHROMIUMImmediate( + uint32_t immediate_data_size, + const void* cmd_data) { + const gles2::cmds::GenValuebuffersCHROMIUMImmediate& c = + *static_cast( + cmd_data); + (void)c; + GLsizei n = static_cast(c.n); + uint32_t data_size; + if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { + return error::kOutOfBounds; + } + GLuint* buffers = + GetImmediateDataAs(c, data_size, immediate_data_size); + if (buffers == NULL) { + return error::kOutOfBounds; + } + if (!GenValuebuffersCHROMIUMHelper(n, buffers)) { + return error::kInvalidArguments; + } + return error::kNoError; +} + +error::Error GLES2DecoderImpl::HandleDeleteValuebuffersCHROMIUMImmediate( + uint32_t immediate_data_size, + const void* cmd_data) { + const gles2::cmds::DeleteValuebuffersCHROMIUMImmediate& c = + *static_cast( + cmd_data); + (void)c; + GLsizei n = static_cast(c.n); + uint32_t data_size; + if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { + return error::kOutOfBounds; + } + const GLuint* valuebuffers = + GetImmediateDataAs(c, data_size, immediate_data_size); + if (valuebuffers == NULL) { + return error::kOutOfBounds; + } + DeleteValuebuffersCHROMIUMHelper(n, valuebuffers); + return error::kNoError; +} + +error::Error GLES2DecoderImpl::HandleIsValuebufferCHROMIUM( + uint32_t immediate_data_size, + const void* cmd_data) { + const gles2::cmds::IsValuebufferCHROMIUM& c = + *static_cast(cmd_data); + (void)c; + GLuint valuebuffer = c.valuebuffer; + typedef cmds::IsValuebufferCHROMIUM::Result Result; + Result* result_dst = GetSharedMemoryAs( + c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); + if (!result_dst) { + return error::kOutOfBounds; + } + *result_dst = DoIsValuebufferCHROMIUM(valuebuffer); + return error::kNoError; +} + +error::Error GLES2DecoderImpl::HandleBindValuebufferCHROMIUM( + uint32_t immediate_data_size, + const void* cmd_data) { + const gles2::cmds::BindValuebufferCHROMIUM& c = + *static_cast(cmd_data); + (void)c; + GLenum target = static_cast(c.target); + GLuint valuebuffer = c.valuebuffer; + if (!validators_->value_buffer_target.IsValid(target)) { + LOCAL_SET_GL_ERROR_INVALID_ENUM("glBindValuebufferCHROMIUM", target, + "target"); + return error::kNoError; + } + DoBindValueBufferCHROMIUM(target, valuebuffer); + return error::kNoError; +} + +error::Error GLES2DecoderImpl::HandleSubscribeValueCHROMIUM( + uint32_t immediate_data_size, + const void* cmd_data) { + const gles2::cmds::SubscribeValueCHROMIUM& c = + *static_cast(cmd_data); + (void)c; + GLenum target = static_cast(c.target); + GLenum subscription = static_cast(c.subscription); + if (!validators_->value_buffer_target.IsValid(target)) { + LOCAL_SET_GL_ERROR_INVALID_ENUM("glSubscribeValueCHROMIUM", target, + "target"); + return error::kNoError; + } + if (!validators_->subscription_target.IsValid(subscription)) { + LOCAL_SET_GL_ERROR_INVALID_ENUM("glSubscribeValueCHROMIUM", subscription, + "subscription"); + return error::kNoError; + } + DoSubscribeValueCHROMIUM(target, subscription); + return error::kNoError; +} + +error::Error GLES2DecoderImpl::HandlePopulateSubscribedValuesCHROMIUM( + uint32_t immediate_data_size, + const void* cmd_data) { + const gles2::cmds::PopulateSubscribedValuesCHROMIUM& c = + *static_cast( + cmd_data); + (void)c; + GLenum target = static_cast(c.target); + if (!validators_->value_buffer_target.IsValid(target)) { + LOCAL_SET_GL_ERROR_INVALID_ENUM("glPopulateSubscribedValuesCHROMIUM", + target, "target"); + return error::kNoError; + } + DoPopulateSubscribedValuesCHROMIUM(target); + return error::kNoError; +} + +error::Error GLES2DecoderImpl::HandleUniformValuebufferCHROMIUM( + uint32_t immediate_data_size, + const void* cmd_data) { + const gles2::cmds::UniformValuebufferCHROMIUM& c = + *static_cast(cmd_data); + (void)c; + GLint location = static_cast(c.location); + GLenum target = static_cast(c.target); + GLenum subscription = static_cast(c.subscription); + if (!validators_->value_buffer_target.IsValid(target)) { + LOCAL_SET_GL_ERROR_INVALID_ENUM("glUniformValuebufferCHROMIUM", target, + "target"); + return error::kNoError; + } + if (!validators_->subscription_target.IsValid(subscription)) { + LOCAL_SET_GL_ERROR_INVALID_ENUM("glUniformValuebufferCHROMIUM", + subscription, "subscription"); + return error::kNoError; + } + DoUniformValueBufferCHROMIUM(location, target, subscription); + return error::kNoError; +} + error::Error GLES2DecoderImpl::HandleBindTexImage2DCHROMIUM( uint32_t immediate_data_size, const void* cmd_data) { @@ -3124,8 +3258,8 @@ error::Error GLES2DecoderImpl::HandleBindTexImage2DCHROMIUM( GLenum target = static_cast(c.target); GLint imageId = static_cast(c.imageId); if (!validators_->texture_bind_target.IsValid(target)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glBindTexImage2DCHROMIUM", target, "target"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glBindTexImage2DCHROMIUM", target, + "target"); return error::kNoError; } DoBindTexImage2DCHROMIUM(target, imageId); @@ -3141,8 +3275,8 @@ error::Error GLES2DecoderImpl::HandleReleaseTexImage2DCHROMIUM( GLenum target = static_cast(c.target); GLint imageId = static_cast(c.imageId); if (!validators_->texture_bind_target.IsValid(target)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glReleaseTexImage2DCHROMIUM", target, "target"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glReleaseTexImage2DCHROMIUM", target, + "target"); return error::kNoError; } DoReleaseTexImage2DCHROMIUM(target, imageId); @@ -3167,8 +3301,7 @@ error::Error GLES2DecoderImpl::HandleDiscardFramebufferEXTImmediate( cmd_data); (void)c; if (!features().ext_discard_framebuffer) { - LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, - "glDiscardFramebufferEXT", + LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glDiscardFramebufferEXT", "function not available"); return error::kNoError; } @@ -3185,8 +3318,8 @@ error::Error GLES2DecoderImpl::HandleDiscardFramebufferEXTImmediate( const GLenum* attachments = GetImmediateDataAs(c, data_size, immediate_data_size); if (count < 0) { - LOCAL_SET_GL_ERROR( - GL_INVALID_VALUE, "glDiscardFramebufferEXT", "count < 0"); + LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glDiscardFramebufferEXT", + "count < 0"); return error::kNoError; } if (attachments == NULL) { @@ -3205,8 +3338,8 @@ error::Error GLES2DecoderImpl::HandleLoseContextCHROMIUM( GLenum current = static_cast(c.current); GLenum other = static_cast(c.other); if (!validators_->reset_status.IsValid(current)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glLoseContextCHROMIUM", current, "current"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glLoseContextCHROMIUM", current, + "current"); return error::kNoError; } if (!validators_->reset_status.IsValid(other)) { @@ -3251,8 +3384,7 @@ error::Error GLES2DecoderImpl::HandleMatrixLoadfCHROMIUMImmediate( *static_cast(cmd_data); (void)c; if (!features().chromium_path_rendering) { - LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, - "glMatrixLoadfCHROMIUM", + LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glMatrixLoadfCHROMIUM", "function not available"); return error::kNoError; } @@ -3268,8 +3400,8 @@ error::Error GLES2DecoderImpl::HandleMatrixLoadfCHROMIUMImmediate( const GLfloat* m = GetImmediateDataAs(c, data_size, immediate_data_size); if (!validators_->matrix_mode.IsValid(matrixMode)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glMatrixLoadfCHROMIUM", matrixMode, "matrixMode"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glMatrixLoadfCHROMIUM", matrixMode, + "matrixMode"); return error::kNoError; } if (m == NULL) { @@ -3286,16 +3418,15 @@ error::Error GLES2DecoderImpl::HandleMatrixLoadIdentityCHROMIUM( *static_cast(cmd_data); (void)c; if (!features().chromium_path_rendering) { - LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, - "glMatrixLoadIdentityCHROMIUM", + LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glMatrixLoadIdentityCHROMIUM", "function not available"); return error::kNoError; } GLenum matrixMode = static_cast(c.matrixMode); if (!validators_->matrix_mode.IsValid(matrixMode)) { - LOCAL_SET_GL_ERROR_INVALID_ENUM( - "glMatrixLoadIdentityCHROMIUM", matrixMode, "matrixMode"); + LOCAL_SET_GL_ERROR_INVALID_ENUM("glMatrixLoadIdentityCHROMIUM", matrixMode, + "matrixMode"); return error::kNoError; } DoMatrixLoadIdentityCHROMIUM(matrixMode); @@ -3309,8 +3440,8 @@ error::Error GLES2DecoderImpl::HandleBlendBarrierKHR( *static_cast(cmd_data); (void)c; if (!features().blend_equation_advanced) { - LOCAL_SET_GL_ERROR( - GL_INVALID_OPERATION, "glBlendBarrierKHR", "function not available"); + LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glBlendBarrierKHR", + "function not available"); return error::kNoError; } diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h index b60bd3e4aa..6fe923c119 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h @@ -662,16 +662,12 @@ TEST_P(GLES2DecoderTest1, FlushValidArgs) { } TEST_P(GLES2DecoderTest1, FramebufferRenderbufferValidArgs) { - EXPECT_CALL(*gl_, - FramebufferRenderbufferEXT(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_RENDERBUFFER, - kServiceRenderbufferId)); + EXPECT_CALL(*gl_, FramebufferRenderbufferEXT( + GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, + kServiceRenderbufferId)); SpecializedSetup(true); cmds::FramebufferRenderbuffer cmd; - cmd.Init(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_RENDERBUFFER, + cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, client_renderbuffer_id_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(GL_NO_ERROR, GetGLError()); @@ -681,9 +677,7 @@ TEST_P(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs0_0) { EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0); SpecializedSetup(false); cmds::FramebufferRenderbuffer cmd; - cmd.Init(GL_DRAW_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_RENDERBUFFER, + cmd.Init(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, client_renderbuffer_id_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); @@ -693,9 +687,7 @@ TEST_P(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs0_1) { EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0); SpecializedSetup(false); cmds::FramebufferRenderbuffer cmd; - cmd.Init(GL_READ_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_RENDERBUFFER, + cmd.Init(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, client_renderbuffer_id_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); @@ -705,9 +697,7 @@ TEST_P(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs2_0) { EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0); SpecializedSetup(false); cmds::FramebufferRenderbuffer cmd; - cmd.Init(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_FRAMEBUFFER, + cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_FRAMEBUFFER, client_renderbuffer_id_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); @@ -715,15 +705,12 @@ TEST_P(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs2_0) { TEST_P(GLES2DecoderTest1, FramebufferTexture2DValidArgs) { EXPECT_CALL(*gl_, - FramebufferTexture2DEXT(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_TEXTURE_2D, - kServiceTextureId, - 0)); + FramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_TEXTURE_2D, kServiceTextureId, 0)); SpecializedSetup(true); cmds::FramebufferTexture2D cmd; - cmd.Init( - GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_); + cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, + client_texture_id_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(GL_NO_ERROR, GetGLError()); } @@ -732,9 +719,7 @@ TEST_P(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs0_0) { EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0); SpecializedSetup(false); cmds::FramebufferTexture2D cmd; - cmd.Init(GL_DRAW_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_TEXTURE_2D, + cmd.Init(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); @@ -744,9 +729,7 @@ TEST_P(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs0_1) { EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0); SpecializedSetup(false); cmds::FramebufferTexture2D cmd; - cmd.Init(GL_READ_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_TEXTURE_2D, + cmd.Init(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); @@ -756,9 +739,7 @@ TEST_P(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs2_0) { EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0); SpecializedSetup(false); cmds::FramebufferTexture2D cmd; - cmd.Init(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_PROXY_TEXTURE_CUBE_MAP, + cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_PROXY_TEXTURE_CUBE_MAP, client_texture_id_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); @@ -958,9 +939,7 @@ TEST_P(GLES2DecoderTest1, GetBufferParameterivValidArgs) { Result* result = static_cast(shared_memory_address_); result->size = 0; cmds::GetBufferParameteriv cmd; - cmd.Init(GL_ARRAY_BUFFER, - GL_BUFFER_SIZE, - shared_memory_id_, + cmd.Init(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_BUFFER_SIZE), @@ -975,9 +954,7 @@ TEST_P(GLES2DecoderTest1, GetBufferParameterivInvalidArgs0_0) { static_cast(shared_memory_address_); result->size = 0; cmds::GetBufferParameteriv cmd; - cmd.Init(GL_RENDERBUFFER, - GL_BUFFER_SIZE, - shared_memory_id_, + cmd.Init(GL_RENDERBUFFER, GL_BUFFER_SIZE, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -991,9 +968,7 @@ TEST_P(GLES2DecoderTest1, GetBufferParameterivInvalidArgs1_0) { static_cast(shared_memory_address_); result->size = 0; cmds::GetBufferParameteriv cmd; - cmd.Init(GL_ARRAY_BUFFER, - GL_PIXEL_PACK_BUFFER, - shared_memory_id_, + cmd.Init(GL_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1019,9 +994,7 @@ TEST_P(GLES2DecoderTest1, GetBufferParameterivInvalidArgs2_1) { static_cast(shared_memory_address_); result->size = 0; cmds::GetBufferParameteriv cmd; - cmd.Init(GL_ARRAY_BUFFER, - GL_BUFFER_SIZE, - shared_memory_id_, + cmd.Init(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, shared_memory_id_, kInvalidSharedMemoryOffset); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1111,16 +1084,12 @@ TEST_P(GLES2DecoderTest1, GetFramebufferAttachmentParameterivValidArgs) { Result* result = static_cast(shared_memory_address_); EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT( - GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, - result->GetData())); + GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, result->GetData())); result->size = 0; cmds::GetFramebufferAttachmentParameteriv cmd; - cmd.Init(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, - shared_memory_id_, + cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( @@ -1138,10 +1107,8 @@ TEST_P(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs0_0) { shared_memory_address_); result->size = 0; cmds::GetFramebufferAttachmentParameteriv cmd; - cmd.Init(GL_DRAW_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, - shared_memory_id_, + cmd.Init(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1157,10 +1124,8 @@ TEST_P(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs0_1) { shared_memory_address_); result->size = 0; cmds::GetFramebufferAttachmentParameteriv cmd; - cmd.Init(GL_READ_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, - shared_memory_id_, + cmd.Init(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1176,11 +1141,8 @@ TEST_P(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs3_0) { shared_memory_address_); result->size = 0; cmds::GetFramebufferAttachmentParameteriv cmd; - cmd.Init(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, - kInvalidSharedMemoryId, - 0); + cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, kInvalidSharedMemoryId, 0); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); } @@ -1194,10 +1156,8 @@ TEST_P(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs3_1) { shared_memory_address_); result->size = 0; cmds::GetFramebufferAttachmentParameteriv cmd; - cmd.Init(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, - shared_memory_id_, + cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_, kInvalidSharedMemoryOffset); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1264,9 +1224,7 @@ TEST_P(GLES2DecoderTest1, GetProgramivValidArgs) { Result* result = static_cast(shared_memory_address_); result->size = 0; cmds::GetProgramiv cmd; - cmd.Init(client_program_id_, - GL_DELETE_STATUS, - shared_memory_id_, + cmd.Init(client_program_id_, GL_DELETE_STATUS, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DELETE_STATUS), @@ -1293,9 +1251,7 @@ TEST_P(GLES2DecoderTest1, GetProgramivInvalidArgs2_1) { static_cast(shared_memory_address_); result->size = 0; cmds::GetProgramiv cmd; - cmd.Init(client_program_id_, - GL_DELETE_STATUS, - shared_memory_id_, + cmd.Init(client_program_id_, GL_DELETE_STATUS, shared_memory_id_, kInvalidSharedMemoryOffset); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1334,14 +1290,11 @@ TEST_P(GLES2DecoderTest1, GetRenderbufferParameterivValidArgs) { typedef cmds::GetRenderbufferParameteriv::Result Result; Result* result = static_cast(shared_memory_address_); EXPECT_CALL( - *gl_, - GetRenderbufferParameterivEXT( - GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, result->GetData())); + *gl_, GetRenderbufferParameterivEXT( + GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, result->GetData())); result->size = 0; cmds::GetRenderbufferParameteriv cmd; - cmd.Init(GL_RENDERBUFFER, - GL_RENDERBUFFER_RED_SIZE, - shared_memory_id_, + cmd.Init(GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( @@ -1358,9 +1311,7 @@ TEST_P(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs0_0) { shared_memory_address_); result->size = 0; cmds::GetRenderbufferParameteriv cmd; - cmd.Init(GL_FRAMEBUFFER, - GL_RENDERBUFFER_RED_SIZE, - shared_memory_id_, + cmd.Init(GL_FRAMEBUFFER, GL_RENDERBUFFER_RED_SIZE, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1375,8 +1326,8 @@ TEST_P(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs2_0) { shared_memory_address_); result->size = 0; cmds::GetRenderbufferParameteriv cmd; - cmd.Init( - GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, kInvalidSharedMemoryId, 0); + cmd.Init(GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, kInvalidSharedMemoryId, + 0); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); } @@ -1389,9 +1340,7 @@ TEST_P(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs2_1) { shared_memory_address_); result->size = 0; cmds::GetRenderbufferParameteriv cmd; - cmd.Init(GL_RENDERBUFFER, - GL_RENDERBUFFER_RED_SIZE, - shared_memory_id_, + cmd.Init(GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, shared_memory_id_, kInvalidSharedMemoryOffset); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1409,9 +1358,7 @@ TEST_P(GLES2DecoderTest1, GetShaderivValidArgs) { GetShaderiv(kServiceShaderId, GL_SHADER_TYPE, result->GetData())); result->size = 0; cmds::GetShaderiv cmd; - cmd.Init(client_shader_id_, - GL_SHADER_TYPE, - shared_memory_id_, + cmd.Init(client_shader_id_, GL_SHADER_TYPE, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_SHADER_TYPE), @@ -1438,9 +1385,7 @@ TEST_P(GLES2DecoderTest1, GetShaderivInvalidArgs2_1) { static_cast(shared_memory_address_); result->size = 0; cmds::GetShaderiv cmd; - cmd.Init(client_shader_id_, - GL_SHADER_TYPE, - shared_memory_id_, + cmd.Init(client_shader_id_, GL_SHADER_TYPE, shared_memory_id_, kInvalidSharedMemoryOffset); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1459,14 +1404,11 @@ TEST_P(GLES2DecoderTest1, GetTexParameterfvValidArgs) { SpecializedSetup(true); typedef cmds::GetTexParameterfv::Result Result; Result* result = static_cast(shared_memory_address_); - EXPECT_CALL(*gl_, - GetTexParameterfv( - GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, result->GetData())); + EXPECT_CALL(*gl_, GetTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, + result->GetData())); result->size = 0; cmds::GetTexParameterfv cmd; - cmd.Init(GL_TEXTURE_2D, - GL_TEXTURE_MAG_FILTER, - shared_memory_id_, + cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ( @@ -1482,9 +1424,7 @@ TEST_P(GLES2DecoderTest1, GetTexParameterfvInvalidArgs0_0) { static_cast(shared_memory_address_); result->size = 0; cmds::GetTexParameterfv cmd; - cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, - GL_TEXTURE_MAG_FILTER, - shared_memory_id_, + cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1498,9 +1438,7 @@ TEST_P(GLES2DecoderTest1, GetTexParameterfvInvalidArgs1_0) { static_cast(shared_memory_address_); result->size = 0; cmds::GetTexParameterfv cmd; - cmd.Init(GL_TEXTURE_2D, - GL_GENERATE_MIPMAP, - shared_memory_id_, + cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1526,9 +1464,7 @@ TEST_P(GLES2DecoderTest1, GetTexParameterfvInvalidArgs2_1) { static_cast(shared_memory_address_); result->size = 0; cmds::GetTexParameterfv cmd; - cmd.Init(GL_TEXTURE_2D, - GL_TEXTURE_MAG_FILTER, - shared_memory_id_, + cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_, kInvalidSharedMemoryOffset); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1542,14 +1478,11 @@ TEST_P(GLES2DecoderTest1, GetTexParameterivValidArgs) { SpecializedSetup(true); typedef cmds::GetTexParameteriv::Result Result; Result* result = static_cast(shared_memory_address_); - EXPECT_CALL(*gl_, - GetTexParameteriv( - GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, result->GetData())); + EXPECT_CALL(*gl_, GetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, + result->GetData())); result->size = 0; cmds::GetTexParameteriv cmd; - cmd.Init(GL_TEXTURE_2D, - GL_TEXTURE_MAG_FILTER, - shared_memory_id_, + cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ( @@ -1565,9 +1498,7 @@ TEST_P(GLES2DecoderTest1, GetTexParameterivInvalidArgs0_0) { static_cast(shared_memory_address_); result->size = 0; cmds::GetTexParameteriv cmd; - cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, - GL_TEXTURE_MAG_FILTER, - shared_memory_id_, + cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1581,9 +1512,7 @@ TEST_P(GLES2DecoderTest1, GetTexParameterivInvalidArgs1_0) { static_cast(shared_memory_address_); result->size = 0; cmds::GetTexParameteriv cmd; - cmd.Init(GL_TEXTURE_2D, - GL_GENERATE_MIPMAP, - shared_memory_id_, + cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1609,9 +1538,7 @@ TEST_P(GLES2DecoderTest1, GetTexParameterivInvalidArgs2_1) { static_cast(shared_memory_address_); result->size = 0; cmds::GetTexParameteriv cmd; - cmd.Init(GL_TEXTURE_2D, - GL_TEXTURE_MAG_FILTER, - shared_memory_id_, + cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_, kInvalidSharedMemoryOffset); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1628,9 +1555,7 @@ TEST_P(GLES2DecoderTest1, GetVertexAttribfvValidArgs) { Result* result = static_cast(shared_memory_address_); result->size = 0; cmds::GetVertexAttribfv cmd; - cmd.Init(1, - GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, - shared_memory_id_, + cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( @@ -1658,9 +1583,7 @@ TEST_P(GLES2DecoderTest1, GetVertexAttribfvInvalidArgs2_1) { static_cast(shared_memory_address_); result->size = 0; cmds::GetVertexAttribfv cmd; - cmd.Init(1, - GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, - shared_memory_id_, + cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_, kInvalidSharedMemoryOffset); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1672,9 +1595,7 @@ TEST_P(GLES2DecoderTest1, GetVertexAttribivValidArgs) { Result* result = static_cast(shared_memory_address_); result->size = 0; cmds::GetVertexAttribiv cmd; - cmd.Init(1, - GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, - shared_memory_id_, + cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_, shared_memory_offset_); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( @@ -1702,9 +1623,7 @@ TEST_P(GLES2DecoderTest1, GetVertexAttribivInvalidArgs2_1) { static_cast(shared_memory_address_); result->size = 0; cmds::GetVertexAttribiv cmd; - cmd.Init(1, - GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, - shared_memory_id_, + cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_, kInvalidSharedMemoryOffset); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); EXPECT_EQ(0u, result->size); @@ -1792,11 +1711,11 @@ TEST_P(GLES2DecoderTest1, IsFramebufferValidArgs) { TEST_P(GLES2DecoderTest1, IsFramebufferInvalidArgsBadSharedMemoryId) { SpecializedSetup(false); cmds::IsFramebuffer cmd; - cmd.Init( - client_framebuffer_id_, kInvalidSharedMemoryId, shared_memory_offset_); + cmd.Init(client_framebuffer_id_, kInvalidSharedMemoryId, + shared_memory_offset_); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); - cmd.Init( - client_framebuffer_id_, shared_memory_id_, kInvalidSharedMemoryOffset); + cmd.Init(client_framebuffer_id_, shared_memory_id_, + kInvalidSharedMemoryOffset); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); } @@ -1828,11 +1747,11 @@ TEST_P(GLES2DecoderTest1, IsRenderbufferValidArgs) { TEST_P(GLES2DecoderTest1, IsRenderbufferInvalidArgsBadSharedMemoryId) { SpecializedSetup(false); cmds::IsRenderbuffer cmd; - cmd.Init( - client_renderbuffer_id_, kInvalidSharedMemoryId, shared_memory_offset_); + cmd.Init(client_renderbuffer_id_, kInvalidSharedMemoryId, + shared_memory_offset_); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); - cmd.Init( - client_renderbuffer_id_, shared_memory_id_, kInvalidSharedMemoryOffset); + cmd.Init(client_renderbuffer_id_, shared_memory_id_, + kInvalidSharedMemoryOffset); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); } diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h index 95c2027cda..40003f8614 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h @@ -142,8 +142,7 @@ TEST_P(GLES2DecoderTest2, TexParameterfvImmediateValidArgs) { cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]); EXPECT_CALL( *gl_, - TexParameterf(GL_TEXTURE_2D, - GL_TEXTURE_MAG_FILTER, + TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, *reinterpret_cast(ImmediateDataAddress(&cmd)))); EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); EXPECT_EQ(GL_NO_ERROR, GetGLError()); @@ -233,11 +232,9 @@ TEST_P(GLES2DecoderTest2, TexParameterivImmediateValidArgs) { GL_NEAREST, }; cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]); - EXPECT_CALL( - *gl_, - TexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_MAG_FILTER, - *reinterpret_cast(ImmediateDataAddress(&cmd)))); + EXPECT_CALL(*gl_, TexParameteri( + GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, + *reinterpret_cast(ImmediateDataAddress(&cmd)))); EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); EXPECT_EQ(GL_NO_ERROR, GetGLError()); } @@ -448,10 +445,9 @@ TEST_P(GLES2DecoderTest2, Uniform4ivImmediateValidArgs) { TEST_P(GLES2DecoderTest2, UniformMatrix2fvImmediateValidArgs) { cmds::UniformMatrix2fvImmediate& cmd = *GetImmediateAs(); - EXPECT_CALL( - *gl_, - UniformMatrix2fv( - 1, 2, false, reinterpret_cast(ImmediateDataAddress(&cmd)))); + EXPECT_CALL(*gl_, + UniformMatrix2fv(1, 2, false, reinterpret_cast( + ImmediateDataAddress(&cmd)))); SpecializedSetup(true); GLfloat temp[4 * 2] = { 0, @@ -464,10 +460,9 @@ TEST_P(GLES2DecoderTest2, UniformMatrix2fvImmediateValidArgs) { TEST_P(GLES2DecoderTest2, UniformMatrix3fvImmediateValidArgs) { cmds::UniformMatrix3fvImmediate& cmd = *GetImmediateAs(); - EXPECT_CALL( - *gl_, - UniformMatrix3fv( - 1, 2, false, reinterpret_cast(ImmediateDataAddress(&cmd)))); + EXPECT_CALL(*gl_, + UniformMatrix3fv(1, 2, false, reinterpret_cast( + ImmediateDataAddress(&cmd)))); SpecializedSetup(true); GLfloat temp[9 * 2] = { 0, @@ -480,10 +475,9 @@ TEST_P(GLES2DecoderTest2, UniformMatrix3fvImmediateValidArgs) { TEST_P(GLES2DecoderTest2, UniformMatrix4fvImmediateValidArgs) { cmds::UniformMatrix4fvImmediate& cmd = *GetImmediateAs(); - EXPECT_CALL( - *gl_, - UniformMatrix4fv( - 1, 2, false, reinterpret_cast(ImmediateDataAddress(&cmd)))); + EXPECT_CALL(*gl_, + UniformMatrix4fv(1, 2, false, reinterpret_cast( + ImmediateDataAddress(&cmd)))); SpecializedSetup(true); GLfloat temp[16 * 2] = { 0, @@ -537,9 +531,8 @@ TEST_P(GLES2DecoderTest2, VertexAttrib1fvImmediateValidArgs) { 0, }; cmd.Init(1, &temp[0]); - EXPECT_CALL(*gl_, - VertexAttrib1fv( - 1, reinterpret_cast(ImmediateDataAddress(&cmd)))); + EXPECT_CALL(*gl_, VertexAttrib1fv(1, reinterpret_cast( + ImmediateDataAddress(&cmd)))); EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); EXPECT_EQ(GL_NO_ERROR, GetGLError()); } @@ -561,9 +554,8 @@ TEST_P(GLES2DecoderTest2, VertexAttrib2fvImmediateValidArgs) { 0, }; cmd.Init(1, &temp[0]); - EXPECT_CALL(*gl_, - VertexAttrib2fv( - 1, reinterpret_cast(ImmediateDataAddress(&cmd)))); + EXPECT_CALL(*gl_, VertexAttrib2fv(1, reinterpret_cast( + ImmediateDataAddress(&cmd)))); EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); EXPECT_EQ(GL_NO_ERROR, GetGLError()); } @@ -585,9 +577,8 @@ TEST_P(GLES2DecoderTest2, VertexAttrib3fvImmediateValidArgs) { 0, }; cmd.Init(1, &temp[0]); - EXPECT_CALL(*gl_, - VertexAttrib3fv( - 1, reinterpret_cast(ImmediateDataAddress(&cmd)))); + EXPECT_CALL(*gl_, VertexAttrib3fv(1, reinterpret_cast( + ImmediateDataAddress(&cmd)))); EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); EXPECT_EQ(GL_NO_ERROR, GetGLError()); } @@ -609,9 +600,8 @@ TEST_P(GLES2DecoderTest2, VertexAttrib4fvImmediateValidArgs) { 0, }; cmd.Init(1, &temp[0]); - EXPECT_CALL(*gl_, - VertexAttrib4fv( - 1, reinterpret_cast(ImmediateDataAddress(&cmd)))); + EXPECT_CALL(*gl_, VertexAttrib4fv(1, reinterpret_cast( + ImmediateDataAddress(&cmd)))); EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); EXPECT_EQ(GL_NO_ERROR, GetGLError()); } @@ -692,6 +682,31 @@ TEST_P(GLES2DecoderTest2, PopGroupMarkerEXTValidArgs) { // TODO(gman): ConsumeTextureCHROMIUMImmediate // TODO(gman): CreateAndConsumeTextureCHROMIUMImmediate // TODO(gman): BindUniformLocationCHROMIUMBucket +// TODO(gman): GenValuebuffersCHROMIUMImmediate +// TODO(gman): DeleteValuebuffersCHROMIUMImmediate + +TEST_P(GLES2DecoderTest2, IsValuebufferCHROMIUMValidArgs) { + SpecializedSetup(true); + cmds::IsValuebufferCHROMIUM cmd; + cmd.Init(client_valuebuffer_id_, shared_memory_id_, shared_memory_offset_); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); + EXPECT_EQ(GL_NO_ERROR, GetGLError()); +} + +TEST_P(GLES2DecoderTest2, IsValuebufferCHROMIUMInvalidArgsBadSharedMemoryId) { + SpecializedSetup(false); + cmds::IsValuebufferCHROMIUM cmd; + cmd.Init(client_valuebuffer_id_, kInvalidSharedMemoryId, + shared_memory_offset_); + EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); + cmd.Init(client_valuebuffer_id_, shared_memory_id_, + kInvalidSharedMemoryOffset); + EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); +} +// TODO(gman): BindValuebufferCHROMIUM +// TODO(gman): SubscribeValueCHROMIUM +// TODO(gman): PopulateSubscribedValuesCHROMIUM +// TODO(gman): UniformValuebufferCHROMIUM // TODO(gman): BindTexImage2DCHROMIUM // TODO(gman): ReleaseTexImage2DCHROMIUM // TODO(gman): TraceBeginCHROMIUM @@ -705,13 +720,4 @@ TEST_P(GLES2DecoderTest2, PopGroupMarkerEXTValidArgs) { // TODO(gman): WaitAllAsyncTexImage2DCHROMIUM -// TODO(gman): LoseContextCHROMIUM -// TODO(gman): InsertSyncPointCHROMIUM - -// TODO(gman): WaitSyncPointCHROMIUM - -// TODO(gman): DrawBuffersEXTImmediate -// TODO(gman): DiscardBackbufferCHROMIUM - -// TODO(gman): ScheduleOverlayPlaneCHROMIUM #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_ diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h index 7e93f362c7..1c98b68da6 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h @@ -12,4 +12,13 @@ #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_3_AUTOGEN_H_ #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_3_AUTOGEN_H_ +// TODO(gman): LoseContextCHROMIUM +// TODO(gman): InsertSyncPointCHROMIUM + +// TODO(gman): WaitSyncPointCHROMIUM + +// TODO(gman): DrawBuffersEXTImmediate +// TODO(gman): DiscardBackbufferCHROMIUM + +// TODO(gman): ScheduleOverlayPlaneCHROMIUM #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_3_AUTOGEN_H_ diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc index 136834d1f9..36afe38576 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc @@ -96,6 +96,7 @@ GLES2DecoderTestBase::GLES2DecoderTestBase() client_fragment_shader_id_(122), client_query_id_(123), client_vertexarray_id_(124), + client_valuebuffer_id_(125), service_renderbuffer_id_(0), service_renderbuffer_valid_(false), ignore_cached_state_for_test_(GetParam()), diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h index 1507440a61..1a2b54a3a0 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h @@ -19,6 +19,7 @@ #include "gpu/command_buffer/service/shader_manager.h" #include "gpu/command_buffer/service/test_helper.h" #include "gpu/command_buffer/service/texture_manager.h" +#include "gpu/command_buffer/service/valuebuffer_manager.h" #include "gpu/command_buffer/service/vertex_array_manager.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/gl/gl_context_stub_with_extensions.h" @@ -122,6 +123,10 @@ class GLES2DecoderTestBase : public ::testing::TestWithParam { return group_->program_manager()->GetProgram(client_id); } + Valuebuffer* GetValuebuffer(GLuint client_id) { + return group_->valuebuffer_manager()->GetValuebuffer(client_id); + } + QueryManager::Query* GetQueryInfo(GLuint client_id) { return decoder_->GetQueryManager()->GetQuery(client_id); } @@ -136,6 +141,10 @@ class GLES2DecoderTestBase : public ::testing::TestWithParam { return group_->program_manager(); } + ValuebufferManager* valuebuffer_manager() { + return group_->valuebuffer_manager(); + } + ImageManager* GetImageManager() { return decoder_->GetImageManager(); } void DoCreateProgram(GLuint client_id, GLuint service_id); @@ -514,6 +523,7 @@ class GLES2DecoderTestBase : public ::testing::TestWithParam { GLuint client_fragment_shader_id_; GLuint client_query_id_; GLuint client_vertexarray_id_; + GLuint client_valuebuffer_id_; uint32 shared_memory_id_; uint32 shared_memory_offset_; diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_valuebuffer.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_valuebuffer.cc new file mode 100644 index 0000000000..012d504175 --- /dev/null +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_valuebuffer.cc @@ -0,0 +1,130 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "gpu/command_buffer/service/gles2_cmd_decoder.h" + +#include "base/command_line.h" +#include "gpu/command_buffer/common/gles2_cmd_format.h" +#include "gpu/command_buffer/common/gles2_cmd_utils.h" +#include "gpu/command_buffer/service/gles2_cmd_decoder_unittest.h" + +#include "gpu/command_buffer/service/test_helper.h" +#include "gpu/command_buffer/service/valuebuffer_manager.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "ui/gl/gl_implementation.h" +#include "ui/gl/gl_mock.h" +#include "ui/gl/gl_surface_stub.h" + +using ::gfx::MockGLInterface; +using ::testing::_; + +namespace gpu { +namespace gles2 { + +using namespace cmds; + +TEST_P(GLES2DecoderWithShaderTest, ValuebufferBasic) { + const uint32 kBufferId = 123; + ValueState valuestate; + valuestate.int_value[0] = 111; + valuestate.int_value[1] = 222; + valuebuffer_manager()->CreateValuebuffer(kBufferId); + valuebuffer_manager()->UpdateValueState( + GL_MOUSE_POSITION_CHROMIUM, valuestate); + BindValuebufferCHROMIUM cmd1; + cmd1.Init(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, kBufferId); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); + SubscribeValueCHROMIUM cmd2; + cmd2.Init(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, GL_MOUSE_POSITION_CHROMIUM); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); + PopulateSubscribedValuesCHROMIUM cmd3; + cmd3.Init(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd3)); + EXPECT_CALL(*gl_, Uniform2iv(kUniform2RealLocation, 1, _)).Times(1); + UniformValuebufferCHROMIUM cmd4; + cmd4.Init(kUniform2FakeLocation, GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, + GL_MOUSE_POSITION_CHROMIUM); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd4)); +} + +TEST_P(GLES2DecoderWithShaderTest, SubscribeValuebufferNotBound) { + const uint32 kBufferId = 123; + ValueState valuestate; + valuestate.int_value[0] = 111; + valuestate.int_value[1] = 222; + valuebuffer_manager()->CreateValuebuffer(kBufferId); + valuebuffer_manager()->UpdateValueState( + GL_MOUSE_POSITION_CHROMIUM, valuestate); + SubscribeValueCHROMIUM cmd1; + cmd1.Init(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, GL_MOUSE_POSITION_CHROMIUM); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); + EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); +} + +TEST_P(GLES2DecoderWithShaderTest, PopulateValuebufferNoSubscription) { + const uint32 kBufferId = 123; + ValueState valuestate; + valuestate.int_value[0] = 111; + valuestate.int_value[1] = 222; + valuebuffer_manager()->CreateValuebuffer(kBufferId); + valuebuffer_manager()->UpdateValueState( + GL_MOUSE_POSITION_CHROMIUM, valuestate); + BindValuebufferCHROMIUM cmd1; + cmd1.Init(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, kBufferId); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); + PopulateSubscribedValuesCHROMIUM cmd2; + cmd2.Init(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); + EXPECT_EQ(GL_NONE, GetGLError()); +} + +TEST_P(GLES2DecoderWithShaderTest, UniformValuebufferNoState) { + const uint32 kBufferId = 123; + ValueState valuestate; + valuestate.int_value[0] = 111; + valuestate.int_value[1] = 222; + valuebuffer_manager()->CreateValuebuffer(kBufferId); + valuebuffer_manager()->UpdateValueState( + GL_MOUSE_POSITION_CHROMIUM, valuestate); + BindValuebufferCHROMIUM cmd1; + cmd1.Init(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, kBufferId); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); + SubscribeValueCHROMIUM cmd2; + cmd2.Init(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, GL_MOUSE_POSITION_CHROMIUM); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); + EXPECT_CALL(*gl_, Uniform2iv(kUniform2RealLocation, 1, _)).Times(0); + UniformValuebufferCHROMIUM cmd3; + cmd3.Init(kUniform2FakeLocation, GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, + GL_MOUSE_POSITION_CHROMIUM); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd3)); + EXPECT_EQ(GL_NONE, GetGLError()); +} + +TEST_P(GLES2DecoderWithShaderTest, UniformValuebufferInvalidLocation) { + const uint32 kBufferId = 123; + ValueState valuestate; + valuestate.int_value[0] = 111; + valuestate.int_value[1] = 222; + valuebuffer_manager()->CreateValuebuffer(kBufferId); + valuebuffer_manager()->UpdateValueState( + GL_MOUSE_POSITION_CHROMIUM, valuestate); + BindValuebufferCHROMIUM cmd1; + cmd1.Init(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, kBufferId); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); + SubscribeValueCHROMIUM cmd2; + cmd2.Init(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, GL_MOUSE_POSITION_CHROMIUM); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); + PopulateSubscribedValuesCHROMIUM cmd3; + cmd3.Init(GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd3)); + EXPECT_CALL(*gl_, Uniform2iv(kUniform2RealLocation, 1, _)).Times(0); + UniformValuebufferCHROMIUM cmd4; + cmd4.Init(kUniform1FakeLocation, GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, + GL_MOUSE_POSITION_CHROMIUM); + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd4)); + EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); +} + +} // namespace gles2 +} // namespace gpu diff --git a/gpu/command_buffer/service/gles2_cmd_validation_autogen.h b/gpu/command_buffer/service/gles2_cmd_validation_autogen.h index de840375df..c72bcf8183 100644 --- a/gpu/command_buffer/service/gles2_cmd_validation_autogen.h +++ b/gpu/command_buffer/service/gles2_cmd_validation_autogen.h @@ -56,6 +56,7 @@ ValueValidator shader_type; ValueValidator src_blend_factor; ValueValidator stencil_op; ValueValidator string_type; +ValueValidator subscription_target; ValueValidator texture_bind_target; ValueValidator texture_format; ValueValidator texture_internal_format; @@ -67,6 +68,7 @@ ValueValidator texture_pool; ValueValidator texture_target; ValueValidator texture_usage; ValueValidator texture_wrap_mode; +ValueValidator value_buffer_target; ValueValidator vertex_attrib_size; ValueValidator vertex_attrib_type; ValueValidator vertex_attribute; diff --git a/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h b/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h index 790b9b3edb..6a646ac506 100644 --- a/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h +++ b/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h @@ -413,6 +413,10 @@ static const GLenum valid_string_type_table[] = { GL_EXTENSIONS, }; +static const GLenum valid_subscription_target_table[] = { + GL_MOUSE_POSITION_CHROMIUM, +}; + static const GLenum valid_texture_bind_target_table[] = { GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP, @@ -493,6 +497,10 @@ static const GLenum valid_texture_wrap_mode_table[] = { GL_REPEAT, }; +static const GLenum valid_value_buffer_target_table[] = { + GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM, +}; + static const GLint valid_vertex_attrib_size_table[] = { 1, 2, @@ -593,6 +601,8 @@ Validators::Validators() arraysize(valid_src_blend_factor_table)), stencil_op(valid_stencil_op_table, arraysize(valid_stencil_op_table)), string_type(valid_string_type_table, arraysize(valid_string_type_table)), + subscription_target(valid_subscription_target_table, + arraysize(valid_subscription_target_table)), texture_bind_target(valid_texture_bind_target_table, arraysize(valid_texture_bind_target_table)), texture_format(valid_texture_format_table, @@ -616,6 +626,8 @@ Validators::Validators() arraysize(valid_texture_usage_table)), texture_wrap_mode(valid_texture_wrap_mode_table, arraysize(valid_texture_wrap_mode_table)), + value_buffer_target(valid_value_buffer_target_table, + arraysize(valid_value_buffer_target_table)), vertex_attrib_size(valid_vertex_attrib_size_table, arraysize(valid_vertex_attrib_size_table)), vertex_attrib_type(valid_vertex_attrib_type_table, diff --git a/gpu/command_buffer/service/gpu_scheduler.cc b/gpu/command_buffer/service/gpu_scheduler.cc index 015d808058..058a546d85 100644 --- a/gpu/command_buffer/service/gpu_scheduler.cc +++ b/gpu/command_buffer/service/gpu_scheduler.cc @@ -51,11 +51,11 @@ void GpuScheduler::PutChanged() { // If there is no parser, exit. if (!parser_.get()) { - DCHECK_EQ(state.get_offset, state.put_offset); + DCHECK_EQ(state.get_offset, command_buffer_->GetPutOffset()); return; } - parser_->set_put(state.put_offset); + parser_->set_put(command_buffer_->GetPutOffset()); if (state.error != error::kNoError) return; diff --git a/gpu/command_buffer/service/gpu_scheduler_unittest.cc b/gpu/command_buffer/service/gpu_scheduler_unittest.cc index d8233ecbd6..c1c0d1c360 100644 --- a/gpu/command_buffer/service/gpu_scheduler_unittest.cc +++ b/gpu/command_buffer/service/gpu_scheduler_unittest.cc @@ -26,7 +26,6 @@ using testing::StrictMock; namespace gpu { const size_t kRingBufferSize = 1024; -const size_t kRingBufferEntries = kRingBufferSize / sizeof(CommandBufferEntry); class GpuSchedulerTest : public testing::Test { protected: @@ -43,9 +42,10 @@ class GpuSchedulerTest : public testing::Test { command_buffer_.reset(new MockCommandBuffer); CommandBuffer::State default_state; - default_state.num_entries = kRingBufferEntries; ON_CALL(*command_buffer_.get(), GetLastState()) .WillByDefault(Return(default_state)); + ON_CALL(*command_buffer_.get(), GetPutOffset()) + .WillByDefault(Return(0)); decoder_.reset(new gles2::MockGLES2Decoder()); // Install FakeDoCommands handler so we can use individual DoCommand() @@ -86,7 +86,6 @@ class GpuSchedulerTest : public testing::Test { TEST_F(GpuSchedulerTest, SchedulerDoesNothingIfRingBufferIsEmpty) { CommandBuffer::State state; - state.put_offset = 0; EXPECT_CALL(*command_buffer_, GetLastState()) .WillRepeatedly(Return(state)); @@ -122,9 +121,10 @@ TEST_F(GpuSchedulerTest, ProcessesOneCommand) { CommandBuffer::State state; - state.put_offset = 2; EXPECT_CALL(*command_buffer_, GetLastState()) .WillRepeatedly(Return(state)); + EXPECT_CALL(*command_buffer_, GetPutOffset()) + .WillRepeatedly(Return(2)); EXPECT_CALL(*command_buffer_, SetGetOffset(2)); EXPECT_CALL(*decoder_, DoCommand(7, 1, &buffer_[0])) @@ -146,9 +146,10 @@ TEST_F(GpuSchedulerTest, ProcessesTwoCommands) { CommandBuffer::State state; - state.put_offset = 3; EXPECT_CALL(*command_buffer_, GetLastState()) .WillRepeatedly(Return(state)); + EXPECT_CALL(*command_buffer_, GetPutOffset()) + .WillRepeatedly(Return(3)); EXPECT_CALL(*decoder_, DoCommand(7, 1, &buffer_[0])) .WillOnce(Return(error::kNoError)); @@ -167,9 +168,10 @@ TEST_F(GpuSchedulerTest, SetsErrorCodeOnCommandBuffer) { CommandBuffer::State state; - state.put_offset = 1; EXPECT_CALL(*command_buffer_, GetLastState()) .WillRepeatedly(Return(state)); + EXPECT_CALL(*command_buffer_, GetPutOffset()) + .WillRepeatedly(Return(1)); EXPECT_CALL(*decoder_, DoCommand(7, 0, &buffer_[0])) .WillOnce(Return( diff --git a/gpu/command_buffer/service/program_manager.cc b/gpu/command_buffer/service/program_manager.cc index 7bc72dede3..f3c447cbd0 100644 --- a/gpu/command_buffer/service/program_manager.cc +++ b/gpu/command_buffer/service/program_manager.cc @@ -193,8 +193,7 @@ bool ProgramManager::IsInvalidPrefix(const char* name, size_t length) { memcmp(name, kInvalidPrefix, sizeof(kInvalidPrefix)) == 0); } -Program::Program( - ProgramManager* manager, GLuint service_id) +Program::Program(ProgramManager* manager, GLuint service_id) : manager_(manager), use_count_(0), max_attrib_name_length_(0), diff --git a/gpu/command_buffer/service/program_manager.h b/gpu/command_buffer/service/program_manager.h index dbe9c14fa2..2f5deae65f 100644 --- a/gpu/command_buffer/service/program_manager.h +++ b/gpu/command_buffer/service/program_manager.h @@ -39,6 +39,7 @@ class GPU_EXPORT Program : public base::RefCounted { }; enum UniformApiType { + kUniformNone = 0, kUniform1i = 1 << 0, kUniform2i = 1 << 1, kUniform3i = 1 << 2, diff --git a/gpu/command_buffer/service/valuebuffer_manager.cc b/gpu/command_buffer/service/valuebuffer_manager.cc new file mode 100644 index 0000000000..eb4db093f7 --- /dev/null +++ b/gpu/command_buffer/service/valuebuffer_manager.cc @@ -0,0 +1,117 @@ +// Copyright (c) 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "gpu/command_buffer/service/valuebuffer_manager.h" + +#include "gpu/command_buffer/service/program_manager.h" + +namespace gpu { +namespace gles2 { + +Valuebuffer::Valuebuffer(ValuebufferManager* manager, GLuint client_id) + : manager_(manager), client_id_(client_id), has_been_bound_(false) { + manager_->StartTracking(this); +} + +Valuebuffer::~Valuebuffer() { + if (manager_) { + manager_->StopTracking(this); + manager_ = NULL; + } +} + +void Valuebuffer::AddSubscription(GLenum subscription) { + subscriptions_.insert(subscription); +} + +void Valuebuffer::RemoveSubscription(GLenum subscription) { + subscriptions_.erase(subscription); +} + +bool Valuebuffer::IsSubscribed(GLenum subscription) { + return subscriptions_.find(subscription) != subscriptions_.end(); +} + +const ValueState *Valuebuffer::GetState(GLenum target) const { + StateMap::const_iterator it = active_state_map_.find(target); + return it != active_state_map_.end() ? &it->second : NULL; +} + +void Valuebuffer::UpdateState(const StateMap& pending_state) { + for (SubscriptionSet::const_iterator it = subscriptions_.begin(); + it != subscriptions_.end(); ++it) { + StateMap::const_iterator pending_state_it = pending_state.find((*it)); + if (pending_state_it != pending_state.end()) { + active_state_map_[pending_state_it->first] = pending_state_it->second; + } + } +} + +ValuebufferManager::ValuebufferManager() + : valuebuffer_count_(0) { +} + +ValuebufferManager::~ValuebufferManager() { + DCHECK(valuebuffer_map_.empty()); + DCHECK(pending_state_map_.empty()); + // If this triggers, that means something is keeping a reference to + // a Valuebuffer belonging to this. + CHECK_EQ(valuebuffer_count_, 0u); +} + +void ValuebufferManager::Destroy() { + valuebuffer_map_.clear(); + pending_state_map_.clear(); +} + +void ValuebufferManager::StartTracking(Valuebuffer* /* valuebuffer */) { + ++valuebuffer_count_; +} + +void ValuebufferManager::StopTracking(Valuebuffer* /* valuebuffer */) { + --valuebuffer_count_; +} + +void ValuebufferManager::CreateValuebuffer(GLuint client_id) { + scoped_refptr valuebuffer(new Valuebuffer(this, client_id)); + std::pair result = + valuebuffer_map_.insert(std::make_pair(client_id, valuebuffer)); + DCHECK(result.second); +} + +Valuebuffer* ValuebufferManager::GetValuebuffer(GLuint client_id) { + ValuebufferMap::iterator it = valuebuffer_map_.find(client_id); + return it != valuebuffer_map_.end() ? it->second.get() : NULL; +} + +void ValuebufferManager::RemoveValuebuffer(GLuint client_id) { + ValuebufferMap::iterator it = valuebuffer_map_.find(client_id); + if (it != valuebuffer_map_.end()) { + Valuebuffer* valuebuffer = it->second.get(); + valuebuffer->MarkAsDeleted(); + valuebuffer_map_.erase(it); + } +} + +void ValuebufferManager::UpdateValuebufferState(Valuebuffer* valuebuffer) { + DCHECK(valuebuffer); + valuebuffer->UpdateState(pending_state_map_); +} + +void ValuebufferManager::UpdateValueState( + GLenum target, const ValueState& state) { + pending_state_map_[target] = state; +} + +uint32 ValuebufferManager::ApiTypeForSubscriptionTarget(GLenum target) { + switch (target) { + case GL_MOUSE_POSITION_CHROMIUM: + return Program::kUniform2i; + } + NOTREACHED() << "Unhandled uniform subscription target " << target; + return Program::kUniformNone; +} + +} // namespace gles2 +} // namespace gpu diff --git a/gpu/command_buffer/service/valuebuffer_manager.h b/gpu/command_buffer/service/valuebuffer_manager.h new file mode 100644 index 0000000000..3cc4ac194a --- /dev/null +++ b/gpu/command_buffer/service/valuebuffer_manager.h @@ -0,0 +1,123 @@ +// Copyright (c) 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef GPU_COMMAND_BUFFER_SERVICE_VALUEBUFFER_MANAGER_H_ +#define GPU_COMMAND_BUFFER_SERVICE_VALUEBUFFER_MANAGER_H_ + +#include "base/basictypes.h" +#include "base/containers/hash_tables.h" +#include "base/memory/ref_counted.h" +#include "base/memory/scoped_ptr.h" +#include "gpu/command_buffer/service/gl_utils.h" +#include "gpu/gpu_export.h" + +namespace gpu { +namespace gles2 { + +class ValuebufferManager; + +union ValueState { + float float_value[4]; + int int_value[4]; +}; + +class GPU_EXPORT Valuebuffer : public base::RefCounted { + public: + Valuebuffer(ValuebufferManager* manager, GLuint client_id); + + GLuint client_id() const { return client_id_; } + + bool IsDeleted() const { return client_id_ == 0; } + + void MarkAsValid() { has_been_bound_ = true; } + + bool IsValid() const { return has_been_bound_ && !IsDeleted(); } + + void AddSubscription(GLenum subscription); + void RemoveSubscription(GLenum subscription); + + // Returns true if this Valuebuffer is subscribed to subscription + bool IsSubscribed(GLenum subscription); + + // Returns the active state for a given target in this Valuebuffer + // returns NULL if target state doesn't exist + const ValueState* GetState(GLenum target) const; + + private: + friend class ValuebufferManager; + friend class base::RefCounted; + + typedef base::hash_map StateMap; + typedef base::hash_set SubscriptionSet; + + ~Valuebuffer(); + + void UpdateState(const StateMap& pending_state); + + void MarkAsDeleted() { client_id_ = 0; } + + // ValuebufferManager that owns this Valuebuffer. + ValuebufferManager* manager_; + + // Client side Valuebuffer id. + GLuint client_id_; + + // Whether this Valuebuffer has ever been bound. + bool has_been_bound_; + + SubscriptionSet subscriptions_; + + StateMap active_state_map_; +}; + +class GPU_EXPORT ValuebufferManager { + public: + ValuebufferManager(); + ~ValuebufferManager(); + + // Must call before destruction. + void Destroy(); + + // Creates a Valuebuffer for the given Valuebuffer ids. + void CreateValuebuffer(GLuint client_id); + + // Gets the Valuebuffer for the given Valuebuffer id. + Valuebuffer* GetValuebuffer(GLuint client_id); + + // Removes a Valuebuffer for the given Valuebuffer id. + void RemoveValuebuffer(GLuint client_id); + + // Updates the value state for the given Valuebuffer + void UpdateValuebufferState(Valuebuffer* valuebuffer); + + // Gets the state for the given subscription target + void UpdateValueState(GLenum target, const ValueState& state); + + static uint32 ApiTypeForSubscriptionTarget(GLenum target); + + private: + friend class Valuebuffer; + + typedef base::hash_map> ValuebufferMap; + + void StartTracking(Valuebuffer* valuebuffer); + void StopTracking(Valuebuffer* valuebuffer); + + // Counts the number of Valuebuffer allocated with 'this' as its manager. + // Allows to check no Valuebuffer will outlive this. + unsigned valuebuffer_count_; + + // Info for each Valuebuffer in the system. + ValuebufferMap valuebuffer_map_; + + // Current value state in the system + Valuebuffer::StateMap pending_state_map_; + + DISALLOW_COPY_AND_ASSIGN(ValuebufferManager); +}; + +} // namespace gles2 +} // namespace gpu + +#endif // GPU_COMMAND_BUFFER_SERVICE_VALUEBUFFER_MANAGER_H_ diff --git a/gpu/command_buffer/service/valuebuffer_manager_unittest.cc b/gpu/command_buffer/service/valuebuffer_manager_unittest.cc new file mode 100644 index 0000000000..ead5df5d16 --- /dev/null +++ b/gpu/command_buffer/service/valuebuffer_manager_unittest.cc @@ -0,0 +1,100 @@ +// Copyright (c) 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "gpu/command_buffer/service/valuebuffer_manager.h" + +#include "base/memory/scoped_ptr.h" +#include "base/strings/string_number_conversions.h" +#include "base/strings/string_util.h" +#include "gpu/command_buffer/common/gles2_cmd_format.h" +#include "gpu/command_buffer/common/gles2_cmd_utils.h" +#include "gpu/command_buffer/service/common_decoder.h" +#include "gpu/command_buffer/service/feature_info.h" +#include "gpu/command_buffer/service/gpu_service_test.h" +#include "gpu/command_buffer/service/mocks.h" +#include "gpu/command_buffer/service/test_helper.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_mock.h" + +namespace gpu { +namespace gles2 { + +class ValuebufferManagerTest : public GpuServiceTest { + public: + ValuebufferManagerTest() : manager_() {} + ~ValuebufferManagerTest() override { manager_.Destroy(); } + + protected: + ValuebufferManager manager_; +}; + +TEST_F(ValuebufferManagerTest, Basic) { + const GLuint kClient1Id = 1; + const GLuint kClient2Id = 2; + // Check we can create a Valuebuffer + manager_.CreateValuebuffer(kClient1Id); + Valuebuffer* valuebuffer0 = manager_.GetValuebuffer(kClient1Id); + ASSERT_TRUE(valuebuffer0 != NULL); + EXPECT_EQ(kClient1Id, valuebuffer0->client_id()); + // Check we get nothing for a non-existent Valuebuffer. + // Check trying to a remove non-existent Valuebuffer does not crash + manager_.RemoveValuebuffer(kClient2Id); + // Check we can't get the renderbuffer after we remove it. + manager_.RemoveValuebuffer(kClient1Id); + EXPECT_TRUE(manager_.GetValuebuffer(kClient1Id) == NULL); +} + +TEST_F(ValuebufferManagerTest, Destroy) { + const GLuint kClient1Id = 1; + // Check we can create Valuebuffer. + manager_.CreateValuebuffer(kClient1Id); + Valuebuffer* valuebuffer0 = manager_.GetValuebuffer(kClient1Id); + ASSERT_TRUE(valuebuffer0 != NULL); + EXPECT_EQ(kClient1Id, valuebuffer0->client_id()); + manager_.Destroy(); + // Check the resources were released. + Valuebuffer* valuebuffer1 = manager_.GetValuebuffer(kClient1Id); + ASSERT_TRUE(valuebuffer1 == NULL); +} + +TEST_F(ValuebufferManagerTest, ValueBuffer) { + const GLuint kClient1Id = 1; + // Check we can create a Valuebuffer + manager_.CreateValuebuffer(kClient1Id); + Valuebuffer* valuebuffer0 = manager_.GetValuebuffer(kClient1Id); + ASSERT_TRUE(valuebuffer0 != NULL); + EXPECT_EQ(kClient1Id, valuebuffer0->client_id()); + EXPECT_FALSE(valuebuffer0->IsValid()); +} + +TEST_F(ValuebufferManagerTest, UpdateState) { + const GLuint kClient1Id = 1; + ValueState valuestate1; + valuestate1.int_value[0] = 111; + ValueState valuestate2; + valuestate2.int_value[0] = 222; + manager_.CreateValuebuffer(kClient1Id); + Valuebuffer* valuebuffer0 = manager_.GetValuebuffer(kClient1Id); + ASSERT_TRUE(valuebuffer0 != NULL); + EXPECT_EQ(kClient1Id, valuebuffer0->client_id()); + valuebuffer0->AddSubscription(GL_MOUSE_POSITION_CHROMIUM); + ASSERT_TRUE(valuebuffer0->GetState(GL_MOUSE_POSITION_CHROMIUM) == NULL); + manager_.UpdateValueState(GL_MOUSE_POSITION_CHROMIUM, valuestate1); + manager_.UpdateValuebufferState(valuebuffer0); + const ValueState* new_state1 = + valuebuffer0->GetState(GL_MOUSE_POSITION_CHROMIUM); + ASSERT_TRUE(new_state1 != NULL); + ASSERT_TRUE(new_state1->int_value[0] == 111); + // Ensure state changes + manager_.UpdateValueState(GL_MOUSE_POSITION_CHROMIUM, valuestate2); + manager_.UpdateValuebufferState(valuebuffer0); + const ValueState* new_state2 = + valuebuffer0->GetState(GL_MOUSE_POSITION_CHROMIUM); + ASSERT_TRUE(new_state2 != NULL); + ASSERT_TRUE(new_state2->int_value[0] == 222); +} + +} // namespace gles2 +} // namespace gpu diff --git a/gpu/command_buffer_service.gypi b/gpu/command_buffer_service.gypi index f1ed489846..13ffe94000 100644 --- a/gpu/command_buffer_service.gypi +++ b/gpu/command_buffer_service.gypi @@ -125,6 +125,8 @@ 'command_buffer/service/texture_manager.cc', 'command_buffer/service/transfer_buffer_manager.cc', 'command_buffer/service/transfer_buffer_manager.h', + 'command_buffer/service/valuebuffer_manager.h', + 'command_buffer/service/valuebuffer_manager.cc', 'command_buffer/service/vertex_array_manager.h', 'command_buffer/service/vertex_array_manager.cc', 'command_buffer/service/vertex_attrib_manager.h', diff --git a/gpu/command_buffer_service.target.darwin-arm.mk b/gpu/command_buffer_service.target.darwin-arm.mk index 383dfe1de7..bdc63e0d82 100644 --- a/gpu/command_buffer_service.target.darwin-arm.mk +++ b/gpu/command_buffer_service.target.darwin-arm.mk @@ -72,6 +72,7 @@ LOCAL_SRC_FILES := \ gpu/command_buffer/service/texture_definition.cc \ gpu/command_buffer/service/texture_manager.cc \ gpu/command_buffer/service/transfer_buffer_manager.cc \ + gpu/command_buffer/service/valuebuffer_manager.cc \ gpu/command_buffer/service/vertex_array_manager.cc \ gpu/command_buffer/service/vertex_attrib_manager.cc \ gpu/command_buffer/service/async_pixel_transfer_manager_egl.cc diff --git a/gpu/command_buffer_service.target.darwin-arm64.mk b/gpu/command_buffer_service.target.darwin-arm64.mk index 098551f535..f8bfe9aaa1 100644 --- a/gpu/command_buffer_service.target.darwin-arm64.mk +++ b/gpu/command_buffer_service.target.darwin-arm64.mk @@ -72,6 +72,7 @@ LOCAL_SRC_FILES := \ gpu/command_buffer/service/texture_definition.cc \ gpu/command_buffer/service/texture_manager.cc \ gpu/command_buffer/service/transfer_buffer_manager.cc \ + gpu/command_buffer/service/valuebuffer_manager.cc \ gpu/command_buffer/service/vertex_array_manager.cc \ gpu/command_buffer/service/vertex_attrib_manager.cc \ gpu/command_buffer/service/async_pixel_transfer_manager_egl.cc diff --git a/gpu/command_buffer_service.target.darwin-mips.mk b/gpu/command_buffer_service.target.darwin-mips.mk index 6d7c9e8e04..7279d3afab 100644 --- a/gpu/command_buffer_service.target.darwin-mips.mk +++ b/gpu/command_buffer_service.target.darwin-mips.mk @@ -72,6 +72,7 @@ LOCAL_SRC_FILES := \ gpu/command_buffer/service/texture_definition.cc \ gpu/command_buffer/service/texture_manager.cc \ gpu/command_buffer/service/transfer_buffer_manager.cc \ + gpu/command_buffer/service/valuebuffer_manager.cc \ gpu/command_buffer/service/vertex_array_manager.cc \ gpu/command_buffer/service/vertex_attrib_manager.cc \ gpu/command_buffer/service/async_pixel_transfer_manager_egl.cc diff --git a/gpu/command_buffer_service.target.darwin-mips64.mk b/gpu/command_buffer_service.target.darwin-mips64.mk index 6d7c9e8e04..7279d3afab 100644 --- a/gpu/command_buffer_service.target.darwin-mips64.mk +++ b/gpu/command_buffer_service.target.darwin-mips64.mk @@ -72,6 +72,7 @@ LOCAL_SRC_FILES := \ gpu/command_buffer/service/texture_definition.cc \ gpu/command_buffer/service/texture_manager.cc \ gpu/command_buffer/service/transfer_buffer_manager.cc \ + gpu/command_buffer/service/valuebuffer_manager.cc \ gpu/command_buffer/service/vertex_array_manager.cc \ gpu/command_buffer/service/vertex_attrib_manager.cc \ gpu/command_buffer/service/async_pixel_transfer_manager_egl.cc diff --git a/gpu/command_buffer_service.target.darwin-x86.mk b/gpu/command_buffer_service.target.darwin-x86.mk index 66d302c748..484015974b 100644 --- a/gpu/command_buffer_service.target.darwin-x86.mk +++ b/gpu/command_buffer_service.target.darwin-x86.mk @@ -72,6 +72,7 @@ LOCAL_SRC_FILES := \ gpu/command_buffer/service/texture_definition.cc \ gpu/command_buffer/service/texture_manager.cc \ gpu/command_buffer/service/transfer_buffer_manager.cc \ + gpu/command_buffer/service/valuebuffer_manager.cc \ gpu/command_buffer/service/vertex_array_manager.cc \ gpu/command_buffer/service/vertex_attrib_manager.cc \ gpu/command_buffer/service/async_pixel_transfer_manager_egl.cc diff --git a/gpu/command_buffer_service.target.darwin-x86_64.mk b/gpu/command_buffer_service.target.darwin-x86_64.mk index 0904baaecf..2581dbb099 100644 --- a/gpu/command_buffer_service.target.darwin-x86_64.mk +++ b/gpu/command_buffer_service.target.darwin-x86_64.mk @@ -72,6 +72,7 @@ LOCAL_SRC_FILES := \ gpu/command_buffer/service/texture_definition.cc \ gpu/command_buffer/service/texture_manager.cc \ gpu/command_buffer/service/transfer_buffer_manager.cc \ + gpu/command_buffer/service/valuebuffer_manager.cc \ gpu/command_buffer/service/vertex_array_manager.cc \ gpu/command_buffer/service/vertex_attrib_manager.cc \ gpu/command_buffer/service/async_pixel_transfer_manager_egl.cc diff --git a/gpu/command_buffer_service.target.linux-arm.mk b/gpu/command_buffer_service.target.linux-arm.mk index 383dfe1de7..bdc63e0d82 100644 --- a/gpu/command_buffer_service.target.linux-arm.mk +++ b/gpu/command_buffer_service.target.linux-arm.mk @@ -72,6 +72,7 @@ LOCAL_SRC_FILES := \ gpu/command_buffer/service/texture_definition.cc \ gpu/command_buffer/service/texture_manager.cc \ gpu/command_buffer/service/transfer_buffer_manager.cc \ + gpu/command_buffer/service/valuebuffer_manager.cc \ gpu/command_buffer/service/vertex_array_manager.cc \ gpu/command_buffer/service/vertex_attrib_manager.cc \ gpu/command_buffer/service/async_pixel_transfer_manager_egl.cc diff --git a/gpu/command_buffer_service.target.linux-arm64.mk b/gpu/command_buffer_service.target.linux-arm64.mk index 098551f535..f8bfe9aaa1 100644 --- a/gpu/command_buffer_service.target.linux-arm64.mk +++ b/gpu/command_buffer_service.target.linux-arm64.mk @@ -72,6 +72,7 @@ LOCAL_SRC_FILES := \ gpu/command_buffer/service/texture_definition.cc \ gpu/command_buffer/service/texture_manager.cc \ gpu/command_buffer/service/transfer_buffer_manager.cc \ + gpu/command_buffer/service/valuebuffer_manager.cc \ gpu/command_buffer/service/vertex_array_manager.cc \ gpu/command_buffer/service/vertex_attrib_manager.cc \ gpu/command_buffer/service/async_pixel_transfer_manager_egl.cc diff --git a/gpu/command_buffer_service.target.linux-mips.mk b/gpu/command_buffer_service.target.linux-mips.mk index 6d7c9e8e04..7279d3afab 100644 --- a/gpu/command_buffer_service.target.linux-mips.mk +++ b/gpu/command_buffer_service.target.linux-mips.mk @@ -72,6 +72,7 @@ LOCAL_SRC_FILES := \ gpu/command_buffer/service/texture_definition.cc \ gpu/command_buffer/service/texture_manager.cc \ gpu/command_buffer/service/transfer_buffer_manager.cc \ + gpu/command_buffer/service/valuebuffer_manager.cc \ gpu/command_buffer/service/vertex_array_manager.cc \ gpu/command_buffer/service/vertex_attrib_manager.cc \ gpu/command_buffer/service/async_pixel_transfer_manager_egl.cc diff --git a/gpu/command_buffer_service.target.linux-mips64.mk b/gpu/command_buffer_service.target.linux-mips64.mk index 6d7c9e8e04..7279d3afab 100644 --- a/gpu/command_buffer_service.target.linux-mips64.mk +++ b/gpu/command_buffer_service.target.linux-mips64.mk @@ -72,6 +72,7 @@ LOCAL_SRC_FILES := \ gpu/command_buffer/service/texture_definition.cc \ gpu/command_buffer/service/texture_manager.cc \ gpu/command_buffer/service/transfer_buffer_manager.cc \ + gpu/command_buffer/service/valuebuffer_manager.cc \ gpu/command_buffer/service/vertex_array_manager.cc \ gpu/command_buffer/service/vertex_attrib_manager.cc \ gpu/command_buffer/service/async_pixel_transfer_manager_egl.cc diff --git a/gpu/command_buffer_service.target.linux-x86.mk b/gpu/command_buffer_service.target.linux-x86.mk index 66d302c748..484015974b 100644 --- a/gpu/command_buffer_service.target.linux-x86.mk +++ b/gpu/command_buffer_service.target.linux-x86.mk @@ -72,6 +72,7 @@ LOCAL_SRC_FILES := \ gpu/command_buffer/service/texture_definition.cc \ gpu/command_buffer/service/texture_manager.cc \ gpu/command_buffer/service/transfer_buffer_manager.cc \ + gpu/command_buffer/service/valuebuffer_manager.cc \ gpu/command_buffer/service/vertex_array_manager.cc \ gpu/command_buffer/service/vertex_attrib_manager.cc \ gpu/command_buffer/service/async_pixel_transfer_manager_egl.cc diff --git a/gpu/command_buffer_service.target.linux-x86_64.mk b/gpu/command_buffer_service.target.linux-x86_64.mk index 0904baaecf..2581dbb099 100644 --- a/gpu/command_buffer_service.target.linux-x86_64.mk +++ b/gpu/command_buffer_service.target.linux-x86_64.mk @@ -72,6 +72,7 @@ LOCAL_SRC_FILES := \ gpu/command_buffer/service/texture_definition.cc \ gpu/command_buffer/service/texture_manager.cc \ gpu/command_buffer/service/transfer_buffer_manager.cc \ + gpu/command_buffer/service/valuebuffer_manager.cc \ gpu/command_buffer/service/vertex_array_manager.cc \ gpu/command_buffer/service/vertex_attrib_manager.cc \ gpu/command_buffer/service/async_pixel_transfer_manager_egl.cc diff --git a/gpu/config/BUILD.gn b/gpu/config/BUILD.gn index 799dc12a0d..27e377dd1d 100644 --- a/gpu/config/BUILD.gn +++ b/gpu/config/BUILD.gn @@ -66,6 +66,9 @@ source_set("config") { "//third_party/amd/amd_videocard_info_win.cc", ] } + + # TODO(jschuh): size_t to int. + cflags = [ "/wd4267" ] } if (use_libpci) { defines += [ "USE_LIBPCI=1" ] diff --git a/gpu/gpu.gyp b/gpu/gpu.gyp index 0878a1d316..3273b26874 100644 --- a/gpu/gpu.gyp +++ b/gpu/gpu.gyp @@ -232,6 +232,7 @@ 'command_buffer/service/gles2_cmd_decoder_unittest_programs.cc', 'command_buffer/service/gles2_cmd_decoder_unittest_textures.cc', 'command_buffer/service/gles2_cmd_decoder_unittest_attribs.cc', + 'command_buffer/service/gles2_cmd_decoder_unittest_valuebuffer.cc', 'command_buffer/service/gl_surface_mock.cc', 'command_buffer/service/gl_surface_mock.h', 'command_buffer/service/gpu_scheduler_unittest.cc', @@ -252,6 +253,7 @@ 'command_buffer/service/test_helper.h', 'command_buffer/service/texture_manager_unittest.cc', 'command_buffer/service/transfer_buffer_manager_unittest.cc', + 'command_buffer/service/valuebuffer_manager_unittest.cc', 'command_buffer/service/vertex_attrib_manager_unittest.cc', 'command_buffer/service/vertex_array_manager_unittest.cc', 'command_buffer/service/gpu_tracer_unittest.cc', diff --git a/gpu/ipc/gpu_command_buffer_traits.cc b/gpu/ipc/gpu_command_buffer_traits.cc index db482a9226..1b30034063 100644 --- a/gpu/ipc/gpu_command_buffer_traits.cc +++ b/gpu/ipc/gpu_command_buffer_traits.cc @@ -3,15 +3,32 @@ // found in the LICENSE file. #include "gpu/ipc/gpu_command_buffer_traits.h" + #include "gpu/command_buffer/common/mailbox_holder.h" +// Generate param traits write methods. +#include "ipc/param_traits_write_macros.h" +namespace IPC { +#include "gpu/ipc/gpu_command_buffer_traits_multi.h" +} // namespace IPC + +// Generate param traits read methods. +#include "ipc/param_traits_read_macros.h" +namespace IPC { +#include "gpu/ipc/gpu_command_buffer_traits_multi.h" +} // namespace IPC + +// Generate param traits log methods. +#include "ipc/param_traits_log_macros.h" +namespace IPC { +#include "gpu/ipc/gpu_command_buffer_traits_multi.h" +} // namespace IPC + namespace IPC { void ParamTraits ::Write(Message* m, const param_type& p) { - WriteParam(m, p.num_entries); WriteParam(m, p.get_offset); - WriteParam(m, p.put_offset); WriteParam(m, p.token); WriteParam(m, static_cast(p.error)); WriteParam(m, p.generation); @@ -21,9 +38,7 @@ bool ParamTraits ::Read(const Message* m, PickleIterator* iter, param_type* p) { int32 temp; - if (ReadParam(m, iter, &p->num_entries) && - ReadParam(m, iter, &p->get_offset) && - ReadParam(m, iter, &p->put_offset) && + if (ReadParam(m, iter, &p->get_offset) && ReadParam(m, iter, &p->token) && ReadParam(m, iter, &temp) && ReadParam(m, iter, &p->generation)) { diff --git a/gpu/ipc/gpu_command_buffer_traits.h b/gpu/ipc/gpu_command_buffer_traits.h index ce854d2f27..345163948d 100644 --- a/gpu/ipc/gpu_command_buffer_traits.h +++ b/gpu/ipc/gpu_command_buffer_traits.h @@ -5,9 +5,10 @@ #ifndef GPU_IPC_GPU_PARAM_TRAITS_H_ #define GPU_IPC_GPU_PARAM_TRAITS_H_ -#include "ipc/ipc_message_utils.h" #include "gpu/command_buffer/common/command_buffer.h" #include "gpu/gpu_export.h" +#include "gpu/ipc/gpu_command_buffer_traits_multi.h" +#include "ipc/ipc_message_utils.h" namespace gpu { struct Mailbox; diff --git a/gpu/ipc/gpu_command_buffer_traits_multi.h b/gpu/ipc/gpu_command_buffer_traits_multi.h new file mode 100644 index 0000000000..a2b20068fa --- /dev/null +++ b/gpu/ipc/gpu_command_buffer_traits_multi.h @@ -0,0 +1,29 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Multiply-included message file, hence no include guard here. +#include "gpu/command_buffer/common/capabilities.h" +#include "gpu/gpu_export.h" +#include "ipc/ipc_message_utils.h" +#include "ipc/param_traits_macros.h" + +#undef IPC_MESSAGE_EXPORT +#define IPC_MESSAGE_EXPORT GPU_EXPORT + +IPC_STRUCT_TRAITS_BEGIN(gpu::Capabilities) + IPC_STRUCT_TRAITS_MEMBER(post_sub_buffer) + IPC_STRUCT_TRAITS_MEMBER(egl_image_external) + IPC_STRUCT_TRAITS_MEMBER(texture_format_bgra8888) + IPC_STRUCT_TRAITS_MEMBER(texture_format_etc1) + IPC_STRUCT_TRAITS_MEMBER(texture_format_etc1_npot) + IPC_STRUCT_TRAITS_MEMBER(texture_rectangle) + IPC_STRUCT_TRAITS_MEMBER(iosurface) + IPC_STRUCT_TRAITS_MEMBER(texture_usage) + IPC_STRUCT_TRAITS_MEMBER(texture_storage) + IPC_STRUCT_TRAITS_MEMBER(discard_framebuffer) + IPC_STRUCT_TRAITS_MEMBER(sync_query) + IPC_STRUCT_TRAITS_MEMBER(image) + IPC_STRUCT_TRAITS_MEMBER(blend_equation_advanced) + IPC_STRUCT_TRAITS_MEMBER(blend_equation_advanced_coherent) +IPC_STRUCT_TRAITS_END() -- cgit v1.2.3