Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(358)

Unified Diff: gpu/command_buffer/service/gles2_cmd_decoder_autogen.h

Issue 505016: Implements Validation for all GLenum arguments and ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
===================================================================
--- gpu/command_buffer/service/gles2_cmd_decoder_autogen.h (revision 34647)
+++ gpu/command_buffer/service/gles2_cmd_decoder_autogen.h (working copy)
@@ -5,11 +5,6 @@
parse_error::ParseError GLES2DecoderImpl::HandleActiveTexture(
uint32 immediate_data_size, const gles2::ActiveTexture& c) {
GLenum texture = static_cast<GLenum>(c.texture);
- parse_error::ParseError result =
- ValidateActiveTexture(this, immediate_data_size, texture);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glActiveTexture(texture);
return parse_error::kParseNoError;
}
@@ -26,11 +21,6 @@
SetGLError(GL_INVALID_VALUE);
return parse_error::kParseNoError;
}
- parse_error::ParseError result =
- ValidateAttachShader(this, immediate_data_size, program, shader);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glAttachShader(program, shader);
return parse_error::kParseNoError;
}
@@ -46,11 +36,8 @@
uint32 name_size = c.data_size;
const char* name = GetSharedMemoryAs<const char*>(
c.name_shm_id, c.name_shm_offset, name_size);
- parse_error::ParseError result =
- ValidateBindAttribLocation(
- this, immediate_data_size, program, index, name);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (name == NULL) {
+ return parse_error::kParseOutOfBounds;
}
String name_str(name, name_size);
glBindAttribLocation(program, index, name_str.c_str());
@@ -69,11 +56,8 @@
const char* name = GetImmediateDataAs<const char*>(c);
// TODO(gman): Make sure validate checks
// immediate_data_size covers data_size.
- parse_error::ParseError result =
- ValidateBindAttribLocationImmediate(
- this, immediate_data_size, program, index, name);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (name == NULL) {
+ return parse_error::kParseOutOfBounds;
}
String name_str(name, name_size);
glBindAttribLocation(program, index, name_str.c_str());
@@ -88,10 +72,9 @@
SetGLError(GL_INVALID_VALUE);
return parse_error::kParseNoError;
}
- parse_error::ParseError result =
- ValidateBindBuffer(this, immediate_data_size, target, buffer);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumBufferTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
DoBindBuffer(target, buffer);
return parse_error::kParseNoError;
@@ -105,10 +88,9 @@
SetGLError(GL_INVALID_VALUE);
return parse_error::kParseNoError;
}
- parse_error::ParseError result =
- ValidateBindFramebuffer(this, immediate_data_size, target, framebuffer);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumFrameBufferTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glBindFramebufferEXT(target, framebuffer);
return parse_error::kParseNoError;
@@ -122,11 +104,9 @@
SetGLError(GL_INVALID_VALUE);
return parse_error::kParseNoError;
}
- parse_error::ParseError result =
- ValidateBindRenderbuffer(
- this, immediate_data_size, target, renderbuffer);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumRenderBufferTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glBindRenderbufferEXT(target, renderbuffer);
return parse_error::kParseNoError;
@@ -140,10 +120,9 @@
SetGLError(GL_INVALID_VALUE);
return parse_error::kParseNoError;
}
- parse_error::ParseError result =
- ValidateBindTexture(this, immediate_data_size, target, texture);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureBindTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glBindTexture(target, texture);
return parse_error::kParseNoError;
@@ -155,11 +134,6 @@
GLclampf green = static_cast<GLclampf>(c.green);
GLclampf blue = static_cast<GLclampf>(c.blue);
GLclampf alpha = static_cast<GLclampf>(c.alpha);
- parse_error::ParseError result =
- ValidateBlendColor(this, immediate_data_size, red, green, blue, alpha);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glBlendColor(red, green, blue, alpha);
return parse_error::kParseNoError;
}
@@ -167,10 +141,9 @@
parse_error::ParseError GLES2DecoderImpl::HandleBlendEquation(
uint32 immediate_data_size, const gles2::BlendEquation& c) {
GLenum mode = static_cast<GLenum>(c.mode);
- parse_error::ParseError result =
- ValidateBlendEquation(this, immediate_data_size, mode);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumEquation(mode)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glBlendEquation(mode);
return parse_error::kParseNoError;
@@ -180,12 +153,14 @@
uint32 immediate_data_size, const gles2::BlendEquationSeparate& c) {
GLenum modeRGB = static_cast<GLenum>(c.modeRGB);
GLenum modeAlpha = static_cast<GLenum>(c.modeAlpha);
- parse_error::ParseError result =
- ValidateBlendEquationSeparate(
- this, immediate_data_size, modeRGB, modeAlpha);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumEquation(modeRGB)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumEquation(modeAlpha)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
glBlendEquationSeparate(modeRGB, modeAlpha);
return parse_error::kParseNoError;
}
@@ -194,11 +169,14 @@
uint32 immediate_data_size, const gles2::BlendFunc& c) {
GLenum sfactor = static_cast<GLenum>(c.sfactor);
GLenum dfactor = static_cast<GLenum>(c.dfactor);
- parse_error::ParseError result =
- ValidateBlendFunc(this, immediate_data_size, sfactor, dfactor);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumSrcBlendFactor(sfactor)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumDstBlendFactor(dfactor)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
glBlendFunc(sfactor, dfactor);
return parse_error::kParseNoError;
}
@@ -209,12 +187,22 @@
GLenum dstRGB = static_cast<GLenum>(c.dstRGB);
GLenum srcAlpha = static_cast<GLenum>(c.srcAlpha);
GLenum dstAlpha = static_cast<GLenum>(c.dstAlpha);
- parse_error::ParseError result =
- ValidateBlendFuncSeparate(
- this, immediate_data_size, srcRGB, dstRGB, srcAlpha, dstAlpha);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumSrcBlendFactor(srcRGB)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumDstBlendFactor(dstRGB)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (!ValidateGLenumSrcBlendFactor(srcAlpha)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (!ValidateGLenumDstBlendFactor(dstAlpha)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
return parse_error::kParseNoError;
}
@@ -229,12 +217,13 @@
uint32 data_size = size;
const void* data = GetSharedMemoryAs<const void*>(
data_shm_id, data_shm_offset, data_size);
- parse_error::ParseError result =
- ValidateBufferSubData(
- this, immediate_data_size, target, offset, size, data);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumBufferTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (data == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glBufferSubData(target, offset, size, data);
return parse_error::kParseNoError;
}
@@ -245,13 +234,21 @@
GLintptr offset = static_cast<GLintptr>(c.offset);
GLsizeiptr size = static_cast<GLsizeiptr>(c.size);
const void* data = GetImmediateDataAs<const void*>(c);
+ if (!ValidateGLenumBufferTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (data == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateBufferSubDataImmediate(
- this, immediate_data_size, target, offset, size, data);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumBufferTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (data == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glBufferSubData(target, offset, size, data);
return parse_error::kParseNoError;
}
@@ -259,10 +256,9 @@
parse_error::ParseError GLES2DecoderImpl::HandleCheckFramebufferStatus(
uint32 immediate_data_size, const gles2::CheckFramebufferStatus& c) {
GLenum target = static_cast<GLenum>(c.target);
- parse_error::ParseError result =
- ValidateCheckFramebufferStatus(this, immediate_data_size, target);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumFrameBufferTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glCheckFramebufferStatusEXT(target);
return parse_error::kParseNoError;
@@ -271,11 +267,6 @@
parse_error::ParseError GLES2DecoderImpl::HandleClear(
uint32 immediate_data_size, const gles2::Clear& c) {
GLbitfield mask = static_cast<GLbitfield>(c.mask);
- parse_error::ParseError result =
- ValidateClear(this, immediate_data_size, mask);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glClear(mask);
return parse_error::kParseNoError;
}
@@ -286,11 +277,6 @@
GLclampf green = static_cast<GLclampf>(c.green);
GLclampf blue = static_cast<GLclampf>(c.blue);
GLclampf alpha = static_cast<GLclampf>(c.alpha);
- parse_error::ParseError result =
- ValidateClearColor(this, immediate_data_size, red, green, blue, alpha);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glClearColor(red, green, blue, alpha);
return parse_error::kParseNoError;
}
@@ -298,11 +284,6 @@
parse_error::ParseError GLES2DecoderImpl::HandleClearDepthf(
uint32 immediate_data_size, const gles2::ClearDepthf& c) {
GLclampf depth = static_cast<GLclampf>(c.depth);
- parse_error::ParseError result =
- ValidateClearDepthf(this, immediate_data_size, depth);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glClearDepth(depth);
return parse_error::kParseNoError;
}
@@ -310,11 +291,6 @@
parse_error::ParseError GLES2DecoderImpl::HandleClearStencil(
uint32 immediate_data_size, const gles2::ClearStencil& c) {
GLint s = static_cast<GLint>(c.s);
- parse_error::ParseError result =
- ValidateClearStencil(this, immediate_data_size, s);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glClearStencil(s);
return parse_error::kParseNoError;
}
@@ -325,11 +301,6 @@
GLboolean green = static_cast<GLboolean>(c.green);
GLboolean blue = static_cast<GLboolean>(c.blue);
GLboolean alpha = static_cast<GLboolean>(c.alpha);
- parse_error::ParseError result =
- ValidateColorMask(this, immediate_data_size, red, green, blue, alpha);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glColorMask(red, green, blue, alpha);
return parse_error::kParseNoError;
}
@@ -341,11 +312,6 @@
SetGLError(GL_INVALID_VALUE);
return parse_error::kParseNoError;
}
- parse_error::ParseError result =
- ValidateCompileShader(this, immediate_data_size, shader);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glCompileShader(shader);
return parse_error::kParseNoError;
}
@@ -365,13 +331,13 @@
uint32 data_size = imageSize;
const void* data = GetSharedMemoryAs<const void*>(
data_shm_id, data_shm_offset, data_size);
- parse_error::ParseError result =
- ValidateCompressedTexSubImage2D(
- this, immediate_data_size, target, level, xoffset, yoffset, width,
- height, format, imageSize, data);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (data == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glCompressedTexSubImage2D(
target, level, xoffset, yoffset, width, height, format, imageSize, data);
return parse_error::kParseNoError;
@@ -390,14 +356,21 @@
GLenum format = static_cast<GLenum>(c.format);
GLsizei imageSize = static_cast<GLsizei>(c.imageSize);
const void* data = GetImmediateDataAs<const void*>(c);
+ if (!ValidateGLenumTextureTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (data == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateCompressedTexSubImage2DImmediate(
- this, immediate_data_size, target, level, xoffset, yoffset, width,
- height, format, imageSize, data);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (data == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glCompressedTexSubImage2D(
target, level, xoffset, yoffset, width, height, format, imageSize, data);
return parse_error::kParseNoError;
@@ -413,12 +386,9 @@
GLsizei width = static_cast<GLsizei>(c.width);
GLsizei height = static_cast<GLsizei>(c.height);
GLint border = static_cast<GLint>(c.border);
- parse_error::ParseError result =
- ValidateCopyTexImage2D(
- this, immediate_data_size, target, level, internalformat, x, y, width,
- height, border);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glCopyTexImage2D(target, level, internalformat, x, y, width, height, border);
return parse_error::kParseNoError;
@@ -434,12 +404,9 @@
GLint y = static_cast<GLint>(c.y);
GLsizei width = static_cast<GLsizei>(c.width);
GLsizei height = static_cast<GLsizei>(c.height);
- parse_error::ParseError result =
- ValidateCopyTexSubImage2D(
- this, immediate_data_size, target, level, xoffset, yoffset, x, y,
- width, height);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
return parse_error::kParseNoError;
@@ -448,11 +415,6 @@
parse_error::ParseError GLES2DecoderImpl::HandleCreateProgram(
uint32 immediate_data_size, const gles2::CreateProgram& c) {
uint32 client_id = c.client_id;
- parse_error::ParseError result =
- ValidateCreateProgram(this, immediate_data_size);
- if (result != parse_error::kParseNoError) {
- return result;
- }
CreateProgramHelper(client_id);
return parse_error::kParseNoError;
}
@@ -460,11 +422,14 @@
parse_error::ParseError GLES2DecoderImpl::HandleCreateShader(
uint32 immediate_data_size, const gles2::CreateShader& c) {
GLenum type = static_cast<GLenum>(c.type);
+ if (!ValidateGLenumShaderType(type)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
uint32 client_id = c.client_id;
- parse_error::ParseError result =
- ValidateCreateShader(this, immediate_data_size, type);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumShaderType(type)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
CreateShaderHelper(type, client_id);
return parse_error::kParseNoError;
@@ -473,10 +438,9 @@
parse_error::ParseError GLES2DecoderImpl::HandleCullFace(
uint32 immediate_data_size, const gles2::CullFace& c) {
GLenum mode = static_cast<GLenum>(c.mode);
- parse_error::ParseError result =
- ValidateCullFace(this, immediate_data_size, mode);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumFaceType(mode)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glCullFace(mode);
return parse_error::kParseNoError;
@@ -487,11 +451,12 @@
GLsizei n = static_cast<GLsizei>(c.n);
const GLuint* buffers = GetSharedMemoryAs<const GLuint*>(
c.buffers_shm_id, c.buffers_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateDeleteBuffers(this, immediate_data_size, n, buffers);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (buffers == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (buffers == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
DeleteGLObjects<GLDeleteBuffersHelper>(n, buffers);
return parse_error::kParseNoError;
}
@@ -500,11 +465,12 @@
uint32 immediate_data_size, const gles2::DeleteBuffersImmediate& c) {
GLsizei n = static_cast<GLsizei>(c.n);
const GLuint* buffers = GetImmediateDataAs<const GLuint*>(c);
- parse_error::ParseError result =
- ValidateDeleteBuffersImmediate(this, immediate_data_size, n, buffers);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (buffers == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (buffers == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
DeleteGLObjects<GLDeleteBuffersHelper>(n, buffers);
return parse_error::kParseNoError;
}
@@ -515,11 +481,12 @@
const GLuint* framebuffers = GetSharedMemoryAs<const GLuint*>(
c.framebuffers_shm_id, c.framebuffers_shm_offset, 0 /* TODO(
gman): size */);
- parse_error::ParseError result =
- ValidateDeleteFramebuffers(this, immediate_data_size, n, framebuffers);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (framebuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (framebuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
DeleteGLObjects<GLDeleteFramebuffersHelper>(n, framebuffers);
return parse_error::kParseNoError;
}
@@ -528,43 +495,28 @@
uint32 immediate_data_size, const gles2::DeleteFramebuffersImmediate& c) {
GLsizei n = static_cast<GLsizei>(c.n);
const GLuint* framebuffers = GetImmediateDataAs<const GLuint*>(c);
- parse_error::ParseError result =
- ValidateDeleteFramebuffersImmediate(
- this, immediate_data_size, n, framebuffers);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (framebuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (framebuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
DeleteGLObjects<GLDeleteFramebuffersHelper>(n, framebuffers);
return parse_error::kParseNoError;
}
-parse_error::ParseError GLES2DecoderImpl::HandleDeleteProgram(
- uint32 immediate_data_size, const gles2::DeleteProgram& c) {
- GLuint program;
- if (!id_map_.GetServiceId(c.program, &program)) {
- SetGLError(GL_INVALID_VALUE);
- return parse_error::kParseNoError;
- }
- parse_error::ParseError result =
- ValidateDeleteProgram(this, immediate_data_size, program);
- if (result != parse_error::kParseNoError) {
- return result;
- }
- DoDeleteProgram(program);
- return parse_error::kParseNoError;
-}
-
parse_error::ParseError GLES2DecoderImpl::HandleDeleteRenderbuffers(
uint32 immediate_data_size, const gles2::DeleteRenderbuffers& c) {
GLsizei n = static_cast<GLsizei>(c.n);
const GLuint* renderbuffers = GetSharedMemoryAs<const GLuint*>(
c.renderbuffers_shm_id, c.renderbuffers_shm_offset, 0 /* TODO(
gman): size */);
- parse_error::ParseError result =
- ValidateDeleteRenderbuffers(this, immediate_data_size, n, renderbuffers);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (renderbuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (renderbuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
DeleteGLObjects<GLDeleteRenderbuffersHelper>(n, renderbuffers);
return parse_error::kParseNoError;
}
@@ -573,42 +525,27 @@
uint32 immediate_data_size, const gles2::DeleteRenderbuffersImmediate& c) {
GLsizei n = static_cast<GLsizei>(c.n);
const GLuint* renderbuffers = GetImmediateDataAs<const GLuint*>(c);
- parse_error::ParseError result =
- ValidateDeleteRenderbuffersImmediate(
- this, immediate_data_size, n, renderbuffers);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (renderbuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (renderbuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
DeleteGLObjects<GLDeleteRenderbuffersHelper>(n, renderbuffers);
return parse_error::kParseNoError;
}
-parse_error::ParseError GLES2DecoderImpl::HandleDeleteShader(
- uint32 immediate_data_size, const gles2::DeleteShader& c) {
- GLuint shader;
- if (!id_map_.GetServiceId(c.shader, &shader)) {
- SetGLError(GL_INVALID_VALUE);
- return parse_error::kParseNoError;
- }
- parse_error::ParseError result =
- ValidateDeleteShader(this, immediate_data_size, shader);
- if (result != parse_error::kParseNoError) {
- return result;
- }
- DoDeleteShader(shader);
- return parse_error::kParseNoError;
-}
-
parse_error::ParseError GLES2DecoderImpl::HandleDeleteTextures(
uint32 immediate_data_size, const gles2::DeleteTextures& c) {
GLsizei n = static_cast<GLsizei>(c.n);
const GLuint* textures = GetSharedMemoryAs<const GLuint*>(
c.textures_shm_id, c.textures_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateDeleteTextures(this, immediate_data_size, n, textures);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (textures == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (textures == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
DeleteGLObjects<GLDeleteTexturesHelper>(n, textures);
return parse_error::kParseNoError;
}
@@ -617,11 +554,12 @@
uint32 immediate_data_size, const gles2::DeleteTexturesImmediate& c) {
GLsizei n = static_cast<GLsizei>(c.n);
const GLuint* textures = GetImmediateDataAs<const GLuint*>(c);
- parse_error::ParseError result =
- ValidateDeleteTexturesImmediate(this, immediate_data_size, n, textures);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (textures == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (textures == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
DeleteGLObjects<GLDeleteTexturesHelper>(n, textures);
return parse_error::kParseNoError;
}
@@ -629,10 +567,9 @@
parse_error::ParseError GLES2DecoderImpl::HandleDepthFunc(
uint32 immediate_data_size, const gles2::DepthFunc& c) {
GLenum func = static_cast<GLenum>(c.func);
- parse_error::ParseError result =
- ValidateDepthFunc(this, immediate_data_size, func);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumCmpFunction(func)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glDepthFunc(func);
return parse_error::kParseNoError;
@@ -641,11 +578,6 @@
parse_error::ParseError GLES2DecoderImpl::HandleDepthMask(
uint32 immediate_data_size, const gles2::DepthMask& c) {
GLboolean flag = static_cast<GLboolean>(c.flag);
- parse_error::ParseError result =
- ValidateDepthMask(this, immediate_data_size, flag);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glDepthMask(flag);
return parse_error::kParseNoError;
}
@@ -654,11 +586,6 @@
uint32 immediate_data_size, const gles2::DepthRangef& c) {
GLclampf zNear = static_cast<GLclampf>(c.zNear);
GLclampf zFar = static_cast<GLclampf>(c.zFar);
- parse_error::ParseError result =
- ValidateDepthRangef(this, immediate_data_size, zNear, zFar);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glDepthRange(zNear, zFar);
return parse_error::kParseNoError;
}
@@ -675,11 +602,6 @@
SetGLError(GL_INVALID_VALUE);
return parse_error::kParseNoError;
}
- parse_error::ParseError result =
- ValidateDetachShader(this, immediate_data_size, program, shader);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glDetachShader(program, shader);
return parse_error::kParseNoError;
}
@@ -687,10 +609,9 @@
parse_error::ParseError GLES2DecoderImpl::HandleDisable(
uint32 immediate_data_size, const gles2::Disable& c) {
GLenum cap = static_cast<GLenum>(c.cap);
- parse_error::ParseError result =
- ValidateDisable(this, immediate_data_size, cap);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumCapability(cap)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glDisable(cap);
return parse_error::kParseNoError;
@@ -699,11 +620,6 @@
parse_error::ParseError GLES2DecoderImpl::HandleDisableVertexAttribArray(
uint32 immediate_data_size, const gles2::DisableVertexAttribArray& c) {
GLuint index = static_cast<GLuint>(c.index);
- parse_error::ParseError result =
- ValidateDisableVertexAttribArray(this, immediate_data_size, index);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glDisableVertexAttribArray(index);
return parse_error::kParseNoError;
}
@@ -713,10 +629,9 @@
GLenum mode = static_cast<GLenum>(c.mode);
GLint first = static_cast<GLint>(c.first);
GLsizei count = static_cast<GLsizei>(c.count);
- parse_error::ParseError result =
- ValidateDrawArrays(this, immediate_data_size, mode, first, count);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumDrawMode(mode)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glDrawArrays(mode, first, count);
return parse_error::kParseNoError;
@@ -725,10 +640,9 @@
parse_error::ParseError GLES2DecoderImpl::HandleEnable(
uint32 immediate_data_size, const gles2::Enable& c) {
GLenum cap = static_cast<GLenum>(c.cap);
- parse_error::ParseError result =
- ValidateEnable(this, immediate_data_size, cap);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumCapability(cap)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glEnable(cap);
return parse_error::kParseNoError;
@@ -737,33 +651,18 @@
parse_error::ParseError GLES2DecoderImpl::HandleEnableVertexAttribArray(
uint32 immediate_data_size, const gles2::EnableVertexAttribArray& c) {
GLuint index = static_cast<GLuint>(c.index);
- parse_error::ParseError result =
- ValidateEnableVertexAttribArray(this, immediate_data_size, index);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glEnableVertexAttribArray(index);
return parse_error::kParseNoError;
}
parse_error::ParseError GLES2DecoderImpl::HandleFinish(
uint32 immediate_data_size, const gles2::Finish& c) {
- parse_error::ParseError result =
- ValidateFinish(this, immediate_data_size);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glFinish();
return parse_error::kParseNoError;
}
parse_error::ParseError GLES2DecoderImpl::HandleFlush(
uint32 immediate_data_size, const gles2::Flush& c) {
- parse_error::ParseError result =
- ValidateFlush(this, immediate_data_size);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glFlush();
return parse_error::kParseNoError;
}
@@ -778,13 +677,18 @@
SetGLError(GL_INVALID_VALUE);
return parse_error::kParseNoError;
}
- parse_error::ParseError result =
- ValidateFramebufferRenderbuffer(
- this, immediate_data_size, target, attachment, renderbuffertarget,
- renderbuffer);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumFrameBufferTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumAttachment(attachment)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (!ValidateGLenumRenderBufferTarget(renderbuffertarget)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
glFramebufferRenderbufferEXT(
target, attachment, renderbuffertarget, renderbuffer);
return parse_error::kParseNoError;
@@ -801,13 +705,18 @@
return parse_error::kParseNoError;
}
GLint level = static_cast<GLint>(c.level);
- parse_error::ParseError result =
- ValidateFramebufferTexture2D(
- this, immediate_data_size, target, attachment, textarget, texture,
- level);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumFrameBufferTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumAttachment(attachment)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (!ValidateGLenumTextureTarget(textarget)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
glFramebufferTexture2DEXT(target, attachment, textarget, texture, level);
return parse_error::kParseNoError;
}
@@ -815,10 +724,9 @@
parse_error::ParseError GLES2DecoderImpl::HandleFrontFace(
uint32 immediate_data_size, const gles2::FrontFace& c) {
GLenum mode = static_cast<GLenum>(c.mode);
- parse_error::ParseError result =
- ValidateFrontFace(this, immediate_data_size, mode);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumFaceMode(mode)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glFrontFace(mode);
return parse_error::kParseNoError;
@@ -829,11 +737,12 @@
GLsizei n = static_cast<GLsizei>(c.n);
GLuint* buffers = GetSharedMemoryAs<GLuint*>(
c.buffers_shm_id, c.buffers_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateGenBuffers(this, immediate_data_size, n, buffers);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (buffers == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (buffers == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
GenGLObjects<GLGenBuffersHelper>(n, buffers);
return parse_error::kParseNoError;
}
@@ -842,11 +751,12 @@
uint32 immediate_data_size, const gles2::GenBuffersImmediate& c) {
GLsizei n = static_cast<GLsizei>(c.n);
GLuint* buffers = GetImmediateDataAs<GLuint*>(c);
- parse_error::ParseError result =
- ValidateGenBuffersImmediate(this, immediate_data_size, n, buffers);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (buffers == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (buffers == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
GenGLObjects<GLGenBuffersHelper>(n, buffers);
return parse_error::kParseNoError;
}
@@ -854,10 +764,9 @@
parse_error::ParseError GLES2DecoderImpl::HandleGenerateMipmap(
uint32 immediate_data_size, const gles2::GenerateMipmap& c) {
GLenum target = static_cast<GLenum>(c.target);
- parse_error::ParseError result =
- ValidateGenerateMipmap(this, immediate_data_size, target);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureBindTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glGenerateMipmapEXT(target);
return parse_error::kParseNoError;
@@ -869,11 +778,12 @@
GLuint* framebuffers = GetSharedMemoryAs<GLuint*>(
c.framebuffers_shm_id, c.framebuffers_shm_offset, 0 /* TODO(
gman): size */);
- parse_error::ParseError result =
- ValidateGenFramebuffers(this, immediate_data_size, n, framebuffers);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (framebuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (framebuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
GenGLObjects<GLGenFramebuffersHelper>(n, framebuffers);
return parse_error::kParseNoError;
}
@@ -882,12 +792,12 @@
uint32 immediate_data_size, const gles2::GenFramebuffersImmediate& c) {
GLsizei n = static_cast<GLsizei>(c.n);
GLuint* framebuffers = GetImmediateDataAs<GLuint*>(c);
- parse_error::ParseError result =
- ValidateGenFramebuffersImmediate(
- this, immediate_data_size, n, framebuffers);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (framebuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (framebuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
GenGLObjects<GLGenFramebuffersHelper>(n, framebuffers);
return parse_error::kParseNoError;
}
@@ -898,11 +808,12 @@
GLuint* renderbuffers = GetSharedMemoryAs<GLuint*>(
c.renderbuffers_shm_id, c.renderbuffers_shm_offset, 0 /* TODO(
gman): size */);
- parse_error::ParseError result =
- ValidateGenRenderbuffers(this, immediate_data_size, n, renderbuffers);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (renderbuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (renderbuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
GenGLObjects<GLGenRenderbuffersHelper>(n, renderbuffers);
return parse_error::kParseNoError;
}
@@ -911,12 +822,12 @@
uint32 immediate_data_size, const gles2::GenRenderbuffersImmediate& c) {
GLsizei n = static_cast<GLsizei>(c.n);
GLuint* renderbuffers = GetImmediateDataAs<GLuint*>(c);
- parse_error::ParseError result =
- ValidateGenRenderbuffersImmediate(
- this, immediate_data_size, n, renderbuffers);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (renderbuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (renderbuffers == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
GenGLObjects<GLGenRenderbuffersHelper>(n, renderbuffers);
return parse_error::kParseNoError;
}
@@ -926,11 +837,12 @@
GLsizei n = static_cast<GLsizei>(c.n);
GLuint* textures = GetSharedMemoryAs<GLuint*>(
c.textures_shm_id, c.textures_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateGenTextures(this, immediate_data_size, n, textures);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (textures == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (textures == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
GenGLObjects<GLGenTexturesHelper>(n, textures);
return parse_error::kParseNoError;
}
@@ -939,11 +851,12 @@
uint32 immediate_data_size, const gles2::GenTexturesImmediate& c) {
GLsizei n = static_cast<GLsizei>(c.n);
GLuint* textures = GetImmediateDataAs<GLuint*>(c);
- parse_error::ParseError result =
- ValidateGenTexturesImmediate(this, immediate_data_size, n, textures);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (textures == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (textures == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
GenGLObjects<GLGenTexturesHelper>(n, textures);
return parse_error::kParseNoError;
}
@@ -956,10 +869,8 @@
uint32 params_size = num_values * sizeof(*params);
params = GetSharedMemoryAs<GLboolean*>(
c.params_shm_id, c.params_shm_offset, params_size);
- parse_error::ParseError result =
- ValidateGetBooleanv(this, immediate_data_size, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glGetBooleanv(pname, params);
return parse_error::kParseNoError;
@@ -974,12 +885,17 @@
uint32 params_size = num_values * sizeof(*params);
params = GetSharedMemoryAs<GLint*>(
c.params_shm_id, c.params_shm_offset, params_size);
- parse_error::ParseError result =
- ValidateGetBufferParameteriv(
- this, immediate_data_size, target, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumBufferTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumBufferParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glGetBufferParameteriv(target, pname, params);
return parse_error::kParseNoError;
}
@@ -988,11 +904,6 @@
uint32 immediate_data_size, const gles2::GetError& c) {
GLenum* result_dst = GetSharedMemoryAs<GLenum*>(
c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
- parse_error::ParseError result =
- ValidateGetError(this, immediate_data_size);
- if (result != parse_error::kParseNoError) {
- return result;
- }
*result_dst = GetGLError();
return parse_error::kParseNoError;
}
@@ -1005,10 +916,8 @@
uint32 params_size = num_values * sizeof(*params);
params = GetSharedMemoryAs<GLfloat*>(
c.params_shm_id, c.params_shm_offset, params_size);
- parse_error::ParseError result =
- ValidateGetFloatv(this, immediate_data_size, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glGetFloatv(pname, params);
return parse_error::kParseNoError;
@@ -1026,12 +935,21 @@
uint32 params_size = num_values * sizeof(*params);
params = GetSharedMemoryAs<GLint*>(
c.params_shm_id, c.params_shm_offset, params_size);
- parse_error::ParseError result =
- ValidateGetFramebufferAttachmentParameteriv(
- this, immediate_data_size, target, attachment, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumFrameBufferTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumAttachment(attachment)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (!ValidateGLenumFrameBufferParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glGetFramebufferAttachmentParameterivEXT(target, attachment, pname, params);
return parse_error::kParseNoError;
}
@@ -1044,10 +962,8 @@
uint32 params_size = num_values * sizeof(*params);
params = GetSharedMemoryAs<GLint*>(
c.params_shm_id, c.params_shm_offset, params_size);
- parse_error::ParseError result =
- ValidateGetIntegerv(this, immediate_data_size, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glGetIntegerv(pname, params);
return parse_error::kParseNoError;
@@ -1066,11 +982,13 @@
uint32 params_size = num_values * sizeof(*params);
params = GetSharedMemoryAs<GLint*>(
c.params_shm_id, c.params_shm_offset, params_size);
- parse_error::ParseError result =
- ValidateGetProgramiv(this, immediate_data_size, program, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumProgramParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glGetProgramiv(program, pname, params);
return parse_error::kParseNoError;
}
@@ -1087,12 +1005,12 @@
c.length_shm_id, c.length_shm_offset, 0 /* TODO(gman): size */);
char* infolog = GetSharedMemoryAs<char*>(
c.infolog_shm_id, c.infolog_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateGetProgramInfoLog(
- this, immediate_data_size, program, bufsize, length, infolog);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (length == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (infolog == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glGetProgramInfoLog(program, bufsize, length, infolog);
return parse_error::kParseNoError;
}
@@ -1106,12 +1024,17 @@
uint32 params_size = num_values * sizeof(*params);
params = GetSharedMemoryAs<GLint*>(
c.params_shm_id, c.params_shm_offset, params_size);
- parse_error::ParseError result =
- ValidateGetRenderbufferParameteriv(
- this, immediate_data_size, target, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumRenderBufferTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumRenderBufferParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glGetRenderbufferParameterivEXT(target, pname, params);
return parse_error::kParseNoError;
}
@@ -1129,11 +1052,13 @@
uint32 params_size = num_values * sizeof(*params);
params = GetSharedMemoryAs<GLint*>(
c.params_shm_id, c.params_shm_offset, params_size);
- parse_error::ParseError result =
- ValidateGetShaderiv(this, immediate_data_size, shader, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumShaderParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glGetShaderiv(shader, pname, params);
return parse_error::kParseNoError;
}
@@ -1150,12 +1075,12 @@
c.length_shm_id, c.length_shm_offset, 0 /* TODO(gman): size */);
char* infolog = GetSharedMemoryAs<char*>(
c.infolog_shm_id, c.infolog_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateGetShaderInfoLog(
- this, immediate_data_size, shader, bufsize, length, infolog);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (length == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (infolog == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glGetShaderInfoLog(shader, bufsize, length, infolog);
return parse_error::kParseNoError;
}
@@ -1172,12 +1097,12 @@
c.length_shm_id, c.length_shm_offset, 0 /* TODO(gman): size */);
char* source = GetSharedMemoryAs<char*>(
c.source_shm_id, c.source_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateGetShaderSource(
- this, immediate_data_size, shader, bufsize, length, source);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (length == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (source == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glGetShaderSource(shader, bufsize, length, source);
return parse_error::kParseNoError;
}
@@ -1185,10 +1110,9 @@
parse_error::ParseError GLES2DecoderImpl::HandleGetString(
uint32 immediate_data_size, const gles2::GetString& c) {
GLenum name = static_cast<GLenum>(c.name);
- parse_error::ParseError result =
- ValidateGetString(this, immediate_data_size, name);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumStringType(name)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glGetString(name);
return parse_error::kParseNoError;
@@ -1203,12 +1127,17 @@
uint32 params_size = num_values * sizeof(*params);
params = GetSharedMemoryAs<GLfloat*>(
c.params_shm_id, c.params_shm_offset, params_size);
- parse_error::ParseError result =
- ValidateGetTexParameterfv(
- this, immediate_data_size, target, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumTextureParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glGetTexParameterfv(target, pname, params);
return parse_error::kParseNoError;
}
@@ -1222,12 +1151,17 @@
uint32 params_size = num_values * sizeof(*params);
params = GetSharedMemoryAs<GLint*>(
c.params_shm_id, c.params_shm_offset, params_size);
- parse_error::ParseError result =
- ValidateGetTexParameteriv(
- this, immediate_data_size, target, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumTextureParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glGetTexParameteriv(target, pname, params);
return parse_error::kParseNoError;
}
@@ -1241,12 +1175,13 @@
uint32 params_size = num_values * sizeof(*params);
params = GetSharedMemoryAs<GLfloat*>(
c.params_shm_id, c.params_shm_offset, params_size);
- parse_error::ParseError result =
- ValidateGetVertexAttribfv(
- this, immediate_data_size, index, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumVertexAttribute(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glGetVertexAttribfv(index, pname, params);
return parse_error::kParseNoError;
}
@@ -1260,12 +1195,13 @@
uint32 params_size = num_values * sizeof(*params);
params = GetSharedMemoryAs<GLint*>(
c.params_shm_id, c.params_shm_offset, params_size);
- parse_error::ParseError result =
- ValidateGetVertexAttribiv(
- this, immediate_data_size, index, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumVertexAttribute(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glGetVertexAttribiv(index, pname, params);
return parse_error::kParseNoError;
}
@@ -1274,11 +1210,14 @@
uint32 immediate_data_size, const gles2::Hint& c) {
GLenum target = static_cast<GLenum>(c.target);
GLenum mode = static_cast<GLenum>(c.mode);
- parse_error::ParseError result =
- ValidateHint(this, immediate_data_size, target, mode);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumHintTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumHintMode(mode)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
glHint(target, mode);
return parse_error::kParseNoError;
}
@@ -1292,11 +1231,6 @@
}
GLboolean* result_dst = GetSharedMemoryAs<GLboolean*>(
c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
- parse_error::ParseError result =
- ValidateIsBuffer(this, immediate_data_size, buffer);
- if (result != parse_error::kParseNoError) {
- return result;
- }
*result_dst = glIsBuffer(buffer);
return parse_error::kParseNoError;
}
@@ -1306,10 +1240,9 @@
GLenum cap = static_cast<GLenum>(c.cap);
GLboolean* result_dst = GetSharedMemoryAs<GLboolean*>(
c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
- parse_error::ParseError result =
- ValidateIsEnabled(this, immediate_data_size, cap);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumCapability(cap)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
*result_dst = glIsEnabled(cap);
return parse_error::kParseNoError;
@@ -1324,11 +1257,6 @@
}
GLboolean* result_dst = GetSharedMemoryAs<GLboolean*>(
c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
- parse_error::ParseError result =
- ValidateIsFramebuffer(this, immediate_data_size, framebuffer);
- if (result != parse_error::kParseNoError) {
- return result;
- }
*result_dst = glIsFramebufferEXT(framebuffer);
return parse_error::kParseNoError;
}
@@ -1342,11 +1270,6 @@
}
GLboolean* result_dst = GetSharedMemoryAs<GLboolean*>(
c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
- parse_error::ParseError result =
- ValidateIsProgram(this, immediate_data_size, program);
- if (result != parse_error::kParseNoError) {
- return result;
- }
*result_dst = glIsProgram(program);
return parse_error::kParseNoError;
}
@@ -1360,11 +1283,6 @@
}
GLboolean* result_dst = GetSharedMemoryAs<GLboolean*>(
c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
- parse_error::ParseError result =
- ValidateIsRenderbuffer(this, immediate_data_size, renderbuffer);
- if (result != parse_error::kParseNoError) {
- return result;
- }
*result_dst = glIsRenderbufferEXT(renderbuffer);
return parse_error::kParseNoError;
}
@@ -1378,11 +1296,6 @@
}
GLboolean* result_dst = GetSharedMemoryAs<GLboolean*>(
c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
- parse_error::ParseError result =
- ValidateIsShader(this, immediate_data_size, shader);
- if (result != parse_error::kParseNoError) {
- return result;
- }
*result_dst = glIsShader(shader);
return parse_error::kParseNoError;
}
@@ -1396,11 +1309,6 @@
}
GLboolean* result_dst = GetSharedMemoryAs<GLboolean*>(
c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
- parse_error::ParseError result =
- ValidateIsTexture(this, immediate_data_size, texture);
- if (result != parse_error::kParseNoError) {
- return result;
- }
*result_dst = glIsTexture(texture);
return parse_error::kParseNoError;
}
@@ -1408,11 +1316,6 @@
parse_error::ParseError GLES2DecoderImpl::HandleLineWidth(
uint32 immediate_data_size, const gles2::LineWidth& c) {
GLfloat width = static_cast<GLfloat>(c.width);
- parse_error::ParseError result =
- ValidateLineWidth(this, immediate_data_size, width);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glLineWidth(width);
return parse_error::kParseNoError;
}
@@ -1424,11 +1327,6 @@
SetGLError(GL_INVALID_VALUE);
return parse_error::kParseNoError;
}
- parse_error::ParseError result =
- ValidateLinkProgram(this, immediate_data_size, program);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glLinkProgram(program);
return parse_error::kParseNoError;
}
@@ -1437,11 +1335,6 @@
uint32 immediate_data_size, const gles2::PolygonOffset& c) {
GLfloat factor = static_cast<GLfloat>(c.factor);
GLfloat units = static_cast<GLfloat>(c.units);
- parse_error::ParseError result =
- ValidatePolygonOffset(this, immediate_data_size, factor, units);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glPolygonOffset(factor, units);
return parse_error::kParseNoError;
}
@@ -1452,12 +1345,14 @@
GLenum internalformat = static_cast<GLenum>(c.internalformat);
GLsizei width = static_cast<GLsizei>(c.width);
GLsizei height = static_cast<GLsizei>(c.height);
- parse_error::ParseError result =
- ValidateRenderbufferStorage(
- this, immediate_data_size, target, internalformat, width, height);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumRenderBufferTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumRenderBufferFormat(internalformat)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
glRenderbufferStorageEXT(target, internalformat, width, height);
return parse_error::kParseNoError;
}
@@ -1466,11 +1361,6 @@
uint32 immediate_data_size, const gles2::SampleCoverage& c) {
GLclampf value = static_cast<GLclampf>(c.value);
GLboolean invert = static_cast<GLboolean>(c.invert);
- parse_error::ParseError result =
- ValidateSampleCoverage(this, immediate_data_size, value, invert);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glSampleCoverage(value, invert);
return parse_error::kParseNoError;
}
@@ -1481,11 +1371,6 @@
GLint y = static_cast<GLint>(c.y);
GLsizei width = static_cast<GLsizei>(c.width);
GLsizei height = static_cast<GLsizei>(c.height);
- parse_error::ParseError result =
- ValidateScissor(this, immediate_data_size, x, y, width, height);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glScissor(x, y, width, height);
return parse_error::kParseNoError;
}
@@ -1495,10 +1380,9 @@
GLenum func = static_cast<GLenum>(c.func);
GLint ref = static_cast<GLint>(c.ref);
GLuint mask = static_cast<GLuint>(c.mask);
- parse_error::ParseError result =
- ValidateStencilFunc(this, immediate_data_size, func, ref, mask);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumCmpFunction(func)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glStencilFunc(func, ref, mask);
return parse_error::kParseNoError;
@@ -1510,12 +1394,14 @@
GLenum func = static_cast<GLenum>(c.func);
GLint ref = static_cast<GLint>(c.ref);
GLuint mask = static_cast<GLuint>(c.mask);
- parse_error::ParseError result =
- ValidateStencilFuncSeparate(
- this, immediate_data_size, face, func, ref, mask);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumFaceType(face)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumCmpFunction(func)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
glStencilFuncSeparate(face, func, ref, mask);
return parse_error::kParseNoError;
}
@@ -1523,11 +1409,6 @@
parse_error::ParseError GLES2DecoderImpl::HandleStencilMask(
uint32 immediate_data_size, const gles2::StencilMask& c) {
GLuint mask = static_cast<GLuint>(c.mask);
- parse_error::ParseError result =
- ValidateStencilMask(this, immediate_data_size, mask);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glStencilMask(mask);
return parse_error::kParseNoError;
}
@@ -1536,10 +1417,9 @@
uint32 immediate_data_size, const gles2::StencilMaskSeparate& c) {
GLenum face = static_cast<GLenum>(c.face);
GLuint mask = static_cast<GLuint>(c.mask);
- parse_error::ParseError result =
- ValidateStencilMaskSeparate(this, immediate_data_size, face, mask);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumFaceType(face)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
glStencilMaskSeparate(face, mask);
return parse_error::kParseNoError;
@@ -1550,11 +1430,18 @@
GLenum fail = static_cast<GLenum>(c.fail);
GLenum zfail = static_cast<GLenum>(c.zfail);
GLenum zpass = static_cast<GLenum>(c.zpass);
- parse_error::ParseError result =
- ValidateStencilOp(this, immediate_data_size, fail, zfail, zpass);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumStencilOp(fail)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumStencilOp(zfail)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (!ValidateGLenumStencilOp(zpass)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
glStencilOp(fail, zfail, zpass);
return parse_error::kParseNoError;
}
@@ -1565,12 +1452,22 @@
GLenum fail = static_cast<GLenum>(c.fail);
GLenum zfail = static_cast<GLenum>(c.zfail);
GLenum zpass = static_cast<GLenum>(c.zpass);
- parse_error::ParseError result =
- ValidateStencilOpSeparate(
- this, immediate_data_size, face, fail, zfail, zpass);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumFaceType(face)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumStencilOp(fail)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (!ValidateGLenumStencilOp(zfail)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (!ValidateGLenumStencilOp(zpass)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
glStencilOpSeparate(face, fail, zfail, zpass);
return parse_error::kParseNoError;
}
@@ -1580,11 +1477,14 @@
GLenum target = static_cast<GLenum>(c.target);
GLenum pname = static_cast<GLenum>(c.pname);
GLfloat param = static_cast<GLfloat>(c.param);
- parse_error::ParseError result =
- ValidateTexParameterf(this, immediate_data_size, target, pname, param);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureBindTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumTextureParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
glTexParameterf(target, pname, param);
return parse_error::kParseNoError;
}
@@ -1595,11 +1495,17 @@
GLenum pname = static_cast<GLenum>(c.pname);
const GLfloat* params = GetSharedMemoryAs<const GLfloat*>(
c.params_shm_id, c.params_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateTexParameterfv(this, immediate_data_size, target, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureBindTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumTextureParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glTexParameterfv(target, pname, params);
return parse_error::kParseNoError;
}
@@ -1609,13 +1515,37 @@
GLenum target = static_cast<GLenum>(c.target);
GLenum pname = static_cast<GLenum>(c.pname);
const GLfloat* params = GetImmediateDataAs<const GLfloat*>(c);
+ if (!ValidateGLenumTextureBindTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (!ValidateGLenumTextureParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<TexParameterfvImmediate>(
+ immediate_data_size, 1, sizeof(GLfloat), 1)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateTexParameterfvImmediate(
- this, immediate_data_size, target, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureBindTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumTextureParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<TexParameterfvImmediate>(
+ immediate_data_size, 1, sizeof(GLfloat), 1)) {
+ return parse_error::kParseOutOfBounds;
+ }
glTexParameterfv(target, pname, params);
return parse_error::kParseNoError;
}
@@ -1625,11 +1555,14 @@
GLenum target = static_cast<GLenum>(c.target);
GLenum pname = static_cast<GLenum>(c.pname);
GLint param = static_cast<GLint>(c.param);
- parse_error::ParseError result =
- ValidateTexParameteri(this, immediate_data_size, target, pname, param);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureBindTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumTextureParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
glTexParameteri(target, pname, param);
return parse_error::kParseNoError;
}
@@ -1640,11 +1573,17 @@
GLenum pname = static_cast<GLenum>(c.pname);
const GLint* params = GetSharedMemoryAs<const GLint*>(
c.params_shm_id, c.params_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateTexParameteriv(this, immediate_data_size, target, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureBindTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumTextureParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glTexParameteriv(target, pname, params);
return parse_error::kParseNoError;
}
@@ -1654,13 +1593,37 @@
GLenum target = static_cast<GLenum>(c.target);
GLenum pname = static_cast<GLenum>(c.pname);
const GLint* params = GetImmediateDataAs<const GLint*>(c);
+ if (!ValidateGLenumTextureBindTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (!ValidateGLenumTextureParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<TexParameterivImmediate>(
+ immediate_data_size, 1, sizeof(GLint), 1)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateTexParameterivImmediate(
- this, immediate_data_size, target, pname, params);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureBindTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumTextureParameter(pname)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (params == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<TexParameterivImmediate>(
+ immediate_data_size, 1, sizeof(GLint), 1)) {
+ return parse_error::kParseOutOfBounds;
+ }
glTexParameteriv(target, pname, params);
return parse_error::kParseNoError;
}
@@ -1681,13 +1644,21 @@
width, height, format, type, unpack_alignment_);
const void* pixels = GetSharedMemoryAs<const void*>(
pixels_shm_id, pixels_shm_offset, pixels_size);
- parse_error::ParseError result =
- ValidateTexSubImage2D(
- this, immediate_data_size, target, level, xoffset, yoffset, width,
- height, format, type, pixels);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumTextureFormat(format)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (!ValidateGLenumPixelType(type)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (pixels == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glTexSubImage2D(
target, level, xoffset, yoffset, width, height, format, type, pixels);
return parse_error::kParseNoError;
@@ -1704,14 +1675,37 @@
GLenum format = static_cast<GLenum>(c.format);
GLenum type = static_cast<GLenum>(c.type);
const void* pixels = GetImmediateDataAs<const void*>(c);
+ if (!ValidateGLenumTextureTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (!ValidateGLenumTextureFormat(format)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (!ValidateGLenumPixelType(type)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (pixels == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateTexSubImage2DImmediate(
- this, immediate_data_size, target, level, xoffset, yoffset, width,
- height, format, type, pixels);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (!ValidateGLenumTextureTarget(target)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
}
+ if (!ValidateGLenumTextureFormat(format)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (!ValidateGLenumPixelType(type)) {
+ SetGLError(GL_INVALID_VALUE);
+ return parse_error::kParseNoError;
+ }
+ if (pixels == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
glTexSubImage2D(
target, level, xoffset, yoffset, width, height, format, type, pixels);
return parse_error::kParseNoError;
@@ -1721,11 +1715,6 @@
uint32 immediate_data_size, const gles2::Uniform1f& c) {
GLint location = static_cast<GLint>(c.location);
GLfloat x = static_cast<GLfloat>(c.x);
- parse_error::ParseError result =
- ValidateUniform1f(this, immediate_data_size, location, x);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glUniform1f(location, x);
return parse_error::kParseNoError;
}
@@ -1736,10 +1725,8 @@
GLsizei count = static_cast<GLsizei>(c.count);
const GLfloat* v = GetSharedMemoryAs<const GLfloat*>(
c.v_shm_id, c.v_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateUniform1fv(this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glUniform1fv(location, count, v);
return parse_error::kParseNoError;
@@ -1750,13 +1737,21 @@
GLint location = static_cast<GLint>(c.location);
GLsizei count = static_cast<GLsizei>(c.count);
const GLfloat* v = GetImmediateDataAs<const GLfloat*>(c);
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<Uniform1fvImmediate>(
+ immediate_data_size, count, sizeof(GLfloat), 1)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateUniform1fvImmediate(
- this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<Uniform1fvImmediate>(
+ immediate_data_size, count, sizeof(GLfloat), 1)) {
+ return parse_error::kParseOutOfBounds;
+ }
glUniform1fv(location, count, v);
return parse_error::kParseNoError;
}
@@ -1765,11 +1760,6 @@
uint32 immediate_data_size, const gles2::Uniform1i& c) {
GLint location = static_cast<GLint>(c.location);
GLint x = static_cast<GLint>(c.x);
- parse_error::ParseError result =
- ValidateUniform1i(this, immediate_data_size, location, x);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glUniform1i(location, x);
return parse_error::kParseNoError;
}
@@ -1780,10 +1770,8 @@
GLsizei count = static_cast<GLsizei>(c.count);
const GLint* v = GetSharedMemoryAs<const GLint*>(
c.v_shm_id, c.v_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateUniform1iv(this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glUniform1iv(location, count, v);
return parse_error::kParseNoError;
@@ -1794,13 +1782,21 @@
GLint location = static_cast<GLint>(c.location);
GLsizei count = static_cast<GLsizei>(c.count);
const GLint* v = GetImmediateDataAs<const GLint*>(c);
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<Uniform1ivImmediate>(
+ immediate_data_size, count, sizeof(GLint), 1)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateUniform1ivImmediate(
- this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<Uniform1ivImmediate>(
+ immediate_data_size, count, sizeof(GLint), 1)) {
+ return parse_error::kParseOutOfBounds;
+ }
glUniform1iv(location, count, v);
return parse_error::kParseNoError;
}
@@ -1810,11 +1806,6 @@
GLint location = static_cast<GLint>(c.location);
GLfloat x = static_cast<GLfloat>(c.x);
GLfloat y = static_cast<GLfloat>(c.y);
- parse_error::ParseError result =
- ValidateUniform2f(this, immediate_data_size, location, x, y);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glUniform2f(location, x, y);
return parse_error::kParseNoError;
}
@@ -1825,10 +1816,8 @@
GLsizei count = static_cast<GLsizei>(c.count);
const GLfloat* v = GetSharedMemoryAs<const GLfloat*>(
c.v_shm_id, c.v_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateUniform2fv(this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glUniform2fv(location, count, v);
return parse_error::kParseNoError;
@@ -1839,13 +1828,21 @@
GLint location = static_cast<GLint>(c.location);
GLsizei count = static_cast<GLsizei>(c.count);
const GLfloat* v = GetImmediateDataAs<const GLfloat*>(c);
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<Uniform2fvImmediate>(
+ immediate_data_size, count, sizeof(GLfloat), 2)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateUniform2fvImmediate(
- this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<Uniform2fvImmediate>(
+ immediate_data_size, count, sizeof(GLfloat), 2)) {
+ return parse_error::kParseOutOfBounds;
+ }
glUniform2fv(location, count, v);
return parse_error::kParseNoError;
}
@@ -1855,11 +1852,6 @@
GLint location = static_cast<GLint>(c.location);
GLint x = static_cast<GLint>(c.x);
GLint y = static_cast<GLint>(c.y);
- parse_error::ParseError result =
- ValidateUniform2i(this, immediate_data_size, location, x, y);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glUniform2i(location, x, y);
return parse_error::kParseNoError;
}
@@ -1870,10 +1862,8 @@
GLsizei count = static_cast<GLsizei>(c.count);
const GLint* v = GetSharedMemoryAs<const GLint*>(
c.v_shm_id, c.v_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateUniform2iv(this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glUniform2iv(location, count, v);
return parse_error::kParseNoError;
@@ -1884,13 +1874,21 @@
GLint location = static_cast<GLint>(c.location);
GLsizei count = static_cast<GLsizei>(c.count);
const GLint* v = GetImmediateDataAs<const GLint*>(c);
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<Uniform2ivImmediate>(
+ immediate_data_size, count, sizeof(GLint), 2)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateUniform2ivImmediate(
- this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<Uniform2ivImmediate>(
+ immediate_data_size, count, sizeof(GLint), 2)) {
+ return parse_error::kParseOutOfBounds;
+ }
glUniform2iv(location, count, v);
return parse_error::kParseNoError;
}
@@ -1901,11 +1899,6 @@
GLfloat x = static_cast<GLfloat>(c.x);
GLfloat y = static_cast<GLfloat>(c.y);
GLfloat z = static_cast<GLfloat>(c.z);
- parse_error::ParseError result =
- ValidateUniform3f(this, immediate_data_size, location, x, y, z);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glUniform3f(location, x, y, z);
return parse_error::kParseNoError;
}
@@ -1916,10 +1909,8 @@
GLsizei count = static_cast<GLsizei>(c.count);
const GLfloat* v = GetSharedMemoryAs<const GLfloat*>(
c.v_shm_id, c.v_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateUniform3fv(this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glUniform3fv(location, count, v);
return parse_error::kParseNoError;
@@ -1930,13 +1921,21 @@
GLint location = static_cast<GLint>(c.location);
GLsizei count = static_cast<GLsizei>(c.count);
const GLfloat* v = GetImmediateDataAs<const GLfloat*>(c);
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<Uniform3fvImmediate>(
+ immediate_data_size, count, sizeof(GLfloat), 3)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateUniform3fvImmediate(
- this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<Uniform3fvImmediate>(
+ immediate_data_size, count, sizeof(GLfloat), 3)) {
+ return parse_error::kParseOutOfBounds;
+ }
glUniform3fv(location, count, v);
return parse_error::kParseNoError;
}
@@ -1947,11 +1946,6 @@
GLint x = static_cast<GLint>(c.x);
GLint y = static_cast<GLint>(c.y);
GLint z = static_cast<GLint>(c.z);
- parse_error::ParseError result =
- ValidateUniform3i(this, immediate_data_size, location, x, y, z);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glUniform3i(location, x, y, z);
return parse_error::kParseNoError;
}
@@ -1962,10 +1956,8 @@
GLsizei count = static_cast<GLsizei>(c.count);
const GLint* v = GetSharedMemoryAs<const GLint*>(
c.v_shm_id, c.v_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateUniform3iv(this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glUniform3iv(location, count, v);
return parse_error::kParseNoError;
@@ -1976,13 +1968,21 @@
GLint location = static_cast<GLint>(c.location);
GLsizei count = static_cast<GLsizei>(c.count);
const GLint* v = GetImmediateDataAs<const GLint*>(c);
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<Uniform3ivImmediate>(
+ immediate_data_size, count, sizeof(GLint), 3)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateUniform3ivImmediate(
- this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<Uniform3ivImmediate>(
+ immediate_data_size, count, sizeof(GLint), 3)) {
+ return parse_error::kParseOutOfBounds;
+ }
glUniform3iv(location, count, v);
return parse_error::kParseNoError;
}
@@ -1994,11 +1994,6 @@
GLfloat y = static_cast<GLfloat>(c.y);
GLfloat z = static_cast<GLfloat>(c.z);
GLfloat w = static_cast<GLfloat>(c.w);
- parse_error::ParseError result =
- ValidateUniform4f(this, immediate_data_size, location, x, y, z, w);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glUniform4f(location, x, y, z, w);
return parse_error::kParseNoError;
}
@@ -2009,10 +2004,8 @@
GLsizei count = static_cast<GLsizei>(c.count);
const GLfloat* v = GetSharedMemoryAs<const GLfloat*>(
c.v_shm_id, c.v_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateUniform4fv(this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glUniform4fv(location, count, v);
return parse_error::kParseNoError;
@@ -2023,13 +2016,21 @@
GLint location = static_cast<GLint>(c.location);
GLsizei count = static_cast<GLsizei>(c.count);
const GLfloat* v = GetImmediateDataAs<const GLfloat*>(c);
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<Uniform4fvImmediate>(
+ immediate_data_size, count, sizeof(GLfloat), 4)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateUniform4fvImmediate(
- this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<Uniform4fvImmediate>(
+ immediate_data_size, count, sizeof(GLfloat), 4)) {
+ return parse_error::kParseOutOfBounds;
+ }
glUniform4fv(location, count, v);
return parse_error::kParseNoError;
}
@@ -2041,11 +2042,6 @@
GLint y = static_cast<GLint>(c.y);
GLint z = static_cast<GLint>(c.z);
GLint w = static_cast<GLint>(c.w);
- parse_error::ParseError result =
- ValidateUniform4i(this, immediate_data_size, location, x, y, z, w);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glUniform4i(location, x, y, z, w);
return parse_error::kParseNoError;
}
@@ -2056,10 +2052,8 @@
GLsizei count = static_cast<GLsizei>(c.count);
const GLint* v = GetSharedMemoryAs<const GLint*>(
c.v_shm_id, c.v_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateUniform4iv(this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glUniform4iv(location, count, v);
return parse_error::kParseNoError;
@@ -2070,13 +2064,21 @@
GLint location = static_cast<GLint>(c.location);
GLsizei count = static_cast<GLsizei>(c.count);
const GLint* v = GetImmediateDataAs<const GLint*>(c);
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<Uniform4ivImmediate>(
+ immediate_data_size, count, sizeof(GLint), 4)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateUniform4ivImmediate(
- this, immediate_data_size, location, count, v);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (v == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<Uniform4ivImmediate>(
+ immediate_data_size, count, sizeof(GLint), 4)) {
+ return parse_error::kParseOutOfBounds;
+ }
glUniform4iv(location, count, v);
return parse_error::kParseNoError;
}
@@ -2088,11 +2090,8 @@
GLboolean transpose = static_cast<GLboolean>(c.transpose);
const GLfloat* value = GetSharedMemoryAs<const GLfloat*>(
c.value_shm_id, c.value_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateUniformMatrix2fv(
- this, immediate_data_size, location, count, transpose, value);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (value == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glUniformMatrix2fv(location, count, transpose, value);
return parse_error::kParseNoError;
@@ -2104,13 +2103,21 @@
GLsizei count = static_cast<GLsizei>(c.count);
GLboolean transpose = static_cast<GLboolean>(c.transpose);
const GLfloat* value = GetImmediateDataAs<const GLfloat*>(c);
+ if (value == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<UniformMatrix2fvImmediate>(
+ immediate_data_size, count, sizeof(GLfloat), 4)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateUniformMatrix2fvImmediate(
- this, immediate_data_size, location, count, transpose, value);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (value == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<UniformMatrix2fvImmediate>(
+ immediate_data_size, count, sizeof(GLfloat), 4)) {
+ return parse_error::kParseOutOfBounds;
+ }
glUniformMatrix2fv(location, count, transpose, value);
return parse_error::kParseNoError;
}
@@ -2122,11 +2129,8 @@
GLboolean transpose = static_cast<GLboolean>(c.transpose);
const GLfloat* value = GetSharedMemoryAs<const GLfloat*>(
c.value_shm_id, c.value_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateUniformMatrix3fv(
- this, immediate_data_size, location, count, transpose, value);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (value == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glUniformMatrix3fv(location, count, transpose, value);
return parse_error::kParseNoError;
@@ -2138,13 +2142,21 @@
GLsizei count = static_cast<GLsizei>(c.count);
GLboolean transpose = static_cast<GLboolean>(c.transpose);
const GLfloat* value = GetImmediateDataAs<const GLfloat*>(c);
+ if (value == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<UniformMatrix3fvImmediate>(
+ immediate_data_size, count, sizeof(GLfloat), 9)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateUniformMatrix3fvImmediate(
- this, immediate_data_size, location, count, transpose, value);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (value == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<UniformMatrix3fvImmediate>(
+ immediate_data_size, count, sizeof(GLfloat), 9)) {
+ return parse_error::kParseOutOfBounds;
+ }
glUniformMatrix3fv(location, count, transpose, value);
return parse_error::kParseNoError;
}
@@ -2156,11 +2168,8 @@
GLboolean transpose = static_cast<GLboolean>(c.transpose);
const GLfloat* value = GetSharedMemoryAs<const GLfloat*>(
c.value_shm_id, c.value_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateUniformMatrix4fv(
- this, immediate_data_size, location, count, transpose, value);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (value == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glUniformMatrix4fv(location, count, transpose, value);
return parse_error::kParseNoError;
@@ -2172,13 +2181,21 @@
GLsizei count = static_cast<GLsizei>(c.count);
GLboolean transpose = static_cast<GLboolean>(c.transpose);
const GLfloat* value = GetImmediateDataAs<const GLfloat*>(c);
+ if (value == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<UniformMatrix4fvImmediate>(
+ immediate_data_size, count, sizeof(GLfloat), 16)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateUniformMatrix4fvImmediate(
- this, immediate_data_size, location, count, transpose, value);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (value == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<UniformMatrix4fvImmediate>(
+ immediate_data_size, count, sizeof(GLfloat), 16)) {
+ return parse_error::kParseOutOfBounds;
+ }
glUniformMatrix4fv(location, count, transpose, value);
return parse_error::kParseNoError;
}
@@ -2190,11 +2207,6 @@
SetGLError(GL_INVALID_VALUE);
return parse_error::kParseNoError;
}
- parse_error::ParseError result =
- ValidateUseProgram(this, immediate_data_size, program);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glUseProgram(program);
return parse_error::kParseNoError;
}
@@ -2206,11 +2218,6 @@
SetGLError(GL_INVALID_VALUE);
return parse_error::kParseNoError;
}
- parse_error::ParseError result =
- ValidateValidateProgram(this, immediate_data_size, program);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glValidateProgram(program);
return parse_error::kParseNoError;
}
@@ -2219,11 +2226,6 @@
uint32 immediate_data_size, const gles2::VertexAttrib1f& c) {
GLuint indx = static_cast<GLuint>(c.indx);
GLfloat x = static_cast<GLfloat>(c.x);
- parse_error::ParseError result =
- ValidateVertexAttrib1f(this, immediate_data_size, indx, x);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glVertexAttrib1f(indx, x);
return parse_error::kParseNoError;
}
@@ -2233,10 +2235,8 @@
GLuint indx = static_cast<GLuint>(c.indx);
const GLfloat* values = GetSharedMemoryAs<const GLfloat*>(
c.values_shm_id, c.values_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateVertexAttrib1fv(this, immediate_data_size, indx, values);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (values == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glVertexAttrib1fv(indx, values);
return parse_error::kParseNoError;
@@ -2246,13 +2246,21 @@
uint32 immediate_data_size, const gles2::VertexAttrib1fvImmediate& c) {
GLuint indx = static_cast<GLuint>(c.indx);
const GLfloat* values = GetImmediateDataAs<const GLfloat*>(c);
+ if (values == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<VertexAttrib1fvImmediate>(
+ immediate_data_size, 1, sizeof(GLfloat), 1)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateVertexAttrib1fvImmediate(
- this, immediate_data_size, indx, values);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (values == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<VertexAttrib1fvImmediate>(
+ immediate_data_size, 1, sizeof(GLfloat), 1)) {
+ return parse_error::kParseOutOfBounds;
+ }
glVertexAttrib1fv(indx, values);
return parse_error::kParseNoError;
}
@@ -2262,11 +2270,6 @@
GLuint indx = static_cast<GLuint>(c.indx);
GLfloat x = static_cast<GLfloat>(c.x);
GLfloat y = static_cast<GLfloat>(c.y);
- parse_error::ParseError result =
- ValidateVertexAttrib2f(this, immediate_data_size, indx, x, y);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glVertexAttrib2f(indx, x, y);
return parse_error::kParseNoError;
}
@@ -2276,10 +2279,8 @@
GLuint indx = static_cast<GLuint>(c.indx);
const GLfloat* values = GetSharedMemoryAs<const GLfloat*>(
c.values_shm_id, c.values_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateVertexAttrib2fv(this, immediate_data_size, indx, values);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (values == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glVertexAttrib2fv(indx, values);
return parse_error::kParseNoError;
@@ -2289,13 +2290,21 @@
uint32 immediate_data_size, const gles2::VertexAttrib2fvImmediate& c) {
GLuint indx = static_cast<GLuint>(c.indx);
const GLfloat* values = GetImmediateDataAs<const GLfloat*>(c);
+ if (values == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<VertexAttrib2fvImmediate>(
+ immediate_data_size, 1, sizeof(GLfloat), 2)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateVertexAttrib2fvImmediate(
- this, immediate_data_size, indx, values);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (values == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<VertexAttrib2fvImmediate>(
+ immediate_data_size, 1, sizeof(GLfloat), 2)) {
+ return parse_error::kParseOutOfBounds;
+ }
glVertexAttrib2fv(indx, values);
return parse_error::kParseNoError;
}
@@ -2306,11 +2315,6 @@
GLfloat x = static_cast<GLfloat>(c.x);
GLfloat y = static_cast<GLfloat>(c.y);
GLfloat z = static_cast<GLfloat>(c.z);
- parse_error::ParseError result =
- ValidateVertexAttrib3f(this, immediate_data_size, indx, x, y, z);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glVertexAttrib3f(indx, x, y, z);
return parse_error::kParseNoError;
}
@@ -2320,10 +2324,8 @@
GLuint indx = static_cast<GLuint>(c.indx);
const GLfloat* values = GetSharedMemoryAs<const GLfloat*>(
c.values_shm_id, c.values_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateVertexAttrib3fv(this, immediate_data_size, indx, values);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (values == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glVertexAttrib3fv(indx, values);
return parse_error::kParseNoError;
@@ -2333,13 +2335,21 @@
uint32 immediate_data_size, const gles2::VertexAttrib3fvImmediate& c) {
GLuint indx = static_cast<GLuint>(c.indx);
const GLfloat* values = GetImmediateDataAs<const GLfloat*>(c);
+ if (values == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<VertexAttrib3fvImmediate>(
+ immediate_data_size, 1, sizeof(GLfloat), 3)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateVertexAttrib3fvImmediate(
- this, immediate_data_size, indx, values);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (values == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<VertexAttrib3fvImmediate>(
+ immediate_data_size, 1, sizeof(GLfloat), 3)) {
+ return parse_error::kParseOutOfBounds;
+ }
glVertexAttrib3fv(indx, values);
return parse_error::kParseNoError;
}
@@ -2351,11 +2361,6 @@
GLfloat y = static_cast<GLfloat>(c.y);
GLfloat z = static_cast<GLfloat>(c.z);
GLfloat w = static_cast<GLfloat>(c.w);
- parse_error::ParseError result =
- ValidateVertexAttrib4f(this, immediate_data_size, indx, x, y, z, w);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glVertexAttrib4f(indx, x, y, z, w);
return parse_error::kParseNoError;
}
@@ -2365,10 +2370,8 @@
GLuint indx = static_cast<GLuint>(c.indx);
const GLfloat* values = GetSharedMemoryAs<const GLfloat*>(
c.values_shm_id, c.values_shm_offset, 0 /* TODO(gman): size */);
- parse_error::ParseError result =
- ValidateVertexAttrib4fv(this, immediate_data_size, indx, values);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (values == NULL) {
+ return parse_error::kParseOutOfBounds;
}
glVertexAttrib4fv(indx, values);
return parse_error::kParseNoError;
@@ -2378,13 +2381,21 @@
uint32 immediate_data_size, const gles2::VertexAttrib4fvImmediate& c) {
GLuint indx = static_cast<GLuint>(c.indx);
const GLfloat* values = GetImmediateDataAs<const GLfloat*>(c);
+ if (values == NULL) {
+ return parse_error::kParseOutOfBounds;
+ }
+ if (!CheckImmediateDataSize<VertexAttrib4fvImmediate>(
+ immediate_data_size, 1, sizeof(GLfloat), 4)) {
+ return parse_error::kParseOutOfBounds;
+ }
// Immediate version.
- parse_error::ParseError result =
- ValidateVertexAttrib4fvImmediate(
- this, immediate_data_size, indx, values);
- if (result != parse_error::kParseNoError) {
- return result;
+ if (values == NULL) {
+ return parse_error::kParseOutOfBounds;
}
+ if (!CheckImmediateDataSize<VertexAttrib4fvImmediate>(
+ immediate_data_size, 1, sizeof(GLfloat), 4)) {
+ return parse_error::kParseOutOfBounds;
+ }
glVertexAttrib4fv(indx, values);
return parse_error::kParseNoError;
}
@@ -2395,22 +2406,12 @@
GLint y = static_cast<GLint>(c.y);
GLsizei width = static_cast<GLsizei>(c.width);
GLsizei height = static_cast<GLsizei>(c.height);
- parse_error::ParseError result =
- ValidateViewport(this, immediate_data_size, x, y, width, height);
- if (result != parse_error::kParseNoError) {
- return result;
- }
glViewport(x, y, width, height);
return parse_error::kParseNoError;
}
parse_error::ParseError GLES2DecoderImpl::HandleSwapBuffers(
uint32 immediate_data_size, const gles2::SwapBuffers& c) {
- parse_error::ParseError result =
- ValidateSwapBuffers(this, immediate_data_size);
- if (result != parse_error::kParseNoError) {
- return result;
- }
DoSwapBuffers();
return parse_error::kParseNoError;
}
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | gpu/command_buffer/service/gles2_cmd_decoder_validate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698