diff options
Diffstat (limited to 'gpu/command_buffer/client')
13 files changed, 507 insertions, 4 deletions
diff --git a/gpu/command_buffer/client/gles2_c_lib_autogen.h b/gpu/command_buffer/client/gles2_c_lib_autogen.h index 56f1880..f78007f 100644 --- a/gpu/command_buffer/client/gles2_c_lib_autogen.h +++ b/gpu/command_buffer/client/gles2_c_lib_autogen.h @@ -853,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); } @@ -1731,6 +1755,34 @@ extern const NameToFunc g_gles2_function_table[] = { reinterpret_cast<GLES2FunctionPointer>(glBindUniformLocationCHROMIUM), }, { + "glGenValuebuffersCHROMIUM", + reinterpret_cast<GLES2FunctionPointer>(glGenValuebuffersCHROMIUM), + }, + { + "glDeleteValuebuffersCHROMIUM", + reinterpret_cast<GLES2FunctionPointer>(glDeleteValuebuffersCHROMIUM), + }, + { + "glIsValuebufferCHROMIUM", + reinterpret_cast<GLES2FunctionPointer>(glIsValuebufferCHROMIUM), + }, + { + "glBindValuebufferCHROMIUM", + reinterpret_cast<GLES2FunctionPointer>(glBindValuebufferCHROMIUM), + }, + { + "glSubscribeValueCHROMIUM", + reinterpret_cast<GLES2FunctionPointer>(glSubscribeValueCHROMIUM), + }, + { + "glPopulateSubscribedValuesCHROMIUM", + reinterpret_cast<GLES2FunctionPointer>(glPopulateSubscribedValuesCHROMIUM), + }, + { + "glUniformValuebufferCHROMIUM", + reinterpret_cast<GLES2FunctionPointer>(glUniformValuebufferCHROMIUM), + }, + { "glBindTexImage2DCHROMIUM", reinterpret_cast<GLES2FunctionPointer>(glBindTexImage2DCHROMIUM), }, diff --git a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h index 9aeb449..cfa7a5d 100644 --- a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h +++ b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h @@ -1677,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<gles2::cmds::IsValuebufferCHROMIUM>(); + if (c) { + c->Init(valuebuffer, result_shm_id, result_shm_offset); + } +} + +void BindValuebufferCHROMIUM(GLenum target, GLuint valuebuffer) { + gles2::cmds::BindValuebufferCHROMIUM* c = + GetCmdSpace<gles2::cmds::BindValuebufferCHROMIUM>(); + if (c) { + c->Init(target, valuebuffer); + } +} + +void SubscribeValueCHROMIUM(GLenum target, GLenum subscription) { + gles2::cmds::SubscribeValueCHROMIUM* c = + GetCmdSpace<gles2::cmds::SubscribeValueCHROMIUM>(); + if (c) { + c->Init(target, subscription); + } +} + +void PopulateSubscribedValuesCHROMIUM(GLenum target) { + gles2::cmds::PopulateSubscribedValuesCHROMIUM* c = + GetCmdSpace<gles2::cmds::PopulateSubscribedValuesCHROMIUM>(); + if (c) { + c->Init(target); + } +} + +void UniformValuebufferCHROMIUM(GLint location, + GLenum target, + GLenum subscription) { + gles2::cmds::UniformValuebufferCHROMIUM* c = + GetCmdSpace<gles2::cmds::UniformValuebufferCHROMIUM>(); + if (c) { + c->Init(location, target, subscription); + } +} + void BindTexImage2DCHROMIUM(GLenum target, GLint imageId) { gles2::cmds::BindTexImage2DCHROMIUM* c = GetCmdSpace<gles2::cmds::BindTexImage2DCHROMIUM>(); diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc index 66d8c2b..241056ce 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 a612ac2..c2e9edb 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 4e547d9..3a11f10 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 e7cc074..8541e77 100644 --- a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h +++ b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h @@ -2019,6 +2019,120 @@ void GLES2Implementation::CopyTextureCHROMIUM(GLenum target, CheckGLError(); } +void GLES2Implementation::GenValuebuffersCHROMIUM(GLsizei n, GLuint* buffers) { + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenValuebuffersCHROMIUM(" << n + << ", " << static_cast<const void*>(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<const void*>(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<Result*>(); + 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(); +} + void GLES2Implementation::BindTexImage2DCHROMIUM(GLenum target, GLint imageId) { GPU_CLIENT_SINGLE_THREAD_CHECK(); GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindTexImage2DCHROMIUM(" diff --git a/gpu/command_buffer/client/gles2_implementation_unittest.cc b/gpu/command_buffer/client/gles2_implementation_unittest.cc index be1f1a3..799618c 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; @@ -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 8069b12..74a438c 100644 --- a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h +++ b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h @@ -1800,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 d840804..af5db19 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 687ff48..c540360 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 e78b07c..78fe6d3 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 a599eb4..cb60910 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 cf614a9..dd9d201 100644 --- a/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h +++ b/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h @@ -1358,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"); |