summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/client
diff options
context:
space:
mode:
Diffstat (limited to 'gpu/command_buffer/client')
-rw-r--r--gpu/command_buffer/client/gles2_c_lib_autogen.h52
-rw-r--r--gpu/command_buffer/client/gles2_cmd_helper_autogen.h67
-rw-r--r--gpu/command_buffer/client/gles2_implementation.cc55
-rw-r--r--gpu/command_buffer/client/gles2_implementation.h8
-rw-r--r--gpu/command_buffer/client/gles2_implementation_autogen.h16
-rw-r--r--gpu/command_buffer/client/gles2_implementation_impl_autogen.h114
-rw-r--r--gpu/command_buffer/client/gles2_implementation_unittest.cc2
-rw-r--r--gpu/command_buffer/client/gles2_implementation_unittest_autogen.h102
-rw-r--r--gpu/command_buffer/client/gles2_interface_autogen.h10
-rw-r--r--gpu/command_buffer/client/gles2_interface_stub_autogen.h9
-rw-r--r--gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h22
-rw-r--r--gpu/command_buffer/client/gles2_trace_implementation_autogen.h9
-rw-r--r--gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h45
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");