Add unsafe ES3 APIs: uniforms and attributes.
BUG=429053
TEST=gpu_unittests
[email protected]
[email protected]
Review URL: https://codereview.chromium.org/754193002
Cr-Commit-Position: refs/heads/master@{#305743}
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index ca3a1fb..8464b9da 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -2235,6 +2235,16 @@
'decoder_func': 'DoUniform1iv',
'unit_test': False,
},
+ 'Uniform1ui': {
+ 'type': 'PUTXn',
+ 'count': 1,
+ 'unsafe': True,
+ },
+ 'Uniform1uiv': {
+ 'type': 'PUTn',
+ 'count': 1,
+ 'unsafe': True,
+ },
'Uniform2i': {'type': 'PUTXn', 'count': 2},
'Uniform2f': {'type': 'PUTXn', 'count': 2},
'Uniform2fv': {
@@ -2247,6 +2257,16 @@
'count': 2,
'decoder_func': 'DoUniform2iv',
},
+ 'Uniform2ui': {
+ 'type': 'PUTXn',
+ 'count': 2,
+ 'unsafe': True,
+ },
+ 'Uniform2uiv': {
+ 'type': 'PUTn',
+ 'count': 2,
+ 'unsafe': True,
+ },
'Uniform3i': {'type': 'PUTXn', 'count': 3},
'Uniform3f': {'type': 'PUTXn', 'count': 3},
'Uniform3fv': {
@@ -2259,6 +2279,16 @@
'count': 3,
'decoder_func': 'DoUniform3iv',
},
+ 'Uniform3ui': {
+ 'type': 'PUTXn',
+ 'count': 3,
+ 'unsafe': True,
+ },
+ 'Uniform3uiv': {
+ 'type': 'PUTn',
+ 'count': 3,
+ 'unsafe': True,
+ },
'Uniform4i': {'type': 'PUTXn', 'count': 4},
'Uniform4f': {'type': 'PUTXn', 'count': 4},
'Uniform4fv': {
@@ -2271,21 +2301,61 @@
'count': 4,
'decoder_func': 'DoUniform4iv',
},
+ 'Uniform4ui': {
+ 'type': 'PUTXn',
+ 'count': 4,
+ 'unsafe': True,
+ },
+ 'Uniform4uiv': {
+ 'type': 'PUTn',
+ 'count': 4,
+ 'unsafe': True,
+ },
'UniformMatrix2fv': {
'type': 'PUTn',
'count': 4,
'decoder_func': 'DoUniformMatrix2fv',
},
+ 'UniformMatrix2x3fv': {
+ 'type': 'PUTn',
+ 'count': 6,
+ 'unsafe': True,
+ },
+ 'UniformMatrix2x4fv': {
+ 'type': 'PUTn',
+ 'count': 8,
+ 'unsafe': True,
+ },
'UniformMatrix3fv': {
'type': 'PUTn',
'count': 9,
'decoder_func': 'DoUniformMatrix3fv',
},
+ 'UniformMatrix3x2fv': {
+ 'type': 'PUTn',
+ 'count': 6,
+ 'unsafe': True,
+ },
+ 'UniformMatrix3x4fv': {
+ 'type': 'PUTn',
+ 'count': 12,
+ 'unsafe': True,
+ },
'UniformMatrix4fv': {
'type': 'PUTn',
'count': 16,
'decoder_func': 'DoUniformMatrix4fv',
},
+ 'UniformMatrix4x2fv': {
+ 'type': 'PUTn',
+ 'count': 8,
+ 'unsafe': True,
+ },
+ 'UniformMatrix4x3fv': {
+ 'type': 'PUTn',
+ 'count': 12,
+ 'unsafe': True,
+ },
'UnmapBufferCHROMIUM': {
'gen_cmd': False,
'extension': True,
@@ -2335,12 +2405,36 @@
'count': 4,
'decoder_func': 'DoVertexAttrib4fv',
},
+ 'VertexAttribI4i': {
+ 'unsafe': True,
+ },
+ 'VertexAttribI4iv': {
+ 'type': 'PUT',
+ 'count': 4,
+ 'unsafe': True,
+ },
+ 'VertexAttribI4ui': {
+ 'unsafe': True,
+ },
+ 'VertexAttribI4uiv': {
+ 'type': 'PUT',
+ 'count': 4,
+ 'unsafe': True,
+ },
+ 'VertexAttribIPointer': {
+ 'type': 'Manual',
+ 'cmd_args': 'GLuint indx, GLintVertexAttribSize size, '
+ 'GLenumVertexAttribType type, GLsizei stride, '
+ 'GLuint offset',
+ 'client_test': False,
+ 'unsafe': True,
+ },
'VertexAttribPointer': {
- 'type': 'Manual',
- 'cmd_args': 'GLuint indx, GLintVertexAttribSize size, '
- 'GLenumVertexAttribType type, GLboolean normalized, '
- 'GLsizei stride, GLuint offset',
- 'client_test': False,
+ 'type': 'Manual',
+ 'cmd_args': 'GLuint indx, GLintVertexAttribSize size, '
+ 'GLenumVertexAttribType type, GLboolean normalized, '
+ 'GLsizei stride, GLuint offset',
+ 'client_test': False,
},
'Scissor': {
'type': 'StateSet',
@@ -2350,11 +2444,11 @@
'decoder_func': 'DoViewport',
},
'ResizeCHROMIUM': {
- 'type': 'Custom',
- 'impl_func': False,
- 'unit_test': False,
- 'extension': True,
- 'chromium': True,
+ 'type': 'Custom',
+ 'impl_func': False,
+ 'unit_test': False,
+ 'extension': True,
+ 'chromium': True,
},
'GetRequestableExtensionsCHROMIUM': {
'type': 'Custom',
@@ -5073,10 +5167,20 @@
EXPECT_CALL(
*gl_,
%(gl_func_name)s(%(gl_args)s, %(data_ref)sreinterpret_cast<
- %(data_type)s*>(ImmediateDataAddress(&cmd))));
+ %(data_type)s*>(ImmediateDataAddress(&cmd))));"""
+ if func.IsUnsafe():
+ valid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(true);"""
+ valid_test += """
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
- EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());"""
+ if func.IsUnsafe():
+ valid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand,
+ ExecuteImmediateCmd(cmd, sizeof(temp)));"""
+ valid_test += """
}
"""
gl_arg_strings = [
@@ -5342,10 +5446,20 @@
reinterpret_cast<%(data_type)s*>(ImmediateDataAddress(&cmd))));
SpecializedSetup<cmds::%(name)s, 0>(true);
%(data_type)s temp[%(data_count)s * 2] = { 0, };
- cmd.Init(%(args)s, &temp[0]);
+ cmd.Init(%(args)s, &temp[0]);"""
+ if func.IsUnsafe():
+ valid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(true);"""
+ valid_test += """
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
- EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());"""
+ if func.IsUnsafe():
+ valid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand,
+ ExecuteImmediateCmd(cmd, sizeof(temp)));"""
+ valid_test += """
}
"""
gl_arg_strings = []
@@ -5619,7 +5733,13 @@
def WriteHandlerImplementation(self, func, file):
"""Overrriden from TypeHandler."""
- code = """ %(type)s temp[%(count)s] = { %(values)s};
+ code = """ %(type)s temp[%(count)s] = { %(values)s};"""
+ if func.IsUnsafe():
+ code += """
+ gl%(name)sv(%(location)s, 1, &temp[0]);
+"""
+ else:
+ code += """
Do%(name)sv(%(location)s, 1, &temp[0]);
"""
values = ""
@@ -5645,9 +5765,18 @@
EXPECT_CALL(*gl_, %(name)sv(%(local_args)s));
SpecializedSetup<cmds::%(name)s, 0>(true);
cmds::%(name)s cmd;
- cmd.Init(%(args)s);
+ cmd.Init(%(args)s);"""
+ if func.IsUnsafe():
+ valid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(true);"""
+ valid_test += """
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
- EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());"""
+ if func.IsUnsafe():
+ valid_test += """
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));"""
+ valid_test += """
}
"""
args = func.GetOriginalArgs()
diff --git a/gpu/command_buffer/client/gles2_c_lib_autogen.h b/gpu/command_buffer/client/gles2_c_lib_autogen.h
index 16af59f..2d2316c 100644
--- a/gpu/command_buffer/client/gles2_c_lib_autogen.h
+++ b/gpu/command_buffer/client/gles2_c_lib_autogen.h
@@ -527,6 +527,12 @@
void GLES2Uniform1iv(GLint location, GLsizei count, const GLint* v) {
gles2::GetGLContext()->Uniform1iv(location, count, v);
}
+void GLES2Uniform1ui(GLint location, GLuint x) {
+ gles2::GetGLContext()->Uniform1ui(location, x);
+}
+void GLES2Uniform1uiv(GLint location, GLsizei count, const GLuint* v) {
+ gles2::GetGLContext()->Uniform1uiv(location, count, v);
+}
void GLES2Uniform2f(GLint location, GLfloat x, GLfloat y) {
gles2::GetGLContext()->Uniform2f(location, x, y);
}
@@ -539,6 +545,12 @@
void GLES2Uniform2iv(GLint location, GLsizei count, const GLint* v) {
gles2::GetGLContext()->Uniform2iv(location, count, v);
}
+void GLES2Uniform2ui(GLint location, GLuint x, GLuint y) {
+ gles2::GetGLContext()->Uniform2ui(location, x, y);
+}
+void GLES2Uniform2uiv(GLint location, GLsizei count, const GLuint* v) {
+ gles2::GetGLContext()->Uniform2uiv(location, count, v);
+}
void GLES2Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) {
gles2::GetGLContext()->Uniform3f(location, x, y, z);
}
@@ -551,6 +563,12 @@
void GLES2Uniform3iv(GLint location, GLsizei count, const GLint* v) {
gles2::GetGLContext()->Uniform3iv(location, count, v);
}
+void GLES2Uniform3ui(GLint location, GLuint x, GLuint y, GLuint z) {
+ gles2::GetGLContext()->Uniform3ui(location, x, y, z);
+}
+void GLES2Uniform3uiv(GLint location, GLsizei count, const GLuint* v) {
+ gles2::GetGLContext()->Uniform3uiv(location, count, v);
+}
void GLES2Uniform4f(GLint location,
GLfloat x,
GLfloat y,
@@ -567,24 +585,66 @@
void GLES2Uniform4iv(GLint location, GLsizei count, const GLint* v) {
gles2::GetGLContext()->Uniform4iv(location, count, v);
}
+void GLES2Uniform4ui(GLint location, GLuint x, GLuint y, GLuint z, GLuint w) {
+ gles2::GetGLContext()->Uniform4ui(location, x, y, z, w);
+}
+void GLES2Uniform4uiv(GLint location, GLsizei count, const GLuint* v) {
+ gles2::GetGLContext()->Uniform4uiv(location, count, v);
+}
void GLES2UniformMatrix2fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) {
gles2::GetGLContext()->UniformMatrix2fv(location, count, transpose, value);
}
+void GLES2UniformMatrix2x3fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ gles2::GetGLContext()->UniformMatrix2x3fv(location, count, transpose, value);
+}
+void GLES2UniformMatrix2x4fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ gles2::GetGLContext()->UniformMatrix2x4fv(location, count, transpose, value);
+}
void GLES2UniformMatrix3fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) {
gles2::GetGLContext()->UniformMatrix3fv(location, count, transpose, value);
}
+void GLES2UniformMatrix3x2fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ gles2::GetGLContext()->UniformMatrix3x2fv(location, count, transpose, value);
+}
+void GLES2UniformMatrix3x4fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ gles2::GetGLContext()->UniformMatrix3x4fv(location, count, transpose, value);
+}
void GLES2UniformMatrix4fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) {
gles2::GetGLContext()->UniformMatrix4fv(location, count, transpose, value);
}
+void GLES2UniformMatrix4x2fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ gles2::GetGLContext()->UniformMatrix4x2fv(location, count, transpose, value);
+}
+void GLES2UniformMatrix4x3fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ gles2::GetGLContext()->UniformMatrix4x3fv(location, count, transpose, value);
+}
void GLES2UseProgram(GLuint program) {
gles2::GetGLContext()->UseProgram(program);
}
@@ -619,6 +679,29 @@
void GLES2VertexAttrib4fv(GLuint indx, const GLfloat* values) {
gles2::GetGLContext()->VertexAttrib4fv(indx, values);
}
+void GLES2VertexAttribI4i(GLuint indx, GLint x, GLint y, GLint z, GLint w) {
+ gles2::GetGLContext()->VertexAttribI4i(indx, x, y, z, w);
+}
+void GLES2VertexAttribI4iv(GLuint indx, const GLint* values) {
+ gles2::GetGLContext()->VertexAttribI4iv(indx, values);
+}
+void GLES2VertexAttribI4ui(GLuint indx,
+ GLuint x,
+ GLuint y,
+ GLuint z,
+ GLuint w) {
+ gles2::GetGLContext()->VertexAttribI4ui(indx, x, y, z, w);
+}
+void GLES2VertexAttribI4uiv(GLuint indx, const GLuint* values) {
+ gles2::GetGLContext()->VertexAttribI4uiv(indx, values);
+}
+void GLES2VertexAttribIPointer(GLuint indx,
+ GLint size,
+ GLenum type,
+ GLsizei stride,
+ const void* ptr) {
+ gles2::GetGLContext()->VertexAttribIPointer(indx, size, type, stride, ptr);
+}
void GLES2VertexAttribPointer(GLuint indx,
GLint size,
GLenum type,
@@ -1467,6 +1550,14 @@
reinterpret_cast<GLES2FunctionPointer>(glUniform1iv),
},
{
+ "glUniform1ui",
+ reinterpret_cast<GLES2FunctionPointer>(glUniform1ui),
+ },
+ {
+ "glUniform1uiv",
+ reinterpret_cast<GLES2FunctionPointer>(glUniform1uiv),
+ },
+ {
"glUniform2f",
reinterpret_cast<GLES2FunctionPointer>(glUniform2f),
},
@@ -1483,6 +1574,14 @@
reinterpret_cast<GLES2FunctionPointer>(glUniform2iv),
},
{
+ "glUniform2ui",
+ reinterpret_cast<GLES2FunctionPointer>(glUniform2ui),
+ },
+ {
+ "glUniform2uiv",
+ reinterpret_cast<GLES2FunctionPointer>(glUniform2uiv),
+ },
+ {
"glUniform3f",
reinterpret_cast<GLES2FunctionPointer>(glUniform3f),
},
@@ -1499,6 +1598,14 @@
reinterpret_cast<GLES2FunctionPointer>(glUniform3iv),
},
{
+ "glUniform3ui",
+ reinterpret_cast<GLES2FunctionPointer>(glUniform3ui),
+ },
+ {
+ "glUniform3uiv",
+ reinterpret_cast<GLES2FunctionPointer>(glUniform3uiv),
+ },
+ {
"glUniform4f",
reinterpret_cast<GLES2FunctionPointer>(glUniform4f),
},
@@ -1515,18 +1622,50 @@
reinterpret_cast<GLES2FunctionPointer>(glUniform4iv),
},
{
+ "glUniform4ui",
+ reinterpret_cast<GLES2FunctionPointer>(glUniform4ui),
+ },
+ {
+ "glUniform4uiv",
+ reinterpret_cast<GLES2FunctionPointer>(glUniform4uiv),
+ },
+ {
"glUniformMatrix2fv",
reinterpret_cast<GLES2FunctionPointer>(glUniformMatrix2fv),
},
{
+ "glUniformMatrix2x3fv",
+ reinterpret_cast<GLES2FunctionPointer>(glUniformMatrix2x3fv),
+ },
+ {
+ "glUniformMatrix2x4fv",
+ reinterpret_cast<GLES2FunctionPointer>(glUniformMatrix2x4fv),
+ },
+ {
"glUniformMatrix3fv",
reinterpret_cast<GLES2FunctionPointer>(glUniformMatrix3fv),
},
{
+ "glUniformMatrix3x2fv",
+ reinterpret_cast<GLES2FunctionPointer>(glUniformMatrix3x2fv),
+ },
+ {
+ "glUniformMatrix3x4fv",
+ reinterpret_cast<GLES2FunctionPointer>(glUniformMatrix3x4fv),
+ },
+ {
"glUniformMatrix4fv",
reinterpret_cast<GLES2FunctionPointer>(glUniformMatrix4fv),
},
{
+ "glUniformMatrix4x2fv",
+ reinterpret_cast<GLES2FunctionPointer>(glUniformMatrix4x2fv),
+ },
+ {
+ "glUniformMatrix4x3fv",
+ reinterpret_cast<GLES2FunctionPointer>(glUniformMatrix4x3fv),
+ },
+ {
"glUseProgram",
reinterpret_cast<GLES2FunctionPointer>(glUseProgram),
},
@@ -1567,6 +1706,26 @@
reinterpret_cast<GLES2FunctionPointer>(glVertexAttrib4fv),
},
{
+ "glVertexAttribI4i",
+ reinterpret_cast<GLES2FunctionPointer>(glVertexAttribI4i),
+ },
+ {
+ "glVertexAttribI4iv",
+ reinterpret_cast<GLES2FunctionPointer>(glVertexAttribI4iv),
+ },
+ {
+ "glVertexAttribI4ui",
+ reinterpret_cast<GLES2FunctionPointer>(glVertexAttribI4ui),
+ },
+ {
+ "glVertexAttribI4uiv",
+ reinterpret_cast<GLES2FunctionPointer>(glVertexAttribI4uiv),
+ },
+ {
+ "glVertexAttribIPointer",
+ reinterpret_cast<GLES2FunctionPointer>(glVertexAttribIPointer),
+ },
+ {
"glVertexAttribPointer",
reinterpret_cast<GLES2FunctionPointer>(glVertexAttribPointer),
},
diff --git a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
index 11bee61..d3eb502f 100644
--- a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
+++ b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
@@ -1120,6 +1120,22 @@
}
}
+void Uniform1ui(GLint location, GLuint x) {
+ gles2::cmds::Uniform1ui* c = GetCmdSpace<gles2::cmds::Uniform1ui>();
+ if (c) {
+ c->Init(location, x);
+ }
+}
+
+void Uniform1uivImmediate(GLint location, GLsizei count, const GLuint* v) {
+ const uint32_t size = gles2::cmds::Uniform1uivImmediate::ComputeSize(count);
+ gles2::cmds::Uniform1uivImmediate* c =
+ GetImmediateCmdSpaceTotalSize<gles2::cmds::Uniform1uivImmediate>(size);
+ if (c) {
+ c->Init(location, count, v);
+ }
+}
+
void Uniform2f(GLint location, GLfloat x, GLfloat y) {
gles2::cmds::Uniform2f* c = GetCmdSpace<gles2::cmds::Uniform2f>();
if (c) {
@@ -1152,6 +1168,22 @@
}
}
+void Uniform2ui(GLint location, GLuint x, GLuint y) {
+ gles2::cmds::Uniform2ui* c = GetCmdSpace<gles2::cmds::Uniform2ui>();
+ if (c) {
+ c->Init(location, x, y);
+ }
+}
+
+void Uniform2uivImmediate(GLint location, GLsizei count, const GLuint* v) {
+ const uint32_t size = gles2::cmds::Uniform2uivImmediate::ComputeSize(count);
+ gles2::cmds::Uniform2uivImmediate* c =
+ GetImmediateCmdSpaceTotalSize<gles2::cmds::Uniform2uivImmediate>(size);
+ if (c) {
+ c->Init(location, count, v);
+ }
+}
+
void Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) {
gles2::cmds::Uniform3f* c = GetCmdSpace<gles2::cmds::Uniform3f>();
if (c) {
@@ -1184,6 +1216,22 @@
}
}
+void Uniform3ui(GLint location, GLuint x, GLuint y, GLuint z) {
+ gles2::cmds::Uniform3ui* c = GetCmdSpace<gles2::cmds::Uniform3ui>();
+ if (c) {
+ c->Init(location, x, y, z);
+ }
+}
+
+void Uniform3uivImmediate(GLint location, GLsizei count, const GLuint* v) {
+ const uint32_t size = gles2::cmds::Uniform3uivImmediate::ComputeSize(count);
+ gles2::cmds::Uniform3uivImmediate* c =
+ GetImmediateCmdSpaceTotalSize<gles2::cmds::Uniform3uivImmediate>(size);
+ if (c) {
+ c->Init(location, count, v);
+ }
+}
+
void Uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
gles2::cmds::Uniform4f* c = GetCmdSpace<gles2::cmds::Uniform4f>();
if (c) {
@@ -1216,6 +1264,22 @@
}
}
+void Uniform4ui(GLint location, GLuint x, GLuint y, GLuint z, GLuint w) {
+ gles2::cmds::Uniform4ui* c = GetCmdSpace<gles2::cmds::Uniform4ui>();
+ if (c) {
+ c->Init(location, x, y, z, w);
+ }
+}
+
+void Uniform4uivImmediate(GLint location, GLsizei count, const GLuint* v) {
+ const uint32_t size = gles2::cmds::Uniform4uivImmediate::ComputeSize(count);
+ gles2::cmds::Uniform4uivImmediate* c =
+ GetImmediateCmdSpaceTotalSize<gles2::cmds::Uniform4uivImmediate>(size);
+ if (c) {
+ c->Init(location, count, v);
+ }
+}
+
void UniformMatrix2fvImmediate(GLint location,
GLsizei count,
const GLfloat* value) {
@@ -1229,6 +1293,32 @@
}
}
+void UniformMatrix2x3fvImmediate(GLint location,
+ GLsizei count,
+ const GLfloat* value) {
+ const uint32_t size =
+ gles2::cmds::UniformMatrix2x3fvImmediate::ComputeSize(count);
+ gles2::cmds::UniformMatrix2x3fvImmediate* c =
+ GetImmediateCmdSpaceTotalSize<gles2::cmds::UniformMatrix2x3fvImmediate>(
+ size);
+ if (c) {
+ c->Init(location, count, value);
+ }
+}
+
+void UniformMatrix2x4fvImmediate(GLint location,
+ GLsizei count,
+ const GLfloat* value) {
+ const uint32_t size =
+ gles2::cmds::UniformMatrix2x4fvImmediate::ComputeSize(count);
+ gles2::cmds::UniformMatrix2x4fvImmediate* c =
+ GetImmediateCmdSpaceTotalSize<gles2::cmds::UniformMatrix2x4fvImmediate>(
+ size);
+ if (c) {
+ c->Init(location, count, value);
+ }
+}
+
void UniformMatrix3fvImmediate(GLint location,
GLsizei count,
const GLfloat* value) {
@@ -1242,6 +1332,32 @@
}
}
+void UniformMatrix3x2fvImmediate(GLint location,
+ GLsizei count,
+ const GLfloat* value) {
+ const uint32_t size =
+ gles2::cmds::UniformMatrix3x2fvImmediate::ComputeSize(count);
+ gles2::cmds::UniformMatrix3x2fvImmediate* c =
+ GetImmediateCmdSpaceTotalSize<gles2::cmds::UniformMatrix3x2fvImmediate>(
+ size);
+ if (c) {
+ c->Init(location, count, value);
+ }
+}
+
+void UniformMatrix3x4fvImmediate(GLint location,
+ GLsizei count,
+ const GLfloat* value) {
+ const uint32_t size =
+ gles2::cmds::UniformMatrix3x4fvImmediate::ComputeSize(count);
+ gles2::cmds::UniformMatrix3x4fvImmediate* c =
+ GetImmediateCmdSpaceTotalSize<gles2::cmds::UniformMatrix3x4fvImmediate>(
+ size);
+ if (c) {
+ c->Init(location, count, value);
+ }
+}
+
void UniformMatrix4fvImmediate(GLint location,
GLsizei count,
const GLfloat* value) {
@@ -1255,6 +1371,32 @@
}
}
+void UniformMatrix4x2fvImmediate(GLint location,
+ GLsizei count,
+ const GLfloat* value) {
+ const uint32_t size =
+ gles2::cmds::UniformMatrix4x2fvImmediate::ComputeSize(count);
+ gles2::cmds::UniformMatrix4x2fvImmediate* c =
+ GetImmediateCmdSpaceTotalSize<gles2::cmds::UniformMatrix4x2fvImmediate>(
+ size);
+ if (c) {
+ c->Init(location, count, value);
+ }
+}
+
+void UniformMatrix4x3fvImmediate(GLint location,
+ GLsizei count,
+ const GLfloat* value) {
+ const uint32_t size =
+ gles2::cmds::UniformMatrix4x3fvImmediate::ComputeSize(count);
+ gles2::cmds::UniformMatrix4x3fvImmediate* c =
+ GetImmediateCmdSpaceTotalSize<gles2::cmds::UniformMatrix4x3fvImmediate>(
+ size);
+ if (c) {
+ c->Init(location, count, value);
+ }
+}
+
void UseProgram(GLuint program) {
gles2::cmds::UseProgram* c = GetCmdSpace<gles2::cmds::UseProgram>();
if (c) {
@@ -1337,6 +1479,53 @@
}
}
+void VertexAttribI4i(GLuint indx, GLint x, GLint y, GLint z, GLint w) {
+ gles2::cmds::VertexAttribI4i* c = GetCmdSpace<gles2::cmds::VertexAttribI4i>();
+ if (c) {
+ c->Init(indx, x, y, z, w);
+ }
+}
+
+void VertexAttribI4ivImmediate(GLuint indx, const GLint* values) {
+ const uint32_t size = gles2::cmds::VertexAttribI4ivImmediate::ComputeSize();
+ gles2::cmds::VertexAttribI4ivImmediate* c =
+ GetImmediateCmdSpaceTotalSize<gles2::cmds::VertexAttribI4ivImmediate>(
+ size);
+ if (c) {
+ c->Init(indx, values);
+ }
+}
+
+void VertexAttribI4ui(GLuint indx, GLuint x, GLuint y, GLuint z, GLuint w) {
+ gles2::cmds::VertexAttribI4ui* c =
+ GetCmdSpace<gles2::cmds::VertexAttribI4ui>();
+ if (c) {
+ c->Init(indx, x, y, z, w);
+ }
+}
+
+void VertexAttribI4uivImmediate(GLuint indx, const GLuint* values) {
+ const uint32_t size = gles2::cmds::VertexAttribI4uivImmediate::ComputeSize();
+ gles2::cmds::VertexAttribI4uivImmediate* c =
+ GetImmediateCmdSpaceTotalSize<gles2::cmds::VertexAttribI4uivImmediate>(
+ size);
+ if (c) {
+ c->Init(indx, values);
+ }
+}
+
+void VertexAttribIPointer(GLuint indx,
+ GLint size,
+ GLenum type,
+ GLsizei stride,
+ GLuint offset) {
+ gles2::cmds::VertexAttribIPointer* c =
+ GetCmdSpace<gles2::cmds::VertexAttribIPointer>();
+ if (c) {
+ c->Init(indx, size, type, stride, offset);
+ }
+}
+
void VertexAttribPointer(GLuint indx,
GLint size,
GLenum type,
diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc
index 2066a67f..1916e7d 100644
--- a/gpu/command_buffer/client/gles2_implementation.cc
+++ b/gpu/command_buffer/client/gles2_implementation.cc
@@ -1118,6 +1118,19 @@
CheckGLError();
}
+void GLES2Implementation::VertexAttribIPointer(
+ GLuint index, GLint size, GLenum type, GLsizei stride, const void* ptr) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttribPointer("
+ << index << ", "
+ << size << ", "
+ << GLES2Util::GetStringVertexAttribType(type) << ", "
+ << stride << ", "
+ << ptr << ")");
+ helper_->VertexAttribIPointer(index, size, type, stride, ToGLuint(ptr));
+ CheckGLError();
+}
+
void GLES2Implementation::VertexAttribPointer(
GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride,
const void* ptr) {
@@ -1128,7 +1141,7 @@
<< GLES2Util::GetStringVertexAttribType(type) << ", "
<< GLES2Util::GetStringBool(normalized) << ", "
<< stride << ", "
- << static_cast<const void*>(ptr) << ")");
+ << ptr << ")");
// Record the info on the client side.
if (!vertex_array_object_manager_->SetAttribPointer(
bound_array_buffer_id_, index, size, type, normalized, stride, ptr)) {
diff --git a/gpu/command_buffer/client/gles2_implementation_autogen.h b/gpu/command_buffer/client/gles2_implementation_autogen.h
index 73b24b8..a95d25a6 100644
--- a/gpu/command_buffer/client/gles2_implementation_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_autogen.h
@@ -390,6 +390,10 @@
void Uniform1iv(GLint location, GLsizei count, const GLint* v) override;
+void Uniform1ui(GLint location, GLuint x) override;
+
+void Uniform1uiv(GLint location, GLsizei count, const GLuint* v) override;
+
void Uniform2f(GLint location, GLfloat x, GLfloat y) override;
void Uniform2fv(GLint location, GLsizei count, const GLfloat* v) override;
@@ -398,6 +402,10 @@
void Uniform2iv(GLint location, GLsizei count, const GLint* v) override;
+void Uniform2ui(GLint location, GLuint x, GLuint y) override;
+
+void Uniform2uiv(GLint location, GLsizei count, const GLuint* v) override;
+
void Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) override;
void Uniform3fv(GLint location, GLsizei count, const GLfloat* v) override;
@@ -406,6 +414,10 @@
void Uniform3iv(GLint location, GLsizei count, const GLint* v) override;
+void Uniform3ui(GLint location, GLuint x, GLuint y, GLuint z) override;
+
+void Uniform3uiv(GLint location, GLsizei count, const GLuint* v) override;
+
void Uniform4f(GLint location,
GLfloat x,
GLfloat y,
@@ -418,21 +430,59 @@
void Uniform4iv(GLint location, GLsizei count, const GLint* v) override;
+void Uniform4ui(GLint location,
+ GLuint x,
+ GLuint y,
+ GLuint z,
+ GLuint w) override;
+
+void Uniform4uiv(GLint location, GLsizei count, const GLuint* v) override;
+
void UniformMatrix2fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) override;
+void UniformMatrix2x3fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
+
+void UniformMatrix2x4fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
+
void UniformMatrix3fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) override;
+void UniformMatrix3x2fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
+
+void UniformMatrix3x4fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
+
void UniformMatrix4fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) override;
+void UniformMatrix4x2fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
+
+void UniformMatrix4x3fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
+
void UseProgram(GLuint program) override;
void ValidateProgram(GLuint program) override;
@@ -457,6 +507,24 @@
void VertexAttrib4fv(GLuint indx, const GLfloat* values) override;
+void VertexAttribI4i(GLuint indx, GLint x, GLint y, GLint z, GLint w) override;
+
+void VertexAttribI4iv(GLuint indx, const GLint* values) override;
+
+void VertexAttribI4ui(GLuint indx,
+ GLuint x,
+ GLuint y,
+ GLuint z,
+ GLuint w) override;
+
+void VertexAttribI4uiv(GLuint indx, const GLuint* values) override;
+
+void VertexAttribIPointer(GLuint indx,
+ GLint size,
+ GLenum type,
+ GLsizei stride,
+ const void* ptr) override;
+
void VertexAttribPointer(GLuint indx,
GLint size,
GLenum type,
diff --git a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
index 317212ab..bd36b4a 100644
--- a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
@@ -1379,6 +1379,33 @@
CheckGLError();
}
+void GLES2Implementation::Uniform1ui(GLint location, GLuint x) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform1ui(" << location << ", "
+ << x << ")");
+ helper_->Uniform1ui(location, x);
+ CheckGLError();
+}
+
+void GLES2Implementation::Uniform1uiv(GLint location,
+ GLsizei count,
+ const GLuint* v) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform1uiv(" << location << ", "
+ << count << ", " << static_cast<const void*>(v) << ")");
+ GPU_CLIENT_LOG_CODE_BLOCK({
+ for (GLsizei i = 0; i < count; ++i) {
+ GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 1]);
+ }
+ });
+ if (count < 0) {
+ SetGLError(GL_INVALID_VALUE, "glUniform1uiv", "count < 0");
+ return;
+ }
+ helper_->Uniform1uivImmediate(location, count, v);
+ CheckGLError();
+}
+
void GLES2Implementation::Uniform2f(GLint location, GLfloat x, GLfloat y) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform2f(" << location << ", "
@@ -1433,6 +1460,33 @@
CheckGLError();
}
+void GLES2Implementation::Uniform2ui(GLint location, GLuint x, GLuint y) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform2ui(" << location << ", "
+ << x << ", " << y << ")");
+ helper_->Uniform2ui(location, x, y);
+ CheckGLError();
+}
+
+void GLES2Implementation::Uniform2uiv(GLint location,
+ GLsizei count,
+ const GLuint* v) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform2uiv(" << location << ", "
+ << count << ", " << static_cast<const void*>(v) << ")");
+ GPU_CLIENT_LOG_CODE_BLOCK({
+ for (GLsizei i = 0; i < count; ++i) {
+ GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 2] << ", " << v[1 + i * 2]);
+ }
+ });
+ if (count < 0) {
+ SetGLError(GL_INVALID_VALUE, "glUniform2uiv", "count < 0");
+ return;
+ }
+ helper_->Uniform2uivImmediate(location, count, v);
+ CheckGLError();
+}
+
void GLES2Implementation::Uniform3f(GLint location,
GLfloat x,
GLfloat y,
@@ -1492,6 +1546,37 @@
CheckGLError();
}
+void GLES2Implementation::Uniform3ui(GLint location,
+ GLuint x,
+ GLuint y,
+ GLuint z) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform3ui(" << location << ", "
+ << x << ", " << y << ", " << z << ")");
+ helper_->Uniform3ui(location, x, y, z);
+ CheckGLError();
+}
+
+void GLES2Implementation::Uniform3uiv(GLint location,
+ GLsizei count,
+ const GLuint* v) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform3uiv(" << location << ", "
+ << count << ", " << static_cast<const void*>(v) << ")");
+ GPU_CLIENT_LOG_CODE_BLOCK({
+ for (GLsizei i = 0; i < count; ++i) {
+ GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 3] << ", " << v[1 + i * 3]
+ << ", " << v[2 + i * 3]);
+ }
+ });
+ if (count < 0) {
+ SetGLError(GL_INVALID_VALUE, "glUniform3uiv", "count < 0");
+ return;
+ }
+ helper_->Uniform3uivImmediate(location, count, v);
+ CheckGLError();
+}
+
void GLES2Implementation::Uniform4f(GLint location,
GLfloat x,
GLfloat y,
@@ -1556,6 +1641,38 @@
CheckGLError();
}
+void GLES2Implementation::Uniform4ui(GLint location,
+ GLuint x,
+ GLuint y,
+ GLuint z,
+ GLuint w) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform4ui(" << location << ", "
+ << x << ", " << y << ", " << z << ", " << w << ")");
+ helper_->Uniform4ui(location, x, y, z, w);
+ CheckGLError();
+}
+
+void GLES2Implementation::Uniform4uiv(GLint location,
+ GLsizei count,
+ const GLuint* v) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform4uiv(" << location << ", "
+ << count << ", " << static_cast<const void*>(v) << ")");
+ GPU_CLIENT_LOG_CODE_BLOCK({
+ for (GLsizei i = 0; i < count; ++i) {
+ GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 4] << ", " << v[1 + i * 4]
+ << ", " << v[2 + i * 4] << ", " << v[3 + i * 4]);
+ }
+ });
+ if (count < 0) {
+ SetGLError(GL_INVALID_VALUE, "glUniform4uiv", "count < 0");
+ return;
+ }
+ helper_->Uniform4uivImmediate(location, count, v);
+ CheckGLError();
+}
+
void GLES2Implementation::UniformMatrix2fv(GLint location,
GLsizei count,
GLboolean transpose,
@@ -1585,6 +1702,67 @@
CheckGLError();
}
+void GLES2Implementation::UniformMatrix2x3fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniformMatrix2x3fv(" << location
+ << ", " << count << ", "
+ << GLES2Util::GetStringBool(transpose) << ", "
+ << static_cast<const void*>(value) << ")");
+ GPU_CLIENT_LOG_CODE_BLOCK({
+ for (GLsizei i = 0; i < count; ++i) {
+ GPU_CLIENT_LOG(" " << i << ": " << value[0 + i * 6] << ", "
+ << value[1 + i * 6] << ", " << value[2 + i * 6]
+ << ", " << value[3 + i * 6] << ", "
+ << value[4 + i * 6] << ", " << value[5 + i * 6]);
+ }
+ });
+ if (count < 0) {
+ SetGLError(GL_INVALID_VALUE, "glUniformMatrix2x3fv", "count < 0");
+ return;
+ }
+ if (transpose != false) {
+ SetGLError(GL_INVALID_VALUE, "glUniformMatrix2x3fv",
+ "transpose GL_INVALID_VALUE");
+ return;
+ }
+ helper_->UniformMatrix2x3fvImmediate(location, count, value);
+ CheckGLError();
+}
+
+void GLES2Implementation::UniformMatrix2x4fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniformMatrix2x4fv(" << location
+ << ", " << count << ", "
+ << GLES2Util::GetStringBool(transpose) << ", "
+ << static_cast<const void*>(value) << ")");
+ GPU_CLIENT_LOG_CODE_BLOCK({
+ for (GLsizei i = 0; i < count; ++i) {
+ GPU_CLIENT_LOG(
+ " " << i << ": " << value[0 + i * 8] << ", " << value[1 + i * 8]
+ << ", " << value[2 + i * 8] << ", " << value[3 + i * 8] << ", "
+ << value[4 + i * 8] << ", " << value[5 + i * 8] << ", "
+ << value[6 + i * 8] << ", " << value[7 + i * 8]);
+ }
+ });
+ if (count < 0) {
+ SetGLError(GL_INVALID_VALUE, "glUniformMatrix2x4fv", "count < 0");
+ return;
+ }
+ if (transpose != false) {
+ SetGLError(GL_INVALID_VALUE, "glUniformMatrix2x4fv",
+ "transpose GL_INVALID_VALUE");
+ return;
+ }
+ helper_->UniformMatrix2x4fvImmediate(location, count, value);
+ CheckGLError();
+}
+
void GLES2Implementation::UniformMatrix3fv(GLint location,
GLsizei count,
GLboolean transpose,
@@ -1617,6 +1795,69 @@
CheckGLError();
}
+void GLES2Implementation::UniformMatrix3x2fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniformMatrix3x2fv(" << location
+ << ", " << count << ", "
+ << GLES2Util::GetStringBool(transpose) << ", "
+ << static_cast<const void*>(value) << ")");
+ GPU_CLIENT_LOG_CODE_BLOCK({
+ for (GLsizei i = 0; i < count; ++i) {
+ GPU_CLIENT_LOG(" " << i << ": " << value[0 + i * 6] << ", "
+ << value[1 + i * 6] << ", " << value[2 + i * 6]
+ << ", " << value[3 + i * 6] << ", "
+ << value[4 + i * 6] << ", " << value[5 + i * 6]);
+ }
+ });
+ if (count < 0) {
+ SetGLError(GL_INVALID_VALUE, "glUniformMatrix3x2fv", "count < 0");
+ return;
+ }
+ if (transpose != false) {
+ SetGLError(GL_INVALID_VALUE, "glUniformMatrix3x2fv",
+ "transpose GL_INVALID_VALUE");
+ return;
+ }
+ helper_->UniformMatrix3x2fvImmediate(location, count, value);
+ CheckGLError();
+}
+
+void GLES2Implementation::UniformMatrix3x4fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniformMatrix3x4fv(" << location
+ << ", " << count << ", "
+ << GLES2Util::GetStringBool(transpose) << ", "
+ << static_cast<const void*>(value) << ")");
+ GPU_CLIENT_LOG_CODE_BLOCK({
+ for (GLsizei i = 0; i < count; ++i) {
+ GPU_CLIENT_LOG(
+ " " << i << ": " << value[0 + i * 12] << ", " << value[1 + i * 12]
+ << ", " << value[2 + i * 12] << ", " << value[3 + i * 12] << ", "
+ << value[4 + i * 12] << ", " << value[5 + i * 12] << ", "
+ << value[6 + i * 12] << ", " << value[7 + i * 12] << ", "
+ << value[8 + i * 12] << ", " << value[9 + i * 12] << ", "
+ << value[10 + i * 12] << ", " << value[11 + i * 12]);
+ }
+ });
+ if (count < 0) {
+ SetGLError(GL_INVALID_VALUE, "glUniformMatrix3x4fv", "count < 0");
+ return;
+ }
+ if (transpose != false) {
+ SetGLError(GL_INVALID_VALUE, "glUniformMatrix3x4fv",
+ "transpose GL_INVALID_VALUE");
+ return;
+ }
+ helper_->UniformMatrix3x4fvImmediate(location, count, value);
+ CheckGLError();
+}
+
void GLES2Implementation::UniformMatrix4fv(GLint location,
GLsizei count,
GLboolean transpose,
@@ -1652,6 +1893,70 @@
CheckGLError();
}
+void GLES2Implementation::UniformMatrix4x2fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniformMatrix4x2fv(" << location
+ << ", " << count << ", "
+ << GLES2Util::GetStringBool(transpose) << ", "
+ << static_cast<const void*>(value) << ")");
+ GPU_CLIENT_LOG_CODE_BLOCK({
+ for (GLsizei i = 0; i < count; ++i) {
+ GPU_CLIENT_LOG(
+ " " << i << ": " << value[0 + i * 8] << ", " << value[1 + i * 8]
+ << ", " << value[2 + i * 8] << ", " << value[3 + i * 8] << ", "
+ << value[4 + i * 8] << ", " << value[5 + i * 8] << ", "
+ << value[6 + i * 8] << ", " << value[7 + i * 8]);
+ }
+ });
+ if (count < 0) {
+ SetGLError(GL_INVALID_VALUE, "glUniformMatrix4x2fv", "count < 0");
+ return;
+ }
+ if (transpose != false) {
+ SetGLError(GL_INVALID_VALUE, "glUniformMatrix4x2fv",
+ "transpose GL_INVALID_VALUE");
+ return;
+ }
+ helper_->UniformMatrix4x2fvImmediate(location, count, value);
+ CheckGLError();
+}
+
+void GLES2Implementation::UniformMatrix4x3fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniformMatrix4x3fv(" << location
+ << ", " << count << ", "
+ << GLES2Util::GetStringBool(transpose) << ", "
+ << static_cast<const void*>(value) << ")");
+ GPU_CLIENT_LOG_CODE_BLOCK({
+ for (GLsizei i = 0; i < count; ++i) {
+ GPU_CLIENT_LOG(
+ " " << i << ": " << value[0 + i * 12] << ", " << value[1 + i * 12]
+ << ", " << value[2 + i * 12] << ", " << value[3 + i * 12] << ", "
+ << value[4 + i * 12] << ", " << value[5 + i * 12] << ", "
+ << value[6 + i * 12] << ", " << value[7 + i * 12] << ", "
+ << value[8 + i * 12] << ", " << value[9 + i * 12] << ", "
+ << value[10 + i * 12] << ", " << value[11 + i * 12]);
+ }
+ });
+ if (count < 0) {
+ SetGLError(GL_INVALID_VALUE, "glUniformMatrix4x3fv", "count < 0");
+ return;
+ }
+ if (transpose != false) {
+ SetGLError(GL_INVALID_VALUE, "glUniformMatrix4x3fv",
+ "transpose GL_INVALID_VALUE");
+ return;
+ }
+ helper_->UniformMatrix4x3fvImmediate(location, count, value);
+ CheckGLError();
+}
+
void GLES2Implementation::UseProgram(GLuint program) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUseProgram(" << program << ")");
@@ -1750,6 +2055,51 @@
CheckGLError();
}
+void GLES2Implementation::VertexAttribI4i(GLuint indx,
+ GLint x,
+ GLint y,
+ GLint z,
+ GLint w) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttribI4i(" << indx << ", "
+ << x << ", " << y << ", " << z << ", " << w << ")");
+ helper_->VertexAttribI4i(indx, x, y, z, w);
+ CheckGLError();
+}
+
+void GLES2Implementation::VertexAttribI4iv(GLuint indx, const GLint* values) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttribI4iv(" << indx
+ << ", " << static_cast<const void*>(values) << ")");
+ GPU_CLIENT_LOG("values: " << values[0] << ", " << values[1] << ", "
+ << values[2] << ", " << values[3]);
+ helper_->VertexAttribI4ivImmediate(indx, values);
+ CheckGLError();
+}
+
+void GLES2Implementation::VertexAttribI4ui(GLuint indx,
+ GLuint x,
+ GLuint y,
+ GLuint z,
+ GLuint w) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttribI4ui(" << indx
+ << ", " << x << ", " << y << ", " << z << ", " << w
+ << ")");
+ helper_->VertexAttribI4ui(indx, x, y, z, w);
+ CheckGLError();
+}
+
+void GLES2Implementation::VertexAttribI4uiv(GLuint indx, const GLuint* values) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttribI4uiv(" << indx
+ << ", " << static_cast<const void*>(values) << ")");
+ GPU_CLIENT_LOG("values: " << values[0] << ", " << values[1] << ", "
+ << values[2] << ", " << values[3]);
+ helper_->VertexAttribI4uivImmediate(indx, values);
+ CheckGLError();
+}
+
void GLES2Implementation::Viewport(GLint x,
GLint y,
GLsizei width,
diff --git a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
index d12a1f3..c9f26abf 100644
--- a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
@@ -1209,6 +1209,35 @@
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
}
+TEST_F(GLES2ImplementationTest, Uniform1ui) {
+ struct Cmds {
+ cmds::Uniform1ui cmd;
+ };
+ Cmds expected;
+ expected.cmd.Init(1, 2);
+
+ gl_->Uniform1ui(1, 2);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
+TEST_F(GLES2ImplementationTest, Uniform1uiv) {
+ GLuint data[2][1] = {{0}};
+ struct Cmds {
+ cmds::Uniform1uivImmediate cmd;
+ GLuint data[2][1];
+ };
+
+ Cmds expected;
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 1; ++jj) {
+ data[ii][jj] = static_cast<GLuint>(ii * 1 + jj);
+ }
+ }
+ expected.cmd.Init(1, 2, &data[0][0]);
+ gl_->Uniform1uiv(1, 2, &data[0][0]);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
TEST_F(GLES2ImplementationTest, Uniform2f) {
struct Cmds {
cmds::Uniform2f cmd;
@@ -1267,6 +1296,35 @@
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
}
+TEST_F(GLES2ImplementationTest, Uniform2ui) {
+ struct Cmds {
+ cmds::Uniform2ui cmd;
+ };
+ Cmds expected;
+ expected.cmd.Init(1, 2, 3);
+
+ gl_->Uniform2ui(1, 2, 3);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
+TEST_F(GLES2ImplementationTest, Uniform2uiv) {
+ GLuint data[2][2] = {{0}};
+ struct Cmds {
+ cmds::Uniform2uivImmediate cmd;
+ GLuint data[2][2];
+ };
+
+ Cmds expected;
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 2; ++jj) {
+ data[ii][jj] = static_cast<GLuint>(ii * 2 + jj);
+ }
+ }
+ expected.cmd.Init(1, 2, &data[0][0]);
+ gl_->Uniform2uiv(1, 2, &data[0][0]);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
TEST_F(GLES2ImplementationTest, Uniform3f) {
struct Cmds {
cmds::Uniform3f cmd;
@@ -1325,6 +1383,35 @@
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
}
+TEST_F(GLES2ImplementationTest, Uniform3ui) {
+ struct Cmds {
+ cmds::Uniform3ui cmd;
+ };
+ Cmds expected;
+ expected.cmd.Init(1, 2, 3, 4);
+
+ gl_->Uniform3ui(1, 2, 3, 4);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
+TEST_F(GLES2ImplementationTest, Uniform3uiv) {
+ GLuint data[2][3] = {{0}};
+ struct Cmds {
+ cmds::Uniform3uivImmediate cmd;
+ GLuint data[2][3];
+ };
+
+ Cmds expected;
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 3; ++jj) {
+ data[ii][jj] = static_cast<GLuint>(ii * 3 + jj);
+ }
+ }
+ expected.cmd.Init(1, 2, &data[0][0]);
+ gl_->Uniform3uiv(1, 2, &data[0][0]);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
TEST_F(GLES2ImplementationTest, Uniform4f) {
struct Cmds {
cmds::Uniform4f cmd;
@@ -1383,6 +1470,35 @@
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
}
+TEST_F(GLES2ImplementationTest, Uniform4ui) {
+ struct Cmds {
+ cmds::Uniform4ui cmd;
+ };
+ Cmds expected;
+ expected.cmd.Init(1, 2, 3, 4, 5);
+
+ gl_->Uniform4ui(1, 2, 3, 4, 5);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
+TEST_F(GLES2ImplementationTest, Uniform4uiv) {
+ GLuint data[2][4] = {{0}};
+ struct Cmds {
+ cmds::Uniform4uivImmediate cmd;
+ GLuint data[2][4];
+ };
+
+ Cmds expected;
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 4; ++jj) {
+ data[ii][jj] = static_cast<GLuint>(ii * 4 + jj);
+ }
+ }
+ expected.cmd.Init(1, 2, &data[0][0]);
+ gl_->Uniform4uiv(1, 2, &data[0][0]);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
TEST_F(GLES2ImplementationTest, UniformMatrix2fv) {
GLfloat data[2][4] = {{0}};
struct Cmds {
@@ -1413,6 +1529,66 @@
EXPECT_EQ(GL_INVALID_VALUE, CheckError());
}
+TEST_F(GLES2ImplementationTest, UniformMatrix2x3fv) {
+ GLfloat data[2][6] = {{0}};
+ struct Cmds {
+ cmds::UniformMatrix2x3fvImmediate cmd;
+ GLfloat data[2][6];
+ };
+
+ Cmds expected;
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 6; ++jj) {
+ data[ii][jj] = static_cast<GLfloat>(ii * 6 + jj);
+ }
+ }
+ expected.cmd.Init(1, 2, &data[0][0]);
+ gl_->UniformMatrix2x3fv(1, 2, false, &data[0][0]);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
+TEST_F(GLES2ImplementationTest, UniformMatrix2x3fvInvalidConstantArg2) {
+ GLfloat data[2][6] = {{0}};
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 6; ++jj) {
+ data[ii][jj] = static_cast<GLfloat>(ii * 6 + jj);
+ }
+ }
+ gl_->UniformMatrix2x3fv(1, 2, true, &data[0][0]);
+ EXPECT_TRUE(NoCommandsWritten());
+ EXPECT_EQ(GL_INVALID_VALUE, CheckError());
+}
+
+TEST_F(GLES2ImplementationTest, UniformMatrix2x4fv) {
+ GLfloat data[2][8] = {{0}};
+ struct Cmds {
+ cmds::UniformMatrix2x4fvImmediate cmd;
+ GLfloat data[2][8];
+ };
+
+ Cmds expected;
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 8; ++jj) {
+ data[ii][jj] = static_cast<GLfloat>(ii * 8 + jj);
+ }
+ }
+ expected.cmd.Init(1, 2, &data[0][0]);
+ gl_->UniformMatrix2x4fv(1, 2, false, &data[0][0]);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
+TEST_F(GLES2ImplementationTest, UniformMatrix2x4fvInvalidConstantArg2) {
+ GLfloat data[2][8] = {{0}};
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 8; ++jj) {
+ data[ii][jj] = static_cast<GLfloat>(ii * 8 + jj);
+ }
+ }
+ gl_->UniformMatrix2x4fv(1, 2, true, &data[0][0]);
+ EXPECT_TRUE(NoCommandsWritten());
+ EXPECT_EQ(GL_INVALID_VALUE, CheckError());
+}
+
TEST_F(GLES2ImplementationTest, UniformMatrix3fv) {
GLfloat data[2][9] = {{0}};
struct Cmds {
@@ -1443,6 +1619,66 @@
EXPECT_EQ(GL_INVALID_VALUE, CheckError());
}
+TEST_F(GLES2ImplementationTest, UniformMatrix3x2fv) {
+ GLfloat data[2][6] = {{0}};
+ struct Cmds {
+ cmds::UniformMatrix3x2fvImmediate cmd;
+ GLfloat data[2][6];
+ };
+
+ Cmds expected;
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 6; ++jj) {
+ data[ii][jj] = static_cast<GLfloat>(ii * 6 + jj);
+ }
+ }
+ expected.cmd.Init(1, 2, &data[0][0]);
+ gl_->UniformMatrix3x2fv(1, 2, false, &data[0][0]);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
+TEST_F(GLES2ImplementationTest, UniformMatrix3x2fvInvalidConstantArg2) {
+ GLfloat data[2][6] = {{0}};
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 6; ++jj) {
+ data[ii][jj] = static_cast<GLfloat>(ii * 6 + jj);
+ }
+ }
+ gl_->UniformMatrix3x2fv(1, 2, true, &data[0][0]);
+ EXPECT_TRUE(NoCommandsWritten());
+ EXPECT_EQ(GL_INVALID_VALUE, CheckError());
+}
+
+TEST_F(GLES2ImplementationTest, UniformMatrix3x4fv) {
+ GLfloat data[2][12] = {{0}};
+ struct Cmds {
+ cmds::UniformMatrix3x4fvImmediate cmd;
+ GLfloat data[2][12];
+ };
+
+ Cmds expected;
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 12; ++jj) {
+ data[ii][jj] = static_cast<GLfloat>(ii * 12 + jj);
+ }
+ }
+ expected.cmd.Init(1, 2, &data[0][0]);
+ gl_->UniformMatrix3x4fv(1, 2, false, &data[0][0]);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
+TEST_F(GLES2ImplementationTest, UniformMatrix3x4fvInvalidConstantArg2) {
+ GLfloat data[2][12] = {{0}};
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 12; ++jj) {
+ data[ii][jj] = static_cast<GLfloat>(ii * 12 + jj);
+ }
+ }
+ gl_->UniformMatrix3x4fv(1, 2, true, &data[0][0]);
+ EXPECT_TRUE(NoCommandsWritten());
+ EXPECT_EQ(GL_INVALID_VALUE, CheckError());
+}
+
TEST_F(GLES2ImplementationTest, UniformMatrix4fv) {
GLfloat data[2][16] = {{0}};
struct Cmds {
@@ -1473,6 +1709,66 @@
EXPECT_EQ(GL_INVALID_VALUE, CheckError());
}
+TEST_F(GLES2ImplementationTest, UniformMatrix4x2fv) {
+ GLfloat data[2][8] = {{0}};
+ struct Cmds {
+ cmds::UniformMatrix4x2fvImmediate cmd;
+ GLfloat data[2][8];
+ };
+
+ Cmds expected;
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 8; ++jj) {
+ data[ii][jj] = static_cast<GLfloat>(ii * 8 + jj);
+ }
+ }
+ expected.cmd.Init(1, 2, &data[0][0]);
+ gl_->UniformMatrix4x2fv(1, 2, false, &data[0][0]);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
+TEST_F(GLES2ImplementationTest, UniformMatrix4x2fvInvalidConstantArg2) {
+ GLfloat data[2][8] = {{0}};
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 8; ++jj) {
+ data[ii][jj] = static_cast<GLfloat>(ii * 8 + jj);
+ }
+ }
+ gl_->UniformMatrix4x2fv(1, 2, true, &data[0][0]);
+ EXPECT_TRUE(NoCommandsWritten());
+ EXPECT_EQ(GL_INVALID_VALUE, CheckError());
+}
+
+TEST_F(GLES2ImplementationTest, UniformMatrix4x3fv) {
+ GLfloat data[2][12] = {{0}};
+ struct Cmds {
+ cmds::UniformMatrix4x3fvImmediate cmd;
+ GLfloat data[2][12];
+ };
+
+ Cmds expected;
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 12; ++jj) {
+ data[ii][jj] = static_cast<GLfloat>(ii * 12 + jj);
+ }
+ }
+ expected.cmd.Init(1, 2, &data[0][0]);
+ gl_->UniformMatrix4x3fv(1, 2, false, &data[0][0]);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
+TEST_F(GLES2ImplementationTest, UniformMatrix4x3fvInvalidConstantArg2) {
+ GLfloat data[2][12] = {{0}};
+ for (int ii = 0; ii < 2; ++ii) {
+ for (int jj = 0; jj < 12; ++jj) {
+ data[ii][jj] = static_cast<GLfloat>(ii * 12 + jj);
+ }
+ }
+ gl_->UniformMatrix4x3fv(1, 2, true, &data[0][0]);
+ EXPECT_TRUE(NoCommandsWritten());
+ EXPECT_EQ(GL_INVALID_VALUE, CheckError());
+}
+
TEST_F(GLES2ImplementationTest, UseProgram) {
struct Cmds {
cmds::UseProgram cmd;
@@ -1606,6 +1902,60 @@
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
}
+TEST_F(GLES2ImplementationTest, VertexAttribI4i) {
+ struct Cmds {
+ cmds::VertexAttribI4i cmd;
+ };
+ Cmds expected;
+ expected.cmd.Init(1, 2, 3, 4, 5);
+
+ gl_->VertexAttribI4i(1, 2, 3, 4, 5);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
+TEST_F(GLES2ImplementationTest, VertexAttribI4iv) {
+ GLint data[4] = {0};
+ struct Cmds {
+ cmds::VertexAttribI4ivImmediate cmd;
+ GLint data[4];
+ };
+
+ for (int jj = 0; jj < 4; ++jj) {
+ data[jj] = static_cast<GLint>(jj);
+ }
+ Cmds expected;
+ expected.cmd.Init(1, &data[0]);
+ gl_->VertexAttribI4iv(1, &data[0]);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
+TEST_F(GLES2ImplementationTest, VertexAttribI4ui) {
+ struct Cmds {
+ cmds::VertexAttribI4ui cmd;
+ };
+ Cmds expected;
+ expected.cmd.Init(1, 2, 3, 4, 5);
+
+ gl_->VertexAttribI4ui(1, 2, 3, 4, 5);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
+TEST_F(GLES2ImplementationTest, VertexAttribI4uiv) {
+ GLuint data[4] = {0};
+ struct Cmds {
+ cmds::VertexAttribI4uivImmediate cmd;
+ GLuint data[4];
+ };
+
+ for (int jj = 0; jj < 4; ++jj) {
+ data[jj] = static_cast<GLuint>(jj);
+ }
+ Cmds expected;
+ expected.cmd.Init(1, &data[0]);
+ gl_->VertexAttribI4uiv(1, &data[0]);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
TEST_F(GLES2ImplementationTest, Viewport) {
struct Cmds {
cmds::Viewport cmd;
diff --git a/gpu/command_buffer/client/gles2_interface_autogen.h b/gpu/command_buffer/client/gles2_interface_autogen.h
index 21b4a42..6ad929b 100644
--- a/gpu/command_buffer/client/gles2_interface_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_autogen.h
@@ -284,14 +284,20 @@
virtual void Uniform1fv(GLint location, GLsizei count, const GLfloat* v) = 0;
virtual void Uniform1i(GLint location, GLint x) = 0;
virtual void Uniform1iv(GLint location, GLsizei count, const GLint* v) = 0;
+virtual void Uniform1ui(GLint location, GLuint x) = 0;
+virtual void Uniform1uiv(GLint location, GLsizei count, const GLuint* v) = 0;
virtual void Uniform2f(GLint location, GLfloat x, GLfloat y) = 0;
virtual void Uniform2fv(GLint location, GLsizei count, const GLfloat* v) = 0;
virtual void Uniform2i(GLint location, GLint x, GLint y) = 0;
virtual void Uniform2iv(GLint location, GLsizei count, const GLint* v) = 0;
+virtual void Uniform2ui(GLint location, GLuint x, GLuint y) = 0;
+virtual void Uniform2uiv(GLint location, GLsizei count, const GLuint* v) = 0;
virtual void Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) = 0;
virtual void Uniform3fv(GLint location, GLsizei count, const GLfloat* v) = 0;
virtual void Uniform3i(GLint location, GLint x, GLint y, GLint z) = 0;
virtual void Uniform3iv(GLint location, GLsizei count, const GLint* v) = 0;
+virtual void Uniform3ui(GLint location, GLuint x, GLuint y, GLuint z) = 0;
+virtual void Uniform3uiv(GLint location, GLsizei count, const GLuint* v) = 0;
virtual void Uniform4f(GLint location,
GLfloat x,
GLfloat y,
@@ -300,18 +306,48 @@
virtual void Uniform4fv(GLint location, GLsizei count, const GLfloat* v) = 0;
virtual void Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) = 0;
virtual void Uniform4iv(GLint location, GLsizei count, const GLint* v) = 0;
+virtual void Uniform4ui(GLint location,
+ GLuint x,
+ GLuint y,
+ GLuint z,
+ GLuint w) = 0;
+virtual void Uniform4uiv(GLint location, GLsizei count, const GLuint* v) = 0;
virtual void UniformMatrix2fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) = 0;
+virtual void UniformMatrix2x3fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) = 0;
+virtual void UniformMatrix2x4fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) = 0;
virtual void UniformMatrix3fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) = 0;
+virtual void UniformMatrix3x2fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) = 0;
+virtual void UniformMatrix3x4fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) = 0;
virtual void UniformMatrix4fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) = 0;
+virtual void UniformMatrix4x2fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) = 0;
+virtual void UniformMatrix4x3fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) = 0;
virtual void UseProgram(GLuint program) = 0;
virtual void ValidateProgram(GLuint program) = 0;
virtual void VertexAttrib1f(GLuint indx, GLfloat x) = 0;
@@ -326,6 +362,23 @@
GLfloat z,
GLfloat w) = 0;
virtual void VertexAttrib4fv(GLuint indx, const GLfloat* values) = 0;
+virtual void VertexAttribI4i(GLuint indx,
+ GLint x,
+ GLint y,
+ GLint z,
+ GLint w) = 0;
+virtual void VertexAttribI4iv(GLuint indx, const GLint* values) = 0;
+virtual void VertexAttribI4ui(GLuint indx,
+ GLuint x,
+ GLuint y,
+ GLuint z,
+ GLuint w) = 0;
+virtual void VertexAttribI4uiv(GLuint indx, const GLuint* values) = 0;
+virtual void VertexAttribIPointer(GLuint indx,
+ GLint size,
+ GLenum type,
+ GLsizei stride,
+ const void* ptr) = 0;
virtual void VertexAttribPointer(GLuint indx,
GLint size,
GLenum type,
diff --git a/gpu/command_buffer/client/gles2_interface_stub_autogen.h b/gpu/command_buffer/client/gles2_interface_stub_autogen.h
index 482a1ef..029debf 100644
--- a/gpu/command_buffer/client/gles2_interface_stub_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_stub_autogen.h
@@ -277,14 +277,20 @@
void Uniform1fv(GLint location, GLsizei count, const GLfloat* v) override;
void Uniform1i(GLint location, GLint x) override;
void Uniform1iv(GLint location, GLsizei count, const GLint* v) override;
+void Uniform1ui(GLint location, GLuint x) override;
+void Uniform1uiv(GLint location, GLsizei count, const GLuint* v) override;
void Uniform2f(GLint location, GLfloat x, GLfloat y) override;
void Uniform2fv(GLint location, GLsizei count, const GLfloat* v) override;
void Uniform2i(GLint location, GLint x, GLint y) override;
void Uniform2iv(GLint location, GLsizei count, const GLint* v) override;
+void Uniform2ui(GLint location, GLuint x, GLuint y) override;
+void Uniform2uiv(GLint location, GLsizei count, const GLuint* v) override;
void Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) override;
void Uniform3fv(GLint location, GLsizei count, const GLfloat* v) override;
void Uniform3i(GLint location, GLint x, GLint y, GLint z) override;
void Uniform3iv(GLint location, GLsizei count, const GLint* v) override;
+void Uniform3ui(GLint location, GLuint x, GLuint y, GLuint z) override;
+void Uniform3uiv(GLint location, GLsizei count, const GLuint* v) override;
void Uniform4f(GLint location,
GLfloat x,
GLfloat y,
@@ -293,18 +299,48 @@
void Uniform4fv(GLint location, GLsizei count, const GLfloat* v) override;
void Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) override;
void Uniform4iv(GLint location, GLsizei count, const GLint* v) override;
+void Uniform4ui(GLint location,
+ GLuint x,
+ GLuint y,
+ GLuint z,
+ GLuint w) override;
+void Uniform4uiv(GLint location, GLsizei count, const GLuint* v) override;
void UniformMatrix2fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) override;
+void UniformMatrix2x3fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
+void UniformMatrix2x4fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
void UniformMatrix3fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) override;
+void UniformMatrix3x2fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
+void UniformMatrix3x4fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
void UniformMatrix4fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) override;
+void UniformMatrix4x2fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
+void UniformMatrix4x3fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
void UseProgram(GLuint program) override;
void ValidateProgram(GLuint program) override;
void VertexAttrib1f(GLuint indx, GLfloat x) override;
@@ -319,6 +355,19 @@
GLfloat z,
GLfloat w) override;
void VertexAttrib4fv(GLuint indx, const GLfloat* values) override;
+void VertexAttribI4i(GLuint indx, GLint x, GLint y, GLint z, GLint w) override;
+void VertexAttribI4iv(GLuint indx, const GLint* values) override;
+void VertexAttribI4ui(GLuint indx,
+ GLuint x,
+ GLuint y,
+ GLuint z,
+ GLuint w) override;
+void VertexAttribI4uiv(GLuint indx, const GLuint* values) override;
+void VertexAttribIPointer(GLuint indx,
+ GLint size,
+ GLenum type,
+ GLsizei stride,
+ const void* ptr) override;
void VertexAttribPointer(GLuint indx,
GLint size,
GLenum type,
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 2b84668..53ccd6c0 100644
--- a/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
@@ -470,6 +470,12 @@
GLsizei /* count */,
const GLint* /* v */) {
}
+void GLES2InterfaceStub::Uniform1ui(GLint /* location */, GLuint /* x */) {
+}
+void GLES2InterfaceStub::Uniform1uiv(GLint /* location */,
+ GLsizei /* count */,
+ const GLuint* /* v */) {
+}
void GLES2InterfaceStub::Uniform2f(GLint /* location */,
GLfloat /* x */,
GLfloat /* y */) {
@@ -486,6 +492,14 @@
GLsizei /* count */,
const GLint* /* v */) {
}
+void GLES2InterfaceStub::Uniform2ui(GLint /* location */,
+ GLuint /* x */,
+ GLuint /* y */) {
+}
+void GLES2InterfaceStub::Uniform2uiv(GLint /* location */,
+ GLsizei /* count */,
+ const GLuint* /* v */) {
+}
void GLES2InterfaceStub::Uniform3f(GLint /* location */,
GLfloat /* x */,
GLfloat /* y */,
@@ -504,6 +518,15 @@
GLsizei /* count */,
const GLint* /* v */) {
}
+void GLES2InterfaceStub::Uniform3ui(GLint /* location */,
+ GLuint /* x */,
+ GLuint /* y */,
+ GLuint /* z */) {
+}
+void GLES2InterfaceStub::Uniform3uiv(GLint /* location */,
+ GLsizei /* count */,
+ const GLuint* /* v */) {
+}
void GLES2InterfaceStub::Uniform4f(GLint /* location */,
GLfloat /* x */,
GLfloat /* y */,
@@ -524,21 +547,61 @@
GLsizei /* count */,
const GLint* /* v */) {
}
+void GLES2InterfaceStub::Uniform4ui(GLint /* location */,
+ GLuint /* x */,
+ GLuint /* y */,
+ GLuint /* z */,
+ GLuint /* w */) {
+}
+void GLES2InterfaceStub::Uniform4uiv(GLint /* location */,
+ GLsizei /* count */,
+ const GLuint* /* v */) {
+}
void GLES2InterfaceStub::UniformMatrix2fv(GLint /* location */,
GLsizei /* count */,
GLboolean /* transpose */,
const GLfloat* /* value */) {
}
+void GLES2InterfaceStub::UniformMatrix2x3fv(GLint /* location */,
+ GLsizei /* count */,
+ GLboolean /* transpose */,
+ const GLfloat* /* value */) {
+}
+void GLES2InterfaceStub::UniformMatrix2x4fv(GLint /* location */,
+ GLsizei /* count */,
+ GLboolean /* transpose */,
+ const GLfloat* /* value */) {
+}
void GLES2InterfaceStub::UniformMatrix3fv(GLint /* location */,
GLsizei /* count */,
GLboolean /* transpose */,
const GLfloat* /* value */) {
}
+void GLES2InterfaceStub::UniformMatrix3x2fv(GLint /* location */,
+ GLsizei /* count */,
+ GLboolean /* transpose */,
+ const GLfloat* /* value */) {
+}
+void GLES2InterfaceStub::UniformMatrix3x4fv(GLint /* location */,
+ GLsizei /* count */,
+ GLboolean /* transpose */,
+ const GLfloat* /* value */) {
+}
void GLES2InterfaceStub::UniformMatrix4fv(GLint /* location */,
GLsizei /* count */,
GLboolean /* transpose */,
const GLfloat* /* value */) {
}
+void GLES2InterfaceStub::UniformMatrix4x2fv(GLint /* location */,
+ GLsizei /* count */,
+ GLboolean /* transpose */,
+ const GLfloat* /* value */) {
+}
+void GLES2InterfaceStub::UniformMatrix4x3fv(GLint /* location */,
+ GLsizei /* count */,
+ GLboolean /* transpose */,
+ const GLfloat* /* value */) {
+}
void GLES2InterfaceStub::UseProgram(GLuint /* program */) {
}
void GLES2InterfaceStub::ValidateProgram(GLuint /* program */) {
@@ -572,6 +635,30 @@
void GLES2InterfaceStub::VertexAttrib4fv(GLuint /* indx */,
const GLfloat* /* values */) {
}
+void GLES2InterfaceStub::VertexAttribI4i(GLuint /* indx */,
+ GLint /* x */,
+ GLint /* y */,
+ GLint /* z */,
+ GLint /* w */) {
+}
+void GLES2InterfaceStub::VertexAttribI4iv(GLuint /* indx */,
+ const GLint* /* values */) {
+}
+void GLES2InterfaceStub::VertexAttribI4ui(GLuint /* indx */,
+ GLuint /* x */,
+ GLuint /* y */,
+ GLuint /* z */,
+ GLuint /* w */) {
+}
+void GLES2InterfaceStub::VertexAttribI4uiv(GLuint /* indx */,
+ const GLuint* /* values */) {
+}
+void GLES2InterfaceStub::VertexAttribIPointer(GLuint /* indx */,
+ GLint /* size */,
+ GLenum /* type */,
+ GLsizei /* stride */,
+ const void* /* ptr */) {
+}
void GLES2InterfaceStub::VertexAttribPointer(GLuint /* indx */,
GLint /* size */,
GLenum /* type */,
diff --git a/gpu/command_buffer/client/gles2_trace_implementation_autogen.h b/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
index 8d8429c..4636de6 100644
--- a/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
+++ b/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
@@ -277,14 +277,20 @@
void Uniform1fv(GLint location, GLsizei count, const GLfloat* v) override;
void Uniform1i(GLint location, GLint x) override;
void Uniform1iv(GLint location, GLsizei count, const GLint* v) override;
+void Uniform1ui(GLint location, GLuint x) override;
+void Uniform1uiv(GLint location, GLsizei count, const GLuint* v) override;
void Uniform2f(GLint location, GLfloat x, GLfloat y) override;
void Uniform2fv(GLint location, GLsizei count, const GLfloat* v) override;
void Uniform2i(GLint location, GLint x, GLint y) override;
void Uniform2iv(GLint location, GLsizei count, const GLint* v) override;
+void Uniform2ui(GLint location, GLuint x, GLuint y) override;
+void Uniform2uiv(GLint location, GLsizei count, const GLuint* v) override;
void Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) override;
void Uniform3fv(GLint location, GLsizei count, const GLfloat* v) override;
void Uniform3i(GLint location, GLint x, GLint y, GLint z) override;
void Uniform3iv(GLint location, GLsizei count, const GLint* v) override;
+void Uniform3ui(GLint location, GLuint x, GLuint y, GLuint z) override;
+void Uniform3uiv(GLint location, GLsizei count, const GLuint* v) override;
void Uniform4f(GLint location,
GLfloat x,
GLfloat y,
@@ -293,18 +299,48 @@
void Uniform4fv(GLint location, GLsizei count, const GLfloat* v) override;
void Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) override;
void Uniform4iv(GLint location, GLsizei count, const GLint* v) override;
+void Uniform4ui(GLint location,
+ GLuint x,
+ GLuint y,
+ GLuint z,
+ GLuint w) override;
+void Uniform4uiv(GLint location, GLsizei count, const GLuint* v) override;
void UniformMatrix2fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) override;
+void UniformMatrix2x3fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
+void UniformMatrix2x4fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
void UniformMatrix3fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) override;
+void UniformMatrix3x2fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
+void UniformMatrix3x4fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
void UniformMatrix4fv(GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value) override;
+void UniformMatrix4x2fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
+void UniformMatrix4x3fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) override;
void UseProgram(GLuint program) override;
void ValidateProgram(GLuint program) override;
void VertexAttrib1f(GLuint indx, GLfloat x) override;
@@ -319,6 +355,19 @@
GLfloat z,
GLfloat w) override;
void VertexAttrib4fv(GLuint indx, const GLfloat* values) override;
+void VertexAttribI4i(GLuint indx, GLint x, GLint y, GLint z, GLint w) override;
+void VertexAttribI4iv(GLuint indx, const GLint* values) override;
+void VertexAttribI4ui(GLuint indx,
+ GLuint x,
+ GLuint y,
+ GLuint z,
+ GLuint w) override;
+void VertexAttribI4uiv(GLuint indx, const GLuint* values) override;
+void VertexAttribIPointer(GLuint indx,
+ GLint size,
+ GLenum type,
+ GLsizei stride,
+ const void* ptr) override;
void VertexAttribPointer(GLuint indx,
GLint size,
GLenum type,
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 2e8e0c7..457ef61 100644
--- a/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
@@ -817,6 +817,18 @@
gl_->Uniform1iv(location, count, v);
}
+void GLES2TraceImplementation::Uniform1ui(GLint location, GLuint x) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::Uniform1ui");
+ gl_->Uniform1ui(location, x);
+}
+
+void GLES2TraceImplementation::Uniform1uiv(GLint location,
+ GLsizei count,
+ const GLuint* v) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::Uniform1uiv");
+ gl_->Uniform1uiv(location, count, v);
+}
+
void GLES2TraceImplementation::Uniform2f(GLint location, GLfloat x, GLfloat y) {
TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::Uniform2f");
gl_->Uniform2f(location, x, y);
@@ -841,6 +853,18 @@
gl_->Uniform2iv(location, count, v);
}
+void GLES2TraceImplementation::Uniform2ui(GLint location, GLuint x, GLuint y) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::Uniform2ui");
+ gl_->Uniform2ui(location, x, y);
+}
+
+void GLES2TraceImplementation::Uniform2uiv(GLint location,
+ GLsizei count,
+ const GLuint* v) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::Uniform2uiv");
+ gl_->Uniform2uiv(location, count, v);
+}
+
void GLES2TraceImplementation::Uniform3f(GLint location,
GLfloat x,
GLfloat y,
@@ -871,6 +895,21 @@
gl_->Uniform3iv(location, count, v);
}
+void GLES2TraceImplementation::Uniform3ui(GLint location,
+ GLuint x,
+ GLuint y,
+ GLuint z) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::Uniform3ui");
+ gl_->Uniform3ui(location, x, y, z);
+}
+
+void GLES2TraceImplementation::Uniform3uiv(GLint location,
+ GLsizei count,
+ const GLuint* v) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::Uniform3uiv");
+ gl_->Uniform3uiv(location, count, v);
+}
+
void GLES2TraceImplementation::Uniform4f(GLint location,
GLfloat x,
GLfloat y,
@@ -903,6 +942,22 @@
gl_->Uniform4iv(location, count, v);
}
+void GLES2TraceImplementation::Uniform4ui(GLint location,
+ GLuint x,
+ GLuint y,
+ GLuint z,
+ GLuint w) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::Uniform4ui");
+ gl_->Uniform4ui(location, x, y, z, w);
+}
+
+void GLES2TraceImplementation::Uniform4uiv(GLint location,
+ GLsizei count,
+ const GLuint* v) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::Uniform4uiv");
+ gl_->Uniform4uiv(location, count, v);
+}
+
void GLES2TraceImplementation::UniformMatrix2fv(GLint location,
GLsizei count,
GLboolean transpose,
@@ -911,6 +966,22 @@
gl_->UniformMatrix2fv(location, count, transpose, value);
}
+void GLES2TraceImplementation::UniformMatrix2x3fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::UniformMatrix2x3fv");
+ gl_->UniformMatrix2x3fv(location, count, transpose, value);
+}
+
+void GLES2TraceImplementation::UniformMatrix2x4fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::UniformMatrix2x4fv");
+ gl_->UniformMatrix2x4fv(location, count, transpose, value);
+}
+
void GLES2TraceImplementation::UniformMatrix3fv(GLint location,
GLsizei count,
GLboolean transpose,
@@ -919,6 +990,22 @@
gl_->UniformMatrix3fv(location, count, transpose, value);
}
+void GLES2TraceImplementation::UniformMatrix3x2fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::UniformMatrix3x2fv");
+ gl_->UniformMatrix3x2fv(location, count, transpose, value);
+}
+
+void GLES2TraceImplementation::UniformMatrix3x4fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::UniformMatrix3x4fv");
+ gl_->UniformMatrix3x4fv(location, count, transpose, value);
+}
+
void GLES2TraceImplementation::UniformMatrix4fv(GLint location,
GLsizei count,
GLboolean transpose,
@@ -927,6 +1014,22 @@
gl_->UniformMatrix4fv(location, count, transpose, value);
}
+void GLES2TraceImplementation::UniformMatrix4x2fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::UniformMatrix4x2fv");
+ gl_->UniformMatrix4x2fv(location, count, transpose, value);
+}
+
+void GLES2TraceImplementation::UniformMatrix4x3fv(GLint location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::UniformMatrix4x3fv");
+ gl_->UniformMatrix4x3fv(location, count, transpose, value);
+}
+
void GLES2TraceImplementation::UseProgram(GLuint program) {
TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::UseProgram");
gl_->UseProgram(program);
@@ -990,6 +1093,45 @@
gl_->VertexAttrib4fv(indx, values);
}
+void GLES2TraceImplementation::VertexAttribI4i(GLuint indx,
+ GLint x,
+ GLint y,
+ GLint z,
+ GLint w) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::VertexAttribI4i");
+ gl_->VertexAttribI4i(indx, x, y, z, w);
+}
+
+void GLES2TraceImplementation::VertexAttribI4iv(GLuint indx,
+ const GLint* values) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::VertexAttribI4iv");
+ gl_->VertexAttribI4iv(indx, values);
+}
+
+void GLES2TraceImplementation::VertexAttribI4ui(GLuint indx,
+ GLuint x,
+ GLuint y,
+ GLuint z,
+ GLuint w) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::VertexAttribI4ui");
+ gl_->VertexAttribI4ui(indx, x, y, z, w);
+}
+
+void GLES2TraceImplementation::VertexAttribI4uiv(GLuint indx,
+ const GLuint* values) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::VertexAttribI4uiv");
+ gl_->VertexAttribI4uiv(indx, values);
+}
+
+void GLES2TraceImplementation::VertexAttribIPointer(GLuint indx,
+ GLint size,
+ GLenum type,
+ GLsizei stride,
+ const void* ptr) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::VertexAttribIPointer");
+ gl_->VertexAttribIPointer(indx, size, type, stride, ptr);
+}
+
void GLES2TraceImplementation::VertexAttribPointer(GLuint indx,
GLint size,
GLenum type,
diff --git a/gpu/command_buffer/cmd_buffer_functions.txt b/gpu/command_buffer/cmd_buffer_functions.txt
index f3fcd90..9af3888 100644
--- a/gpu/command_buffer/cmd_buffer_functions.txt
+++ b/gpu/command_buffer/cmd_buffer_functions.txt
@@ -124,21 +124,35 @@
GL_APICALL void GL_APIENTRY glUniform1fv (GLintUniformLocation location, GLsizeiNotNegative count, const GLfloat* v);
GL_APICALL void GL_APIENTRY glUniform1i (GLintUniformLocation location, GLint x);
GL_APICALL void GL_APIENTRY glUniform1iv (GLintUniformLocation location, GLsizeiNotNegative count, const GLint* v);
+GL_APICALL void GL_APIENTRY glUniform1ui (GLintUniformLocation location, GLuint x);
+GL_APICALL void GL_APIENTRY glUniform1uiv (GLintUniformLocation location, GLsizeiNotNegative count, const GLuint* v);
GL_APICALL void GL_APIENTRY glUniform2f (GLintUniformLocation location, GLfloat x, GLfloat y);
GL_APICALL void GL_APIENTRY glUniform2fv (GLintUniformLocation location, GLsizeiNotNegative count, const GLfloat* v);
GL_APICALL void GL_APIENTRY glUniform2i (GLintUniformLocation location, GLint x, GLint y);
GL_APICALL void GL_APIENTRY glUniform2iv (GLintUniformLocation location, GLsizeiNotNegative count, const GLint* v);
+GL_APICALL void GL_APIENTRY glUniform2ui (GLintUniformLocation location, GLuint x, GLuint y);
+GL_APICALL void GL_APIENTRY glUniform2uiv (GLintUniformLocation location, GLsizeiNotNegative count, const GLuint* v);
GL_APICALL void GL_APIENTRY glUniform3f (GLintUniformLocation location, GLfloat x, GLfloat y, GLfloat z);
GL_APICALL void GL_APIENTRY glUniform3fv (GLintUniformLocation location, GLsizeiNotNegative count, const GLfloat* v);
GL_APICALL void GL_APIENTRY glUniform3i (GLintUniformLocation location, GLint x, GLint y, GLint z);
GL_APICALL void GL_APIENTRY glUniform3iv (GLintUniformLocation location, GLsizeiNotNegative count, const GLint* v);
+GL_APICALL void GL_APIENTRY glUniform3ui (GLintUniformLocation location, GLuint x, GLuint y, GLuint z);
+GL_APICALL void GL_APIENTRY glUniform3uiv (GLintUniformLocation location, GLsizeiNotNegative count, const GLuint* v);
GL_APICALL void GL_APIENTRY glUniform4f (GLintUniformLocation location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
GL_APICALL void GL_APIENTRY glUniform4fv (GLintUniformLocation location, GLsizeiNotNegative count, const GLfloat* v);
GL_APICALL void GL_APIENTRY glUniform4i (GLintUniformLocation location, GLint x, GLint y, GLint z, GLint w);
GL_APICALL void GL_APIENTRY glUniform4iv (GLintUniformLocation location, GLsizeiNotNegative count, const GLint* v);
+GL_APICALL void GL_APIENTRY glUniform4ui (GLintUniformLocation location, GLuint x, GLuint y, GLuint z, GLuint w);
+GL_APICALL void GL_APIENTRY glUniform4uiv (GLintUniformLocation location, GLsizeiNotNegative count, const GLuint* v);
GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLintUniformLocation location, GLsizeiNotNegative count, GLbooleanFalseOnly transpose, const GLfloat* value);
+GL_APICALL void GL_APIENTRY glUniformMatrix2x3fv (GLintUniformLocation location, GLsizeiNotNegative count, GLbooleanFalseOnly transpose, const GLfloat* value);
+GL_APICALL void GL_APIENTRY glUniformMatrix2x4fv (GLintUniformLocation location, GLsizeiNotNegative count, GLbooleanFalseOnly transpose, const GLfloat* value);
GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLintUniformLocation location, GLsizeiNotNegative count, GLbooleanFalseOnly transpose, const GLfloat* value);
+GL_APICALL void GL_APIENTRY glUniformMatrix3x2fv (GLintUniformLocation location, GLsizeiNotNegative count, GLbooleanFalseOnly transpose, const GLfloat* value);
+GL_APICALL void GL_APIENTRY glUniformMatrix3x4fv (GLintUniformLocation location, GLsizeiNotNegative count, GLbooleanFalseOnly transpose, const GLfloat* value);
GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLintUniformLocation location, GLsizeiNotNegative count, GLbooleanFalseOnly transpose, const GLfloat* value);
+GL_APICALL void GL_APIENTRY glUniformMatrix4x2fv (GLintUniformLocation location, GLsizeiNotNegative count, GLbooleanFalseOnly transpose, const GLfloat* value);
+GL_APICALL void GL_APIENTRY glUniformMatrix4x3fv (GLintUniformLocation location, GLsizeiNotNegative count, GLbooleanFalseOnly transpose, const GLfloat* value);
GL_APICALL void GL_APIENTRY glUseProgram (GLidZeroProgram program);
GL_APICALL void GL_APIENTRY glValidateProgram (GLidProgram program);
GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x);
@@ -149,6 +163,11 @@
GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values);
GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values);
+GL_APICALL void GL_APIENTRY glVertexAttribI4i (GLuint indx, GLint x, GLint y, GLint z, GLint w);
+GL_APICALL void GL_APIENTRY glVertexAttribI4iv (GLuint indx, const GLint* values);
+GL_APICALL void GL_APIENTRY glVertexAttribI4ui (GLuint indx, GLuint x, GLuint y, GLuint z, GLuint w);
+GL_APICALL void GL_APIENTRY glVertexAttribI4uiv (GLuint indx, const GLuint* values);
+GL_APICALL void GL_APIENTRY glVertexAttribIPointer (GLuint indx, GLintVertexAttribSize size, GLenumVertexAttribType type, GLsizei stride, const void* ptr);
GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint indx, GLintVertexAttribSize size, GLenumVertexAttribType type, GLboolean normalized, GLsizei stride, const void* ptr);
GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
GL_APICALL void GL_APIENTRY glBlitFramebufferCHROMIUM (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenumBlitFilter filter);
diff --git a/gpu/command_buffer/common/gles2_cmd_format_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_autogen.h
index 949a8b0..6ef38a92 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_autogen.h
@@ -5535,6 +5535,87 @@
COMPILE_ASSERT(offsetof(Uniform1ivImmediate, count) == 8,
OffsetOf_Uniform1ivImmediate_count_not_8);
+struct Uniform1ui {
+ typedef Uniform1ui ValueType;
+ static const CommandId kCmdId = kUniform1ui;
+ 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(GLint _location, GLuint _x) {
+ SetHeader();
+ location = _location;
+ x = _x;
+ }
+
+ void* Set(void* cmd, GLint _location, GLuint _x) {
+ static_cast<ValueType*>(cmd)->Init(_location, _x);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ gpu::CommandHeader header;
+ int32_t location;
+ uint32_t x;
+};
+
+COMPILE_ASSERT(sizeof(Uniform1ui) == 12, Sizeof_Uniform1ui_is_not_12);
+COMPILE_ASSERT(offsetof(Uniform1ui, header) == 0,
+ OffsetOf_Uniform1ui_header_not_0);
+COMPILE_ASSERT(offsetof(Uniform1ui, location) == 4,
+ OffsetOf_Uniform1ui_location_not_4);
+COMPILE_ASSERT(offsetof(Uniform1ui, x) == 8, OffsetOf_Uniform1ui_x_not_8);
+
+struct Uniform1uivImmediate {
+ typedef Uniform1uivImmediate ValueType;
+ static const CommandId kCmdId = kUniform1uivImmediate;
+ static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
+ static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
+
+ static uint32_t ComputeDataSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(GLuint) * 1 * count); // NOLINT
+ }
+
+ static uint32_t ComputeSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(ValueType) +
+ ComputeDataSize(count)); // NOLINT
+ }
+
+ void SetHeader(GLsizei count) {
+ header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
+ }
+
+ void Init(GLint _location, GLsizei _count, const GLuint* _v) {
+ SetHeader(_count);
+ location = _location;
+ count = _count;
+ memcpy(ImmediateDataAddress(this), _v, ComputeDataSize(_count));
+ }
+
+ void* Set(void* cmd, GLint _location, GLsizei _count, const GLuint* _v) {
+ static_cast<ValueType*>(cmd)->Init(_location, _count, _v);
+ const uint32_t size = ComputeSize(_count);
+ return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
+ }
+
+ gpu::CommandHeader header;
+ int32_t location;
+ int32_t count;
+};
+
+COMPILE_ASSERT(sizeof(Uniform1uivImmediate) == 12,
+ Sizeof_Uniform1uivImmediate_is_not_12);
+COMPILE_ASSERT(offsetof(Uniform1uivImmediate, header) == 0,
+ OffsetOf_Uniform1uivImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(Uniform1uivImmediate, location) == 4,
+ OffsetOf_Uniform1uivImmediate_location_not_4);
+COMPILE_ASSERT(offsetof(Uniform1uivImmediate, count) == 8,
+ OffsetOf_Uniform1uivImmediate_count_not_8);
+
struct Uniform2f {
typedef Uniform2f ValueType;
static const CommandId kCmdId = kUniform2f;
@@ -5703,6 +5784,90 @@
COMPILE_ASSERT(offsetof(Uniform2ivImmediate, count) == 8,
OffsetOf_Uniform2ivImmediate_count_not_8);
+struct Uniform2ui {
+ typedef Uniform2ui ValueType;
+ static const CommandId kCmdId = kUniform2ui;
+ 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(GLint _location, GLuint _x, GLuint _y) {
+ SetHeader();
+ location = _location;
+ x = _x;
+ y = _y;
+ }
+
+ void* Set(void* cmd, GLint _location, GLuint _x, GLuint _y) {
+ static_cast<ValueType*>(cmd)->Init(_location, _x, _y);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ gpu::CommandHeader header;
+ int32_t location;
+ uint32_t x;
+ uint32_t y;
+};
+
+COMPILE_ASSERT(sizeof(Uniform2ui) == 16, Sizeof_Uniform2ui_is_not_16);
+COMPILE_ASSERT(offsetof(Uniform2ui, header) == 0,
+ OffsetOf_Uniform2ui_header_not_0);
+COMPILE_ASSERT(offsetof(Uniform2ui, location) == 4,
+ OffsetOf_Uniform2ui_location_not_4);
+COMPILE_ASSERT(offsetof(Uniform2ui, x) == 8, OffsetOf_Uniform2ui_x_not_8);
+COMPILE_ASSERT(offsetof(Uniform2ui, y) == 12, OffsetOf_Uniform2ui_y_not_12);
+
+struct Uniform2uivImmediate {
+ typedef Uniform2uivImmediate ValueType;
+ static const CommandId kCmdId = kUniform2uivImmediate;
+ static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
+ static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
+
+ static uint32_t ComputeDataSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(GLuint) * 2 * count); // NOLINT
+ }
+
+ static uint32_t ComputeSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(ValueType) +
+ ComputeDataSize(count)); // NOLINT
+ }
+
+ void SetHeader(GLsizei count) {
+ header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
+ }
+
+ void Init(GLint _location, GLsizei _count, const GLuint* _v) {
+ SetHeader(_count);
+ location = _location;
+ count = _count;
+ memcpy(ImmediateDataAddress(this), _v, ComputeDataSize(_count));
+ }
+
+ void* Set(void* cmd, GLint _location, GLsizei _count, const GLuint* _v) {
+ static_cast<ValueType*>(cmd)->Init(_location, _count, _v);
+ const uint32_t size = ComputeSize(_count);
+ return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
+ }
+
+ gpu::CommandHeader header;
+ int32_t location;
+ int32_t count;
+};
+
+COMPILE_ASSERT(sizeof(Uniform2uivImmediate) == 12,
+ Sizeof_Uniform2uivImmediate_is_not_12);
+COMPILE_ASSERT(offsetof(Uniform2uivImmediate, header) == 0,
+ OffsetOf_Uniform2uivImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(Uniform2uivImmediate, location) == 4,
+ OffsetOf_Uniform2uivImmediate_location_not_4);
+COMPILE_ASSERT(offsetof(Uniform2uivImmediate, count) == 8,
+ OffsetOf_Uniform2uivImmediate_count_not_8);
+
struct Uniform3f {
typedef Uniform3f ValueType;
static const CommandId kCmdId = kUniform3f;
@@ -5877,6 +6042,93 @@
COMPILE_ASSERT(offsetof(Uniform3ivImmediate, count) == 8,
OffsetOf_Uniform3ivImmediate_count_not_8);
+struct Uniform3ui {
+ typedef Uniform3ui ValueType;
+ static const CommandId kCmdId = kUniform3ui;
+ 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(GLint _location, GLuint _x, GLuint _y, GLuint _z) {
+ SetHeader();
+ location = _location;
+ x = _x;
+ y = _y;
+ z = _z;
+ }
+
+ void* Set(void* cmd, GLint _location, GLuint _x, GLuint _y, GLuint _z) {
+ static_cast<ValueType*>(cmd)->Init(_location, _x, _y, _z);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ gpu::CommandHeader header;
+ int32_t location;
+ uint32_t x;
+ uint32_t y;
+ uint32_t z;
+};
+
+COMPILE_ASSERT(sizeof(Uniform3ui) == 20, Sizeof_Uniform3ui_is_not_20);
+COMPILE_ASSERT(offsetof(Uniform3ui, header) == 0,
+ OffsetOf_Uniform3ui_header_not_0);
+COMPILE_ASSERT(offsetof(Uniform3ui, location) == 4,
+ OffsetOf_Uniform3ui_location_not_4);
+COMPILE_ASSERT(offsetof(Uniform3ui, x) == 8, OffsetOf_Uniform3ui_x_not_8);
+COMPILE_ASSERT(offsetof(Uniform3ui, y) == 12, OffsetOf_Uniform3ui_y_not_12);
+COMPILE_ASSERT(offsetof(Uniform3ui, z) == 16, OffsetOf_Uniform3ui_z_not_16);
+
+struct Uniform3uivImmediate {
+ typedef Uniform3uivImmediate ValueType;
+ static const CommandId kCmdId = kUniform3uivImmediate;
+ static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
+ static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
+
+ static uint32_t ComputeDataSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(GLuint) * 3 * count); // NOLINT
+ }
+
+ static uint32_t ComputeSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(ValueType) +
+ ComputeDataSize(count)); // NOLINT
+ }
+
+ void SetHeader(GLsizei count) {
+ header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
+ }
+
+ void Init(GLint _location, GLsizei _count, const GLuint* _v) {
+ SetHeader(_count);
+ location = _location;
+ count = _count;
+ memcpy(ImmediateDataAddress(this), _v, ComputeDataSize(_count));
+ }
+
+ void* Set(void* cmd, GLint _location, GLsizei _count, const GLuint* _v) {
+ static_cast<ValueType*>(cmd)->Init(_location, _count, _v);
+ const uint32_t size = ComputeSize(_count);
+ return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
+ }
+
+ gpu::CommandHeader header;
+ int32_t location;
+ int32_t count;
+};
+
+COMPILE_ASSERT(sizeof(Uniform3uivImmediate) == 12,
+ Sizeof_Uniform3uivImmediate_is_not_12);
+COMPILE_ASSERT(offsetof(Uniform3uivImmediate, header) == 0,
+ OffsetOf_Uniform3uivImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(Uniform3uivImmediate, location) == 4,
+ OffsetOf_Uniform3uivImmediate_location_not_4);
+COMPILE_ASSERT(offsetof(Uniform3uivImmediate, count) == 8,
+ OffsetOf_Uniform3uivImmediate_count_not_8);
+
struct Uniform4f {
typedef Uniform4f ValueType;
static const CommandId kCmdId = kUniform4f;
@@ -6067,6 +6319,101 @@
COMPILE_ASSERT(offsetof(Uniform4ivImmediate, count) == 8,
OffsetOf_Uniform4ivImmediate_count_not_8);
+struct Uniform4ui {
+ typedef Uniform4ui ValueType;
+ static const CommandId kCmdId = kUniform4ui;
+ 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(GLint _location, GLuint _x, GLuint _y, GLuint _z, GLuint _w) {
+ SetHeader();
+ location = _location;
+ x = _x;
+ y = _y;
+ z = _z;
+ w = _w;
+ }
+
+ void* Set(void* cmd,
+ GLint _location,
+ GLuint _x,
+ GLuint _y,
+ GLuint _z,
+ GLuint _w) {
+ static_cast<ValueType*>(cmd)->Init(_location, _x, _y, _z, _w);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ gpu::CommandHeader header;
+ int32_t location;
+ uint32_t x;
+ uint32_t y;
+ uint32_t z;
+ uint32_t w;
+};
+
+COMPILE_ASSERT(sizeof(Uniform4ui) == 24, Sizeof_Uniform4ui_is_not_24);
+COMPILE_ASSERT(offsetof(Uniform4ui, header) == 0,
+ OffsetOf_Uniform4ui_header_not_0);
+COMPILE_ASSERT(offsetof(Uniform4ui, location) == 4,
+ OffsetOf_Uniform4ui_location_not_4);
+COMPILE_ASSERT(offsetof(Uniform4ui, x) == 8, OffsetOf_Uniform4ui_x_not_8);
+COMPILE_ASSERT(offsetof(Uniform4ui, y) == 12, OffsetOf_Uniform4ui_y_not_12);
+COMPILE_ASSERT(offsetof(Uniform4ui, z) == 16, OffsetOf_Uniform4ui_z_not_16);
+COMPILE_ASSERT(offsetof(Uniform4ui, w) == 20, OffsetOf_Uniform4ui_w_not_20);
+
+struct Uniform4uivImmediate {
+ typedef Uniform4uivImmediate ValueType;
+ static const CommandId kCmdId = kUniform4uivImmediate;
+ static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
+ static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
+
+ static uint32_t ComputeDataSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(GLuint) * 4 * count); // NOLINT
+ }
+
+ static uint32_t ComputeSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(ValueType) +
+ ComputeDataSize(count)); // NOLINT
+ }
+
+ void SetHeader(GLsizei count) {
+ header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
+ }
+
+ void Init(GLint _location, GLsizei _count, const GLuint* _v) {
+ SetHeader(_count);
+ location = _location;
+ count = _count;
+ memcpy(ImmediateDataAddress(this), _v, ComputeDataSize(_count));
+ }
+
+ void* Set(void* cmd, GLint _location, GLsizei _count, const GLuint* _v) {
+ static_cast<ValueType*>(cmd)->Init(_location, _count, _v);
+ const uint32_t size = ComputeSize(_count);
+ return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
+ }
+
+ gpu::CommandHeader header;
+ int32_t location;
+ int32_t count;
+};
+
+COMPILE_ASSERT(sizeof(Uniform4uivImmediate) == 12,
+ Sizeof_Uniform4uivImmediate_is_not_12);
+COMPILE_ASSERT(offsetof(Uniform4uivImmediate, header) == 0,
+ OffsetOf_Uniform4uivImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(Uniform4uivImmediate, location) == 4,
+ OffsetOf_Uniform4uivImmediate_location_not_4);
+COMPILE_ASSERT(offsetof(Uniform4uivImmediate, count) == 8,
+ OffsetOf_Uniform4uivImmediate_count_not_8);
+
struct UniformMatrix2fvImmediate {
typedef UniformMatrix2fvImmediate ValueType;
static const CommandId kCmdId = kUniformMatrix2fvImmediate;
@@ -6114,6 +6461,100 @@
COMPILE_ASSERT(offsetof(UniformMatrix2fvImmediate, count) == 8,
OffsetOf_UniformMatrix2fvImmediate_count_not_8);
+struct UniformMatrix2x3fvImmediate {
+ typedef UniformMatrix2x3fvImmediate ValueType;
+ static const CommandId kCmdId = kUniformMatrix2x3fvImmediate;
+ static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
+ static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
+
+ static uint32_t ComputeDataSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(GLfloat) * 6 * count); // NOLINT
+ }
+
+ static uint32_t ComputeSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(ValueType) +
+ ComputeDataSize(count)); // NOLINT
+ }
+
+ void SetHeader(GLsizei count) {
+ header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
+ }
+
+ void Init(GLint _location, GLsizei _count, const GLfloat* _value) {
+ SetHeader(_count);
+ location = _location;
+ count = _count;
+ memcpy(ImmediateDataAddress(this), _value, ComputeDataSize(_count));
+ }
+
+ void* Set(void* cmd, GLint _location, GLsizei _count, const GLfloat* _value) {
+ static_cast<ValueType*>(cmd)->Init(_location, _count, _value);
+ const uint32_t size = ComputeSize(_count);
+ return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
+ }
+
+ gpu::CommandHeader header;
+ int32_t location;
+ int32_t count;
+ static const uint32_t transpose = false;
+};
+
+COMPILE_ASSERT(sizeof(UniformMatrix2x3fvImmediate) == 12,
+ Sizeof_UniformMatrix2x3fvImmediate_is_not_12);
+COMPILE_ASSERT(offsetof(UniformMatrix2x3fvImmediate, header) == 0,
+ OffsetOf_UniformMatrix2x3fvImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(UniformMatrix2x3fvImmediate, location) == 4,
+ OffsetOf_UniformMatrix2x3fvImmediate_location_not_4);
+COMPILE_ASSERT(offsetof(UniformMatrix2x3fvImmediate, count) == 8,
+ OffsetOf_UniformMatrix2x3fvImmediate_count_not_8);
+
+struct UniformMatrix2x4fvImmediate {
+ typedef UniformMatrix2x4fvImmediate ValueType;
+ static const CommandId kCmdId = kUniformMatrix2x4fvImmediate;
+ static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
+ static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
+
+ static uint32_t ComputeDataSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(GLfloat) * 8 * count); // NOLINT
+ }
+
+ static uint32_t ComputeSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(ValueType) +
+ ComputeDataSize(count)); // NOLINT
+ }
+
+ void SetHeader(GLsizei count) {
+ header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
+ }
+
+ void Init(GLint _location, GLsizei _count, const GLfloat* _value) {
+ SetHeader(_count);
+ location = _location;
+ count = _count;
+ memcpy(ImmediateDataAddress(this), _value, ComputeDataSize(_count));
+ }
+
+ void* Set(void* cmd, GLint _location, GLsizei _count, const GLfloat* _value) {
+ static_cast<ValueType*>(cmd)->Init(_location, _count, _value);
+ const uint32_t size = ComputeSize(_count);
+ return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
+ }
+
+ gpu::CommandHeader header;
+ int32_t location;
+ int32_t count;
+ static const uint32_t transpose = false;
+};
+
+COMPILE_ASSERT(sizeof(UniformMatrix2x4fvImmediate) == 12,
+ Sizeof_UniformMatrix2x4fvImmediate_is_not_12);
+COMPILE_ASSERT(offsetof(UniformMatrix2x4fvImmediate, header) == 0,
+ OffsetOf_UniformMatrix2x4fvImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(UniformMatrix2x4fvImmediate, location) == 4,
+ OffsetOf_UniformMatrix2x4fvImmediate_location_not_4);
+COMPILE_ASSERT(offsetof(UniformMatrix2x4fvImmediate, count) == 8,
+ OffsetOf_UniformMatrix2x4fvImmediate_count_not_8);
+
struct UniformMatrix3fvImmediate {
typedef UniformMatrix3fvImmediate ValueType;
static const CommandId kCmdId = kUniformMatrix3fvImmediate;
@@ -6161,6 +6602,100 @@
COMPILE_ASSERT(offsetof(UniformMatrix3fvImmediate, count) == 8,
OffsetOf_UniformMatrix3fvImmediate_count_not_8);
+struct UniformMatrix3x2fvImmediate {
+ typedef UniformMatrix3x2fvImmediate ValueType;
+ static const CommandId kCmdId = kUniformMatrix3x2fvImmediate;
+ static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
+ static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
+
+ static uint32_t ComputeDataSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(GLfloat) * 6 * count); // NOLINT
+ }
+
+ static uint32_t ComputeSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(ValueType) +
+ ComputeDataSize(count)); // NOLINT
+ }
+
+ void SetHeader(GLsizei count) {
+ header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
+ }
+
+ void Init(GLint _location, GLsizei _count, const GLfloat* _value) {
+ SetHeader(_count);
+ location = _location;
+ count = _count;
+ memcpy(ImmediateDataAddress(this), _value, ComputeDataSize(_count));
+ }
+
+ void* Set(void* cmd, GLint _location, GLsizei _count, const GLfloat* _value) {
+ static_cast<ValueType*>(cmd)->Init(_location, _count, _value);
+ const uint32_t size = ComputeSize(_count);
+ return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
+ }
+
+ gpu::CommandHeader header;
+ int32_t location;
+ int32_t count;
+ static const uint32_t transpose = false;
+};
+
+COMPILE_ASSERT(sizeof(UniformMatrix3x2fvImmediate) == 12,
+ Sizeof_UniformMatrix3x2fvImmediate_is_not_12);
+COMPILE_ASSERT(offsetof(UniformMatrix3x2fvImmediate, header) == 0,
+ OffsetOf_UniformMatrix3x2fvImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(UniformMatrix3x2fvImmediate, location) == 4,
+ OffsetOf_UniformMatrix3x2fvImmediate_location_not_4);
+COMPILE_ASSERT(offsetof(UniformMatrix3x2fvImmediate, count) == 8,
+ OffsetOf_UniformMatrix3x2fvImmediate_count_not_8);
+
+struct UniformMatrix3x4fvImmediate {
+ typedef UniformMatrix3x4fvImmediate ValueType;
+ static const CommandId kCmdId = kUniformMatrix3x4fvImmediate;
+ static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
+ static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
+
+ static uint32_t ComputeDataSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(GLfloat) * 12 * count); // NOLINT
+ }
+
+ static uint32_t ComputeSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(ValueType) +
+ ComputeDataSize(count)); // NOLINT
+ }
+
+ void SetHeader(GLsizei count) {
+ header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
+ }
+
+ void Init(GLint _location, GLsizei _count, const GLfloat* _value) {
+ SetHeader(_count);
+ location = _location;
+ count = _count;
+ memcpy(ImmediateDataAddress(this), _value, ComputeDataSize(_count));
+ }
+
+ void* Set(void* cmd, GLint _location, GLsizei _count, const GLfloat* _value) {
+ static_cast<ValueType*>(cmd)->Init(_location, _count, _value);
+ const uint32_t size = ComputeSize(_count);
+ return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
+ }
+
+ gpu::CommandHeader header;
+ int32_t location;
+ int32_t count;
+ static const uint32_t transpose = false;
+};
+
+COMPILE_ASSERT(sizeof(UniformMatrix3x4fvImmediate) == 12,
+ Sizeof_UniformMatrix3x4fvImmediate_is_not_12);
+COMPILE_ASSERT(offsetof(UniformMatrix3x4fvImmediate, header) == 0,
+ OffsetOf_UniformMatrix3x4fvImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(UniformMatrix3x4fvImmediate, location) == 4,
+ OffsetOf_UniformMatrix3x4fvImmediate_location_not_4);
+COMPILE_ASSERT(offsetof(UniformMatrix3x4fvImmediate, count) == 8,
+ OffsetOf_UniformMatrix3x4fvImmediate_count_not_8);
+
struct UniformMatrix4fvImmediate {
typedef UniformMatrix4fvImmediate ValueType;
static const CommandId kCmdId = kUniformMatrix4fvImmediate;
@@ -6208,6 +6743,100 @@
COMPILE_ASSERT(offsetof(UniformMatrix4fvImmediate, count) == 8,
OffsetOf_UniformMatrix4fvImmediate_count_not_8);
+struct UniformMatrix4x2fvImmediate {
+ typedef UniformMatrix4x2fvImmediate ValueType;
+ static const CommandId kCmdId = kUniformMatrix4x2fvImmediate;
+ static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
+ static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
+
+ static uint32_t ComputeDataSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(GLfloat) * 8 * count); // NOLINT
+ }
+
+ static uint32_t ComputeSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(ValueType) +
+ ComputeDataSize(count)); // NOLINT
+ }
+
+ void SetHeader(GLsizei count) {
+ header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
+ }
+
+ void Init(GLint _location, GLsizei _count, const GLfloat* _value) {
+ SetHeader(_count);
+ location = _location;
+ count = _count;
+ memcpy(ImmediateDataAddress(this), _value, ComputeDataSize(_count));
+ }
+
+ void* Set(void* cmd, GLint _location, GLsizei _count, const GLfloat* _value) {
+ static_cast<ValueType*>(cmd)->Init(_location, _count, _value);
+ const uint32_t size = ComputeSize(_count);
+ return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
+ }
+
+ gpu::CommandHeader header;
+ int32_t location;
+ int32_t count;
+ static const uint32_t transpose = false;
+};
+
+COMPILE_ASSERT(sizeof(UniformMatrix4x2fvImmediate) == 12,
+ Sizeof_UniformMatrix4x2fvImmediate_is_not_12);
+COMPILE_ASSERT(offsetof(UniformMatrix4x2fvImmediate, header) == 0,
+ OffsetOf_UniformMatrix4x2fvImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(UniformMatrix4x2fvImmediate, location) == 4,
+ OffsetOf_UniformMatrix4x2fvImmediate_location_not_4);
+COMPILE_ASSERT(offsetof(UniformMatrix4x2fvImmediate, count) == 8,
+ OffsetOf_UniformMatrix4x2fvImmediate_count_not_8);
+
+struct UniformMatrix4x3fvImmediate {
+ typedef UniformMatrix4x3fvImmediate ValueType;
+ static const CommandId kCmdId = kUniformMatrix4x3fvImmediate;
+ static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
+ static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
+
+ static uint32_t ComputeDataSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(GLfloat) * 12 * count); // NOLINT
+ }
+
+ static uint32_t ComputeSize(GLsizei count) {
+ return static_cast<uint32_t>(sizeof(ValueType) +
+ ComputeDataSize(count)); // NOLINT
+ }
+
+ void SetHeader(GLsizei count) {
+ header.SetCmdByTotalSize<ValueType>(ComputeSize(count));
+ }
+
+ void Init(GLint _location, GLsizei _count, const GLfloat* _value) {
+ SetHeader(_count);
+ location = _location;
+ count = _count;
+ memcpy(ImmediateDataAddress(this), _value, ComputeDataSize(_count));
+ }
+
+ void* Set(void* cmd, GLint _location, GLsizei _count, const GLfloat* _value) {
+ static_cast<ValueType*>(cmd)->Init(_location, _count, _value);
+ const uint32_t size = ComputeSize(_count);
+ return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
+ }
+
+ gpu::CommandHeader header;
+ int32_t location;
+ int32_t count;
+ static const uint32_t transpose = false;
+};
+
+COMPILE_ASSERT(sizeof(UniformMatrix4x3fvImmediate) == 12,
+ Sizeof_UniformMatrix4x3fvImmediate_is_not_12);
+COMPILE_ASSERT(offsetof(UniformMatrix4x3fvImmediate, header) == 0,
+ OffsetOf_UniformMatrix4x3fvImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(UniformMatrix4x3fvImmediate, location) == 4,
+ OffsetOf_UniformMatrix4x3fvImmediate_location_not_4);
+COMPILE_ASSERT(offsetof(UniformMatrix4x3fvImmediate, count) == 8,
+ OffsetOf_UniformMatrix4x3fvImmediate_count_not_8);
+
struct UseProgram {
typedef UseProgram ValueType;
static const CommandId kCmdId = kUseProgram;
@@ -6605,6 +7234,246 @@
COMPILE_ASSERT(offsetof(VertexAttrib4fvImmediate, indx) == 4,
OffsetOf_VertexAttrib4fvImmediate_indx_not_4);
+struct VertexAttribI4i {
+ typedef VertexAttribI4i ValueType;
+ static const CommandId kCmdId = kVertexAttribI4i;
+ 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(GLuint _indx, GLint _x, GLint _y, GLint _z, GLint _w) {
+ SetHeader();
+ indx = _indx;
+ x = _x;
+ y = _y;
+ z = _z;
+ w = _w;
+ }
+
+ void* Set(void* cmd, GLuint _indx, GLint _x, GLint _y, GLint _z, GLint _w) {
+ static_cast<ValueType*>(cmd)->Init(_indx, _x, _y, _z, _w);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ gpu::CommandHeader header;
+ uint32_t indx;
+ int32_t x;
+ int32_t y;
+ int32_t z;
+ int32_t w;
+};
+
+COMPILE_ASSERT(sizeof(VertexAttribI4i) == 24, Sizeof_VertexAttribI4i_is_not_24);
+COMPILE_ASSERT(offsetof(VertexAttribI4i, header) == 0,
+ OffsetOf_VertexAttribI4i_header_not_0);
+COMPILE_ASSERT(offsetof(VertexAttribI4i, indx) == 4,
+ OffsetOf_VertexAttribI4i_indx_not_4);
+COMPILE_ASSERT(offsetof(VertexAttribI4i, x) == 8,
+ OffsetOf_VertexAttribI4i_x_not_8);
+COMPILE_ASSERT(offsetof(VertexAttribI4i, y) == 12,
+ OffsetOf_VertexAttribI4i_y_not_12);
+COMPILE_ASSERT(offsetof(VertexAttribI4i, z) == 16,
+ OffsetOf_VertexAttribI4i_z_not_16);
+COMPILE_ASSERT(offsetof(VertexAttribI4i, w) == 20,
+ OffsetOf_VertexAttribI4i_w_not_20);
+
+struct VertexAttribI4ivImmediate {
+ typedef VertexAttribI4ivImmediate ValueType;
+ static const CommandId kCmdId = kVertexAttribI4ivImmediate;
+ static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
+ static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
+
+ static uint32_t ComputeDataSize() {
+ return static_cast<uint32_t>(sizeof(GLint) * 4); // NOLINT
+ }
+
+ static uint32_t ComputeSize() {
+ return static_cast<uint32_t>(sizeof(ValueType) +
+ ComputeDataSize()); // NOLINT
+ }
+
+ void SetHeader() { header.SetCmdByTotalSize<ValueType>(ComputeSize()); }
+
+ void Init(GLuint _indx, const GLint* _values) {
+ SetHeader();
+ indx = _indx;
+ memcpy(ImmediateDataAddress(this), _values, ComputeDataSize());
+ }
+
+ void* Set(void* cmd, GLuint _indx, const GLint* _values) {
+ static_cast<ValueType*>(cmd)->Init(_indx, _values);
+ const uint32_t size = ComputeSize();
+ return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
+ }
+
+ gpu::CommandHeader header;
+ uint32_t indx;
+};
+
+COMPILE_ASSERT(sizeof(VertexAttribI4ivImmediate) == 8,
+ Sizeof_VertexAttribI4ivImmediate_is_not_8);
+COMPILE_ASSERT(offsetof(VertexAttribI4ivImmediate, header) == 0,
+ OffsetOf_VertexAttribI4ivImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(VertexAttribI4ivImmediate, indx) == 4,
+ OffsetOf_VertexAttribI4ivImmediate_indx_not_4);
+
+struct VertexAttribI4ui {
+ typedef VertexAttribI4ui ValueType;
+ static const CommandId kCmdId = kVertexAttribI4ui;
+ 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(GLuint _indx, GLuint _x, GLuint _y, GLuint _z, GLuint _w) {
+ SetHeader();
+ indx = _indx;
+ x = _x;
+ y = _y;
+ z = _z;
+ w = _w;
+ }
+
+ void* Set(void* cmd,
+ GLuint _indx,
+ GLuint _x,
+ GLuint _y,
+ GLuint _z,
+ GLuint _w) {
+ static_cast<ValueType*>(cmd)->Init(_indx, _x, _y, _z, _w);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ gpu::CommandHeader header;
+ uint32_t indx;
+ uint32_t x;
+ uint32_t y;
+ uint32_t z;
+ uint32_t w;
+};
+
+COMPILE_ASSERT(sizeof(VertexAttribI4ui) == 24,
+ Sizeof_VertexAttribI4ui_is_not_24);
+COMPILE_ASSERT(offsetof(VertexAttribI4ui, header) == 0,
+ OffsetOf_VertexAttribI4ui_header_not_0);
+COMPILE_ASSERT(offsetof(VertexAttribI4ui, indx) == 4,
+ OffsetOf_VertexAttribI4ui_indx_not_4);
+COMPILE_ASSERT(offsetof(VertexAttribI4ui, x) == 8,
+ OffsetOf_VertexAttribI4ui_x_not_8);
+COMPILE_ASSERT(offsetof(VertexAttribI4ui, y) == 12,
+ OffsetOf_VertexAttribI4ui_y_not_12);
+COMPILE_ASSERT(offsetof(VertexAttribI4ui, z) == 16,
+ OffsetOf_VertexAttribI4ui_z_not_16);
+COMPILE_ASSERT(offsetof(VertexAttribI4ui, w) == 20,
+ OffsetOf_VertexAttribI4ui_w_not_20);
+
+struct VertexAttribI4uivImmediate {
+ typedef VertexAttribI4uivImmediate ValueType;
+ static const CommandId kCmdId = kVertexAttribI4uivImmediate;
+ static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
+ static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);
+
+ static uint32_t ComputeDataSize() {
+ return static_cast<uint32_t>(sizeof(GLuint) * 4); // NOLINT
+ }
+
+ static uint32_t ComputeSize() {
+ return static_cast<uint32_t>(sizeof(ValueType) +
+ ComputeDataSize()); // NOLINT
+ }
+
+ void SetHeader() { header.SetCmdByTotalSize<ValueType>(ComputeSize()); }
+
+ void Init(GLuint _indx, const GLuint* _values) {
+ SetHeader();
+ indx = _indx;
+ memcpy(ImmediateDataAddress(this), _values, ComputeDataSize());
+ }
+
+ void* Set(void* cmd, GLuint _indx, const GLuint* _values) {
+ static_cast<ValueType*>(cmd)->Init(_indx, _values);
+ const uint32_t size = ComputeSize();
+ return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
+ }
+
+ gpu::CommandHeader header;
+ uint32_t indx;
+};
+
+COMPILE_ASSERT(sizeof(VertexAttribI4uivImmediate) == 8,
+ Sizeof_VertexAttribI4uivImmediate_is_not_8);
+COMPILE_ASSERT(offsetof(VertexAttribI4uivImmediate, header) == 0,
+ OffsetOf_VertexAttribI4uivImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(VertexAttribI4uivImmediate, indx) == 4,
+ OffsetOf_VertexAttribI4uivImmediate_indx_not_4);
+
+struct VertexAttribIPointer {
+ typedef VertexAttribIPointer ValueType;
+ static const CommandId kCmdId = kVertexAttribIPointer;
+ 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(GLuint _indx,
+ GLint _size,
+ GLenum _type,
+ GLsizei _stride,
+ GLuint _offset) {
+ SetHeader();
+ indx = _indx;
+ size = _size;
+ type = _type;
+ stride = _stride;
+ offset = _offset;
+ }
+
+ void* Set(void* cmd,
+ GLuint _indx,
+ GLint _size,
+ GLenum _type,
+ GLsizei _stride,
+ GLuint _offset) {
+ static_cast<ValueType*>(cmd)->Init(_indx, _size, _type, _stride, _offset);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ gpu::CommandHeader header;
+ uint32_t indx;
+ int32_t size;
+ uint32_t type;
+ int32_t stride;
+ uint32_t offset;
+};
+
+COMPILE_ASSERT(sizeof(VertexAttribIPointer) == 24,
+ Sizeof_VertexAttribIPointer_is_not_24);
+COMPILE_ASSERT(offsetof(VertexAttribIPointer, header) == 0,
+ OffsetOf_VertexAttribIPointer_header_not_0);
+COMPILE_ASSERT(offsetof(VertexAttribIPointer, indx) == 4,
+ OffsetOf_VertexAttribIPointer_indx_not_4);
+COMPILE_ASSERT(offsetof(VertexAttribIPointer, size) == 8,
+ OffsetOf_VertexAttribIPointer_size_not_8);
+COMPILE_ASSERT(offsetof(VertexAttribIPointer, type) == 12,
+ OffsetOf_VertexAttribIPointer_type_not_12);
+COMPILE_ASSERT(offsetof(VertexAttribIPointer, stride) == 16,
+ OffsetOf_VertexAttribIPointer_stride_not_16);
+COMPILE_ASSERT(offsetof(VertexAttribIPointer, offset) == 20,
+ OffsetOf_VertexAttribIPointer_offset_not_20);
+
struct VertexAttribPointer {
typedef VertexAttribPointer ValueType;
static const CommandId kCmdId = kVertexAttribPointer;
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 adda070..2082817 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
@@ -1717,6 +1717,40 @@
// TODO(gman): Check that data was inserted;
}
+TEST_F(GLES2FormatTest, Uniform1ui) {
+ cmds::Uniform1ui& cmd = *GetBufferAs<cmds::Uniform1ui>();
+ void* next_cmd =
+ cmd.Set(&cmd, static_cast<GLint>(11), static_cast<GLuint>(12));
+ EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform1ui::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLint>(11), cmd.location);
+ EXPECT_EQ(static_cast<GLuint>(12), cmd.x);
+ CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
+}
+
+TEST_F(GLES2FormatTest, Uniform1uivImmediate) {
+ const int kSomeBaseValueToTestWith = 51;
+ static GLuint data[] = {
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 0),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 1),
+ };
+ cmds::Uniform1uivImmediate& cmd = *GetBufferAs<cmds::Uniform1uivImmediate>();
+ const GLsizei kNumElements = 2;
+ const size_t kExpectedCmdSize =
+ sizeof(cmd) + kNumElements * sizeof(GLuint) * 1;
+ void* next_cmd =
+ cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
+ EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform1uivImmediate::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLint>(1), cmd.location);
+ EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
+ // TODO(gman): Check that data was inserted;
+}
+
TEST_F(GLES2FormatTest, Uniform2f) {
cmds::Uniform2f& cmd = *GetBufferAs<cmds::Uniform2f>();
void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11),
@@ -1789,6 +1823,43 @@
// TODO(gman): Check that data was inserted;
}
+TEST_F(GLES2FormatTest, Uniform2ui) {
+ cmds::Uniform2ui& cmd = *GetBufferAs<cmds::Uniform2ui>();
+ void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11),
+ static_cast<GLuint>(12), static_cast<GLuint>(13));
+ EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform2ui::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLint>(11), cmd.location);
+ EXPECT_EQ(static_cast<GLuint>(12), cmd.x);
+ EXPECT_EQ(static_cast<GLuint>(13), cmd.y);
+ CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
+}
+
+TEST_F(GLES2FormatTest, Uniform2uivImmediate) {
+ const int kSomeBaseValueToTestWith = 51;
+ static GLuint data[] = {
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 0),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 1),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 2),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 3),
+ };
+ cmds::Uniform2uivImmediate& cmd = *GetBufferAs<cmds::Uniform2uivImmediate>();
+ const GLsizei kNumElements = 2;
+ const size_t kExpectedCmdSize =
+ sizeof(cmd) + kNumElements * sizeof(GLuint) * 2;
+ void* next_cmd =
+ cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
+ EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform2uivImmediate::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLint>(1), cmd.location);
+ EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
+ // TODO(gman): Check that data was inserted;
+}
+
TEST_F(GLES2FormatTest, Uniform3f) {
cmds::Uniform3f& cmd = *GetBufferAs<cmds::Uniform3f>();
void* next_cmd =
@@ -1868,6 +1939,47 @@
// TODO(gman): Check that data was inserted;
}
+TEST_F(GLES2FormatTest, Uniform3ui) {
+ cmds::Uniform3ui& cmd = *GetBufferAs<cmds::Uniform3ui>();
+ void* next_cmd =
+ cmd.Set(&cmd, static_cast<GLint>(11), static_cast<GLuint>(12),
+ static_cast<GLuint>(13), static_cast<GLuint>(14));
+ EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform3ui::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLint>(11), cmd.location);
+ EXPECT_EQ(static_cast<GLuint>(12), cmd.x);
+ EXPECT_EQ(static_cast<GLuint>(13), cmd.y);
+ EXPECT_EQ(static_cast<GLuint>(14), cmd.z);
+ CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
+}
+
+TEST_F(GLES2FormatTest, Uniform3uivImmediate) {
+ const int kSomeBaseValueToTestWith = 51;
+ static GLuint data[] = {
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 0),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 1),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 2),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 3),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 4),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 5),
+ };
+ cmds::Uniform3uivImmediate& cmd = *GetBufferAs<cmds::Uniform3uivImmediate>();
+ const GLsizei kNumElements = 2;
+ const size_t kExpectedCmdSize =
+ sizeof(cmd) + kNumElements * sizeof(GLuint) * 3;
+ void* next_cmd =
+ cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
+ EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform3uivImmediate::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLint>(1), cmd.location);
+ EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
+ // TODO(gman): Check that data was inserted;
+}
+
TEST_F(GLES2FormatTest, Uniform4f) {
cmds::Uniform4f& cmd = *GetBufferAs<cmds::Uniform4f>();
void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11),
@@ -1954,6 +2066,50 @@
// TODO(gman): Check that data was inserted;
}
+TEST_F(GLES2FormatTest, Uniform4ui) {
+ cmds::Uniform4ui& cmd = *GetBufferAs<cmds::Uniform4ui>();
+ void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11),
+ static_cast<GLuint>(12), static_cast<GLuint>(13),
+ static_cast<GLuint>(14), static_cast<GLuint>(15));
+ EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform4ui::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLint>(11), cmd.location);
+ EXPECT_EQ(static_cast<GLuint>(12), cmd.x);
+ EXPECT_EQ(static_cast<GLuint>(13), cmd.y);
+ EXPECT_EQ(static_cast<GLuint>(14), cmd.z);
+ EXPECT_EQ(static_cast<GLuint>(15), cmd.w);
+ CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
+}
+
+TEST_F(GLES2FormatTest, Uniform4uivImmediate) {
+ const int kSomeBaseValueToTestWith = 51;
+ static GLuint data[] = {
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 0),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 1),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 2),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 3),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 4),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 5),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 6),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 7),
+ };
+ cmds::Uniform4uivImmediate& cmd = *GetBufferAs<cmds::Uniform4uivImmediate>();
+ const GLsizei kNumElements = 2;
+ const size_t kExpectedCmdSize =
+ sizeof(cmd) + kNumElements * sizeof(GLuint) * 4;
+ void* next_cmd =
+ cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
+ EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform4uivImmediate::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLint>(1), cmd.location);
+ EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
+ // TODO(gman): Check that data was inserted;
+}
+
TEST_F(GLES2FormatTest, UniformMatrix2fvImmediate) {
const int kSomeBaseValueToTestWith = 51;
static GLfloat data[] = {
@@ -1983,6 +2139,76 @@
// TODO(gman): Check that data was inserted;
}
+TEST_F(GLES2FormatTest, UniformMatrix2x3fvImmediate) {
+ const int kSomeBaseValueToTestWith = 51;
+ static GLfloat data[] = {
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 2),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 3),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 4),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 5),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 6),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 7),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 8),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 9),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 10),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 11),
+ };
+ cmds::UniformMatrix2x3fvImmediate& cmd =
+ *GetBufferAs<cmds::UniformMatrix2x3fvImmediate>();
+ const GLsizei kNumElements = 2;
+ const size_t kExpectedCmdSize =
+ sizeof(cmd) + kNumElements * sizeof(GLfloat) * 6;
+ void* next_cmd =
+ cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
+ EXPECT_EQ(static_cast<uint32_t>(cmds::UniformMatrix2x3fvImmediate::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLint>(1), cmd.location);
+ EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
+ // TODO(gman): Check that data was inserted;
+}
+
+TEST_F(GLES2FormatTest, UniformMatrix2x4fvImmediate) {
+ const int kSomeBaseValueToTestWith = 51;
+ static GLfloat data[] = {
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 2),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 3),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 4),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 5),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 6),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 7),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 8),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 9),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 10),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 11),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 12),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 13),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 14),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 15),
+ };
+ cmds::UniformMatrix2x4fvImmediate& cmd =
+ *GetBufferAs<cmds::UniformMatrix2x4fvImmediate>();
+ const GLsizei kNumElements = 2;
+ const size_t kExpectedCmdSize =
+ sizeof(cmd) + kNumElements * sizeof(GLfloat) * 8;
+ void* next_cmd =
+ cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
+ EXPECT_EQ(static_cast<uint32_t>(cmds::UniformMatrix2x4fvImmediate::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLint>(1), cmd.location);
+ EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
+ // TODO(gman): Check that data was inserted;
+}
+
TEST_F(GLES2FormatTest, UniformMatrix3fvImmediate) {
const int kSomeBaseValueToTestWith = 51;
static GLfloat data[] = {
@@ -2022,6 +2248,84 @@
// TODO(gman): Check that data was inserted;
}
+TEST_F(GLES2FormatTest, UniformMatrix3x2fvImmediate) {
+ const int kSomeBaseValueToTestWith = 51;
+ static GLfloat data[] = {
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 2),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 3),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 4),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 5),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 6),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 7),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 8),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 9),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 10),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 11),
+ };
+ cmds::UniformMatrix3x2fvImmediate& cmd =
+ *GetBufferAs<cmds::UniformMatrix3x2fvImmediate>();
+ const GLsizei kNumElements = 2;
+ const size_t kExpectedCmdSize =
+ sizeof(cmd) + kNumElements * sizeof(GLfloat) * 6;
+ void* next_cmd =
+ cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
+ EXPECT_EQ(static_cast<uint32_t>(cmds::UniformMatrix3x2fvImmediate::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLint>(1), cmd.location);
+ EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
+ // TODO(gman): Check that data was inserted;
+}
+
+TEST_F(GLES2FormatTest, UniformMatrix3x4fvImmediate) {
+ const int kSomeBaseValueToTestWith = 51;
+ static GLfloat data[] = {
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 2),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 3),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 4),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 5),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 6),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 7),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 8),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 9),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 10),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 11),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 12),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 13),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 14),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 15),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 16),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 17),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 18),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 19),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 20),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 21),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 22),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 23),
+ };
+ cmds::UniformMatrix3x4fvImmediate& cmd =
+ *GetBufferAs<cmds::UniformMatrix3x4fvImmediate>();
+ const GLsizei kNumElements = 2;
+ const size_t kExpectedCmdSize =
+ sizeof(cmd) + kNumElements * sizeof(GLfloat) * 12;
+ void* next_cmd =
+ cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
+ EXPECT_EQ(static_cast<uint32_t>(cmds::UniformMatrix3x4fvImmediate::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLint>(1), cmd.location);
+ EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
+ // TODO(gman): Check that data was inserted;
+}
+
TEST_F(GLES2FormatTest, UniformMatrix4fvImmediate) {
const int kSomeBaseValueToTestWith = 51;
static GLfloat data[] = {
@@ -2075,6 +2379,88 @@
// TODO(gman): Check that data was inserted;
}
+TEST_F(GLES2FormatTest, UniformMatrix4x2fvImmediate) {
+ const int kSomeBaseValueToTestWith = 51;
+ static GLfloat data[] = {
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 2),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 3),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 4),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 5),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 6),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 7),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 8),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 9),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 10),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 11),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 12),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 13),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 14),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 15),
+ };
+ cmds::UniformMatrix4x2fvImmediate& cmd =
+ *GetBufferAs<cmds::UniformMatrix4x2fvImmediate>();
+ const GLsizei kNumElements = 2;
+ const size_t kExpectedCmdSize =
+ sizeof(cmd) + kNumElements * sizeof(GLfloat) * 8;
+ void* next_cmd =
+ cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
+ EXPECT_EQ(static_cast<uint32_t>(cmds::UniformMatrix4x2fvImmediate::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLint>(1), cmd.location);
+ EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
+ // TODO(gman): Check that data was inserted;
+}
+
+TEST_F(GLES2FormatTest, UniformMatrix4x3fvImmediate) {
+ const int kSomeBaseValueToTestWith = 51;
+ static GLfloat data[] = {
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 0),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 1),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 2),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 3),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 4),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 5),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 6),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 7),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 8),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 9),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 10),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 11),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 12),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 13),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 14),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 15),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 16),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 17),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 18),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 19),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 20),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 21),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 22),
+ static_cast<GLfloat>(kSomeBaseValueToTestWith + 23),
+ };
+ cmds::UniformMatrix4x3fvImmediate& cmd =
+ *GetBufferAs<cmds::UniformMatrix4x3fvImmediate>();
+ const GLsizei kNumElements = 2;
+ const size_t kExpectedCmdSize =
+ sizeof(cmd) + kNumElements * sizeof(GLfloat) * 12;
+ void* next_cmd =
+ cmd.Set(&cmd, static_cast<GLint>(1), static_cast<GLsizei>(2), data);
+ EXPECT_EQ(static_cast<uint32_t>(cmds::UniformMatrix4x3fvImmediate::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(kExpectedCmdSize, cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLint>(1), cmd.location);
+ EXPECT_EQ(static_cast<GLsizei>(2), cmd.count);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
+ // TODO(gman): Check that data was inserted;
+}
+
TEST_F(GLES2FormatTest, UseProgram) {
cmds::UseProgram& cmd = *GetBufferAs<cmds::UseProgram>();
void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11));
@@ -2229,6 +2615,96 @@
// TODO(gman): Check that data was inserted;
}
+TEST_F(GLES2FormatTest, VertexAttribI4i) {
+ cmds::VertexAttribI4i& cmd = *GetBufferAs<cmds::VertexAttribI4i>();
+ void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11),
+ static_cast<GLint>(12), static_cast<GLint>(13),
+ static_cast<GLint>(14), static_cast<GLint>(15));
+ EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttribI4i::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLuint>(11), cmd.indx);
+ EXPECT_EQ(static_cast<GLint>(12), cmd.x);
+ EXPECT_EQ(static_cast<GLint>(13), cmd.y);
+ EXPECT_EQ(static_cast<GLint>(14), cmd.z);
+ EXPECT_EQ(static_cast<GLint>(15), cmd.w);
+ CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
+}
+
+TEST_F(GLES2FormatTest, VertexAttribI4ivImmediate) {
+ const int kSomeBaseValueToTestWith = 51;
+ static GLint data[] = {
+ static_cast<GLint>(kSomeBaseValueToTestWith + 0),
+ static_cast<GLint>(kSomeBaseValueToTestWith + 1),
+ static_cast<GLint>(kSomeBaseValueToTestWith + 2),
+ static_cast<GLint>(kSomeBaseValueToTestWith + 3),
+ };
+ cmds::VertexAttribI4ivImmediate& cmd =
+ *GetBufferAs<cmds::VertexAttribI4ivImmediate>();
+ void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11), data);
+ EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttribI4ivImmediate::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)),
+ cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLuint>(11), cmd.indx);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
+ // TODO(gman): Check that data was inserted;
+}
+
+TEST_F(GLES2FormatTest, VertexAttribI4ui) {
+ cmds::VertexAttribI4ui& cmd = *GetBufferAs<cmds::VertexAttribI4ui>();
+ void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11),
+ static_cast<GLuint>(12), static_cast<GLuint>(13),
+ static_cast<GLuint>(14), static_cast<GLuint>(15));
+ EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttribI4ui::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLuint>(11), cmd.indx);
+ EXPECT_EQ(static_cast<GLuint>(12), cmd.x);
+ EXPECT_EQ(static_cast<GLuint>(13), cmd.y);
+ EXPECT_EQ(static_cast<GLuint>(14), cmd.z);
+ EXPECT_EQ(static_cast<GLuint>(15), cmd.w);
+ CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
+}
+
+TEST_F(GLES2FormatTest, VertexAttribI4uivImmediate) {
+ const int kSomeBaseValueToTestWith = 51;
+ static GLuint data[] = {
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 0),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 1),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 2),
+ static_cast<GLuint>(kSomeBaseValueToTestWith + 3),
+ };
+ cmds::VertexAttribI4uivImmediate& cmd =
+ *GetBufferAs<cmds::VertexAttribI4uivImmediate>();
+ void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11), data);
+ EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttribI4uivImmediate::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)),
+ cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLuint>(11), cmd.indx);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
+ // TODO(gman): Check that data was inserted;
+}
+
+TEST_F(GLES2FormatTest, VertexAttribIPointer) {
+ cmds::VertexAttribIPointer& cmd = *GetBufferAs<cmds::VertexAttribIPointer>();
+ void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11),
+ static_cast<GLint>(12), static_cast<GLenum>(13),
+ static_cast<GLsizei>(14), static_cast<GLuint>(15));
+ EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttribIPointer::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLuint>(11), cmd.indx);
+ EXPECT_EQ(static_cast<GLint>(12), cmd.size);
+ EXPECT_EQ(static_cast<GLenum>(13), cmd.type);
+ EXPECT_EQ(static_cast<GLsizei>(14), cmd.stride);
+ EXPECT_EQ(static_cast<GLuint>(15), cmd.offset);
+ CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
+}
+
TEST_F(GLES2FormatTest, VertexAttribPointer) {
cmds::VertexAttribPointer& cmd = *GetBufferAs<cmds::VertexAttribPointer>();
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 ee79e5ca..663a1657 100644
--- a/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
@@ -132,94 +132,113 @@
OP(Uniform1fvImmediate) /* 373 */ \
OP(Uniform1i) /* 374 */ \
OP(Uniform1ivImmediate) /* 375 */ \
- OP(Uniform2f) /* 376 */ \
- OP(Uniform2fvImmediate) /* 377 */ \
- OP(Uniform2i) /* 378 */ \
- OP(Uniform2ivImmediate) /* 379 */ \
- OP(Uniform3f) /* 380 */ \
- OP(Uniform3fvImmediate) /* 381 */ \
- OP(Uniform3i) /* 382 */ \
- OP(Uniform3ivImmediate) /* 383 */ \
- OP(Uniform4f) /* 384 */ \
- OP(Uniform4fvImmediate) /* 385 */ \
- OP(Uniform4i) /* 386 */ \
- OP(Uniform4ivImmediate) /* 387 */ \
- OP(UniformMatrix2fvImmediate) /* 388 */ \
- OP(UniformMatrix3fvImmediate) /* 389 */ \
- OP(UniformMatrix4fvImmediate) /* 390 */ \
- OP(UseProgram) /* 391 */ \
- OP(ValidateProgram) /* 392 */ \
- OP(VertexAttrib1f) /* 393 */ \
- OP(VertexAttrib1fvImmediate) /* 394 */ \
- OP(VertexAttrib2f) /* 395 */ \
- OP(VertexAttrib2fvImmediate) /* 396 */ \
- OP(VertexAttrib3f) /* 397 */ \
- OP(VertexAttrib3fvImmediate) /* 398 */ \
- OP(VertexAttrib4f) /* 399 */ \
- OP(VertexAttrib4fvImmediate) /* 400 */ \
- OP(VertexAttribPointer) /* 401 */ \
- OP(Viewport) /* 402 */ \
- OP(BlitFramebufferCHROMIUM) /* 403 */ \
- OP(RenderbufferStorageMultisampleCHROMIUM) /* 404 */ \
- OP(RenderbufferStorageMultisampleEXT) /* 405 */ \
- OP(FramebufferTexture2DMultisampleEXT) /* 406 */ \
- OP(TexStorage2DEXT) /* 407 */ \
- OP(GenQueriesEXTImmediate) /* 408 */ \
- OP(DeleteQueriesEXTImmediate) /* 409 */ \
- OP(BeginQueryEXT) /* 410 */ \
- OP(EndQueryEXT) /* 411 */ \
- OP(InsertEventMarkerEXT) /* 412 */ \
- OP(PushGroupMarkerEXT) /* 413 */ \
- OP(PopGroupMarkerEXT) /* 414 */ \
- OP(GenVertexArraysOESImmediate) /* 415 */ \
- OP(DeleteVertexArraysOESImmediate) /* 416 */ \
- OP(IsVertexArrayOES) /* 417 */ \
- OP(BindVertexArrayOES) /* 418 */ \
- OP(SwapBuffers) /* 419 */ \
- OP(GetMaxValueInBufferCHROMIUM) /* 420 */ \
- OP(EnableFeatureCHROMIUM) /* 421 */ \
- OP(ResizeCHROMIUM) /* 422 */ \
- OP(GetRequestableExtensionsCHROMIUM) /* 423 */ \
- OP(RequestExtensionCHROMIUM) /* 424 */ \
- OP(GetProgramInfoCHROMIUM) /* 425 */ \
- OP(GetTranslatedShaderSourceANGLE) /* 426 */ \
- OP(PostSubBufferCHROMIUM) /* 427 */ \
- OP(TexImageIOSurface2DCHROMIUM) /* 428 */ \
- OP(CopyTextureCHROMIUM) /* 429 */ \
- OP(DrawArraysInstancedANGLE) /* 430 */ \
- OP(DrawElementsInstancedANGLE) /* 431 */ \
- OP(VertexAttribDivisorANGLE) /* 432 */ \
- OP(GenMailboxCHROMIUM) /* 433 */ \
- OP(ProduceTextureCHROMIUMImmediate) /* 434 */ \
- OP(ProduceTextureDirectCHROMIUMImmediate) /* 435 */ \
- OP(ConsumeTextureCHROMIUMImmediate) /* 436 */ \
- OP(CreateAndConsumeTextureCHROMIUMImmediate) /* 437 */ \
- OP(BindUniformLocationCHROMIUMBucket) /* 438 */ \
- OP(GenValuebuffersCHROMIUMImmediate) /* 439 */ \
- OP(DeleteValuebuffersCHROMIUMImmediate) /* 440 */ \
- OP(IsValuebufferCHROMIUM) /* 441 */ \
- OP(BindValuebufferCHROMIUM) /* 442 */ \
- OP(SubscribeValueCHROMIUM) /* 443 */ \
- OP(PopulateSubscribedValuesCHROMIUM) /* 444 */ \
- OP(UniformValuebufferCHROMIUM) /* 445 */ \
- OP(BindTexImage2DCHROMIUM) /* 446 */ \
- OP(ReleaseTexImage2DCHROMIUM) /* 447 */ \
- OP(TraceBeginCHROMIUM) /* 448 */ \
- OP(TraceEndCHROMIUM) /* 449 */ \
- OP(AsyncTexSubImage2DCHROMIUM) /* 450 */ \
- OP(AsyncTexImage2DCHROMIUM) /* 451 */ \
- OP(WaitAsyncTexImage2DCHROMIUM) /* 452 */ \
- OP(WaitAllAsyncTexImage2DCHROMIUM) /* 453 */ \
- OP(DiscardFramebufferEXTImmediate) /* 454 */ \
- OP(LoseContextCHROMIUM) /* 455 */ \
- OP(InsertSyncPointCHROMIUM) /* 456 */ \
- OP(WaitSyncPointCHROMIUM) /* 457 */ \
- OP(DrawBuffersEXTImmediate) /* 458 */ \
- OP(DiscardBackbufferCHROMIUM) /* 459 */ \
- OP(ScheduleOverlayPlaneCHROMIUM) /* 460 */ \
- OP(MatrixLoadfCHROMIUMImmediate) /* 461 */ \
- OP(MatrixLoadIdentityCHROMIUM) /* 462 */ \
- OP(BlendBarrierKHR) /* 463 */
+ OP(Uniform1ui) /* 376 */ \
+ OP(Uniform1uivImmediate) /* 377 */ \
+ OP(Uniform2f) /* 378 */ \
+ OP(Uniform2fvImmediate) /* 379 */ \
+ OP(Uniform2i) /* 380 */ \
+ OP(Uniform2ivImmediate) /* 381 */ \
+ OP(Uniform2ui) /* 382 */ \
+ OP(Uniform2uivImmediate) /* 383 */ \
+ OP(Uniform3f) /* 384 */ \
+ OP(Uniform3fvImmediate) /* 385 */ \
+ OP(Uniform3i) /* 386 */ \
+ OP(Uniform3ivImmediate) /* 387 */ \
+ OP(Uniform3ui) /* 388 */ \
+ OP(Uniform3uivImmediate) /* 389 */ \
+ OP(Uniform4f) /* 390 */ \
+ OP(Uniform4fvImmediate) /* 391 */ \
+ OP(Uniform4i) /* 392 */ \
+ OP(Uniform4ivImmediate) /* 393 */ \
+ OP(Uniform4ui) /* 394 */ \
+ OP(Uniform4uivImmediate) /* 395 */ \
+ OP(UniformMatrix2fvImmediate) /* 396 */ \
+ OP(UniformMatrix2x3fvImmediate) /* 397 */ \
+ OP(UniformMatrix2x4fvImmediate) /* 398 */ \
+ OP(UniformMatrix3fvImmediate) /* 399 */ \
+ OP(UniformMatrix3x2fvImmediate) /* 400 */ \
+ OP(UniformMatrix3x4fvImmediate) /* 401 */ \
+ OP(UniformMatrix4fvImmediate) /* 402 */ \
+ OP(UniformMatrix4x2fvImmediate) /* 403 */ \
+ OP(UniformMatrix4x3fvImmediate) /* 404 */ \
+ OP(UseProgram) /* 405 */ \
+ OP(ValidateProgram) /* 406 */ \
+ OP(VertexAttrib1f) /* 407 */ \
+ OP(VertexAttrib1fvImmediate) /* 408 */ \
+ OP(VertexAttrib2f) /* 409 */ \
+ OP(VertexAttrib2fvImmediate) /* 410 */ \
+ OP(VertexAttrib3f) /* 411 */ \
+ OP(VertexAttrib3fvImmediate) /* 412 */ \
+ OP(VertexAttrib4f) /* 413 */ \
+ OP(VertexAttrib4fvImmediate) /* 414 */ \
+ OP(VertexAttribI4i) /* 415 */ \
+ OP(VertexAttribI4ivImmediate) /* 416 */ \
+ OP(VertexAttribI4ui) /* 417 */ \
+ OP(VertexAttribI4uivImmediate) /* 418 */ \
+ OP(VertexAttribIPointer) /* 419 */ \
+ OP(VertexAttribPointer) /* 420 */ \
+ OP(Viewport) /* 421 */ \
+ OP(BlitFramebufferCHROMIUM) /* 422 */ \
+ OP(RenderbufferStorageMultisampleCHROMIUM) /* 423 */ \
+ OP(RenderbufferStorageMultisampleEXT) /* 424 */ \
+ OP(FramebufferTexture2DMultisampleEXT) /* 425 */ \
+ OP(TexStorage2DEXT) /* 426 */ \
+ OP(GenQueriesEXTImmediate) /* 427 */ \
+ OP(DeleteQueriesEXTImmediate) /* 428 */ \
+ OP(BeginQueryEXT) /* 429 */ \
+ OP(EndQueryEXT) /* 430 */ \
+ OP(InsertEventMarkerEXT) /* 431 */ \
+ OP(PushGroupMarkerEXT) /* 432 */ \
+ OP(PopGroupMarkerEXT) /* 433 */ \
+ OP(GenVertexArraysOESImmediate) /* 434 */ \
+ OP(DeleteVertexArraysOESImmediate) /* 435 */ \
+ OP(IsVertexArrayOES) /* 436 */ \
+ OP(BindVertexArrayOES) /* 437 */ \
+ OP(SwapBuffers) /* 438 */ \
+ OP(GetMaxValueInBufferCHROMIUM) /* 439 */ \
+ OP(EnableFeatureCHROMIUM) /* 440 */ \
+ OP(ResizeCHROMIUM) /* 441 */ \
+ OP(GetRequestableExtensionsCHROMIUM) /* 442 */ \
+ OP(RequestExtensionCHROMIUM) /* 443 */ \
+ OP(GetProgramInfoCHROMIUM) /* 444 */ \
+ OP(GetTranslatedShaderSourceANGLE) /* 445 */ \
+ OP(PostSubBufferCHROMIUM) /* 446 */ \
+ OP(TexImageIOSurface2DCHROMIUM) /* 447 */ \
+ OP(CopyTextureCHROMIUM) /* 448 */ \
+ OP(DrawArraysInstancedANGLE) /* 449 */ \
+ OP(DrawElementsInstancedANGLE) /* 450 */ \
+ OP(VertexAttribDivisorANGLE) /* 451 */ \
+ OP(GenMailboxCHROMIUM) /* 452 */ \
+ OP(ProduceTextureCHROMIUMImmediate) /* 453 */ \
+ OP(ProduceTextureDirectCHROMIUMImmediate) /* 454 */ \
+ OP(ConsumeTextureCHROMIUMImmediate) /* 455 */ \
+ OP(CreateAndConsumeTextureCHROMIUMImmediate) /* 456 */ \
+ OP(BindUniformLocationCHROMIUMBucket) /* 457 */ \
+ OP(GenValuebuffersCHROMIUMImmediate) /* 458 */ \
+ OP(DeleteValuebuffersCHROMIUMImmediate) /* 459 */ \
+ OP(IsValuebufferCHROMIUM) /* 460 */ \
+ OP(BindValuebufferCHROMIUM) /* 461 */ \
+ OP(SubscribeValueCHROMIUM) /* 462 */ \
+ OP(PopulateSubscribedValuesCHROMIUM) /* 463 */ \
+ OP(UniformValuebufferCHROMIUM) /* 464 */ \
+ OP(BindTexImage2DCHROMIUM) /* 465 */ \
+ OP(ReleaseTexImage2DCHROMIUM) /* 466 */ \
+ OP(TraceBeginCHROMIUM) /* 467 */ \
+ OP(TraceEndCHROMIUM) /* 468 */ \
+ OP(AsyncTexSubImage2DCHROMIUM) /* 469 */ \
+ OP(AsyncTexImage2DCHROMIUM) /* 470 */ \
+ OP(WaitAsyncTexImage2DCHROMIUM) /* 471 */ \
+ OP(WaitAllAsyncTexImage2DCHROMIUM) /* 472 */ \
+ OP(DiscardFramebufferEXTImmediate) /* 473 */ \
+ OP(LoseContextCHROMIUM) /* 474 */ \
+ OP(InsertSyncPointCHROMIUM) /* 475 */ \
+ OP(WaitSyncPointCHROMIUM) /* 476 */ \
+ OP(DrawBuffersEXTImmediate) /* 477 */ \
+ OP(DiscardBackbufferCHROMIUM) /* 478 */ \
+ OP(ScheduleOverlayPlaneCHROMIUM) /* 479 */ \
+ OP(MatrixLoadfCHROMIUMImmediate) /* 480 */ \
+ OP(MatrixLoadIdentityCHROMIUM) /* 481 */ \
+ OP(BlendBarrierKHR) /* 482 */
enum CommandId {
kStartPoint = cmd::kLastCommonId, // All GLES2 commands start after this.
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index b26b252..363ecf8 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -7444,6 +7444,24 @@
}
}
+error::Error GLES2DecoderImpl::HandleVertexAttribIPointer(
+ uint32 immediate_data_size,
+ const void* cmd_data) {
+ // TODO(zmo): Unsafe ES3 API, missing states update.
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::VertexAttribIPointer& c =
+ *static_cast<const gles2::cmds::VertexAttribIPointer*>(cmd_data);
+ GLuint indx = c.indx;
+ GLint size = c.size;
+ GLenum type = c.type;
+ GLsizei stride = c.stride;
+ GLsizei offset = c.offset;
+ const void* ptr = reinterpret_cast<const void*>(offset);
+ glVertexAttribIPointer(indx, size, type, stride, ptr);
+ return error::kNoError;
+}
+
error::Error GLES2DecoderImpl::HandleVertexAttribPointer(
uint32 immediate_data_size,
const void* cmd_data) {
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
index 6edd5dd9..bf6cb01 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
@@ -2118,6 +2118,48 @@
return error::kNoError;
}
+error::Error GLES2DecoderImpl::HandleUniform1ui(uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::Uniform1ui& c =
+ *static_cast<const gles2::cmds::Uniform1ui*>(cmd_data);
+ (void)c;
+ GLint location = static_cast<GLint>(c.location);
+ GLuint x = static_cast<GLuint>(c.x);
+ GLuint temp[1] = {
+ x,
+ };
+ glUniform1uiv(location, 1, &temp[0]);
+ return error::kNoError;
+}
+
+error::Error GLES2DecoderImpl::HandleUniform1uivImmediate(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::Uniform1uivImmediate& c =
+ *static_cast<const gles2::cmds::Uniform1uivImmediate*>(cmd_data);
+ (void)c;
+ GLint location = static_cast<GLint>(c.location);
+ GLsizei count = static_cast<GLsizei>(c.count);
+ uint32_t data_size;
+ if (!ComputeDataSize(count, sizeof(GLuint), 1, &data_size)) {
+ return error::kOutOfBounds;
+ }
+ if (data_size > immediate_data_size) {
+ return error::kOutOfBounds;
+ }
+ const GLuint* v =
+ GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size);
+ if (v == NULL) {
+ return error::kOutOfBounds;
+ }
+ glUniform1uiv(location, count, v);
+ return error::kNoError;
+}
+
error::Error GLES2DecoderImpl::HandleUniform2f(uint32_t immediate_data_size,
const void* cmd_data) {
const gles2::cmds::Uniform2f& c =
@@ -2196,6 +2238,49 @@
return error::kNoError;
}
+error::Error GLES2DecoderImpl::HandleUniform2ui(uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::Uniform2ui& c =
+ *static_cast<const gles2::cmds::Uniform2ui*>(cmd_data);
+ (void)c;
+ GLint location = static_cast<GLint>(c.location);
+ GLuint x = static_cast<GLuint>(c.x);
+ GLuint y = static_cast<GLuint>(c.y);
+ GLuint temp[2] = {
+ x, y,
+ };
+ glUniform2uiv(location, 1, &temp[0]);
+ return error::kNoError;
+}
+
+error::Error GLES2DecoderImpl::HandleUniform2uivImmediate(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::Uniform2uivImmediate& c =
+ *static_cast<const gles2::cmds::Uniform2uivImmediate*>(cmd_data);
+ (void)c;
+ GLint location = static_cast<GLint>(c.location);
+ GLsizei count = static_cast<GLsizei>(c.count);
+ uint32_t data_size;
+ if (!ComputeDataSize(count, sizeof(GLuint), 2, &data_size)) {
+ return error::kOutOfBounds;
+ }
+ if (data_size > immediate_data_size) {
+ return error::kOutOfBounds;
+ }
+ const GLuint* v =
+ GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size);
+ if (v == NULL) {
+ return error::kOutOfBounds;
+ }
+ glUniform2uiv(location, count, v);
+ return error::kNoError;
+}
+
error::Error GLES2DecoderImpl::HandleUniform3f(uint32_t immediate_data_size,
const void* cmd_data) {
const gles2::cmds::Uniform3f& c =
@@ -2276,6 +2361,50 @@
return error::kNoError;
}
+error::Error GLES2DecoderImpl::HandleUniform3ui(uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::Uniform3ui& c =
+ *static_cast<const gles2::cmds::Uniform3ui*>(cmd_data);
+ (void)c;
+ GLint location = static_cast<GLint>(c.location);
+ GLuint x = static_cast<GLuint>(c.x);
+ GLuint y = static_cast<GLuint>(c.y);
+ GLuint z = static_cast<GLuint>(c.z);
+ GLuint temp[3] = {
+ x, y, z,
+ };
+ glUniform3uiv(location, 1, &temp[0]);
+ return error::kNoError;
+}
+
+error::Error GLES2DecoderImpl::HandleUniform3uivImmediate(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::Uniform3uivImmediate& c =
+ *static_cast<const gles2::cmds::Uniform3uivImmediate*>(cmd_data);
+ (void)c;
+ GLint location = static_cast<GLint>(c.location);
+ GLsizei count = static_cast<GLsizei>(c.count);
+ uint32_t data_size;
+ if (!ComputeDataSize(count, sizeof(GLuint), 3, &data_size)) {
+ return error::kOutOfBounds;
+ }
+ if (data_size > immediate_data_size) {
+ return error::kOutOfBounds;
+ }
+ const GLuint* v =
+ GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size);
+ if (v == NULL) {
+ return error::kOutOfBounds;
+ }
+ glUniform3uiv(location, count, v);
+ return error::kNoError;
+}
+
error::Error GLES2DecoderImpl::HandleUniform4f(uint32_t immediate_data_size,
const void* cmd_data) {
const gles2::cmds::Uniform4f& c =
@@ -2358,6 +2487,51 @@
return error::kNoError;
}
+error::Error GLES2DecoderImpl::HandleUniform4ui(uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::Uniform4ui& c =
+ *static_cast<const gles2::cmds::Uniform4ui*>(cmd_data);
+ (void)c;
+ GLint location = static_cast<GLint>(c.location);
+ GLuint x = static_cast<GLuint>(c.x);
+ GLuint y = static_cast<GLuint>(c.y);
+ GLuint z = static_cast<GLuint>(c.z);
+ GLuint w = static_cast<GLuint>(c.w);
+ GLuint temp[4] = {
+ x, y, z, w,
+ };
+ glUniform4uiv(location, 1, &temp[0]);
+ return error::kNoError;
+}
+
+error::Error GLES2DecoderImpl::HandleUniform4uivImmediate(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::Uniform4uivImmediate& c =
+ *static_cast<const gles2::cmds::Uniform4uivImmediate*>(cmd_data);
+ (void)c;
+ GLint location = static_cast<GLint>(c.location);
+ GLsizei count = static_cast<GLsizei>(c.count);
+ uint32_t data_size;
+ if (!ComputeDataSize(count, sizeof(GLuint), 4, &data_size)) {
+ return error::kOutOfBounds;
+ }
+ if (data_size > immediate_data_size) {
+ return error::kOutOfBounds;
+ }
+ const GLuint* v =
+ GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size);
+ if (v == NULL) {
+ return error::kOutOfBounds;
+ }
+ glUniform4uiv(location, count, v);
+ return error::kNoError;
+}
+
error::Error GLES2DecoderImpl::HandleUniformMatrix2fvImmediate(
uint32_t immediate_data_size,
const void* cmd_data) {
@@ -2383,6 +2557,60 @@
return error::kNoError;
}
+error::Error GLES2DecoderImpl::HandleUniformMatrix2x3fvImmediate(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::UniformMatrix2x3fvImmediate& c =
+ *static_cast<const gles2::cmds::UniformMatrix2x3fvImmediate*>(cmd_data);
+ (void)c;
+ GLint location = static_cast<GLint>(c.location);
+ GLsizei count = static_cast<GLsizei>(c.count);
+ GLboolean transpose = static_cast<GLboolean>(c.transpose);
+ uint32_t data_size;
+ if (!ComputeDataSize(count, sizeof(GLfloat), 6, &data_size)) {
+ return error::kOutOfBounds;
+ }
+ if (data_size > immediate_data_size) {
+ return error::kOutOfBounds;
+ }
+ const GLfloat* value =
+ GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size);
+ if (value == NULL) {
+ return error::kOutOfBounds;
+ }
+ glUniformMatrix2x3fv(location, count, transpose, value);
+ return error::kNoError;
+}
+
+error::Error GLES2DecoderImpl::HandleUniformMatrix2x4fvImmediate(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::UniformMatrix2x4fvImmediate& c =
+ *static_cast<const gles2::cmds::UniformMatrix2x4fvImmediate*>(cmd_data);
+ (void)c;
+ GLint location = static_cast<GLint>(c.location);
+ GLsizei count = static_cast<GLsizei>(c.count);
+ GLboolean transpose = static_cast<GLboolean>(c.transpose);
+ uint32_t data_size;
+ if (!ComputeDataSize(count, sizeof(GLfloat), 8, &data_size)) {
+ return error::kOutOfBounds;
+ }
+ if (data_size > immediate_data_size) {
+ return error::kOutOfBounds;
+ }
+ const GLfloat* value =
+ GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size);
+ if (value == NULL) {
+ return error::kOutOfBounds;
+ }
+ glUniformMatrix2x4fv(location, count, transpose, value);
+ return error::kNoError;
+}
+
error::Error GLES2DecoderImpl::HandleUniformMatrix3fvImmediate(
uint32_t immediate_data_size,
const void* cmd_data) {
@@ -2408,6 +2636,60 @@
return error::kNoError;
}
+error::Error GLES2DecoderImpl::HandleUniformMatrix3x2fvImmediate(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::UniformMatrix3x2fvImmediate& c =
+ *static_cast<const gles2::cmds::UniformMatrix3x2fvImmediate*>(cmd_data);
+ (void)c;
+ GLint location = static_cast<GLint>(c.location);
+ GLsizei count = static_cast<GLsizei>(c.count);
+ GLboolean transpose = static_cast<GLboolean>(c.transpose);
+ uint32_t data_size;
+ if (!ComputeDataSize(count, sizeof(GLfloat), 6, &data_size)) {
+ return error::kOutOfBounds;
+ }
+ if (data_size > immediate_data_size) {
+ return error::kOutOfBounds;
+ }
+ const GLfloat* value =
+ GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size);
+ if (value == NULL) {
+ return error::kOutOfBounds;
+ }
+ glUniformMatrix3x2fv(location, count, transpose, value);
+ return error::kNoError;
+}
+
+error::Error GLES2DecoderImpl::HandleUniformMatrix3x4fvImmediate(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::UniformMatrix3x4fvImmediate& c =
+ *static_cast<const gles2::cmds::UniformMatrix3x4fvImmediate*>(cmd_data);
+ (void)c;
+ GLint location = static_cast<GLint>(c.location);
+ GLsizei count = static_cast<GLsizei>(c.count);
+ GLboolean transpose = static_cast<GLboolean>(c.transpose);
+ uint32_t data_size;
+ if (!ComputeDataSize(count, sizeof(GLfloat), 12, &data_size)) {
+ return error::kOutOfBounds;
+ }
+ if (data_size > immediate_data_size) {
+ return error::kOutOfBounds;
+ }
+ const GLfloat* value =
+ GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size);
+ if (value == NULL) {
+ return error::kOutOfBounds;
+ }
+ glUniformMatrix3x4fv(location, count, transpose, value);
+ return error::kNoError;
+}
+
error::Error GLES2DecoderImpl::HandleUniformMatrix4fvImmediate(
uint32_t immediate_data_size,
const void* cmd_data) {
@@ -2433,6 +2715,60 @@
return error::kNoError;
}
+error::Error GLES2DecoderImpl::HandleUniformMatrix4x2fvImmediate(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::UniformMatrix4x2fvImmediate& c =
+ *static_cast<const gles2::cmds::UniformMatrix4x2fvImmediate*>(cmd_data);
+ (void)c;
+ GLint location = static_cast<GLint>(c.location);
+ GLsizei count = static_cast<GLsizei>(c.count);
+ GLboolean transpose = static_cast<GLboolean>(c.transpose);
+ uint32_t data_size;
+ if (!ComputeDataSize(count, sizeof(GLfloat), 8, &data_size)) {
+ return error::kOutOfBounds;
+ }
+ if (data_size > immediate_data_size) {
+ return error::kOutOfBounds;
+ }
+ const GLfloat* value =
+ GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size);
+ if (value == NULL) {
+ return error::kOutOfBounds;
+ }
+ glUniformMatrix4x2fv(location, count, transpose, value);
+ return error::kNoError;
+}
+
+error::Error GLES2DecoderImpl::HandleUniformMatrix4x3fvImmediate(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::UniformMatrix4x3fvImmediate& c =
+ *static_cast<const gles2::cmds::UniformMatrix4x3fvImmediate*>(cmd_data);
+ (void)c;
+ GLint location = static_cast<GLint>(c.location);
+ GLsizei count = static_cast<GLsizei>(c.count);
+ GLboolean transpose = static_cast<GLboolean>(c.transpose);
+ uint32_t data_size;
+ if (!ComputeDataSize(count, sizeof(GLfloat), 12, &data_size)) {
+ return error::kOutOfBounds;
+ }
+ if (data_size > immediate_data_size) {
+ return error::kOutOfBounds;
+ }
+ const GLfloat* value =
+ GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size);
+ if (value == NULL) {
+ return error::kOutOfBounds;
+ }
+ glUniformMatrix4x3fv(location, count, transpose, value);
+ return error::kNoError;
+}
+
error::Error GLES2DecoderImpl::HandleUseProgram(uint32_t immediate_data_size,
const void* cmd_data) {
const gles2::cmds::UseProgram& c =
@@ -2600,6 +2936,90 @@
return error::kNoError;
}
+error::Error GLES2DecoderImpl::HandleVertexAttribI4i(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::VertexAttribI4i& c =
+ *static_cast<const gles2::cmds::VertexAttribI4i*>(cmd_data);
+ (void)c;
+ GLuint indx = static_cast<GLuint>(c.indx);
+ GLint x = static_cast<GLint>(c.x);
+ GLint y = static_cast<GLint>(c.y);
+ GLint z = static_cast<GLint>(c.z);
+ GLint w = static_cast<GLint>(c.w);
+ glVertexAttribI4i(indx, x, y, z, w);
+ return error::kNoError;
+}
+
+error::Error GLES2DecoderImpl::HandleVertexAttribI4ivImmediate(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::VertexAttribI4ivImmediate& c =
+ *static_cast<const gles2::cmds::VertexAttribI4ivImmediate*>(cmd_data);
+ (void)c;
+ GLuint indx = static_cast<GLuint>(c.indx);
+ uint32_t data_size;
+ if (!ComputeDataSize(1, sizeof(GLint), 4, &data_size)) {
+ return error::kOutOfBounds;
+ }
+ if (data_size > immediate_data_size) {
+ return error::kOutOfBounds;
+ }
+ const GLint* values =
+ GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size);
+ if (values == NULL) {
+ return error::kOutOfBounds;
+ }
+ glVertexAttribI4iv(indx, values);
+ return error::kNoError;
+}
+
+error::Error GLES2DecoderImpl::HandleVertexAttribI4ui(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::VertexAttribI4ui& c =
+ *static_cast<const gles2::cmds::VertexAttribI4ui*>(cmd_data);
+ (void)c;
+ GLuint indx = static_cast<GLuint>(c.indx);
+ GLuint x = static_cast<GLuint>(c.x);
+ GLuint y = static_cast<GLuint>(c.y);
+ GLuint z = static_cast<GLuint>(c.z);
+ GLuint w = static_cast<GLuint>(c.w);
+ glVertexAttribI4ui(indx, x, y, z, w);
+ return error::kNoError;
+}
+
+error::Error GLES2DecoderImpl::HandleVertexAttribI4uivImmediate(
+ uint32_t immediate_data_size,
+ const void* cmd_data) {
+ if (!unsafe_es3_apis_enabled())
+ return error::kUnknownCommand;
+ const gles2::cmds::VertexAttribI4uivImmediate& c =
+ *static_cast<const gles2::cmds::VertexAttribI4uivImmediate*>(cmd_data);
+ (void)c;
+ GLuint indx = static_cast<GLuint>(c.indx);
+ uint32_t data_size;
+ if (!ComputeDataSize(1, sizeof(GLuint), 4, &data_size)) {
+ return error::kOutOfBounds;
+ }
+ if (data_size > immediate_data_size) {
+ return error::kOutOfBounds;
+ }
+ const GLuint* values =
+ GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size);
+ if (values == NULL) {
+ return error::kOutOfBounds;
+ }
+ glVertexAttribI4uiv(indx, values);
+ return error::kNoError;
+}
+
error::Error GLES2DecoderImpl::HandleViewport(uint32_t immediate_data_size,
const void* cmd_data) {
const gles2::cmds::Viewport& c =
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 8745a5f..735f0b0 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
@@ -350,6 +350,36 @@
// TODO(gman): Uniform1i
// TODO(gman): Uniform1ivImmediate
+TEST_P(GLES2DecoderTest2, Uniform1uiValidArgs) {
+ EXPECT_CALL(*gl_, Uniform1uiv(1, 1, _));
+ SpecializedSetup<cmds::Uniform1ui, 0>(true);
+ cmds::Uniform1ui cmd;
+ cmd.Init(1, 2);
+ 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(GLES2DecoderTest2, Uniform1uivImmediateValidArgs) {
+ cmds::Uniform1uivImmediate& cmd =
+ *GetImmediateAs<cmds::Uniform1uivImmediate>();
+ EXPECT_CALL(
+ *gl_,
+ Uniform1uiv(1, 2, reinterpret_cast<GLuint*>(ImmediateDataAddress(&cmd))));
+ SpecializedSetup<cmds::Uniform1uivImmediate, 0>(true);
+ GLuint temp[1 * 2] = {
+ 0,
+ };
+ cmd.Init(1, 2, &temp[0]);
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
+}
+
TEST_P(GLES2DecoderTest2, Uniform2fValidArgs) {
EXPECT_CALL(*gl_, Uniform2fv(1, 1, _));
SpecializedSetup<cmds::Uniform2f, 0>(true);
@@ -396,6 +426,36 @@
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
+TEST_P(GLES2DecoderTest2, Uniform2uiValidArgs) {
+ EXPECT_CALL(*gl_, Uniform2uiv(1, 1, _));
+ SpecializedSetup<cmds::Uniform2ui, 0>(true);
+ cmds::Uniform2ui cmd;
+ cmd.Init(1, 2, 3);
+ 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(GLES2DecoderTest2, Uniform2uivImmediateValidArgs) {
+ cmds::Uniform2uivImmediate& cmd =
+ *GetImmediateAs<cmds::Uniform2uivImmediate>();
+ EXPECT_CALL(
+ *gl_,
+ Uniform2uiv(1, 2, reinterpret_cast<GLuint*>(ImmediateDataAddress(&cmd))));
+ SpecializedSetup<cmds::Uniform2uivImmediate, 0>(true);
+ GLuint temp[2 * 2] = {
+ 0,
+ };
+ cmd.Init(1, 2, &temp[0]);
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
+}
+
TEST_P(GLES2DecoderTest2, Uniform3fValidArgs) {
EXPECT_CALL(*gl_, Uniform3fv(1, 1, _));
SpecializedSetup<cmds::Uniform3f, 0>(true);
@@ -442,6 +502,36 @@
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
+TEST_P(GLES2DecoderTest2, Uniform3uiValidArgs) {
+ EXPECT_CALL(*gl_, Uniform3uiv(1, 1, _));
+ SpecializedSetup<cmds::Uniform3ui, 0>(true);
+ cmds::Uniform3ui cmd;
+ cmd.Init(1, 2, 3, 4);
+ 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(GLES2DecoderTest2, Uniform3uivImmediateValidArgs) {
+ cmds::Uniform3uivImmediate& cmd =
+ *GetImmediateAs<cmds::Uniform3uivImmediate>();
+ EXPECT_CALL(
+ *gl_,
+ Uniform3uiv(1, 2, reinterpret_cast<GLuint*>(ImmediateDataAddress(&cmd))));
+ SpecializedSetup<cmds::Uniform3uivImmediate, 0>(true);
+ GLuint temp[3 * 2] = {
+ 0,
+ };
+ cmd.Init(1, 2, &temp[0]);
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
+}
+
TEST_P(GLES2DecoderTest2, Uniform4fValidArgs) {
EXPECT_CALL(*gl_, Uniform4fv(1, 1, _));
SpecializedSetup<cmds::Uniform4f, 0>(true);
@@ -488,6 +578,36 @@
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
+TEST_P(GLES2DecoderTest2, Uniform4uiValidArgs) {
+ EXPECT_CALL(*gl_, Uniform4uiv(1, 1, _));
+ SpecializedSetup<cmds::Uniform4ui, 0>(true);
+ cmds::Uniform4ui cmd;
+ cmd.Init(1, 2, 3, 4, 5);
+ 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(GLES2DecoderTest2, Uniform4uivImmediateValidArgs) {
+ cmds::Uniform4uivImmediate& cmd =
+ *GetImmediateAs<cmds::Uniform4uivImmediate>();
+ EXPECT_CALL(
+ *gl_,
+ Uniform4uiv(1, 2, reinterpret_cast<GLuint*>(ImmediateDataAddress(&cmd))));
+ SpecializedSetup<cmds::Uniform4uivImmediate, 0>(true);
+ GLuint temp[4 * 2] = {
+ 0,
+ };
+ cmd.Init(1, 2, &temp[0]);
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
+}
+
TEST_P(GLES2DecoderTest2, UniformMatrix2fvImmediateValidArgs) {
cmds::UniformMatrix2fvImmediate& cmd =
*GetImmediateAs<cmds::UniformMatrix2fvImmediate>();
@@ -503,6 +623,42 @@
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
+TEST_P(GLES2DecoderTest2, UniformMatrix2x3fvImmediateValidArgs) {
+ cmds::UniformMatrix2x3fvImmediate& cmd =
+ *GetImmediateAs<cmds::UniformMatrix2x3fvImmediate>();
+ EXPECT_CALL(*gl_,
+ UniformMatrix2x3fv(1, 2, false, reinterpret_cast<GLfloat*>(
+ ImmediateDataAddress(&cmd))));
+ SpecializedSetup<cmds::UniformMatrix2x3fvImmediate, 0>(true);
+ GLfloat temp[6 * 2] = {
+ 0,
+ };
+ cmd.Init(1, 2, &temp[0]);
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
+}
+
+TEST_P(GLES2DecoderTest2, UniformMatrix2x4fvImmediateValidArgs) {
+ cmds::UniformMatrix2x4fvImmediate& cmd =
+ *GetImmediateAs<cmds::UniformMatrix2x4fvImmediate>();
+ EXPECT_CALL(*gl_,
+ UniformMatrix2x4fv(1, 2, false, reinterpret_cast<GLfloat*>(
+ ImmediateDataAddress(&cmd))));
+ SpecializedSetup<cmds::UniformMatrix2x4fvImmediate, 0>(true);
+ GLfloat temp[8 * 2] = {
+ 0,
+ };
+ cmd.Init(1, 2, &temp[0]);
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
+}
+
TEST_P(GLES2DecoderTest2, UniformMatrix3fvImmediateValidArgs) {
cmds::UniformMatrix3fvImmediate& cmd =
*GetImmediateAs<cmds::UniformMatrix3fvImmediate>();
@@ -518,6 +674,42 @@
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
+TEST_P(GLES2DecoderTest2, UniformMatrix3x2fvImmediateValidArgs) {
+ cmds::UniformMatrix3x2fvImmediate& cmd =
+ *GetImmediateAs<cmds::UniformMatrix3x2fvImmediate>();
+ EXPECT_CALL(*gl_,
+ UniformMatrix3x2fv(1, 2, false, reinterpret_cast<GLfloat*>(
+ ImmediateDataAddress(&cmd))));
+ SpecializedSetup<cmds::UniformMatrix3x2fvImmediate, 0>(true);
+ GLfloat temp[6 * 2] = {
+ 0,
+ };
+ cmd.Init(1, 2, &temp[0]);
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
+}
+
+TEST_P(GLES2DecoderTest2, UniformMatrix3x4fvImmediateValidArgs) {
+ cmds::UniformMatrix3x4fvImmediate& cmd =
+ *GetImmediateAs<cmds::UniformMatrix3x4fvImmediate>();
+ EXPECT_CALL(*gl_,
+ UniformMatrix3x4fv(1, 2, false, reinterpret_cast<GLfloat*>(
+ ImmediateDataAddress(&cmd))));
+ SpecializedSetup<cmds::UniformMatrix3x4fvImmediate, 0>(true);
+ GLfloat temp[12 * 2] = {
+ 0,
+ };
+ cmd.Init(1, 2, &temp[0]);
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
+}
+
TEST_P(GLES2DecoderTest2, UniformMatrix4fvImmediateValidArgs) {
cmds::UniformMatrix4fvImmediate& cmd =
*GetImmediateAs<cmds::UniformMatrix4fvImmediate>();
@@ -533,6 +725,42 @@
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
+TEST_P(GLES2DecoderTest2, UniformMatrix4x2fvImmediateValidArgs) {
+ cmds::UniformMatrix4x2fvImmediate& cmd =
+ *GetImmediateAs<cmds::UniformMatrix4x2fvImmediate>();
+ EXPECT_CALL(*gl_,
+ UniformMatrix4x2fv(1, 2, false, reinterpret_cast<GLfloat*>(
+ ImmediateDataAddress(&cmd))));
+ SpecializedSetup<cmds::UniformMatrix4x2fvImmediate, 0>(true);
+ GLfloat temp[8 * 2] = {
+ 0,
+ };
+ cmd.Init(1, 2, &temp[0]);
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
+}
+
+TEST_P(GLES2DecoderTest2, UniformMatrix4x3fvImmediateValidArgs) {
+ cmds::UniformMatrix4x3fvImmediate& cmd =
+ *GetImmediateAs<cmds::UniformMatrix4x3fvImmediate>();
+ EXPECT_CALL(*gl_,
+ UniformMatrix4x3fv(1, 2, false, reinterpret_cast<GLfloat*>(
+ ImmediateDataAddress(&cmd))));
+ SpecializedSetup<cmds::UniformMatrix4x3fvImmediate, 0>(true);
+ GLfloat temp[12 * 2] = {
+ 0,
+ };
+ cmd.Init(1, 2, &temp[0]);
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
+}
+
TEST_P(GLES2DecoderTest2, UseProgramValidArgs) {
EXPECT_CALL(*gl_, UseProgram(kServiceProgramId));
SpecializedSetup<cmds::UseProgram, 0>(true);
@@ -651,6 +879,66 @@
EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
+
+TEST_P(GLES2DecoderTest2, VertexAttribI4iValidArgs) {
+ EXPECT_CALL(*gl_, VertexAttribI4i(1, 2, 3, 4, 5));
+ SpecializedSetup<cmds::VertexAttribI4i, 0>(true);
+ cmds::VertexAttribI4i cmd;
+ cmd.Init(1, 2, 3, 4, 5);
+ 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(GLES2DecoderTest2, VertexAttribI4ivImmediateValidArgs) {
+ cmds::VertexAttribI4ivImmediate& cmd =
+ *GetImmediateAs<cmds::VertexAttribI4ivImmediate>();
+ SpecializedSetup<cmds::VertexAttribI4ivImmediate, 0>(true);
+ GLint temp[4] = {
+ 0,
+ };
+ cmd.Init(1, &temp[0]);
+ EXPECT_CALL(*gl_, VertexAttribI4iv(1, reinterpret_cast<GLint*>(
+ ImmediateDataAddress(&cmd))));
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
+}
+
+TEST_P(GLES2DecoderTest2, VertexAttribI4uiValidArgs) {
+ EXPECT_CALL(*gl_, VertexAttribI4ui(1, 2, 3, 4, 5));
+ SpecializedSetup<cmds::VertexAttribI4ui, 0>(true);
+ cmds::VertexAttribI4ui cmd;
+ cmd.Init(1, 2, 3, 4, 5);
+ 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(GLES2DecoderTest2, VertexAttribI4uivImmediateValidArgs) {
+ cmds::VertexAttribI4uivImmediate& cmd =
+ *GetImmediateAs<cmds::VertexAttribI4uivImmediate>();
+ SpecializedSetup<cmds::VertexAttribI4uivImmediate, 0>(true);
+ GLuint temp[4] = {
+ 0,
+ };
+ cmd.Init(1, &temp[0]);
+ EXPECT_CALL(*gl_, VertexAttribI4uiv(1, reinterpret_cast<GLuint*>(
+ ImmediateDataAddress(&cmd))));
+ decoder_->set_unsafe_es3_apis_enabled(true);
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ decoder_->set_unsafe_es3_apis_enabled(false);
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
+}
+// TODO(gman): VertexAttribIPointer
+
// TODO(gman): VertexAttribPointer
TEST_P(GLES2DecoderTest2, ViewportValidArgs) {
@@ -719,45 +1007,4 @@
// TODO(gman): DrawArraysInstancedANGLE
// TODO(gman): DrawElementsInstancedANGLE
// TODO(gman): VertexAttribDivisorANGLE
-// TODO(gman): GenMailboxCHROMIUM
-
-// TODO(gman): ProduceTextureCHROMIUMImmediate
-// TODO(gman): ProduceTextureDirectCHROMIUMImmediate
-// TODO(gman): ConsumeTextureCHROMIUMImmediate
-// TODO(gman): CreateAndConsumeTextureCHROMIUMImmediate
-// TODO(gman): BindUniformLocationCHROMIUMBucket
-// TODO(gman): GenValuebuffersCHROMIUMImmediate
-// TODO(gman): DeleteValuebuffersCHROMIUMImmediate
-
-TEST_P(GLES2DecoderTest2, IsValuebufferCHROMIUMValidArgs) {
- SpecializedSetup<cmds::IsValuebufferCHROMIUM, 0>(true);
- cmds::IsValuebufferCHROMIUM cmd;
- cmd.Init(client_valuebuffer_id_, shared_memory_id_, shared_memory_offset_);
- EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
- EXPECT_EQ(GL_NO_ERROR, GetGLError());
-}
-
-TEST_P(GLES2DecoderTest2, IsValuebufferCHROMIUMInvalidArgsBadSharedMemoryId) {
- SpecializedSetup<cmds::IsValuebufferCHROMIUM, 0>(false);
- cmds::IsValuebufferCHROMIUM cmd;
- cmd.Init(client_valuebuffer_id_, kInvalidSharedMemoryId,
- shared_memory_offset_);
- EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
- cmd.Init(client_valuebuffer_id_, shared_memory_id_,
- kInvalidSharedMemoryOffset);
- EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
-}
-// TODO(gman): BindValuebufferCHROMIUM
-// TODO(gman): SubscribeValueCHROMIUM
-// TODO(gman): PopulateSubscribedValuesCHROMIUM
-// TODO(gman): UniformValuebufferCHROMIUM
-// TODO(gman): BindTexImage2DCHROMIUM
-// TODO(gman): ReleaseTexImage2DCHROMIUM
-// TODO(gman): TraceBeginCHROMIUM
-
-// TODO(gman): TraceEndCHROMIUM
-// TODO(gman): AsyncTexSubImage2DCHROMIUM
-
-// TODO(gman): AsyncTexImage2DCHROMIUM
-
#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 3f8c38d7..c6df8b35 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,47 @@
#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): GenMailboxCHROMIUM
+
+// TODO(gman): ProduceTextureCHROMIUMImmediate
+// TODO(gman): ProduceTextureDirectCHROMIUMImmediate
+// TODO(gman): ConsumeTextureCHROMIUMImmediate
+// TODO(gman): CreateAndConsumeTextureCHROMIUMImmediate
+// TODO(gman): BindUniformLocationCHROMIUMBucket
+// TODO(gman): GenValuebuffersCHROMIUMImmediate
+// TODO(gman): DeleteValuebuffersCHROMIUMImmediate
+
+TEST_P(GLES2DecoderTest3, IsValuebufferCHROMIUMValidArgs) {
+ SpecializedSetup<cmds::IsValuebufferCHROMIUM, 0>(true);
+ cmds::IsValuebufferCHROMIUM cmd;
+ cmd.Init(client_valuebuffer_id_, shared_memory_id_, shared_memory_offset_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+}
+
+TEST_P(GLES2DecoderTest3, IsValuebufferCHROMIUMInvalidArgsBadSharedMemoryId) {
+ SpecializedSetup<cmds::IsValuebufferCHROMIUM, 0>(false);
+ cmds::IsValuebufferCHROMIUM cmd;
+ cmd.Init(client_valuebuffer_id_, kInvalidSharedMemoryId,
+ shared_memory_offset_);
+ EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
+ cmd.Init(client_valuebuffer_id_, shared_memory_id_,
+ kInvalidSharedMemoryOffset);
+ EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
+}
+// TODO(gman): BindValuebufferCHROMIUM
+// TODO(gman): SubscribeValueCHROMIUM
+// TODO(gman): PopulateSubscribedValuesCHROMIUM
+// TODO(gman): UniformValuebufferCHROMIUM
+// TODO(gman): BindTexImage2DCHROMIUM
+// TODO(gman): ReleaseTexImage2DCHROMIUM
+// TODO(gman): TraceBeginCHROMIUM
+
+// TODO(gman): TraceEndCHROMIUM
+// TODO(gman): AsyncTexSubImage2DCHROMIUM
+
+// TODO(gman): AsyncTexImage2DCHROMIUM
+
// TODO(gman): WaitAsyncTexImage2DCHROMIUM
// TODO(gman): WaitAllAsyncTexImage2DCHROMIUM