Index: gpu/command_buffer/service/gles2_cmd_decoder.cc |
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
index 132e84f6d1b004fac55c8734a39129c754a3f84e..291d3f8738d5b18bd1a0c794d40f6e3a5b15d94e 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
@@ -9082,7 +9082,7 @@ error::Error GLES2DecoderImpl::HandlePixelStorei(uint32 immediate_data_size, |
const gles2::cmds::PixelStorei& c = |
*static_cast<const gles2::cmds::PixelStorei*>(cmd_data); |
GLenum pname = c.pname; |
- GLenum param = c.param; |
+ GLint param = c.param; |
if (!validators_->pixel_store.IsValid(pname)) { |
LOCAL_SET_GL_ERROR_INVALID_ENUM("glPixelStorei", pname, "pname"); |
return error::kNoError; |
@@ -9090,30 +9090,67 @@ error::Error GLES2DecoderImpl::HandlePixelStorei(uint32 immediate_data_size, |
switch (pname) { |
case GL_PACK_ALIGNMENT: |
case GL_UNPACK_ALIGNMENT: |
- if (!validators_->pixel_store_alignment.IsValid(param)) { |
- LOCAL_SET_GL_ERROR( |
- GL_INVALID_VALUE, "glPixelStorei", "param GL_INVALID_VALUE"); |
- return error::kNoError; |
- } |
- break; |
+ if (!validators_->pixel_store_alignment.IsValid(param)) { |
+ LOCAL_SET_GL_ERROR( |
+ GL_INVALID_VALUE, "glPixelStorei", "invalid param"); |
+ return error::kNoError; |
+ } |
+ break; |
+ case GL_PACK_ROW_LENGTH: |
+ case GL_PACK_SKIP_PIXELS: |
+ case GL_PACK_SKIP_ROWS: |
+ case GL_UNPACK_ROW_LENGTH: |
+ case GL_UNPACK_IMAGE_HEIGHT: |
+ case GL_UNPACK_SKIP_PIXELS: |
+ case GL_UNPACK_SKIP_ROWS: |
+ case GL_UNPACK_SKIP_IMAGES: |
+ if (param < 0) { |
+ LOCAL_SET_GL_ERROR( |
+ GL_INVALID_VALUE, "glPixelStorei", "invalid param"); |
+ return error::kNoError; |
+ } |
default: |
- break; |
+ break; |
} |
glPixelStorei(pname, param); |
switch (pname) { |
case GL_PACK_ALIGNMENT: |
- state_.pack_alignment = param; |
- break; |
+ state_.pack_alignment = param; |
+ break; |
case GL_PACK_REVERSE_ROW_ORDER_ANGLE: |
- state_.pack_reverse_row_order = (param != 0); |
- break; |
+ state_.pack_reverse_row_order = (param != 0); |
+ break; |
+ case GL_PACK_ROW_LENGTH: |
+ state_.pack_row_length = param; |
+ break; |
+ case GL_PACK_SKIP_PIXELS: |
+ state_.pack_skip_pixels = param; |
+ break; |
+ case GL_PACK_SKIP_ROWS: |
+ state_.pack_skip_rows = param; |
+ break; |
case GL_UNPACK_ALIGNMENT: |
- state_.unpack_alignment = param; |
- break; |
+ state_.unpack_alignment = param; |
+ break; |
+ case GL_UNPACK_ROW_LENGTH: |
+ state_.unpack_row_length = param; |
+ break; |
+ case GL_UNPACK_IMAGE_HEIGHT: |
+ state_.unpack_image_height = param; |
+ break; |
+ case GL_UNPACK_SKIP_PIXELS: |
+ state_.unpack_skip_pixels = param; |
+ break; |
+ case GL_UNPACK_SKIP_ROWS: |
+ state_.unpack_skip_rows = param; |
+ break; |
+ case GL_UNPACK_SKIP_IMAGES: |
+ state_.unpack_skip_images = param; |
+ break; |
default: |
- // Validation should have prevented us from getting here. |
- NOTREACHED(); |
- break; |
+ // Validation should have prevented us from getting here. |
+ NOTREACHED(); |
+ break; |
} |
return error::kNoError; |
} |