Index: gpu/command_buffer/service/gles2_cmd_decoder.cc |
=================================================================== |
--- gpu/command_buffer/service/gles2_cmd_decoder.cc (revision 49807) |
+++ gpu/command_buffer/service/gles2_cmd_decoder.cc (working copy) |
@@ -1039,8 +1039,6 @@ |
error::Error* error, GLuint* service_id, void** result, |
GLenum* result_type); |
- bool ValidateGLenumCompressedTextureInternalFormat(GLenum format); |
- |
// Generate a member function prototype for each command in an automated and |
// typesafe way. |
#define GLES2_CMD_OP(name) \ |
@@ -1146,6 +1144,9 @@ |
bool use_shader_translator_; |
+ // Cached from the context group. |
+ const Validators* validators_; |
+ |
DISALLOW_COPY_AND_ASSIGN(GLES2DecoderImpl); |
}; |
@@ -1407,7 +1408,8 @@ |
black_2d_texture_id_(0), |
black_cube_texture_id_(0), |
anti_aliased_(false), |
- use_shader_translator_(true) { |
+ use_shader_translator_(true), |
+ validators_(group->validators()) { |
attrib_0_value_.v[0] = 0.0f; |
attrib_0_value_.v[1] = 0.0f; |
attrib_0_value_.v[2] = 0.0f; |
@@ -2028,11 +2030,6 @@ |
return true; |
} |
-bool GLES2DecoderImpl::ValidateGLenumCompressedTextureInternalFormat(GLenum) { |
- // TODO(gman): Add support for compressed texture formats. |
- return false; |
-} |
- |
void GLES2DecoderImpl::DoActiveTexture(GLenum texture_unit) { |
GLuint texture_index = texture_unit - GL_TEXTURE0; |
if (texture_index > group_->max_texture_units()) { |
@@ -3155,11 +3152,11 @@ |
SetGLError(GL_INVALID_VALUE, "glDrawElements: offset < 0"); |
return error::kNoError; |
} |
- if (!ValidateGLenumDrawMode(mode)) { |
+ if (!validators_->draw_mode.IsValid(mode)) { |
SetGLError(GL_INVALID_ENUM, "glDrawElements: mode GL_INVALID_ENUM"); |
return error::kNoError; |
} |
- if (!ValidateGLenumIndexType(type)) { |
+ if (!validators_->index_type.IsValid(type)) { |
SetGLError(GL_INVALID_ENUM, "glDrawElements: type GL_INVALID_ENUM"); |
return error::kNoError; |
} |
@@ -3685,12 +3682,12 @@ |
GLsizei stride = c.stride; |
GLsizei offset = c.offset; |
const void* ptr = reinterpret_cast<const void*>(offset); |
- if (!ValidateGLenumVertexAttribType(type)) { |
+ if (!validators_->vertex_attrib_type.IsValid(type)) { |
SetGLError(GL_INVALID_ENUM, |
"glVertexAttribPointer: type GL_INVALID_ENUM"); |
return error::kNoError; |
} |
- if (!ValidateGLintVertexAttribSize(size)) { |
+ if (!validators_->vertex_attrib_size.IsValid(size)) { |
SetGLError(GL_INVALID_ENUM, |
"glVertexAttribPointer: size GL_INVALID_VALUE"); |
return error::kNoError; |
@@ -3759,11 +3756,11 @@ |
return error::kOutOfBounds; |
} |
- if (!ValidateGLenumReadPixelFormat(format)) { |
+ if (!validators_->read_pixel_format.IsValid(format)) { |
SetGLError(GL_INVALID_ENUM, "glReadPixels: format GL_INVALID_ENUM"); |
return error::kNoError; |
} |
- if (!ValidateGLenumPixelType(type)) { |
+ if (!validators_->pixel_type.IsValid(type)) { |
SetGLError(GL_INVALID_ENUM, "glReadPixels: type GL_INVALID_ENUM"); |
return error::kNoError; |
} |
@@ -3846,11 +3843,11 @@ |
uint32 immediate_data_size, const gles2::PixelStorei& c) { |
GLenum pname = c.pname; |
GLenum param = c.param; |
- if (!ValidateGLenumPixelStore(pname)) { |
+ if (!validators_->pixel_store.IsValid(pname)) { |
SetGLError(GL_INVALID_ENUM, "glPixelStorei: pname GL_INVALID_ENUM"); |
return error::kNoError; |
} |
- if (!ValidateGLintPixelStoreAlignment(param)) { |
+ if (!validators_->pixel_store_alignment.IsValid(param)) { |
SetGLError(GL_INVALID_VALUE, "glPixelSTore: param GL_INVALID_VALUE"); |
return error::kNoError; |
} |
@@ -4006,7 +4003,7 @@ |
error::Error GLES2DecoderImpl::HandleGetString( |
uint32 immediate_data_size, const gles2::GetString& c) { |
GLenum name = static_cast<GLenum>(c.name); |
- if (!ValidateGLenumStringType(name)) { |
+ if (!validators_->string_type.IsValid(name)) { |
SetGLError(GL_INVALID_ENUM, "glGetString: name GL_INVALID_ENUM"); |
return error::kNoError; |
} |
@@ -4033,11 +4030,11 @@ |
void GLES2DecoderImpl::DoBufferData( |
GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage) { |
- if (!ValidateGLenumBufferTarget(target)) { |
+ if (!validators_->buffer_target.IsValid(target)) { |
SetGLError(GL_INVALID_ENUM, "glBufferData: target GL_INVALID_ENUM"); |
return; |
} |
- if (!ValidateGLenumBufferUsage(usage)) { |
+ if (!validators_->buffer_usage.IsValid(usage)) { |
SetGLError(GL_INVALID_ENUM, "glBufferData: usage GL_INVALID_ENUM"); |
return; |
} |
@@ -4124,12 +4121,13 @@ |
GLsizei image_size, |
const void* data) { |
// TODO(gman): Validate image_size is correct for width, height and format. |
- if (!ValidateGLenumTextureTarget(target)) { |
+ if (!validators_->texture_target.IsValid(target)) { |
SetGLError(GL_INVALID_ENUM, |
"glCompressedTexImage2D: target GL_INVALID_ENUM"); |
return error::kNoError; |
} |
- if (!ValidateGLenumCompressedTextureInternalFormat(internal_format)) { |
+ if (!validators_->compressed_texture_format.IsValid( |
+ internal_format)) { |
SetGLError(GL_INVALID_ENUM, |
"glCompressedTexImage2D: internal_format GL_INVALID_ENUM"); |
return error::kNoError; |
@@ -4228,11 +4226,16 @@ |
uint32 data_size = bucket->size(); |
GLsizei imageSize = data_size; |
const void* data = bucket->GetData(0, data_size); |
- if (!ValidateGLenumTextureTarget(target)) { |
+ if (!validators_->texture_target.IsValid(target)) { |
SetGLError( |
GL_INVALID_ENUM, "glCompressedTexSubImage2D: target GL_INVALID_ENUM"); |
return error::kNoError; |
} |
+ if (!validators_->compressed_texture_format.IsValid(format)) { |
+ SetGLError(GL_INVALID_ENUM, |
+ "glCompressedTexSubImage2D: format GL_INVALID_ENUM"); |
+ return error::kNoError; |
+ } |
if (width < 0) { |
SetGLError(GL_INVALID_VALUE, "glCompressedTexSubImage2D: width < 0"); |
return error::kNoError; |
@@ -4261,20 +4264,20 @@ |
GLenum type, |
const void* pixels, |
uint32 pixels_size) { |
- if (!ValidateGLenumTextureTarget(target)) { |
+ if (!validators_->texture_target.IsValid(target)) { |
SetGLError(GL_INVALID_ENUM, "glTexImage2D: target GL_INVALID_ENUM"); |
return error::kNoError; |
} |
- if (!ValidateGLenumTextureFormat(internal_format)) { |
+ if (!validators_->texture_format.IsValid(internal_format)) { |
SetGLError(GL_INVALID_ENUM, |
"glTexImage2D: internal_format GL_INVALID_ENUM"); |
return error::kNoError; |
} |
- if (!ValidateGLenumTextureFormat(format)) { |
+ if (!validators_->texture_format.IsValid(format)) { |
SetGLError(GL_INVALID_ENUM, "glTexImage2D: format GL_INVALID_ENUM"); |
return error::kNoError; |
} |
- if (!ValidateGLenumPixelType(type)) { |
+ if (!validators_->pixel_type.IsValid(type)) { |
SetGLError(GL_INVALID_ENUM, "glTexImage2D: type GL_INVALID_ENUM"); |
return error::kNoError; |
} |
@@ -4373,7 +4376,7 @@ |
if (result->size != 0) { |
return error::kInvalidArguments; |
} |
- if (!ValidateGLenumVertexPointer(pname)) { |
+ if (!validators_->vertex_pointer.IsValid(pname)) { |
SetGLError(GL_INVALID_ENUM, |
"glGetVertexAttribPointerv: pname GL_INVALID_ENUM"); |
return error::kNoError; |
@@ -4503,12 +4506,12 @@ |
if (result->success != 0) { |
return error::kInvalidArguments; |
} |
- if (!ValidateGLenumShaderType(shader_type)) { |
+ if (!validators_->shader_type.IsValid(shader_type)) { |
SetGLError(GL_INVALID_ENUM, |
"glGetShaderPrecisionFormat: shader_type GL_INVALID_ENUM"); |
return error::kNoError; |
} |
- if (!ValidateGLenumShaderPrecision(precision_type)) { |
+ if (!validators_->shader_precision.IsValid(precision_type)) { |
SetGLError(GL_INVALID_ENUM, |
"glGetShaderPrecisionFormat: precision_type GL_INVALID_ENUM"); |
return error::kNoError; |