| Index: gpu/command_buffer/client/gles2_implementation_impl_autogen.h
|
| diff --git a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
|
| index 8541e777423328292af595862b808c9e04b9562d..d67e7edf0059f85c44d8fea7d026fe6585ae0cca 100644
|
| --- a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
|
| +++ b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
|
| @@ -209,6 +209,34 @@ void GLES2Implementation::CompileShader(GLuint shader) {
|
| CheckGLError();
|
| }
|
|
|
| +void GLES2Implementation::CopyBufferSubData(GLenum readtarget,
|
| + GLenum writetarget,
|
| + GLintptr readoffset,
|
| + GLintptr writeoffset,
|
| + GLsizeiptr size) {
|
| + GPU_CLIENT_SINGLE_THREAD_CHECK();
|
| + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCopyBufferSubData("
|
| + << GLES2Util::GetStringBufferTarget(readtarget) << ", "
|
| + << GLES2Util::GetStringBufferTarget(writetarget) << ", "
|
| + << readoffset << ", " << writeoffset << ", " << size
|
| + << ")");
|
| + if (readoffset < 0) {
|
| + SetGLError(GL_INVALID_VALUE, "glCopyBufferSubData", "readoffset < 0");
|
| + return;
|
| + }
|
| + if (writeoffset < 0) {
|
| + SetGLError(GL_INVALID_VALUE, "glCopyBufferSubData", "writeoffset < 0");
|
| + return;
|
| + }
|
| + if (size < 0) {
|
| + SetGLError(GL_INVALID_VALUE, "glCopyBufferSubData", "size < 0");
|
| + return;
|
| + }
|
| + helper_->CopyBufferSubData(readtarget, writetarget, readoffset, writeoffset,
|
| + size);
|
| + CheckGLError();
|
| +}
|
| +
|
| void GLES2Implementation::CopyTexImage2D(GLenum target,
|
| GLint level,
|
| GLenum internalformat,
|
| @@ -474,6 +502,20 @@ void GLES2Implementation::FramebufferTexture2D(GLenum target,
|
| CheckGLError();
|
| }
|
|
|
| +void GLES2Implementation::FramebufferTextureLayer(GLenum target,
|
| + GLenum attachment,
|
| + GLuint texture,
|
| + GLint level,
|
| + GLint layer) {
|
| + GPU_CLIENT_SINGLE_THREAD_CHECK();
|
| + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glFramebufferTextureLayer("
|
| + << GLES2Util::GetStringFrameBufferTarget(target) << ", "
|
| + << GLES2Util::GetStringAttachment(attachment) << ", "
|
| + << texture << ", " << level << ", " << layer << ")");
|
| + helper_->FramebufferTextureLayer(target, attachment, texture, level, layer);
|
| + CheckGLError();
|
| +}
|
| +
|
| void GLES2Implementation::FrontFace(GLenum mode) {
|
| GPU_CLIENT_SINGLE_THREAD_CHECK();
|
| GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glFrontFace("
|
| @@ -717,6 +759,44 @@ void GLES2Implementation::GetIntegerv(GLenum pname, GLint* params) {
|
| });
|
| CheckGLError();
|
| }
|
| +void GLES2Implementation::GetInternalformativ(GLenum target,
|
| + GLenum format,
|
| + GLenum pname,
|
| + GLsizei bufSize,
|
| + GLint* params) {
|
| + GPU_CLIENT_SINGLE_THREAD_CHECK();
|
| + GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
|
| + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetInternalformativ("
|
| + << GLES2Util::GetStringRenderBufferTarget(target) << ", "
|
| + << GLES2Util::GetStringRenderBufferFormat(format) << ", "
|
| + << GLES2Util::GetStringRenderBufferParameter(pname) << ", "
|
| + << bufSize << ", " << static_cast<const void*>(params)
|
| + << ")");
|
| + if (bufSize < 0) {
|
| + SetGLError(GL_INVALID_VALUE, "glGetInternalformativ", "bufSize < 0");
|
| + return;
|
| + }
|
| + TRACE_EVENT0("gpu", "GLES2Implementation::GetInternalformativ");
|
| + if (GetInternalformativHelper(target, format, pname, bufSize, params)) {
|
| + return;
|
| + }
|
| + typedef cmds::GetInternalformativ::Result Result;
|
| + Result* result = GetResultAs<Result*>();
|
| + if (!result) {
|
| + return;
|
| + }
|
| + result->SetNumResults(0);
|
| + helper_->GetInternalformativ(target, format, pname, bufSize, GetResultShmId(),
|
| + GetResultShmOffset());
|
| + WaitForCmd();
|
| + result->CopyResult(params);
|
| + GPU_CLIENT_LOG_CODE_BLOCK({
|
| + for (int32_t i = 0; i < result->GetNumResults(); ++i) {
|
| + GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
|
| + }
|
| + });
|
| + CheckGLError();
|
| +}
|
| void GLES2Implementation::GetProgramiv(GLuint program,
|
| GLenum pname,
|
| GLint* params) {
|
| @@ -1245,6 +1325,39 @@ void GLES2Implementation::TexParameteriv(GLenum target,
|
| CheckGLError();
|
| }
|
|
|
| +void GLES2Implementation::TexStorage3D(GLenum target,
|
| + GLsizei levels,
|
| + GLenum internalFormat,
|
| + GLsizei width,
|
| + GLsizei height,
|
| + GLsizei depth) {
|
| + GPU_CLIENT_SINGLE_THREAD_CHECK();
|
| + GPU_CLIENT_LOG(
|
| + "[" << GetLogPrefix() << "] glTexStorage3D("
|
| + << GLES2Util::GetStringTexture3DTarget(target) << ", " << levels
|
| + << ", "
|
| + << GLES2Util::GetStringTextureInternalFormatStorage(internalFormat)
|
| + << ", " << width << ", " << height << ", " << depth << ")");
|
| + if (levels < 0) {
|
| + SetGLError(GL_INVALID_VALUE, "glTexStorage3D", "levels < 0");
|
| + return;
|
| + }
|
| + if (width < 0) {
|
| + SetGLError(GL_INVALID_VALUE, "glTexStorage3D", "width < 0");
|
| + return;
|
| + }
|
| + if (height < 0) {
|
| + SetGLError(GL_INVALID_VALUE, "glTexStorage3D", "height < 0");
|
| + return;
|
| + }
|
| + if (depth < 0) {
|
| + SetGLError(GL_INVALID_VALUE, "glTexStorage3D", "depth < 0");
|
| + return;
|
| + }
|
| + helper_->TexStorage3D(target, levels, internalFormat, width, height, depth);
|
| + CheckGLError();
|
| +}
|
| +
|
| void GLES2Implementation::Uniform1f(GLint location, GLfloat x) {
|
| GPU_CLIENT_SINGLE_THREAD_CHECK();
|
| GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform1f(" << location << ", "
|
| @@ -1299,6 +1412,33 @@ void GLES2Implementation::Uniform1iv(GLint location,
|
| 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 << ", "
|
| @@ -1353,6 +1493,33 @@ void GLES2Implementation::Uniform2iv(GLint location,
|
| 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,
|
| @@ -1412,6 +1579,37 @@ void GLES2Implementation::Uniform3iv(GLint location,
|
| 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,
|
| @@ -1476,6 +1674,38 @@ void GLES2Implementation::Uniform4iv(GLint location,
|
| 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,
|
| @@ -1505,6 +1735,67 @@ void GLES2Implementation::UniformMatrix2fv(GLint location,
|
| 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,
|
| @@ -1537,6 +1828,69 @@ void GLES2Implementation::UniformMatrix3fv(GLint location,
|
| 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,
|
| @@ -1572,6 +1926,70 @@ void GLES2Implementation::UniformMatrix4fv(GLint location,
|
| 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 << ")");
|
| @@ -1670,6 +2088,51 @@ void GLES2Implementation::VertexAttrib4fv(GLuint indx, const GLfloat* values) {
|
| 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,
|
|
|