summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gpu/GLES2/gl2chromium_autogen.h1
-rwxr-xr-xgpu/command_buffer/build_gles2_cmd_buffer.py19
-rw-r--r--gpu/command_buffer/client/gles2_c_lib_autogen.h7
-rw-r--r--gpu/command_buffer/client/gles2_cmd_helper_autogen.h7
-rw-r--r--gpu/command_buffer/client/gles2_implementation_autogen.h2
-rw-r--r--gpu/command_buffer/client/gles2_implementation_impl_autogen.h11
-rw-r--r--gpu/command_buffer/client/gles2_implementation_unittest_autogen.h11
-rw-r--r--gpu/command_buffer/client/gles2_interface_autogen.h1
-rw-r--r--gpu/command_buffer/client/gles2_interface_stub_autogen.h1
-rw-r--r--gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h4
-rw-r--r--gpu/command_buffer/client/gles2_trace_implementation_autogen.h1
-rw-r--r--gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h7
-rw-r--r--gpu/command_buffer/cmd_buffer_functions.txt1
-rw-r--r--gpu/command_buffer/common/gles2_cmd_format_autogen.h41
-rw-r--r--gpu/command_buffer/common/gles2_cmd_format_test_autogen.h13
-rw-r--r--gpu/command_buffer/common/gles2_cmd_ids_autogen.h497
-rw-r--r--gpu/command_buffer/common/gles2_cmd_utils_autogen.h1
-rw-r--r--gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h9
-rw-r--r--gpu/command_buffer/service/context_group.h19
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_autogen.h16
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc9
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h48
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h37
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h2
-rw-r--r--gpu/command_buffer/service/gles2_cmd_validation_autogen.h1
-rw-r--r--gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h7
26 files changed, 486 insertions, 287 deletions
diff --git a/gpu/GLES2/gl2chromium_autogen.h b/gpu/GLES2/gl2chromium_autogen.h
index 0639363..5a59ea1 100644
--- a/gpu/GLES2/gl2chromium_autogen.h
+++ b/gpu/GLES2/gl2chromium_autogen.h
@@ -17,6 +17,7 @@
#define glAttachShader GLES2_GET_FUN(AttachShader)
#define glBindAttribLocation GLES2_GET_FUN(BindAttribLocation)
#define glBindBuffer GLES2_GET_FUN(BindBuffer)
+#define glBindBufferBase GLES2_GET_FUN(BindBufferBase)
#define glBindFramebuffer GLES2_GET_FUN(BindFramebuffer)
#define glBindRenderbuffer GLES2_GET_FUN(BindRenderbuffer)
#define glBindSampler GLES2_GET_FUN(BindSampler)
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index 6e7b27a..f7f0c77 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -588,6 +588,16 @@ _NAMED_TYPE_INFO = {
'GL_RENDERBUFFER',
],
},
+ 'IndexedBufferTarget': {
+ 'type': 'GLenum',
+ 'valid': [
+ 'GL_TRANSFORM_FEEDBACK_BUFFER',
+ 'GL_UNIFORM_BUFFER',
+ ],
+ 'invalid': [
+ 'GL_RENDERBUFFER',
+ ],
+ },
'BufferUsage': {
'type': 'GLenum',
'valid': [
@@ -1418,6 +1428,11 @@ _FUNCTION_INFO = {
'decoder_func': 'DoBindBuffer',
'gen_func': 'GenBuffersARB',
},
+ 'BindBufferBase': {
+ 'type': 'Bind',
+ 'id_mapping': [ 'Buffer' ],
+ 'unsafe': True,
+ },
'BindFramebuffer': {
'type': 'Bind',
'decoder_func': 'DoBindFramebuffer',
@@ -4400,7 +4415,7 @@ TEST_P(%(test_name)s, %(name)sValidArgsNewId) {
self.WriteValidUnitTest(func, file, valid_test, {
'first_arg': func.GetOriginalArgs()[0].GetValidArg(func),
'first_gl_arg': func.GetOriginalArgs()[0].GetValidGLArg(func),
- 'resource_type': func.GetOriginalArgs()[1].resource_type,
+ 'resource_type': func.GetOriginalArgs()[-1].resource_type,
'gl_gen_func_name': func.GetInfo("gen_func"),
}, *extras)
@@ -4456,7 +4471,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
name_arg = func.GetOriginalArgs()[0]
else:
# Bind functions that have both a target and a name (like BindTexture)
- name_arg = func.GetOriginalArgs()[1]
+ name_arg = func.GetOriginalArgs()[-1]
file.Write(code % {
'name': func.name,
diff --git a/gpu/command_buffer/client/gles2_c_lib_autogen.h b/gpu/command_buffer/client/gles2_c_lib_autogen.h
index a947810..c28385d 100644
--- a/gpu/command_buffer/client/gles2_c_lib_autogen.h
+++ b/gpu/command_buffer/client/gles2_c_lib_autogen.h
@@ -24,6 +24,9 @@ void GLES2BindAttribLocation(GLuint program, GLuint index, const char* name) {
void GLES2BindBuffer(GLenum target, GLuint buffer) {
gles2::GetGLContext()->BindBuffer(target, buffer);
}
+void GLES2BindBufferBase(GLenum target, GLuint index, GLuint buffer) {
+ gles2::GetGLContext()->BindBufferBase(target, index, buffer);
+}
void GLES2BindFramebuffer(GLenum target, GLuint framebuffer) {
gles2::GetGLContext()->BindFramebuffer(target, framebuffer);
}
@@ -1203,6 +1206,10 @@ extern const NameToFunc g_gles2_function_table[] = {
reinterpret_cast<GLES2FunctionPointer>(glBindBuffer),
},
{
+ "glBindBufferBase",
+ reinterpret_cast<GLES2FunctionPointer>(glBindBufferBase),
+ },
+ {
"glBindFramebuffer",
reinterpret_cast<GLES2FunctionPointer>(glBindFramebuffer),
},
diff --git a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
index bcf1847..6a0acad 100644
--- a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
+++ b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
@@ -42,6 +42,13 @@ void BindBuffer(GLenum target, GLuint buffer) {
}
}
+void BindBufferBase(GLenum target, GLuint index, GLuint buffer) {
+ gles2::cmds::BindBufferBase* c = GetCmdSpace<gles2::cmds::BindBufferBase>();
+ if (c) {
+ c->Init(target, index, buffer);
+ }
+}
+
void BindFramebuffer(GLenum target, GLuint framebuffer) {
gles2::cmds::BindFramebuffer* c = GetCmdSpace<gles2::cmds::BindFramebuffer>();
if (c) {
diff --git a/gpu/command_buffer/client/gles2_implementation_autogen.h b/gpu/command_buffer/client/gles2_implementation_autogen.h
index a6431f5..76e7b5e 100644
--- a/gpu/command_buffer/client/gles2_implementation_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_autogen.h
@@ -23,6 +23,8 @@ void BindAttribLocation(GLuint program,
void BindBuffer(GLenum target, GLuint buffer) override;
+void BindBufferBase(GLenum target, GLuint index, GLuint buffer) override;
+
void BindFramebuffer(GLenum target, GLuint framebuffer) override;
void BindRenderbuffer(GLenum target, GLuint renderbuffer) override;
diff --git a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
index e7ef769..02551b4 100644
--- a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
@@ -34,6 +34,17 @@ void GLES2Implementation::BindBuffer(GLenum target, GLuint buffer) {
CheckGLError();
}
+void GLES2Implementation::BindBufferBase(GLenum target,
+ GLuint index,
+ GLuint buffer) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindBufferBase("
+ << GLES2Util::GetStringIndexedBufferTarget(target) << ", "
+ << index << ", " << buffer << ")");
+ helper_->BindBufferBase(target, index, buffer);
+ CheckGLError();
+}
+
void GLES2Implementation::BindFramebuffer(GLenum target, GLuint framebuffer) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindFramebuffer("
diff --git a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
index f501cd9..744387d 100644
--- a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
@@ -39,6 +39,17 @@ TEST_F(GLES2ImplementationTest, BindBuffer) {
EXPECT_TRUE(NoCommandsWritten());
}
+TEST_F(GLES2ImplementationTest, BindBufferBase) {
+ struct Cmds {
+ cmds::BindBufferBase cmd;
+ };
+ Cmds expected;
+ expected.cmd.Init(GL_TRANSFORM_FEEDBACK_BUFFER, 2, 3);
+
+ gl_->BindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 2, 3);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
TEST_F(GLES2ImplementationTest, BindFramebuffer) {
struct Cmds {
cmds::BindFramebuffer cmd;
diff --git a/gpu/command_buffer/client/gles2_interface_autogen.h b/gpu/command_buffer/client/gles2_interface_autogen.h
index d666d54..f8417e6 100644
--- a/gpu/command_buffer/client/gles2_interface_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_autogen.h
@@ -19,6 +19,7 @@ virtual void BindAttribLocation(GLuint program,
GLuint index,
const char* name) = 0;
virtual void BindBuffer(GLenum target, GLuint buffer) = 0;
+virtual void BindBufferBase(GLenum target, GLuint index, GLuint buffer) = 0;
virtual void BindFramebuffer(GLenum target, GLuint framebuffer) = 0;
virtual void BindRenderbuffer(GLenum target, GLuint renderbuffer) = 0;
virtual void BindSampler(GLuint unit, GLuint sampler) = 0;
diff --git a/gpu/command_buffer/client/gles2_interface_stub_autogen.h b/gpu/command_buffer/client/gles2_interface_stub_autogen.h
index fa334c9..d9f995e 100644
--- a/gpu/command_buffer/client/gles2_interface_stub_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_stub_autogen.h
@@ -18,6 +18,7 @@ void BindAttribLocation(GLuint program,
GLuint index,
const char* name) override;
void BindBuffer(GLenum target, GLuint buffer) override;
+void BindBufferBase(GLenum target, GLuint index, GLuint buffer) override;
void BindFramebuffer(GLenum target, GLuint framebuffer) override;
void BindRenderbuffer(GLenum target, GLuint renderbuffer) override;
void BindSampler(GLuint unit, GLuint sampler) 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 117ea22..9bc00eb 100644
--- a/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
@@ -23,6 +23,10 @@ void GLES2InterfaceStub::BindAttribLocation(GLuint /* program */,
}
void GLES2InterfaceStub::BindBuffer(GLenum /* target */, GLuint /* buffer */) {
}
+void GLES2InterfaceStub::BindBufferBase(GLenum /* target */,
+ GLuint /* index */,
+ GLuint /* buffer */) {
+}
void GLES2InterfaceStub::BindFramebuffer(GLenum /* target */,
GLuint /* framebuffer */) {
}
diff --git a/gpu/command_buffer/client/gles2_trace_implementation_autogen.h b/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
index b02214d..9989ff5 100644
--- a/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
+++ b/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
@@ -18,6 +18,7 @@ void BindAttribLocation(GLuint program,
GLuint index,
const char* name) override;
void BindBuffer(GLenum target, GLuint buffer) override;
+void BindBufferBase(GLenum target, GLuint index, GLuint buffer) override;
void BindFramebuffer(GLenum target, GLuint framebuffer) override;
void BindRenderbuffer(GLenum target, GLuint renderbuffer) override;
void BindSampler(GLuint unit, GLuint sampler) 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 4efb1de..fd58cf8 100644
--- a/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
@@ -34,6 +34,13 @@ void GLES2TraceImplementation::BindBuffer(GLenum target, GLuint buffer) {
gl_->BindBuffer(target, buffer);
}
+void GLES2TraceImplementation::BindBufferBase(GLenum target,
+ GLuint index,
+ GLuint buffer) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::BindBufferBase");
+ gl_->BindBufferBase(target, index, buffer);
+}
+
void GLES2TraceImplementation::BindFramebuffer(GLenum target,
GLuint framebuffer) {
TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::BindFramebuffer");
diff --git a/gpu/command_buffer/cmd_buffer_functions.txt b/gpu/command_buffer/cmd_buffer_functions.txt
index 69fa17f..51cd4a1 100644
--- a/gpu/command_buffer/cmd_buffer_functions.txt
+++ b/gpu/command_buffer/cmd_buffer_functions.txt
@@ -8,6 +8,7 @@ GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture);
GL_APICALL void GL_APIENTRY glAttachShader (GLidProgram program, GLidShader shader);
GL_APICALL void GL_APIENTRY glBindAttribLocation (GLidProgram program, GLuint index, const char* name);
GL_APICALL void GL_APIENTRY glBindBuffer (GLenumBufferTarget target, GLidBindBuffer buffer);
+GL_APICALL void GL_APIENTRY glBindBufferBase (GLenumIndexedBufferTarget target, GLuint index, GLidBindBuffer buffer);
GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenumFrameBufferTarget target, GLidBindFramebuffer framebuffer);
GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenumRenderBufferTarget target, GLidBindRenderbuffer renderbuffer);
GL_APICALL void GL_APIENTRY glBindSampler (GLuint unit, GLidBindSampler sampler);
diff --git a/gpu/command_buffer/common/gles2_cmd_format_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_autogen.h
index 5461042..1c235f7 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_autogen.h
@@ -159,6 +159,47 @@ static_assert(offsetof(BindBuffer, target) == 4,
static_assert(offsetof(BindBuffer, buffer) == 8,
"offset of BindBuffer buffer should be 8");
+struct BindBufferBase {
+ typedef BindBufferBase ValueType;
+ static const CommandId kCmdId = kBindBufferBase;
+ 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<uint32_t>(sizeof(ValueType)); // NOLINT
+ }
+
+ void SetHeader() { header.SetCmd<ValueType>(); }
+
+ void Init(GLenum _target, GLuint _index, GLuint _buffer) {
+ SetHeader();
+ target = _target;
+ index = _index;
+ buffer = _buffer;
+ }
+
+ void* Set(void* cmd, GLenum _target, GLuint _index, GLuint _buffer) {
+ static_cast<ValueType*>(cmd)->Init(_target, _index, _buffer);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ gpu::CommandHeader header;
+ uint32_t target;
+ uint32_t index;
+ uint32_t buffer;
+};
+
+static_assert(sizeof(BindBufferBase) == 16,
+ "size of BindBufferBase should be 16");
+static_assert(offsetof(BindBufferBase, header) == 0,
+ "offset of BindBufferBase header should be 0");
+static_assert(offsetof(BindBufferBase, target) == 4,
+ "offset of BindBufferBase target should be 4");
+static_assert(offsetof(BindBufferBase, index) == 8,
+ "offset of BindBufferBase index should be 8");
+static_assert(offsetof(BindBufferBase, buffer) == 12,
+ "offset of BindBufferBase buffer should be 12");
+
struct BindFramebuffer {
typedef BindFramebuffer ValueType;
static const CommandId kCmdId = kBindFramebuffer;
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 111e5ce..d664435 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
@@ -62,6 +62,19 @@ TEST_F(GLES2FormatTest, BindBuffer) {
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
}
+TEST_F(GLES2FormatTest, BindBufferBase) {
+ cmds::BindBufferBase& cmd = *GetBufferAs<cmds::BindBufferBase>();
+ void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11),
+ static_cast<GLuint>(12), static_cast<GLuint>(13));
+ EXPECT_EQ(static_cast<uint32_t>(cmds::BindBufferBase::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
+ EXPECT_EQ(static_cast<GLuint>(12), cmd.index);
+ EXPECT_EQ(static_cast<GLuint>(13), cmd.buffer);
+ CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
+}
+
TEST_F(GLES2FormatTest, BindFramebuffer) {
cmds::BindFramebuffer& cmd = *GetBufferAs<cmds::BindFramebuffer>();
void* next_cmd =
diff --git a/gpu/command_buffer/common/gles2_cmd_ids_autogen.h b/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
index 3079cbf..943043f 100644
--- a/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
@@ -16,254 +16,255 @@
OP(AttachShader) /* 257 */ \
OP(BindAttribLocationBucket) /* 258 */ \
OP(BindBuffer) /* 259 */ \
- OP(BindFramebuffer) /* 260 */ \
- OP(BindRenderbuffer) /* 261 */ \
- OP(BindSampler) /* 262 */ \
- OP(BindTexture) /* 263 */ \
- OP(BindTransformFeedback) /* 264 */ \
- OP(BlendColor) /* 265 */ \
- OP(BlendEquation) /* 266 */ \
- OP(BlendEquationSeparate) /* 267 */ \
- OP(BlendFunc) /* 268 */ \
- OP(BlendFuncSeparate) /* 269 */ \
- OP(BufferData) /* 270 */ \
- OP(BufferSubData) /* 271 */ \
- OP(CheckFramebufferStatus) /* 272 */ \
- OP(Clear) /* 273 */ \
- OP(ClearColor) /* 274 */ \
- OP(ClearDepthf) /* 275 */ \
- OP(ClearStencil) /* 276 */ \
- OP(ColorMask) /* 277 */ \
- OP(CompileShader) /* 278 */ \
- OP(CompressedTexImage2DBucket) /* 279 */ \
- OP(CompressedTexImage2D) /* 280 */ \
- OP(CompressedTexSubImage2DBucket) /* 281 */ \
- OP(CompressedTexSubImage2D) /* 282 */ \
- OP(CopyBufferSubData) /* 283 */ \
- OP(CopyTexImage2D) /* 284 */ \
- OP(CopyTexSubImage2D) /* 285 */ \
- OP(CreateProgram) /* 286 */ \
- OP(CreateShader) /* 287 */ \
- OP(CullFace) /* 288 */ \
- OP(DeleteBuffersImmediate) /* 289 */ \
- OP(DeleteFramebuffersImmediate) /* 290 */ \
- OP(DeleteProgram) /* 291 */ \
- OP(DeleteRenderbuffersImmediate) /* 292 */ \
- OP(DeleteSamplersImmediate) /* 293 */ \
- OP(DeleteShader) /* 294 */ \
- OP(DeleteTexturesImmediate) /* 295 */ \
- OP(DeleteTransformFeedbacksImmediate) /* 296 */ \
- OP(DepthFunc) /* 297 */ \
- OP(DepthMask) /* 298 */ \
- OP(DepthRangef) /* 299 */ \
- OP(DetachShader) /* 300 */ \
- OP(Disable) /* 301 */ \
- OP(DisableVertexAttribArray) /* 302 */ \
- OP(DrawArrays) /* 303 */ \
- OP(DrawElements) /* 304 */ \
- OP(Enable) /* 305 */ \
- OP(EnableVertexAttribArray) /* 306 */ \
- OP(Finish) /* 307 */ \
- OP(Flush) /* 308 */ \
- OP(FramebufferRenderbuffer) /* 309 */ \
- OP(FramebufferTexture2D) /* 310 */ \
- OP(FramebufferTextureLayer) /* 311 */ \
- OP(FrontFace) /* 312 */ \
- OP(GenBuffersImmediate) /* 313 */ \
- OP(GenerateMipmap) /* 314 */ \
- OP(GenFramebuffersImmediate) /* 315 */ \
- OP(GenRenderbuffersImmediate) /* 316 */ \
- OP(GenSamplersImmediate) /* 317 */ \
- OP(GenTexturesImmediate) /* 318 */ \
- OP(GenTransformFeedbacksImmediate) /* 319 */ \
- OP(GetActiveAttrib) /* 320 */ \
- OP(GetActiveUniform) /* 321 */ \
- OP(GetAttachedShaders) /* 322 */ \
- OP(GetAttribLocation) /* 323 */ \
- OP(GetBooleanv) /* 324 */ \
- OP(GetBufferParameteriv) /* 325 */ \
- OP(GetError) /* 326 */ \
- OP(GetFloatv) /* 327 */ \
- OP(GetFramebufferAttachmentParameteriv) /* 328 */ \
- OP(GetIntegerv) /* 329 */ \
- OP(GetInternalformativ) /* 330 */ \
- OP(GetProgramiv) /* 331 */ \
- OP(GetProgramInfoLog) /* 332 */ \
- OP(GetRenderbufferParameteriv) /* 333 */ \
- OP(GetSamplerParameterfv) /* 334 */ \
- OP(GetSamplerParameteriv) /* 335 */ \
- OP(GetShaderiv) /* 336 */ \
- OP(GetShaderInfoLog) /* 337 */ \
- OP(GetShaderPrecisionFormat) /* 338 */ \
- OP(GetShaderSource) /* 339 */ \
- OP(GetString) /* 340 */ \
- OP(GetTexParameterfv) /* 341 */ \
- OP(GetTexParameteriv) /* 342 */ \
- OP(GetUniformfv) /* 343 */ \
- OP(GetUniformiv) /* 344 */ \
- OP(GetUniformLocation) /* 345 */ \
- OP(GetVertexAttribfv) /* 346 */ \
- OP(GetVertexAttribiv) /* 347 */ \
- OP(GetVertexAttribPointerv) /* 348 */ \
- OP(Hint) /* 349 */ \
- OP(InvalidateFramebufferImmediate) /* 350 */ \
- OP(InvalidateSubFramebufferImmediate) /* 351 */ \
- OP(IsBuffer) /* 352 */ \
- OP(IsEnabled) /* 353 */ \
- OP(IsFramebuffer) /* 354 */ \
- OP(IsProgram) /* 355 */ \
- OP(IsRenderbuffer) /* 356 */ \
- OP(IsSampler) /* 357 */ \
- OP(IsShader) /* 358 */ \
- OP(IsTexture) /* 359 */ \
- OP(IsTransformFeedback) /* 360 */ \
- OP(LineWidth) /* 361 */ \
- OP(LinkProgram) /* 362 */ \
- OP(PauseTransformFeedback) /* 363 */ \
- OP(PixelStorei) /* 364 */ \
- OP(PolygonOffset) /* 365 */ \
- OP(ReadBuffer) /* 366 */ \
- OP(ReadPixels) /* 367 */ \
- OP(ReleaseShaderCompiler) /* 368 */ \
- OP(RenderbufferStorage) /* 369 */ \
- OP(ResumeTransformFeedback) /* 370 */ \
- OP(SampleCoverage) /* 371 */ \
- OP(SamplerParameterf) /* 372 */ \
- OP(SamplerParameterfvImmediate) /* 373 */ \
- OP(SamplerParameteri) /* 374 */ \
- OP(SamplerParameterivImmediate) /* 375 */ \
- OP(Scissor) /* 376 */ \
- OP(ShaderBinary) /* 377 */ \
- OP(ShaderSourceBucket) /* 378 */ \
- OP(StencilFunc) /* 379 */ \
- OP(StencilFuncSeparate) /* 380 */ \
- OP(StencilMask) /* 381 */ \
- OP(StencilMaskSeparate) /* 382 */ \
- OP(StencilOp) /* 383 */ \
- OP(StencilOpSeparate) /* 384 */ \
- OP(TexImage2D) /* 385 */ \
- OP(TexImage3D) /* 386 */ \
- OP(TexParameterf) /* 387 */ \
- OP(TexParameterfvImmediate) /* 388 */ \
- OP(TexParameteri) /* 389 */ \
- OP(TexParameterivImmediate) /* 390 */ \
- OP(TexStorage3D) /* 391 */ \
- OP(TexSubImage2D) /* 392 */ \
- OP(TexSubImage3D) /* 393 */ \
- OP(Uniform1f) /* 394 */ \
- OP(Uniform1fvImmediate) /* 395 */ \
- OP(Uniform1i) /* 396 */ \
- OP(Uniform1ivImmediate) /* 397 */ \
- OP(Uniform1ui) /* 398 */ \
- OP(Uniform1uivImmediate) /* 399 */ \
- OP(Uniform2f) /* 400 */ \
- OP(Uniform2fvImmediate) /* 401 */ \
- OP(Uniform2i) /* 402 */ \
- OP(Uniform2ivImmediate) /* 403 */ \
- OP(Uniform2ui) /* 404 */ \
- OP(Uniform2uivImmediate) /* 405 */ \
- OP(Uniform3f) /* 406 */ \
- OP(Uniform3fvImmediate) /* 407 */ \
- OP(Uniform3i) /* 408 */ \
- OP(Uniform3ivImmediate) /* 409 */ \
- OP(Uniform3ui) /* 410 */ \
- OP(Uniform3uivImmediate) /* 411 */ \
- OP(Uniform4f) /* 412 */ \
- OP(Uniform4fvImmediate) /* 413 */ \
- OP(Uniform4i) /* 414 */ \
- OP(Uniform4ivImmediate) /* 415 */ \
- OP(Uniform4ui) /* 416 */ \
- OP(Uniform4uivImmediate) /* 417 */ \
- OP(UniformMatrix2fvImmediate) /* 418 */ \
- OP(UniformMatrix2x3fvImmediate) /* 419 */ \
- OP(UniformMatrix2x4fvImmediate) /* 420 */ \
- OP(UniformMatrix3fvImmediate) /* 421 */ \
- OP(UniformMatrix3x2fvImmediate) /* 422 */ \
- OP(UniformMatrix3x4fvImmediate) /* 423 */ \
- OP(UniformMatrix4fvImmediate) /* 424 */ \
- OP(UniformMatrix4x2fvImmediate) /* 425 */ \
- OP(UniformMatrix4x3fvImmediate) /* 426 */ \
- OP(UseProgram) /* 427 */ \
- OP(ValidateProgram) /* 428 */ \
- OP(VertexAttrib1f) /* 429 */ \
- OP(VertexAttrib1fvImmediate) /* 430 */ \
- OP(VertexAttrib2f) /* 431 */ \
- OP(VertexAttrib2fvImmediate) /* 432 */ \
- OP(VertexAttrib3f) /* 433 */ \
- OP(VertexAttrib3fvImmediate) /* 434 */ \
- OP(VertexAttrib4f) /* 435 */ \
- OP(VertexAttrib4fvImmediate) /* 436 */ \
- OP(VertexAttribI4i) /* 437 */ \
- OP(VertexAttribI4ivImmediate) /* 438 */ \
- OP(VertexAttribI4ui) /* 439 */ \
- OP(VertexAttribI4uivImmediate) /* 440 */ \
- OP(VertexAttribIPointer) /* 441 */ \
- OP(VertexAttribPointer) /* 442 */ \
- OP(Viewport) /* 443 */ \
- OP(BlitFramebufferCHROMIUM) /* 444 */ \
- OP(RenderbufferStorageMultisampleCHROMIUM) /* 445 */ \
- OP(RenderbufferStorageMultisampleEXT) /* 446 */ \
- OP(FramebufferTexture2DMultisampleEXT) /* 447 */ \
- OP(TexStorage2DEXT) /* 448 */ \
- OP(GenQueriesEXTImmediate) /* 449 */ \
- OP(DeleteQueriesEXTImmediate) /* 450 */ \
- OP(BeginQueryEXT) /* 451 */ \
- OP(BeginTransformFeedback) /* 452 */ \
- OP(EndQueryEXT) /* 453 */ \
- OP(EndTransformFeedback) /* 454 */ \
- OP(InsertEventMarkerEXT) /* 455 */ \
- OP(PushGroupMarkerEXT) /* 456 */ \
- OP(PopGroupMarkerEXT) /* 457 */ \
- OP(GenVertexArraysOESImmediate) /* 458 */ \
- OP(DeleteVertexArraysOESImmediate) /* 459 */ \
- OP(IsVertexArrayOES) /* 460 */ \
- OP(BindVertexArrayOES) /* 461 */ \
- OP(SwapBuffers) /* 462 */ \
- OP(GetMaxValueInBufferCHROMIUM) /* 463 */ \
- OP(EnableFeatureCHROMIUM) /* 464 */ \
- OP(ResizeCHROMIUM) /* 465 */ \
- OP(GetRequestableExtensionsCHROMIUM) /* 466 */ \
- OP(RequestExtensionCHROMIUM) /* 467 */ \
- OP(GetProgramInfoCHROMIUM) /* 468 */ \
- OP(GetTranslatedShaderSourceANGLE) /* 469 */ \
- OP(PostSubBufferCHROMIUM) /* 470 */ \
- OP(TexImageIOSurface2DCHROMIUM) /* 471 */ \
- OP(CopyTextureCHROMIUM) /* 472 */ \
- OP(DrawArraysInstancedANGLE) /* 473 */ \
- OP(DrawElementsInstancedANGLE) /* 474 */ \
- OP(VertexAttribDivisorANGLE) /* 475 */ \
- OP(GenMailboxCHROMIUM) /* 476 */ \
- OP(ProduceTextureCHROMIUMImmediate) /* 477 */ \
- OP(ProduceTextureDirectCHROMIUMImmediate) /* 478 */ \
- OP(ConsumeTextureCHROMIUMImmediate) /* 479 */ \
- OP(CreateAndConsumeTextureCHROMIUMImmediate) /* 480 */ \
- OP(BindUniformLocationCHROMIUMBucket) /* 481 */ \
- OP(GenValuebuffersCHROMIUMImmediate) /* 482 */ \
- OP(DeleteValuebuffersCHROMIUMImmediate) /* 483 */ \
- OP(IsValuebufferCHROMIUM) /* 484 */ \
- OP(BindValuebufferCHROMIUM) /* 485 */ \
- OP(SubscribeValueCHROMIUM) /* 486 */ \
- OP(PopulateSubscribedValuesCHROMIUM) /* 487 */ \
- OP(UniformValuebufferCHROMIUM) /* 488 */ \
- OP(BindTexImage2DCHROMIUM) /* 489 */ \
- OP(ReleaseTexImage2DCHROMIUM) /* 490 */ \
- OP(TraceBeginCHROMIUM) /* 491 */ \
- OP(TraceEndCHROMIUM) /* 492 */ \
- OP(AsyncTexSubImage2DCHROMIUM) /* 493 */ \
- OP(AsyncTexImage2DCHROMIUM) /* 494 */ \
- OP(WaitAsyncTexImage2DCHROMIUM) /* 495 */ \
- OP(WaitAllAsyncTexImage2DCHROMIUM) /* 496 */ \
- OP(DiscardFramebufferEXTImmediate) /* 497 */ \
- OP(LoseContextCHROMIUM) /* 498 */ \
- OP(InsertSyncPointCHROMIUM) /* 499 */ \
- OP(WaitSyncPointCHROMIUM) /* 500 */ \
- OP(DrawBuffersEXTImmediate) /* 501 */ \
- OP(DiscardBackbufferCHROMIUM) /* 502 */ \
- OP(ScheduleOverlayPlaneCHROMIUM) /* 503 */ \
- OP(SwapInterval) /* 504 */ \
- OP(MatrixLoadfCHROMIUMImmediate) /* 505 */ \
- OP(MatrixLoadIdentityCHROMIUM) /* 506 */ \
- OP(BlendBarrierKHR) /* 507 */
+ OP(BindBufferBase) /* 260 */ \
+ OP(BindFramebuffer) /* 261 */ \
+ OP(BindRenderbuffer) /* 262 */ \
+ OP(BindSampler) /* 263 */ \
+ OP(BindTexture) /* 264 */ \
+ OP(BindTransformFeedback) /* 265 */ \
+ OP(BlendColor) /* 266 */ \
+ OP(BlendEquation) /* 267 */ \
+ OP(BlendEquationSeparate) /* 268 */ \
+ OP(BlendFunc) /* 269 */ \
+ OP(BlendFuncSeparate) /* 270 */ \
+ OP(BufferData) /* 271 */ \
+ OP(BufferSubData) /* 272 */ \
+ OP(CheckFramebufferStatus) /* 273 */ \
+ OP(Clear) /* 274 */ \
+ OP(ClearColor) /* 275 */ \
+ OP(ClearDepthf) /* 276 */ \
+ OP(ClearStencil) /* 277 */ \
+ OP(ColorMask) /* 278 */ \
+ OP(CompileShader) /* 279 */ \
+ OP(CompressedTexImage2DBucket) /* 280 */ \
+ OP(CompressedTexImage2D) /* 281 */ \
+ OP(CompressedTexSubImage2DBucket) /* 282 */ \
+ OP(CompressedTexSubImage2D) /* 283 */ \
+ OP(CopyBufferSubData) /* 284 */ \
+ OP(CopyTexImage2D) /* 285 */ \
+ OP(CopyTexSubImage2D) /* 286 */ \
+ OP(CreateProgram) /* 287 */ \
+ OP(CreateShader) /* 288 */ \
+ OP(CullFace) /* 289 */ \
+ OP(DeleteBuffersImmediate) /* 290 */ \
+ OP(DeleteFramebuffersImmediate) /* 291 */ \
+ OP(DeleteProgram) /* 292 */ \
+ OP(DeleteRenderbuffersImmediate) /* 293 */ \
+ OP(DeleteSamplersImmediate) /* 294 */ \
+ OP(DeleteShader) /* 295 */ \
+ OP(DeleteTexturesImmediate) /* 296 */ \
+ OP(DeleteTransformFeedbacksImmediate) /* 297 */ \
+ OP(DepthFunc) /* 298 */ \
+ OP(DepthMask) /* 299 */ \
+ OP(DepthRangef) /* 300 */ \
+ OP(DetachShader) /* 301 */ \
+ OP(Disable) /* 302 */ \
+ OP(DisableVertexAttribArray) /* 303 */ \
+ OP(DrawArrays) /* 304 */ \
+ OP(DrawElements) /* 305 */ \
+ OP(Enable) /* 306 */ \
+ OP(EnableVertexAttribArray) /* 307 */ \
+ OP(Finish) /* 308 */ \
+ OP(Flush) /* 309 */ \
+ OP(FramebufferRenderbuffer) /* 310 */ \
+ OP(FramebufferTexture2D) /* 311 */ \
+ OP(FramebufferTextureLayer) /* 312 */ \
+ OP(FrontFace) /* 313 */ \
+ OP(GenBuffersImmediate) /* 314 */ \
+ OP(GenerateMipmap) /* 315 */ \
+ OP(GenFramebuffersImmediate) /* 316 */ \
+ OP(GenRenderbuffersImmediate) /* 317 */ \
+ OP(GenSamplersImmediate) /* 318 */ \
+ OP(GenTexturesImmediate) /* 319 */ \
+ OP(GenTransformFeedbacksImmediate) /* 320 */ \
+ OP(GetActiveAttrib) /* 321 */ \
+ OP(GetActiveUniform) /* 322 */ \
+ OP(GetAttachedShaders) /* 323 */ \
+ OP(GetAttribLocation) /* 324 */ \
+ OP(GetBooleanv) /* 325 */ \
+ OP(GetBufferParameteriv) /* 326 */ \
+ OP(GetError) /* 327 */ \
+ OP(GetFloatv) /* 328 */ \
+ OP(GetFramebufferAttachmentParameteriv) /* 329 */ \
+ OP(GetIntegerv) /* 330 */ \
+ OP(GetInternalformativ) /* 331 */ \
+ OP(GetProgramiv) /* 332 */ \
+ OP(GetProgramInfoLog) /* 333 */ \
+ OP(GetRenderbufferParameteriv) /* 334 */ \
+ OP(GetSamplerParameterfv) /* 335 */ \
+ OP(GetSamplerParameteriv) /* 336 */ \
+ OP(GetShaderiv) /* 337 */ \
+ OP(GetShaderInfoLog) /* 338 */ \
+ OP(GetShaderPrecisionFormat) /* 339 */ \
+ OP(GetShaderSource) /* 340 */ \
+ OP(GetString) /* 341 */ \
+ OP(GetTexParameterfv) /* 342 */ \
+ OP(GetTexParameteriv) /* 343 */ \
+ OP(GetUniformfv) /* 344 */ \
+ OP(GetUniformiv) /* 345 */ \
+ OP(GetUniformLocation) /* 346 */ \
+ OP(GetVertexAttribfv) /* 347 */ \
+ OP(GetVertexAttribiv) /* 348 */ \
+ OP(GetVertexAttribPointerv) /* 349 */ \
+ OP(Hint) /* 350 */ \
+ OP(InvalidateFramebufferImmediate) /* 351 */ \
+ OP(InvalidateSubFramebufferImmediate) /* 352 */ \
+ OP(IsBuffer) /* 353 */ \
+ OP(IsEnabled) /* 354 */ \
+ OP(IsFramebuffer) /* 355 */ \
+ OP(IsProgram) /* 356 */ \
+ OP(IsRenderbuffer) /* 357 */ \
+ OP(IsSampler) /* 358 */ \
+ OP(IsShader) /* 359 */ \
+ OP(IsTexture) /* 360 */ \
+ OP(IsTransformFeedback) /* 361 */ \
+ OP(LineWidth) /* 362 */ \
+ OP(LinkProgram) /* 363 */ \
+ OP(PauseTransformFeedback) /* 364 */ \
+ OP(PixelStorei) /* 365 */ \
+ OP(PolygonOffset) /* 366 */ \
+ OP(ReadBuffer) /* 367 */ \
+ OP(ReadPixels) /* 368 */ \
+ OP(ReleaseShaderCompiler) /* 369 */ \
+ OP(RenderbufferStorage) /* 370 */ \
+ OP(ResumeTransformFeedback) /* 371 */ \
+ OP(SampleCoverage) /* 372 */ \
+ OP(SamplerParameterf) /* 373 */ \
+ OP(SamplerParameterfvImmediate) /* 374 */ \
+ OP(SamplerParameteri) /* 375 */ \
+ OP(SamplerParameterivImmediate) /* 376 */ \
+ OP(Scissor) /* 377 */ \
+ OP(ShaderBinary) /* 378 */ \
+ OP(ShaderSourceBucket) /* 379 */ \
+ OP(StencilFunc) /* 380 */ \
+ OP(StencilFuncSeparate) /* 381 */ \
+ OP(StencilMask) /* 382 */ \
+ OP(StencilMaskSeparate) /* 383 */ \
+ OP(StencilOp) /* 384 */ \
+ OP(StencilOpSeparate) /* 385 */ \
+ OP(TexImage2D) /* 386 */ \
+ OP(TexImage3D) /* 387 */ \
+ OP(TexParameterf) /* 388 */ \
+ OP(TexParameterfvImmediate) /* 389 */ \
+ OP(TexParameteri) /* 390 */ \
+ OP(TexParameterivImmediate) /* 391 */ \
+ OP(TexStorage3D) /* 392 */ \
+ OP(TexSubImage2D) /* 393 */ \
+ OP(TexSubImage3D) /* 394 */ \
+ OP(Uniform1f) /* 395 */ \
+ OP(Uniform1fvImmediate) /* 396 */ \
+ OP(Uniform1i) /* 397 */ \
+ OP(Uniform1ivImmediate) /* 398 */ \
+ OP(Uniform1ui) /* 399 */ \
+ OP(Uniform1uivImmediate) /* 400 */ \
+ OP(Uniform2f) /* 401 */ \
+ OP(Uniform2fvImmediate) /* 402 */ \
+ OP(Uniform2i) /* 403 */ \
+ OP(Uniform2ivImmediate) /* 404 */ \
+ OP(Uniform2ui) /* 405 */ \
+ OP(Uniform2uivImmediate) /* 406 */ \
+ OP(Uniform3f) /* 407 */ \
+ OP(Uniform3fvImmediate) /* 408 */ \
+ OP(Uniform3i) /* 409 */ \
+ OP(Uniform3ivImmediate) /* 410 */ \
+ OP(Uniform3ui) /* 411 */ \
+ OP(Uniform3uivImmediate) /* 412 */ \
+ OP(Uniform4f) /* 413 */ \
+ OP(Uniform4fvImmediate) /* 414 */ \
+ OP(Uniform4i) /* 415 */ \
+ OP(Uniform4ivImmediate) /* 416 */ \
+ OP(Uniform4ui) /* 417 */ \
+ OP(Uniform4uivImmediate) /* 418 */ \
+ OP(UniformMatrix2fvImmediate) /* 419 */ \
+ OP(UniformMatrix2x3fvImmediate) /* 420 */ \
+ OP(UniformMatrix2x4fvImmediate) /* 421 */ \
+ OP(UniformMatrix3fvImmediate) /* 422 */ \
+ OP(UniformMatrix3x2fvImmediate) /* 423 */ \
+ OP(UniformMatrix3x4fvImmediate) /* 424 */ \
+ OP(UniformMatrix4fvImmediate) /* 425 */ \
+ OP(UniformMatrix4x2fvImmediate) /* 426 */ \
+ OP(UniformMatrix4x3fvImmediate) /* 427 */ \
+ OP(UseProgram) /* 428 */ \
+ OP(ValidateProgram) /* 429 */ \
+ OP(VertexAttrib1f) /* 430 */ \
+ OP(VertexAttrib1fvImmediate) /* 431 */ \
+ OP(VertexAttrib2f) /* 432 */ \
+ OP(VertexAttrib2fvImmediate) /* 433 */ \
+ OP(VertexAttrib3f) /* 434 */ \
+ OP(VertexAttrib3fvImmediate) /* 435 */ \
+ OP(VertexAttrib4f) /* 436 */ \
+ OP(VertexAttrib4fvImmediate) /* 437 */ \
+ OP(VertexAttribI4i) /* 438 */ \
+ OP(VertexAttribI4ivImmediate) /* 439 */ \
+ OP(VertexAttribI4ui) /* 440 */ \
+ OP(VertexAttribI4uivImmediate) /* 441 */ \
+ OP(VertexAttribIPointer) /* 442 */ \
+ OP(VertexAttribPointer) /* 443 */ \
+ OP(Viewport) /* 444 */ \
+ OP(BlitFramebufferCHROMIUM) /* 445 */ \
+ OP(RenderbufferStorageMultisampleCHROMIUM) /* 446 */ \
+ OP(RenderbufferStorageMultisampleEXT) /* 447 */ \
+ OP(FramebufferTexture2DMultisampleEXT) /* 448 */ \
+ OP(TexStorage2DEXT) /* 449 */ \
+ OP(GenQueriesEXTImmediate) /* 450 */ \
+ OP(DeleteQueriesEXTImmediate) /* 451 */ \
+ OP(BeginQueryEXT) /* 452 */ \
+ OP(BeginTransformFeedback) /* 453 */ \
+ OP(EndQueryEXT) /* 454 */ \
+ OP(EndTransformFeedback) /* 455 */ \
+ OP(InsertEventMarkerEXT) /* 456 */ \
+ OP(PushGroupMarkerEXT) /* 457 */ \
+ OP(PopGroupMarkerEXT) /* 458 */ \
+ OP(GenVertexArraysOESImmediate) /* 459 */ \
+ OP(DeleteVertexArraysOESImmediate) /* 460 */ \
+ OP(IsVertexArrayOES) /* 461 */ \
+ OP(BindVertexArrayOES) /* 462 */ \
+ OP(SwapBuffers) /* 463 */ \
+ OP(GetMaxValueInBufferCHROMIUM) /* 464 */ \
+ OP(EnableFeatureCHROMIUM) /* 465 */ \
+ OP(ResizeCHROMIUM) /* 466 */ \
+ OP(GetRequestableExtensionsCHROMIUM) /* 467 */ \
+ OP(RequestExtensionCHROMIUM) /* 468 */ \
+ OP(GetProgramInfoCHROMIUM) /* 469 */ \
+ OP(GetTranslatedShaderSourceANGLE) /* 470 */ \
+ OP(PostSubBufferCHROMIUM) /* 471 */ \
+ OP(TexImageIOSurface2DCHROMIUM) /* 472 */ \
+ OP(CopyTextureCHROMIUM) /* 473 */ \
+ OP(DrawArraysInstancedANGLE) /* 474 */ \
+ OP(DrawElementsInstancedANGLE) /* 475 */ \
+ OP(VertexAttribDivisorANGLE) /* 476 */ \
+ OP(GenMailboxCHROMIUM) /* 477 */ \
+ OP(ProduceTextureCHROMIUMImmediate) /* 478 */ \
+ OP(ProduceTextureDirectCHROMIUMImmediate) /* 479 */ \
+ OP(ConsumeTextureCHROMIUMImmediate) /* 480 */ \
+ OP(CreateAndConsumeTextureCHROMIUMImmediate) /* 481 */ \
+ OP(BindUniformLocationCHROMIUMBucket) /* 482 */ \
+ OP(GenValuebuffersCHROMIUMImmediate) /* 483 */ \
+ OP(DeleteValuebuffersCHROMIUMImmediate) /* 484 */ \
+ OP(IsValuebufferCHROMIUM) /* 485 */ \
+ OP(BindValuebufferCHROMIUM) /* 486 */ \
+ OP(SubscribeValueCHROMIUM) /* 487 */ \
+ OP(PopulateSubscribedValuesCHROMIUM) /* 488 */ \
+ OP(UniformValuebufferCHROMIUM) /* 489 */ \
+ OP(BindTexImage2DCHROMIUM) /* 490 */ \
+ OP(ReleaseTexImage2DCHROMIUM) /* 491 */ \
+ OP(TraceBeginCHROMIUM) /* 492 */ \
+ OP(TraceEndCHROMIUM) /* 493 */ \
+ OP(AsyncTexSubImage2DCHROMIUM) /* 494 */ \
+ OP(AsyncTexImage2DCHROMIUM) /* 495 */ \
+ OP(WaitAsyncTexImage2DCHROMIUM) /* 496 */ \
+ OP(WaitAllAsyncTexImage2DCHROMIUM) /* 497 */ \
+ OP(DiscardFramebufferEXTImmediate) /* 498 */ \
+ OP(LoseContextCHROMIUM) /* 499 */ \
+ OP(InsertSyncPointCHROMIUM) /* 500 */ \
+ OP(WaitSyncPointCHROMIUM) /* 501 */ \
+ OP(DrawBuffersEXTImmediate) /* 502 */ \
+ OP(DiscardBackbufferCHROMIUM) /* 503 */ \
+ OP(ScheduleOverlayPlaneCHROMIUM) /* 504 */ \
+ OP(SwapInterval) /* 505 */ \
+ OP(MatrixLoadfCHROMIUMImmediate) /* 506 */ \
+ OP(MatrixLoadIdentityCHROMIUM) /* 507 */ \
+ OP(BlendBarrierKHR) /* 508 */
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 e4ccbe7..e6a26fe 100644
--- a/gpu/command_buffer/common/gles2_cmd_utils_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_utils_autogen.h
@@ -35,6 +35,7 @@ static std::string GetStringHintTarget(uint32_t value);
static std::string GetStringImageInternalFormat(uint32_t value);
static std::string GetStringImageUsage(uint32_t value);
static std::string GetStringIndexType(uint32_t value);
+static std::string GetStringIndexedBufferTarget(uint32_t value);
static std::string GetStringMatrixMode(uint32_t value);
static std::string GetStringPixelStore(uint32_t value);
static std::string GetStringPixelType(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 03a6d4d..3fafbcb 100644
--- a/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h
@@ -4789,6 +4789,15 @@ std::string GLES2Util::GetStringIndexType(uint32_t value) {
arraysize(string_table), value);
}
+std::string GLES2Util::GetStringIndexedBufferTarget(uint32_t value) {
+ static const EnumToString string_table[] = {
+ {GL_TRANSFORM_FEEDBACK_BUFFER, "GL_TRANSFORM_FEEDBACK_BUFFER"},
+ {GL_UNIFORM_BUFFER, "GL_UNIFORM_BUFFER"},
+ };
+ return GLES2Util::GetQualifiedEnumString(string_table,
+ arraysize(string_table), value);
+}
+
std::string GLES2Util::GetStringMatrixMode(uint32_t value) {
static const EnumToString string_table[] = {
{GL_PATH_PROJECTION_CHROMIUM, "GL_PATH_PROJECTION_CHROMIUM"},
diff --git a/gpu/command_buffer/service/context_group.h b/gpu/command_buffer/service/context_group.h
index 1e56829..63e9a34 100644
--- a/gpu/command_buffer/service/context_group.h
+++ b/gpu/command_buffer/service/context_group.h
@@ -177,6 +177,24 @@ class GPU_EXPORT ContextGroup : public base::RefCounted<ContextGroup> {
draw_buffer_ = buf;
}
+ void AddBufferId(GLuint client_id, GLuint service_id) {
+ buffers_id_map_[client_id] = service_id;
+ }
+
+ bool GetBufferServiceId(GLuint client_id, GLuint* service_id) const {
+ std::map<GLuint, GLuint>::const_iterator iter =
+ buffers_id_map_.find(client_id);
+ if (iter == buffers_id_map_.end())
+ return false;
+ if (service_id)
+ *service_id = iter->second;
+ return true;
+ }
+
+ void RemoveBufferId(GLuint client_id) {
+ buffers_id_map_.erase(client_id);
+ }
+
void AddSamplerId(GLuint client_id, GLuint service_id) {
samplers_id_map_[client_id] = service_id;
}
@@ -265,6 +283,7 @@ class GPU_EXPORT ContextGroup : public base::RefCounted<ContextGroup> {
std::vector<base::WeakPtr<gles2::GLES2Decoder> > decoders_;
// Mappings from client side IDs to service side IDs.
+ std::map<GLuint, GLuint> buffers_id_map_;
std::map<GLuint, GLuint> samplers_id_map_;
std::map<GLuint, GLuint> transformfeedbacks_id_map_;
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
index b7877ff..82a519b 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
@@ -48,6 +48,22 @@ error::Error GLES2DecoderImpl::HandleBindBuffer(uint32_t immediate_data_size,
return error::kNoError;
}
+error::Error GLES2DecoderImpl::HandleBindBufferBase(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::BindBufferBase& c =
+ *static_cast<const gles2::cmds::BindBufferBase*>(cmd_data);
+ (void)c;
+ GLenum target = static_cast<GLenum>(c.target);
+ GLuint index = static_cast<GLuint>(c.index);
+ GLuint buffer = c.buffer;
+ group_->GetBufferServiceId(buffer, &buffer);
+ glBindBufferBase(target, index, buffer);
+ return error::kNoError;
+}
+
error::Error GLES2DecoderImpl::HandleBindFramebuffer(
uint32_t immediate_data_size,
const void* cmd_data) {
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc
index db1c62f..2e7f4fc 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc
@@ -41,6 +41,15 @@ class GLES2DecoderTest1 : public GLES2DecoderTestBase {
INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderTest1, ::testing::Bool());
template <>
+void GLES2DecoderTestBase::SpecializedSetup<cmds::BindBufferBase, 0>(
+ bool valid) {
+ if (valid) {
+ // TODO(zmo): This might affect the states of later tests.
+ group_->AddBufferId(client_buffer_id_, kServiceBufferId);
+ }
+};
+
+template <>
void GLES2DecoderTestBase::SpecializedSetup<cmds::GenerateMipmap, 0>(
bool valid) {
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
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 2bc23a0..6ab1a88 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
@@ -54,6 +54,19 @@ TEST_P(GLES2DecoderTest1, BindBufferInvalidArgs0_0) {
EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
}
+TEST_P(GLES2DecoderTest1, BindBufferBaseValidArgs) {
+ EXPECT_CALL(
+ *gl_, BindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 2, kServiceBufferId));
+ SpecializedSetup<cmds::BindBufferBase, 0>(true);
+ cmds::BindBufferBase cmd;
+ cmd.Init(GL_TRANSFORM_FEEDBACK_BUFFER, 2, client_buffer_id_);
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
+}
+
TEST_P(GLES2DecoderTest1, BindFramebufferValidArgs) {
EXPECT_CALL(*gl_, BindFramebufferEXT(GL_FRAMEBUFFER, kServiceFramebufferId));
SpecializedSetup<cmds::BindFramebuffer, 0>(true);
@@ -1910,39 +1923,4 @@ TEST_P(GLES2DecoderTest1, IsBufferInvalidArgsBadSharedMemoryId) {
cmd.Init(client_buffer_id_, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
}
-
-TEST_P(GLES2DecoderTest1, IsEnabledValidArgs) {
- SpecializedSetup<cmds::IsEnabled, 0>(true);
- cmds::IsEnabled cmd;
- cmd.Init(GL_BLEND, shared_memory_id_, shared_memory_offset_);
- EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
- EXPECT_EQ(GL_NO_ERROR, GetGLError());
-}
-
-TEST_P(GLES2DecoderTest1, IsEnabledInvalidArgs0_0) {
- EXPECT_CALL(*gl_, IsEnabled(_)).Times(0);
- SpecializedSetup<cmds::IsEnabled, 0>(false);
- cmds::IsEnabled cmd;
- cmd.Init(GL_CLIP_PLANE0, shared_memory_id_, shared_memory_offset_);
- EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
- EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
-}
-
-TEST_P(GLES2DecoderTest1, IsEnabledInvalidArgs0_1) {
- EXPECT_CALL(*gl_, IsEnabled(_)).Times(0);
- SpecializedSetup<cmds::IsEnabled, 0>(false);
- cmds::IsEnabled cmd;
- cmd.Init(GL_POINT_SPRITE, shared_memory_id_, shared_memory_offset_);
- EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
- EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
-}
-
-TEST_P(GLES2DecoderTest1, IsEnabledInvalidArgsBadSharedMemoryId) {
- SpecializedSetup<cmds::IsEnabled, 0>(false);
- cmds::IsEnabled cmd;
- cmd.Init(GL_BLEND, kInvalidSharedMemoryId, shared_memory_offset_);
- EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
- cmd.Init(GL_BLEND, shared_memory_id_, kInvalidSharedMemoryOffset);
- EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
-}
#endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_1_AUTOGEN_H_
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 8b06553..59cf54e 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
@@ -12,6 +12,41 @@
#ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
#define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
+TEST_P(GLES2DecoderTest2, IsEnabledValidArgs) {
+ SpecializedSetup<cmds::IsEnabled, 0>(true);
+ cmds::IsEnabled cmd;
+ cmd.Init(GL_BLEND, shared_memory_id_, shared_memory_offset_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+}
+
+TEST_P(GLES2DecoderTest2, IsEnabledInvalidArgs0_0) {
+ EXPECT_CALL(*gl_, IsEnabled(_)).Times(0);
+ SpecializedSetup<cmds::IsEnabled, 0>(false);
+ cmds::IsEnabled cmd;
+ cmd.Init(GL_CLIP_PLANE0, shared_memory_id_, shared_memory_offset_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
+}
+
+TEST_P(GLES2DecoderTest2, IsEnabledInvalidArgs0_1) {
+ EXPECT_CALL(*gl_, IsEnabled(_)).Times(0);
+ SpecializedSetup<cmds::IsEnabled, 0>(false);
+ cmds::IsEnabled cmd;
+ cmd.Init(GL_POINT_SPRITE, shared_memory_id_, shared_memory_offset_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
+}
+
+TEST_P(GLES2DecoderTest2, IsEnabledInvalidArgsBadSharedMemoryId) {
+ SpecializedSetup<cmds::IsEnabled, 0>(false);
+ cmds::IsEnabled cmd;
+ cmd.Init(GL_BLEND, kInvalidSharedMemoryId, shared_memory_offset_);
+ EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
+ cmd.Init(GL_BLEND, shared_memory_id_, kInvalidSharedMemoryOffset);
+ EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
+}
+
TEST_P(GLES2DecoderTest2, IsFramebufferValidArgs) {
SpecializedSetup<cmds::IsFramebuffer, 0>(true);
cmds::IsFramebuffer cmd;
@@ -1281,6 +1316,4 @@ TEST_P(GLES2DecoderTest2, ViewportInvalidArgs3_0) {
// TODO(gman): TexStorage2DEXT
// TODO(gman): GenQueriesEXTImmediate
// TODO(gman): DeleteQueriesEXTImmediate
-// TODO(gman): BeginQueryEXT
-
#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 4333b27..e1685cd 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,6 +12,8 @@
#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): BeginQueryEXT
+
TEST_P(GLES2DecoderTest3, BeginTransformFeedbackValidArgs) {
EXPECT_CALL(*gl_, BeginTransformFeedback(GL_POINTS));
SpecializedSetup<cmds::BeginTransformFeedback, 0>(true);
diff --git a/gpu/command_buffer/service/gles2_cmd_validation_autogen.h b/gpu/command_buffer/service/gles2_cmd_validation_autogen.h
index fc650d2..5692847 100644
--- a/gpu/command_buffer/service/gles2_cmd_validation_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_validation_autogen.h
@@ -35,6 +35,7 @@ ValueValidator<GLenum> hint_target;
ValueValidator<GLenum> image_internal_format;
ValueValidator<GLenum> image_usage;
ValueValidator<GLenum> index_type;
+ValueValidator<GLenum> indexed_buffer_target;
ValueValidator<GLenum> matrix_mode;
ValueValidator<GLenum> pixel_store;
ValueValidator<GLint> pixel_store_alignment;
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 a1e5c74..d81b896 100644
--- a/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h
@@ -252,6 +252,11 @@ static const GLenum valid_index_type_table[] = {
GL_UNSIGNED_SHORT,
};
+static const GLenum valid_indexed_buffer_target_table[] = {
+ GL_TRANSFORM_FEEDBACK_BUFFER,
+ GL_UNIFORM_BUFFER,
+};
+
static const GLenum valid_matrix_mode_table[] = {
GL_PATH_PROJECTION_CHROMIUM,
GL_PATH_MODELVIEW_CHROMIUM,
@@ -593,6 +598,8 @@ Validators::Validators()
arraysize(valid_image_internal_format_table)),
image_usage(valid_image_usage_table, arraysize(valid_image_usage_table)),
index_type(valid_index_type_table, arraysize(valid_index_type_table)),
+ indexed_buffer_target(valid_indexed_buffer_target_table,
+ arraysize(valid_indexed_buffer_target_table)),
matrix_mode(valid_matrix_mode_table, arraysize(valid_matrix_mode_table)),
pixel_store(valid_pixel_store_table, arraysize(valid_pixel_store_table)),
pixel_store_alignment(valid_pixel_store_alignment_table,