| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // This file is auto-generated from | 5 // This file is auto-generated from |
| 6 // gpu/command_buffer/build_gles2_cmd_buffer.py | 6 // gpu/command_buffer/build_gles2_cmd_buffer.py |
| 7 // DO NOT EDIT! | 7 // DO NOT EDIT! |
| 8 | 8 |
| 9 // It is included by gles2_cmd_decoder.cc | 9 // It is included by gles2_cmd_decoder.cc |
| 10 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ | 10 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ |
| 11 #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ | 11 #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ |
| 12 | 12 |
| 13 error::Error GLES2DecoderImpl::HandleActiveTexture( | 13 error::Error GLES2DecoderImpl::HandleActiveTexture( |
| 14 uint32 immediate_data_size, const gles2::ActiveTexture& c) { | 14 uint32 immediate_data_size, const gles2::cmds::ActiveTexture& c) { |
| 15 GLenum texture = static_cast<GLenum>(c.texture); | 15 GLenum texture = static_cast<GLenum>(c.texture); |
| 16 DoActiveTexture(texture); | 16 DoActiveTexture(texture); |
| 17 return error::kNoError; | 17 return error::kNoError; |
| 18 } | 18 } |
| 19 | 19 |
| 20 error::Error GLES2DecoderImpl::HandleAttachShader( | 20 error::Error GLES2DecoderImpl::HandleAttachShader( |
| 21 uint32 immediate_data_size, const gles2::AttachShader& c) { | 21 uint32 immediate_data_size, const gles2::cmds::AttachShader& c) { |
| 22 GLuint program = c.program; | 22 GLuint program = c.program; |
| 23 GLuint shader = c.shader; | 23 GLuint shader = c.shader; |
| 24 DoAttachShader(program, shader); | 24 DoAttachShader(program, shader); |
| 25 return error::kNoError; | 25 return error::kNoError; |
| 26 } | 26 } |
| 27 | 27 |
| 28 error::Error GLES2DecoderImpl::HandleBindBuffer( | 28 error::Error GLES2DecoderImpl::HandleBindBuffer( |
| 29 uint32 immediate_data_size, const gles2::BindBuffer& c) { | 29 uint32 immediate_data_size, const gles2::cmds::BindBuffer& c) { |
| 30 GLenum target = static_cast<GLenum>(c.target); | 30 GLenum target = static_cast<GLenum>(c.target); |
| 31 GLuint buffer = c.buffer; | 31 GLuint buffer = c.buffer; |
| 32 if (!validators_->buffer_target.IsValid(target)) { | 32 if (!validators_->buffer_target.IsValid(target)) { |
| 33 SetGLErrorInvalidEnum("glBindBuffer", target, "target"); | 33 SetGLErrorInvalidEnum("glBindBuffer", target, "target"); |
| 34 return error::kNoError; | 34 return error::kNoError; |
| 35 } | 35 } |
| 36 DoBindBuffer(target, buffer); | 36 DoBindBuffer(target, buffer); |
| 37 return error::kNoError; | 37 return error::kNoError; |
| 38 } | 38 } |
| 39 | 39 |
| 40 error::Error GLES2DecoderImpl::HandleBindFramebuffer( | 40 error::Error GLES2DecoderImpl::HandleBindFramebuffer( |
| 41 uint32 immediate_data_size, const gles2::BindFramebuffer& c) { | 41 uint32 immediate_data_size, const gles2::cmds::BindFramebuffer& c) { |
| 42 GLenum target = static_cast<GLenum>(c.target); | 42 GLenum target = static_cast<GLenum>(c.target); |
| 43 GLuint framebuffer = c.framebuffer; | 43 GLuint framebuffer = c.framebuffer; |
| 44 if (!validators_->frame_buffer_target.IsValid(target)) { | 44 if (!validators_->frame_buffer_target.IsValid(target)) { |
| 45 SetGLErrorInvalidEnum("glBindFramebuffer", target, "target"); | 45 SetGLErrorInvalidEnum("glBindFramebuffer", target, "target"); |
| 46 return error::kNoError; | 46 return error::kNoError; |
| 47 } | 47 } |
| 48 DoBindFramebuffer(target, framebuffer); | 48 DoBindFramebuffer(target, framebuffer); |
| 49 return error::kNoError; | 49 return error::kNoError; |
| 50 } | 50 } |
| 51 | 51 |
| 52 error::Error GLES2DecoderImpl::HandleBindRenderbuffer( | 52 error::Error GLES2DecoderImpl::HandleBindRenderbuffer( |
| 53 uint32 immediate_data_size, const gles2::BindRenderbuffer& c) { | 53 uint32 immediate_data_size, const gles2::cmds::BindRenderbuffer& c) { |
| 54 GLenum target = static_cast<GLenum>(c.target); | 54 GLenum target = static_cast<GLenum>(c.target); |
| 55 GLuint renderbuffer = c.renderbuffer; | 55 GLuint renderbuffer = c.renderbuffer; |
| 56 if (!validators_->render_buffer_target.IsValid(target)) { | 56 if (!validators_->render_buffer_target.IsValid(target)) { |
| 57 SetGLErrorInvalidEnum("glBindRenderbuffer", target, "target"); | 57 SetGLErrorInvalidEnum("glBindRenderbuffer", target, "target"); |
| 58 return error::kNoError; | 58 return error::kNoError; |
| 59 } | 59 } |
| 60 DoBindRenderbuffer(target, renderbuffer); | 60 DoBindRenderbuffer(target, renderbuffer); |
| 61 return error::kNoError; | 61 return error::kNoError; |
| 62 } | 62 } |
| 63 | 63 |
| 64 error::Error GLES2DecoderImpl::HandleBindTexture( | 64 error::Error GLES2DecoderImpl::HandleBindTexture( |
| 65 uint32 immediate_data_size, const gles2::BindTexture& c) { | 65 uint32 immediate_data_size, const gles2::cmds::BindTexture& c) { |
| 66 GLenum target = static_cast<GLenum>(c.target); | 66 GLenum target = static_cast<GLenum>(c.target); |
| 67 GLuint texture = c.texture; | 67 GLuint texture = c.texture; |
| 68 if (!validators_->texture_bind_target.IsValid(target)) { | 68 if (!validators_->texture_bind_target.IsValid(target)) { |
| 69 SetGLErrorInvalidEnum("glBindTexture", target, "target"); | 69 SetGLErrorInvalidEnum("glBindTexture", target, "target"); |
| 70 return error::kNoError; | 70 return error::kNoError; |
| 71 } | 71 } |
| 72 DoBindTexture(target, texture); | 72 DoBindTexture(target, texture); |
| 73 return error::kNoError; | 73 return error::kNoError; |
| 74 } | 74 } |
| 75 | 75 |
| 76 error::Error GLES2DecoderImpl::HandleBlendColor( | 76 error::Error GLES2DecoderImpl::HandleBlendColor( |
| 77 uint32 immediate_data_size, const gles2::BlendColor& c) { | 77 uint32 immediate_data_size, const gles2::cmds::BlendColor& c) { |
| 78 GLclampf red = static_cast<GLclampf>(c.red); | 78 GLclampf red = static_cast<GLclampf>(c.red); |
| 79 GLclampf green = static_cast<GLclampf>(c.green); | 79 GLclampf green = static_cast<GLclampf>(c.green); |
| 80 GLclampf blue = static_cast<GLclampf>(c.blue); | 80 GLclampf blue = static_cast<GLclampf>(c.blue); |
| 81 GLclampf alpha = static_cast<GLclampf>(c.alpha); | 81 GLclampf alpha = static_cast<GLclampf>(c.alpha); |
| 82 if (state_.blend_color_red != red || | 82 if (state_.blend_color_red != red || |
| 83 state_.blend_color_green != green || | 83 state_.blend_color_green != green || |
| 84 state_.blend_color_blue != blue || | 84 state_.blend_color_blue != blue || |
| 85 state_.blend_color_alpha != alpha) { | 85 state_.blend_color_alpha != alpha) { |
| 86 state_.blend_color_red = red; | 86 state_.blend_color_red = red; |
| 87 state_.blend_color_green = green; | 87 state_.blend_color_green = green; |
| 88 state_.blend_color_blue = blue; | 88 state_.blend_color_blue = blue; |
| 89 state_.blend_color_alpha = alpha; | 89 state_.blend_color_alpha = alpha; |
| 90 glBlendColor(red, green, blue, alpha); | 90 glBlendColor(red, green, blue, alpha); |
| 91 } | 91 } |
| 92 return error::kNoError; | 92 return error::kNoError; |
| 93 } | 93 } |
| 94 | 94 |
| 95 error::Error GLES2DecoderImpl::HandleBlendEquation( | 95 error::Error GLES2DecoderImpl::HandleBlendEquation( |
| 96 uint32 immediate_data_size, const gles2::BlendEquation& c) { | 96 uint32 immediate_data_size, const gles2::cmds::BlendEquation& c) { |
| 97 GLenum mode = static_cast<GLenum>(c.mode); | 97 GLenum mode = static_cast<GLenum>(c.mode); |
| 98 if (!validators_->equation.IsValid(mode)) { | 98 if (!validators_->equation.IsValid(mode)) { |
| 99 SetGLErrorInvalidEnum("glBlendEquation", mode, "mode"); | 99 SetGLErrorInvalidEnum("glBlendEquation", mode, "mode"); |
| 100 return error::kNoError; | 100 return error::kNoError; |
| 101 } | 101 } |
| 102 if (state_.blend_equation_rgb != mode || | 102 if (state_.blend_equation_rgb != mode || |
| 103 state_.blend_equation_alpha != mode) { | 103 state_.blend_equation_alpha != mode) { |
| 104 state_.blend_equation_rgb = mode; | 104 state_.blend_equation_rgb = mode; |
| 105 state_.blend_equation_alpha = mode; | 105 state_.blend_equation_alpha = mode; |
| 106 glBlendEquation(mode); | 106 glBlendEquation(mode); |
| 107 } | 107 } |
| 108 return error::kNoError; | 108 return error::kNoError; |
| 109 } | 109 } |
| 110 | 110 |
| 111 error::Error GLES2DecoderImpl::HandleBlendEquationSeparate( | 111 error::Error GLES2DecoderImpl::HandleBlendEquationSeparate( |
| 112 uint32 immediate_data_size, const gles2::BlendEquationSeparate& c) { | 112 uint32 immediate_data_size, const gles2::cmds::BlendEquationSeparate& c) { |
| 113 GLenum modeRGB = static_cast<GLenum>(c.modeRGB); | 113 GLenum modeRGB = static_cast<GLenum>(c.modeRGB); |
| 114 GLenum modeAlpha = static_cast<GLenum>(c.modeAlpha); | 114 GLenum modeAlpha = static_cast<GLenum>(c.modeAlpha); |
| 115 if (!validators_->equation.IsValid(modeRGB)) { | 115 if (!validators_->equation.IsValid(modeRGB)) { |
| 116 SetGLErrorInvalidEnum("glBlendEquationSeparate", modeRGB, "modeRGB"); | 116 SetGLErrorInvalidEnum("glBlendEquationSeparate", modeRGB, "modeRGB"); |
| 117 return error::kNoError; | 117 return error::kNoError; |
| 118 } | 118 } |
| 119 if (!validators_->equation.IsValid(modeAlpha)) { | 119 if (!validators_->equation.IsValid(modeAlpha)) { |
| 120 SetGLErrorInvalidEnum("glBlendEquationSeparate", modeAlpha, "modeAlpha"); | 120 SetGLErrorInvalidEnum("glBlendEquationSeparate", modeAlpha, "modeAlpha"); |
| 121 return error::kNoError; | 121 return error::kNoError; |
| 122 } | 122 } |
| 123 if (state_.blend_equation_rgb != modeRGB || | 123 if (state_.blend_equation_rgb != modeRGB || |
| 124 state_.blend_equation_alpha != modeAlpha) { | 124 state_.blend_equation_alpha != modeAlpha) { |
| 125 state_.blend_equation_rgb = modeRGB; | 125 state_.blend_equation_rgb = modeRGB; |
| 126 state_.blend_equation_alpha = modeAlpha; | 126 state_.blend_equation_alpha = modeAlpha; |
| 127 glBlendEquationSeparate(modeRGB, modeAlpha); | 127 glBlendEquationSeparate(modeRGB, modeAlpha); |
| 128 } | 128 } |
| 129 return error::kNoError; | 129 return error::kNoError; |
| 130 } | 130 } |
| 131 | 131 |
| 132 error::Error GLES2DecoderImpl::HandleBlendFunc( | 132 error::Error GLES2DecoderImpl::HandleBlendFunc( |
| 133 uint32 immediate_data_size, const gles2::BlendFunc& c) { | 133 uint32 immediate_data_size, const gles2::cmds::BlendFunc& c) { |
| 134 GLenum sfactor = static_cast<GLenum>(c.sfactor); | 134 GLenum sfactor = static_cast<GLenum>(c.sfactor); |
| 135 GLenum dfactor = static_cast<GLenum>(c.dfactor); | 135 GLenum dfactor = static_cast<GLenum>(c.dfactor); |
| 136 if (!validators_->src_blend_factor.IsValid(sfactor)) { | 136 if (!validators_->src_blend_factor.IsValid(sfactor)) { |
| 137 SetGLErrorInvalidEnum("glBlendFunc", sfactor, "sfactor"); | 137 SetGLErrorInvalidEnum("glBlendFunc", sfactor, "sfactor"); |
| 138 return error::kNoError; | 138 return error::kNoError; |
| 139 } | 139 } |
| 140 if (!validators_->dst_blend_factor.IsValid(dfactor)) { | 140 if (!validators_->dst_blend_factor.IsValid(dfactor)) { |
| 141 SetGLErrorInvalidEnum("glBlendFunc", dfactor, "dfactor"); | 141 SetGLErrorInvalidEnum("glBlendFunc", dfactor, "dfactor"); |
| 142 return error::kNoError; | 142 return error::kNoError; |
| 143 } | 143 } |
| 144 if (state_.blend_source_rgb != sfactor || | 144 if (state_.blend_source_rgb != sfactor || |
| 145 state_.blend_dest_rgb != dfactor || | 145 state_.blend_dest_rgb != dfactor || |
| 146 state_.blend_source_alpha != sfactor || | 146 state_.blend_source_alpha != sfactor || |
| 147 state_.blend_dest_alpha != dfactor) { | 147 state_.blend_dest_alpha != dfactor) { |
| 148 state_.blend_source_rgb = sfactor; | 148 state_.blend_source_rgb = sfactor; |
| 149 state_.blend_dest_rgb = dfactor; | 149 state_.blend_dest_rgb = dfactor; |
| 150 state_.blend_source_alpha = sfactor; | 150 state_.blend_source_alpha = sfactor; |
| 151 state_.blend_dest_alpha = dfactor; | 151 state_.blend_dest_alpha = dfactor; |
| 152 glBlendFunc(sfactor, dfactor); | 152 glBlendFunc(sfactor, dfactor); |
| 153 } | 153 } |
| 154 return error::kNoError; | 154 return error::kNoError; |
| 155 } | 155 } |
| 156 | 156 |
| 157 error::Error GLES2DecoderImpl::HandleBlendFuncSeparate( | 157 error::Error GLES2DecoderImpl::HandleBlendFuncSeparate( |
| 158 uint32 immediate_data_size, const gles2::BlendFuncSeparate& c) { | 158 uint32 immediate_data_size, const gles2::cmds::BlendFuncSeparate& c) { |
| 159 GLenum srcRGB = static_cast<GLenum>(c.srcRGB); | 159 GLenum srcRGB = static_cast<GLenum>(c.srcRGB); |
| 160 GLenum dstRGB = static_cast<GLenum>(c.dstRGB); | 160 GLenum dstRGB = static_cast<GLenum>(c.dstRGB); |
| 161 GLenum srcAlpha = static_cast<GLenum>(c.srcAlpha); | 161 GLenum srcAlpha = static_cast<GLenum>(c.srcAlpha); |
| 162 GLenum dstAlpha = static_cast<GLenum>(c.dstAlpha); | 162 GLenum dstAlpha = static_cast<GLenum>(c.dstAlpha); |
| 163 if (!validators_->src_blend_factor.IsValid(srcRGB)) { | 163 if (!validators_->src_blend_factor.IsValid(srcRGB)) { |
| 164 SetGLErrorInvalidEnum("glBlendFuncSeparate", srcRGB, "srcRGB"); | 164 SetGLErrorInvalidEnum("glBlendFuncSeparate", srcRGB, "srcRGB"); |
| 165 return error::kNoError; | 165 return error::kNoError; |
| 166 } | 166 } |
| 167 if (!validators_->dst_blend_factor.IsValid(dstRGB)) { | 167 if (!validators_->dst_blend_factor.IsValid(dstRGB)) { |
| 168 SetGLErrorInvalidEnum("glBlendFuncSeparate", dstRGB, "dstRGB"); | 168 SetGLErrorInvalidEnum("glBlendFuncSeparate", dstRGB, "dstRGB"); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 183 state_.blend_source_rgb = srcRGB; | 183 state_.blend_source_rgb = srcRGB; |
| 184 state_.blend_dest_rgb = dstRGB; | 184 state_.blend_dest_rgb = dstRGB; |
| 185 state_.blend_source_alpha = srcAlpha; | 185 state_.blend_source_alpha = srcAlpha; |
| 186 state_.blend_dest_alpha = dstAlpha; | 186 state_.blend_dest_alpha = dstAlpha; |
| 187 glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); | 187 glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); |
| 188 } | 188 } |
| 189 return error::kNoError; | 189 return error::kNoError; |
| 190 } | 190 } |
| 191 | 191 |
| 192 error::Error GLES2DecoderImpl::HandleBufferSubData( | 192 error::Error GLES2DecoderImpl::HandleBufferSubData( |
| 193 uint32 immediate_data_size, const gles2::BufferSubData& c) { | 193 uint32 immediate_data_size, const gles2::cmds::BufferSubData& c) { |
| 194 GLenum target = static_cast<GLenum>(c.target); | 194 GLenum target = static_cast<GLenum>(c.target); |
| 195 GLintptr offset = static_cast<GLintptr>(c.offset); | 195 GLintptr offset = static_cast<GLintptr>(c.offset); |
| 196 GLsizeiptr size = static_cast<GLsizeiptr>(c.size); | 196 GLsizeiptr size = static_cast<GLsizeiptr>(c.size); |
| 197 uint32 data_size = size; | 197 uint32 data_size = size; |
| 198 const void* data = GetSharedMemoryAs<const void*>( | 198 const void* data = GetSharedMemoryAs<const void*>( |
| 199 c.data_shm_id, c.data_shm_offset, data_size); | 199 c.data_shm_id, c.data_shm_offset, data_size); |
| 200 if (!validators_->buffer_target.IsValid(target)) { | 200 if (!validators_->buffer_target.IsValid(target)) { |
| 201 SetGLErrorInvalidEnum("glBufferSubData", target, "target"); | 201 SetGLErrorInvalidEnum("glBufferSubData", target, "target"); |
| 202 return error::kNoError; | 202 return error::kNoError; |
| 203 } | 203 } |
| 204 if (size < 0) { | 204 if (size < 0) { |
| 205 SetGLError(GL_INVALID_VALUE, "glBufferSubData", "size < 0"); | 205 SetGLError(GL_INVALID_VALUE, "glBufferSubData", "size < 0"); |
| 206 return error::kNoError; | 206 return error::kNoError; |
| 207 } | 207 } |
| 208 if (data == NULL) { | 208 if (data == NULL) { |
| 209 return error::kOutOfBounds; | 209 return error::kOutOfBounds; |
| 210 } | 210 } |
| 211 DoBufferSubData(target, offset, size, data); | 211 DoBufferSubData(target, offset, size, data); |
| 212 return error::kNoError; | 212 return error::kNoError; |
| 213 } | 213 } |
| 214 | 214 |
| 215 error::Error GLES2DecoderImpl::HandleBufferSubDataImmediate( | 215 error::Error GLES2DecoderImpl::HandleBufferSubDataImmediate( |
| 216 uint32 immediate_data_size, const gles2::BufferSubDataImmediate& c) { | 216 uint32 immediate_data_size, const gles2::cmds::BufferSubDataImmediate& c) { |
| 217 GLenum target = static_cast<GLenum>(c.target); | 217 GLenum target = static_cast<GLenum>(c.target); |
| 218 GLintptr offset = static_cast<GLintptr>(c.offset); | 218 GLintptr offset = static_cast<GLintptr>(c.offset); |
| 219 GLsizeiptr size = static_cast<GLsizeiptr>(c.size); | 219 GLsizeiptr size = static_cast<GLsizeiptr>(c.size); |
| 220 uint32 data_size = size; | 220 uint32 data_size = size; |
| 221 const void* data = GetImmediateDataAs<const void*>( | 221 const void* data = GetImmediateDataAs<const void*>( |
| 222 c, data_size, immediate_data_size); | 222 c, data_size, immediate_data_size); |
| 223 if (!validators_->buffer_target.IsValid(target)) { | 223 if (!validators_->buffer_target.IsValid(target)) { |
| 224 SetGLErrorInvalidEnum("glBufferSubData", target, "target"); | 224 SetGLErrorInvalidEnum("glBufferSubData", target, "target"); |
| 225 return error::kNoError; | 225 return error::kNoError; |
| 226 } | 226 } |
| 227 if (size < 0) { | 227 if (size < 0) { |
| 228 SetGLError(GL_INVALID_VALUE, "glBufferSubData", "size < 0"); | 228 SetGLError(GL_INVALID_VALUE, "glBufferSubData", "size < 0"); |
| 229 return error::kNoError; | 229 return error::kNoError; |
| 230 } | 230 } |
| 231 if (data == NULL) { | 231 if (data == NULL) { |
| 232 return error::kOutOfBounds; | 232 return error::kOutOfBounds; |
| 233 } | 233 } |
| 234 DoBufferSubData(target, offset, size, data); | 234 DoBufferSubData(target, offset, size, data); |
| 235 return error::kNoError; | 235 return error::kNoError; |
| 236 } | 236 } |
| 237 | 237 |
| 238 error::Error GLES2DecoderImpl::HandleCheckFramebufferStatus( | 238 error::Error GLES2DecoderImpl::HandleCheckFramebufferStatus( |
| 239 uint32 immediate_data_size, const gles2::CheckFramebufferStatus& c) { | 239 uint32 immediate_data_size, const gles2::cmds::CheckFramebufferStatus& c) { |
| 240 GLenum target = static_cast<GLenum>(c.target); | 240 GLenum target = static_cast<GLenum>(c.target); |
| 241 typedef CheckFramebufferStatus::Result Result; | 241 typedef cmds::CheckFramebufferStatus::Result Result; |
| 242 Result* result_dst = GetSharedMemoryAs<Result*>( | 242 Result* result_dst = GetSharedMemoryAs<Result*>( |
| 243 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); | 243 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); |
| 244 if (!result_dst) { | 244 if (!result_dst) { |
| 245 return error::kOutOfBounds; | 245 return error::kOutOfBounds; |
| 246 } | 246 } |
| 247 if (!validators_->frame_buffer_target.IsValid(target)) { | 247 if (!validators_->frame_buffer_target.IsValid(target)) { |
| 248 SetGLErrorInvalidEnum("glCheckFramebufferStatus", target, "target"); | 248 SetGLErrorInvalidEnum("glCheckFramebufferStatus", target, "target"); |
| 249 return error::kNoError; | 249 return error::kNoError; |
| 250 } | 250 } |
| 251 *result_dst = DoCheckFramebufferStatus(target); | 251 *result_dst = DoCheckFramebufferStatus(target); |
| 252 return error::kNoError; | 252 return error::kNoError; |
| 253 } | 253 } |
| 254 | 254 |
| 255 error::Error GLES2DecoderImpl::HandleClear( | 255 error::Error GLES2DecoderImpl::HandleClear( |
| 256 uint32 immediate_data_size, const gles2::Clear& c) { | 256 uint32 immediate_data_size, const gles2::cmds::Clear& c) { |
| 257 if (ShouldDeferDraws()) | 257 if (ShouldDeferDraws()) |
| 258 return error::kDeferCommandUntilLater; | 258 return error::kDeferCommandUntilLater; |
| 259 GLbitfield mask = static_cast<GLbitfield>(c.mask); | 259 GLbitfield mask = static_cast<GLbitfield>(c.mask); |
| 260 DoClear(mask); | 260 DoClear(mask); |
| 261 return error::kNoError; | 261 return error::kNoError; |
| 262 } | 262 } |
| 263 | 263 |
| 264 error::Error GLES2DecoderImpl::HandleClearColor( | 264 error::Error GLES2DecoderImpl::HandleClearColor( |
| 265 uint32 immediate_data_size, const gles2::ClearColor& c) { | 265 uint32 immediate_data_size, const gles2::cmds::ClearColor& c) { |
| 266 GLclampf red = static_cast<GLclampf>(c.red); | 266 GLclampf red = static_cast<GLclampf>(c.red); |
| 267 GLclampf green = static_cast<GLclampf>(c.green); | 267 GLclampf green = static_cast<GLclampf>(c.green); |
| 268 GLclampf blue = static_cast<GLclampf>(c.blue); | 268 GLclampf blue = static_cast<GLclampf>(c.blue); |
| 269 GLclampf alpha = static_cast<GLclampf>(c.alpha); | 269 GLclampf alpha = static_cast<GLclampf>(c.alpha); |
| 270 if (state_.color_clear_red != red || | 270 if (state_.color_clear_red != red || |
| 271 state_.color_clear_green != green || | 271 state_.color_clear_green != green || |
| 272 state_.color_clear_blue != blue || | 272 state_.color_clear_blue != blue || |
| 273 state_.color_clear_alpha != alpha) { | 273 state_.color_clear_alpha != alpha) { |
| 274 state_.color_clear_red = red; | 274 state_.color_clear_red = red; |
| 275 state_.color_clear_green = green; | 275 state_.color_clear_green = green; |
| 276 state_.color_clear_blue = blue; | 276 state_.color_clear_blue = blue; |
| 277 state_.color_clear_alpha = alpha; | 277 state_.color_clear_alpha = alpha; |
| 278 glClearColor(red, green, blue, alpha); | 278 glClearColor(red, green, blue, alpha); |
| 279 } | 279 } |
| 280 return error::kNoError; | 280 return error::kNoError; |
| 281 } | 281 } |
| 282 | 282 |
| 283 error::Error GLES2DecoderImpl::HandleClearDepthf( | 283 error::Error GLES2DecoderImpl::HandleClearDepthf( |
| 284 uint32 immediate_data_size, const gles2::ClearDepthf& c) { | 284 uint32 immediate_data_size, const gles2::cmds::ClearDepthf& c) { |
| 285 GLclampf depth = static_cast<GLclampf>(c.depth); | 285 GLclampf depth = static_cast<GLclampf>(c.depth); |
| 286 if (state_.depth_clear != depth) { | 286 if (state_.depth_clear != depth) { |
| 287 state_.depth_clear = depth; | 287 state_.depth_clear = depth; |
| 288 glClearDepth(depth); | 288 glClearDepth(depth); |
| 289 } | 289 } |
| 290 return error::kNoError; | 290 return error::kNoError; |
| 291 } | 291 } |
| 292 | 292 |
| 293 error::Error GLES2DecoderImpl::HandleClearStencil( | 293 error::Error GLES2DecoderImpl::HandleClearStencil( |
| 294 uint32 immediate_data_size, const gles2::ClearStencil& c) { | 294 uint32 immediate_data_size, const gles2::cmds::ClearStencil& c) { |
| 295 GLint s = static_cast<GLint>(c.s); | 295 GLint s = static_cast<GLint>(c.s); |
| 296 if (state_.stencil_clear != s) { | 296 if (state_.stencil_clear != s) { |
| 297 state_.stencil_clear = s; | 297 state_.stencil_clear = s; |
| 298 glClearStencil(s); | 298 glClearStencil(s); |
| 299 } | 299 } |
| 300 return error::kNoError; | 300 return error::kNoError; |
| 301 } | 301 } |
| 302 | 302 |
| 303 error::Error GLES2DecoderImpl::HandleColorMask( | 303 error::Error GLES2DecoderImpl::HandleColorMask( |
| 304 uint32 immediate_data_size, const gles2::ColorMask& c) { | 304 uint32 immediate_data_size, const gles2::cmds::ColorMask& c) { |
| 305 GLboolean red = static_cast<GLboolean>(c.red); | 305 GLboolean red = static_cast<GLboolean>(c.red); |
| 306 GLboolean green = static_cast<GLboolean>(c.green); | 306 GLboolean green = static_cast<GLboolean>(c.green); |
| 307 GLboolean blue = static_cast<GLboolean>(c.blue); | 307 GLboolean blue = static_cast<GLboolean>(c.blue); |
| 308 GLboolean alpha = static_cast<GLboolean>(c.alpha); | 308 GLboolean alpha = static_cast<GLboolean>(c.alpha); |
| 309 if (state_.color_mask_red != red || | 309 if (state_.color_mask_red != red || |
| 310 state_.color_mask_green != green || | 310 state_.color_mask_green != green || |
| 311 state_.color_mask_blue != blue || | 311 state_.color_mask_blue != blue || |
| 312 state_.color_mask_alpha != alpha) { | 312 state_.color_mask_alpha != alpha) { |
| 313 state_.color_mask_red = red; | 313 state_.color_mask_red = red; |
| 314 state_.color_mask_green = green; | 314 state_.color_mask_green = green; |
| 315 state_.color_mask_blue = blue; | 315 state_.color_mask_blue = blue; |
| 316 state_.color_mask_alpha = alpha; | 316 state_.color_mask_alpha = alpha; |
| 317 clear_state_dirty_ = true; | 317 clear_state_dirty_ = true; |
| 318 } | 318 } |
| 319 return error::kNoError; | 319 return error::kNoError; |
| 320 } | 320 } |
| 321 | 321 |
| 322 error::Error GLES2DecoderImpl::HandleCompileShader( | 322 error::Error GLES2DecoderImpl::HandleCompileShader( |
| 323 uint32 immediate_data_size, const gles2::CompileShader& c) { | 323 uint32 immediate_data_size, const gles2::cmds::CompileShader& c) { |
| 324 GLuint shader = c.shader; | 324 GLuint shader = c.shader; |
| 325 DoCompileShader(shader); | 325 DoCompileShader(shader); |
| 326 return error::kNoError; | 326 return error::kNoError; |
| 327 } | 327 } |
| 328 | 328 |
| 329 error::Error GLES2DecoderImpl::HandleCompressedTexSubImage2D( | 329 error::Error GLES2DecoderImpl::HandleCompressedTexSubImage2D( |
| 330 uint32 immediate_data_size, const gles2::CompressedTexSubImage2D& c) { | 330 uint32 immediate_data_size, |
| 331 const gles2::cmds::CompressedTexSubImage2D& c) { |
| 331 GLenum target = static_cast<GLenum>(c.target); | 332 GLenum target = static_cast<GLenum>(c.target); |
| 332 GLint level = static_cast<GLint>(c.level); | 333 GLint level = static_cast<GLint>(c.level); |
| 333 GLint xoffset = static_cast<GLint>(c.xoffset); | 334 GLint xoffset = static_cast<GLint>(c.xoffset); |
| 334 GLint yoffset = static_cast<GLint>(c.yoffset); | 335 GLint yoffset = static_cast<GLint>(c.yoffset); |
| 335 GLsizei width = static_cast<GLsizei>(c.width); | 336 GLsizei width = static_cast<GLsizei>(c.width); |
| 336 GLsizei height = static_cast<GLsizei>(c.height); | 337 GLsizei height = static_cast<GLsizei>(c.height); |
| 337 GLenum format = static_cast<GLenum>(c.format); | 338 GLenum format = static_cast<GLenum>(c.format); |
| 338 GLsizei imageSize = static_cast<GLsizei>(c.imageSize); | 339 GLsizei imageSize = static_cast<GLsizei>(c.imageSize); |
| 339 uint32 data_size = imageSize; | 340 uint32 data_size = imageSize; |
| 340 const void* data = GetSharedMemoryAs<const void*>( | 341 const void* data = GetSharedMemoryAs<const void*>( |
| (...skipping 21 matching lines...) Expand all Loading... |
| 362 if (data == NULL) { | 363 if (data == NULL) { |
| 363 return error::kOutOfBounds; | 364 return error::kOutOfBounds; |
| 364 } | 365 } |
| 365 DoCompressedTexSubImage2D( | 366 DoCompressedTexSubImage2D( |
| 366 target, level, xoffset, yoffset, width, height, format, imageSize, data); | 367 target, level, xoffset, yoffset, width, height, format, imageSize, data); |
| 367 return error::kNoError; | 368 return error::kNoError; |
| 368 } | 369 } |
| 369 | 370 |
| 370 error::Error GLES2DecoderImpl::HandleCompressedTexSubImage2DImmediate( | 371 error::Error GLES2DecoderImpl::HandleCompressedTexSubImage2DImmediate( |
| 371 uint32 immediate_data_size, | 372 uint32 immediate_data_size, |
| 372 const gles2::CompressedTexSubImage2DImmediate& c) { | 373 const gles2::cmds::CompressedTexSubImage2DImmediate& c) { |
| 373 GLenum target = static_cast<GLenum>(c.target); | 374 GLenum target = static_cast<GLenum>(c.target); |
| 374 GLint level = static_cast<GLint>(c.level); | 375 GLint level = static_cast<GLint>(c.level); |
| 375 GLint xoffset = static_cast<GLint>(c.xoffset); | 376 GLint xoffset = static_cast<GLint>(c.xoffset); |
| 376 GLint yoffset = static_cast<GLint>(c.yoffset); | 377 GLint yoffset = static_cast<GLint>(c.yoffset); |
| 377 GLsizei width = static_cast<GLsizei>(c.width); | 378 GLsizei width = static_cast<GLsizei>(c.width); |
| 378 GLsizei height = static_cast<GLsizei>(c.height); | 379 GLsizei height = static_cast<GLsizei>(c.height); |
| 379 GLenum format = static_cast<GLenum>(c.format); | 380 GLenum format = static_cast<GLenum>(c.format); |
| 380 GLsizei imageSize = static_cast<GLsizei>(c.imageSize); | 381 GLsizei imageSize = static_cast<GLsizei>(c.imageSize); |
| 381 uint32 data_size = imageSize; | 382 uint32 data_size = imageSize; |
| 382 const void* data = GetImmediateDataAs<const void*>( | 383 const void* data = GetImmediateDataAs<const void*>( |
| (...skipping 20 matching lines...) Expand all Loading... |
| 403 } | 404 } |
| 404 if (data == NULL) { | 405 if (data == NULL) { |
| 405 return error::kOutOfBounds; | 406 return error::kOutOfBounds; |
| 406 } | 407 } |
| 407 DoCompressedTexSubImage2D( | 408 DoCompressedTexSubImage2D( |
| 408 target, level, xoffset, yoffset, width, height, format, imageSize, data); | 409 target, level, xoffset, yoffset, width, height, format, imageSize, data); |
| 409 return error::kNoError; | 410 return error::kNoError; |
| 410 } | 411 } |
| 411 | 412 |
| 412 error::Error GLES2DecoderImpl::HandleCopyTexImage2D( | 413 error::Error GLES2DecoderImpl::HandleCopyTexImage2D( |
| 413 uint32 immediate_data_size, const gles2::CopyTexImage2D& c) { | 414 uint32 immediate_data_size, const gles2::cmds::CopyTexImage2D& c) { |
| 414 if (ShouldDeferReads()) | 415 if (ShouldDeferReads()) |
| 415 return error::kDeferCommandUntilLater; | 416 return error::kDeferCommandUntilLater; |
| 416 GLenum target = static_cast<GLenum>(c.target); | 417 GLenum target = static_cast<GLenum>(c.target); |
| 417 GLint level = static_cast<GLint>(c.level); | 418 GLint level = static_cast<GLint>(c.level); |
| 418 GLenum internalformat = static_cast<GLenum>(c.internalformat); | 419 GLenum internalformat = static_cast<GLenum>(c.internalformat); |
| 419 GLint x = static_cast<GLint>(c.x); | 420 GLint x = static_cast<GLint>(c.x); |
| 420 GLint y = static_cast<GLint>(c.y); | 421 GLint y = static_cast<GLint>(c.y); |
| 421 GLsizei width = static_cast<GLsizei>(c.width); | 422 GLsizei width = static_cast<GLsizei>(c.width); |
| 422 GLsizei height = static_cast<GLsizei>(c.height); | 423 GLsizei height = static_cast<GLsizei>(c.height); |
| 423 GLint border = static_cast<GLint>(c.border); | 424 GLint border = static_cast<GLint>(c.border); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 441 if (!validators_->texture_border.IsValid(border)) { | 442 if (!validators_->texture_border.IsValid(border)) { |
| 442 SetGLError( | 443 SetGLError( |
| 443 GL_INVALID_VALUE, "glCopyTexImage2D", "border GL_INVALID_VALUE"); | 444 GL_INVALID_VALUE, "glCopyTexImage2D", "border GL_INVALID_VALUE"); |
| 444 return error::kNoError; | 445 return error::kNoError; |
| 445 } | 446 } |
| 446 DoCopyTexImage2D(target, level, internalformat, x, y, width, height, border); | 447 DoCopyTexImage2D(target, level, internalformat, x, y, width, height, border); |
| 447 return error::kNoError; | 448 return error::kNoError; |
| 448 } | 449 } |
| 449 | 450 |
| 450 error::Error GLES2DecoderImpl::HandleCopyTexSubImage2D( | 451 error::Error GLES2DecoderImpl::HandleCopyTexSubImage2D( |
| 451 uint32 immediate_data_size, const gles2::CopyTexSubImage2D& c) { | 452 uint32 immediate_data_size, const gles2::cmds::CopyTexSubImage2D& c) { |
| 452 if (ShouldDeferReads()) | 453 if (ShouldDeferReads()) |
| 453 return error::kDeferCommandUntilLater; | 454 return error::kDeferCommandUntilLater; |
| 454 GLenum target = static_cast<GLenum>(c.target); | 455 GLenum target = static_cast<GLenum>(c.target); |
| 455 GLint level = static_cast<GLint>(c.level); | 456 GLint level = static_cast<GLint>(c.level); |
| 456 GLint xoffset = static_cast<GLint>(c.xoffset); | 457 GLint xoffset = static_cast<GLint>(c.xoffset); |
| 457 GLint yoffset = static_cast<GLint>(c.yoffset); | 458 GLint yoffset = static_cast<GLint>(c.yoffset); |
| 458 GLint x = static_cast<GLint>(c.x); | 459 GLint x = static_cast<GLint>(c.x); |
| 459 GLint y = static_cast<GLint>(c.y); | 460 GLint y = static_cast<GLint>(c.y); |
| 460 GLsizei width = static_cast<GLsizei>(c.width); | 461 GLsizei width = static_cast<GLsizei>(c.width); |
| 461 GLsizei height = static_cast<GLsizei>(c.height); | 462 GLsizei height = static_cast<GLsizei>(c.height); |
| 462 if (!validators_->texture_target.IsValid(target)) { | 463 if (!validators_->texture_target.IsValid(target)) { |
| 463 SetGLErrorInvalidEnum("glCopyTexSubImage2D", target, "target"); | 464 SetGLErrorInvalidEnum("glCopyTexSubImage2D", target, "target"); |
| 464 return error::kNoError; | 465 return error::kNoError; |
| 465 } | 466 } |
| 466 if (width < 0) { | 467 if (width < 0) { |
| 467 SetGLError(GL_INVALID_VALUE, "glCopyTexSubImage2D", "width < 0"); | 468 SetGLError(GL_INVALID_VALUE, "glCopyTexSubImage2D", "width < 0"); |
| 468 return error::kNoError; | 469 return error::kNoError; |
| 469 } | 470 } |
| 470 if (height < 0) { | 471 if (height < 0) { |
| 471 SetGLError(GL_INVALID_VALUE, "glCopyTexSubImage2D", "height < 0"); | 472 SetGLError(GL_INVALID_VALUE, "glCopyTexSubImage2D", "height < 0"); |
| 472 return error::kNoError; | 473 return error::kNoError; |
| 473 } | 474 } |
| 474 DoCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); | 475 DoCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); |
| 475 return error::kNoError; | 476 return error::kNoError; |
| 476 } | 477 } |
| 477 | 478 |
| 478 error::Error GLES2DecoderImpl::HandleCreateProgram( | 479 error::Error GLES2DecoderImpl::HandleCreateProgram( |
| 479 uint32 immediate_data_size, const gles2::CreateProgram& c) { | 480 uint32 immediate_data_size, const gles2::cmds::CreateProgram& c) { |
| 480 uint32 client_id = c.client_id; | 481 uint32 client_id = c.client_id; |
| 481 if (!CreateProgramHelper(client_id)) { | 482 if (!CreateProgramHelper(client_id)) { |
| 482 return error::kInvalidArguments; | 483 return error::kInvalidArguments; |
| 483 } | 484 } |
| 484 return error::kNoError; | 485 return error::kNoError; |
| 485 } | 486 } |
| 486 | 487 |
| 487 error::Error GLES2DecoderImpl::HandleCreateShader( | 488 error::Error GLES2DecoderImpl::HandleCreateShader( |
| 488 uint32 immediate_data_size, const gles2::CreateShader& c) { | 489 uint32 immediate_data_size, const gles2::cmds::CreateShader& c) { |
| 489 GLenum type = static_cast<GLenum>(c.type); | 490 GLenum type = static_cast<GLenum>(c.type); |
| 490 if (!validators_->shader_type.IsValid(type)) { | 491 if (!validators_->shader_type.IsValid(type)) { |
| 491 SetGLErrorInvalidEnum("glCreateShader", type, "type"); | 492 SetGLErrorInvalidEnum("glCreateShader", type, "type"); |
| 492 return error::kNoError; | 493 return error::kNoError; |
| 493 } | 494 } |
| 494 uint32 client_id = c.client_id; | 495 uint32 client_id = c.client_id; |
| 495 if (!CreateShaderHelper(type, client_id)) { | 496 if (!CreateShaderHelper(type, client_id)) { |
| 496 return error::kInvalidArguments; | 497 return error::kInvalidArguments; |
| 497 } | 498 } |
| 498 return error::kNoError; | 499 return error::kNoError; |
| 499 } | 500 } |
| 500 | 501 |
| 501 error::Error GLES2DecoderImpl::HandleCullFace( | 502 error::Error GLES2DecoderImpl::HandleCullFace( |
| 502 uint32 immediate_data_size, const gles2::CullFace& c) { | 503 uint32 immediate_data_size, const gles2::cmds::CullFace& c) { |
| 503 GLenum mode = static_cast<GLenum>(c.mode); | 504 GLenum mode = static_cast<GLenum>(c.mode); |
| 504 if (!validators_->face_type.IsValid(mode)) { | 505 if (!validators_->face_type.IsValid(mode)) { |
| 505 SetGLErrorInvalidEnum("glCullFace", mode, "mode"); | 506 SetGLErrorInvalidEnum("glCullFace", mode, "mode"); |
| 506 return error::kNoError; | 507 return error::kNoError; |
| 507 } | 508 } |
| 508 if (state_.cull_mode != mode) { | 509 if (state_.cull_mode != mode) { |
| 509 state_.cull_mode = mode; | 510 state_.cull_mode = mode; |
| 510 glCullFace(mode); | 511 glCullFace(mode); |
| 511 } | 512 } |
| 512 return error::kNoError; | 513 return error::kNoError; |
| 513 } | 514 } |
| 514 | 515 |
| 515 error::Error GLES2DecoderImpl::HandleDeleteBuffers( | 516 error::Error GLES2DecoderImpl::HandleDeleteBuffers( |
| 516 uint32 immediate_data_size, const gles2::DeleteBuffers& c) { | 517 uint32 immediate_data_size, const gles2::cmds::DeleteBuffers& c) { |
| 517 GLsizei n = static_cast<GLsizei>(c.n); | 518 GLsizei n = static_cast<GLsizei>(c.n); |
| 518 uint32 data_size; | 519 uint32 data_size; |
| 519 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 520 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 520 return error::kOutOfBounds; | 521 return error::kOutOfBounds; |
| 521 } | 522 } |
| 522 const GLuint* buffers = GetSharedMemoryAs<const GLuint*>( | 523 const GLuint* buffers = GetSharedMemoryAs<const GLuint*>( |
| 523 c.buffers_shm_id, c.buffers_shm_offset, data_size); | 524 c.buffers_shm_id, c.buffers_shm_offset, data_size); |
| 524 if (buffers == NULL) { | 525 if (buffers == NULL) { |
| 525 return error::kOutOfBounds; | 526 return error::kOutOfBounds; |
| 526 } | 527 } |
| 527 DeleteBuffersHelper(n, buffers); | 528 DeleteBuffersHelper(n, buffers); |
| 528 return error::kNoError; | 529 return error::kNoError; |
| 529 } | 530 } |
| 530 | 531 |
| 531 error::Error GLES2DecoderImpl::HandleDeleteBuffersImmediate( | 532 error::Error GLES2DecoderImpl::HandleDeleteBuffersImmediate( |
| 532 uint32 immediate_data_size, const gles2::DeleteBuffersImmediate& c) { | 533 uint32 immediate_data_size, const gles2::cmds::DeleteBuffersImmediate& c) { |
| 533 GLsizei n = static_cast<GLsizei>(c.n); | 534 GLsizei n = static_cast<GLsizei>(c.n); |
| 534 uint32 data_size; | 535 uint32 data_size; |
| 535 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 536 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 536 return error::kOutOfBounds; | 537 return error::kOutOfBounds; |
| 537 } | 538 } |
| 538 const GLuint* buffers = GetImmediateDataAs<const GLuint*>( | 539 const GLuint* buffers = GetImmediateDataAs<const GLuint*>( |
| 539 c, data_size, immediate_data_size); | 540 c, data_size, immediate_data_size); |
| 540 if (buffers == NULL) { | 541 if (buffers == NULL) { |
| 541 return error::kOutOfBounds; | 542 return error::kOutOfBounds; |
| 542 } | 543 } |
| 543 DeleteBuffersHelper(n, buffers); | 544 DeleteBuffersHelper(n, buffers); |
| 544 return error::kNoError; | 545 return error::kNoError; |
| 545 } | 546 } |
| 546 | 547 |
| 547 error::Error GLES2DecoderImpl::HandleDeleteFramebuffers( | 548 error::Error GLES2DecoderImpl::HandleDeleteFramebuffers( |
| 548 uint32 immediate_data_size, const gles2::DeleteFramebuffers& c) { | 549 uint32 immediate_data_size, const gles2::cmds::DeleteFramebuffers& c) { |
| 549 GLsizei n = static_cast<GLsizei>(c.n); | 550 GLsizei n = static_cast<GLsizei>(c.n); |
| 550 uint32 data_size; | 551 uint32 data_size; |
| 551 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 552 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 552 return error::kOutOfBounds; | 553 return error::kOutOfBounds; |
| 553 } | 554 } |
| 554 const GLuint* framebuffers = GetSharedMemoryAs<const GLuint*>( | 555 const GLuint* framebuffers = GetSharedMemoryAs<const GLuint*>( |
| 555 c.framebuffers_shm_id, c.framebuffers_shm_offset, data_size); | 556 c.framebuffers_shm_id, c.framebuffers_shm_offset, data_size); |
| 556 if (framebuffers == NULL) { | 557 if (framebuffers == NULL) { |
| 557 return error::kOutOfBounds; | 558 return error::kOutOfBounds; |
| 558 } | 559 } |
| 559 DeleteFramebuffersHelper(n, framebuffers); | 560 DeleteFramebuffersHelper(n, framebuffers); |
| 560 return error::kNoError; | 561 return error::kNoError; |
| 561 } | 562 } |
| 562 | 563 |
| 563 error::Error GLES2DecoderImpl::HandleDeleteFramebuffersImmediate( | 564 error::Error GLES2DecoderImpl::HandleDeleteFramebuffersImmediate( |
| 564 uint32 immediate_data_size, const gles2::DeleteFramebuffersImmediate& c) { | 565 uint32 immediate_data_size, |
| 566 const gles2::cmds::DeleteFramebuffersImmediate& c) { |
| 565 GLsizei n = static_cast<GLsizei>(c.n); | 567 GLsizei n = static_cast<GLsizei>(c.n); |
| 566 uint32 data_size; | 568 uint32 data_size; |
| 567 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 569 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 568 return error::kOutOfBounds; | 570 return error::kOutOfBounds; |
| 569 } | 571 } |
| 570 const GLuint* framebuffers = GetImmediateDataAs<const GLuint*>( | 572 const GLuint* framebuffers = GetImmediateDataAs<const GLuint*>( |
| 571 c, data_size, immediate_data_size); | 573 c, data_size, immediate_data_size); |
| 572 if (framebuffers == NULL) { | 574 if (framebuffers == NULL) { |
| 573 return error::kOutOfBounds; | 575 return error::kOutOfBounds; |
| 574 } | 576 } |
| 575 DeleteFramebuffersHelper(n, framebuffers); | 577 DeleteFramebuffersHelper(n, framebuffers); |
| 576 return error::kNoError; | 578 return error::kNoError; |
| 577 } | 579 } |
| 578 | 580 |
| 579 error::Error GLES2DecoderImpl::HandleDeleteRenderbuffers( | 581 error::Error GLES2DecoderImpl::HandleDeleteRenderbuffers( |
| 580 uint32 immediate_data_size, const gles2::DeleteRenderbuffers& c) { | 582 uint32 immediate_data_size, const gles2::cmds::DeleteRenderbuffers& c) { |
| 581 GLsizei n = static_cast<GLsizei>(c.n); | 583 GLsizei n = static_cast<GLsizei>(c.n); |
| 582 uint32 data_size; | 584 uint32 data_size; |
| 583 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 585 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 584 return error::kOutOfBounds; | 586 return error::kOutOfBounds; |
| 585 } | 587 } |
| 586 const GLuint* renderbuffers = GetSharedMemoryAs<const GLuint*>( | 588 const GLuint* renderbuffers = GetSharedMemoryAs<const GLuint*>( |
| 587 c.renderbuffers_shm_id, c.renderbuffers_shm_offset, data_size); | 589 c.renderbuffers_shm_id, c.renderbuffers_shm_offset, data_size); |
| 588 if (renderbuffers == NULL) { | 590 if (renderbuffers == NULL) { |
| 589 return error::kOutOfBounds; | 591 return error::kOutOfBounds; |
| 590 } | 592 } |
| 591 DeleteRenderbuffersHelper(n, renderbuffers); | 593 DeleteRenderbuffersHelper(n, renderbuffers); |
| 592 return error::kNoError; | 594 return error::kNoError; |
| 593 } | 595 } |
| 594 | 596 |
| 595 error::Error GLES2DecoderImpl::HandleDeleteRenderbuffersImmediate( | 597 error::Error GLES2DecoderImpl::HandleDeleteRenderbuffersImmediate( |
| 596 uint32 immediate_data_size, const gles2::DeleteRenderbuffersImmediate& c) { | 598 uint32 immediate_data_size, |
| 599 const gles2::cmds::DeleteRenderbuffersImmediate& c) { |
| 597 GLsizei n = static_cast<GLsizei>(c.n); | 600 GLsizei n = static_cast<GLsizei>(c.n); |
| 598 uint32 data_size; | 601 uint32 data_size; |
| 599 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 602 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 600 return error::kOutOfBounds; | 603 return error::kOutOfBounds; |
| 601 } | 604 } |
| 602 const GLuint* renderbuffers = GetImmediateDataAs<const GLuint*>( | 605 const GLuint* renderbuffers = GetImmediateDataAs<const GLuint*>( |
| 603 c, data_size, immediate_data_size); | 606 c, data_size, immediate_data_size); |
| 604 if (renderbuffers == NULL) { | 607 if (renderbuffers == NULL) { |
| 605 return error::kOutOfBounds; | 608 return error::kOutOfBounds; |
| 606 } | 609 } |
| 607 DeleteRenderbuffersHelper(n, renderbuffers); | 610 DeleteRenderbuffersHelper(n, renderbuffers); |
| 608 return error::kNoError; | 611 return error::kNoError; |
| 609 } | 612 } |
| 610 | 613 |
| 611 error::Error GLES2DecoderImpl::HandleDeleteTextures( | 614 error::Error GLES2DecoderImpl::HandleDeleteTextures( |
| 612 uint32 immediate_data_size, const gles2::DeleteTextures& c) { | 615 uint32 immediate_data_size, const gles2::cmds::DeleteTextures& c) { |
| 613 GLsizei n = static_cast<GLsizei>(c.n); | 616 GLsizei n = static_cast<GLsizei>(c.n); |
| 614 uint32 data_size; | 617 uint32 data_size; |
| 615 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 618 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 616 return error::kOutOfBounds; | 619 return error::kOutOfBounds; |
| 617 } | 620 } |
| 618 const GLuint* textures = GetSharedMemoryAs<const GLuint*>( | 621 const GLuint* textures = GetSharedMemoryAs<const GLuint*>( |
| 619 c.textures_shm_id, c.textures_shm_offset, data_size); | 622 c.textures_shm_id, c.textures_shm_offset, data_size); |
| 620 if (textures == NULL) { | 623 if (textures == NULL) { |
| 621 return error::kOutOfBounds; | 624 return error::kOutOfBounds; |
| 622 } | 625 } |
| 623 DeleteTexturesHelper(n, textures); | 626 DeleteTexturesHelper(n, textures); |
| 624 return error::kNoError; | 627 return error::kNoError; |
| 625 } | 628 } |
| 626 | 629 |
| 627 error::Error GLES2DecoderImpl::HandleDeleteTexturesImmediate( | 630 error::Error GLES2DecoderImpl::HandleDeleteTexturesImmediate( |
| 628 uint32 immediate_data_size, const gles2::DeleteTexturesImmediate& c) { | 631 uint32 immediate_data_size, |
| 632 const gles2::cmds::DeleteTexturesImmediate& c) { |
| 629 GLsizei n = static_cast<GLsizei>(c.n); | 633 GLsizei n = static_cast<GLsizei>(c.n); |
| 630 uint32 data_size; | 634 uint32 data_size; |
| 631 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 635 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 632 return error::kOutOfBounds; | 636 return error::kOutOfBounds; |
| 633 } | 637 } |
| 634 const GLuint* textures = GetImmediateDataAs<const GLuint*>( | 638 const GLuint* textures = GetImmediateDataAs<const GLuint*>( |
| 635 c, data_size, immediate_data_size); | 639 c, data_size, immediate_data_size); |
| 636 if (textures == NULL) { | 640 if (textures == NULL) { |
| 637 return error::kOutOfBounds; | 641 return error::kOutOfBounds; |
| 638 } | 642 } |
| 639 DeleteTexturesHelper(n, textures); | 643 DeleteTexturesHelper(n, textures); |
| 640 return error::kNoError; | 644 return error::kNoError; |
| 641 } | 645 } |
| 642 | 646 |
| 643 error::Error GLES2DecoderImpl::HandleDepthFunc( | 647 error::Error GLES2DecoderImpl::HandleDepthFunc( |
| 644 uint32 immediate_data_size, const gles2::DepthFunc& c) { | 648 uint32 immediate_data_size, const gles2::cmds::DepthFunc& c) { |
| 645 GLenum func = static_cast<GLenum>(c.func); | 649 GLenum func = static_cast<GLenum>(c.func); |
| 646 if (!validators_->cmp_function.IsValid(func)) { | 650 if (!validators_->cmp_function.IsValid(func)) { |
| 647 SetGLErrorInvalidEnum("glDepthFunc", func, "func"); | 651 SetGLErrorInvalidEnum("glDepthFunc", func, "func"); |
| 648 return error::kNoError; | 652 return error::kNoError; |
| 649 } | 653 } |
| 650 if (state_.depth_func != func) { | 654 if (state_.depth_func != func) { |
| 651 state_.depth_func = func; | 655 state_.depth_func = func; |
| 652 glDepthFunc(func); | 656 glDepthFunc(func); |
| 653 } | 657 } |
| 654 return error::kNoError; | 658 return error::kNoError; |
| 655 } | 659 } |
| 656 | 660 |
| 657 error::Error GLES2DecoderImpl::HandleDepthMask( | 661 error::Error GLES2DecoderImpl::HandleDepthMask( |
| 658 uint32 immediate_data_size, const gles2::DepthMask& c) { | 662 uint32 immediate_data_size, const gles2::cmds::DepthMask& c) { |
| 659 GLboolean flag = static_cast<GLboolean>(c.flag); | 663 GLboolean flag = static_cast<GLboolean>(c.flag); |
| 660 if (state_.depth_mask != flag) { | 664 if (state_.depth_mask != flag) { |
| 661 state_.depth_mask = flag; | 665 state_.depth_mask = flag; |
| 662 clear_state_dirty_ = true; | 666 clear_state_dirty_ = true; |
| 663 } | 667 } |
| 664 return error::kNoError; | 668 return error::kNoError; |
| 665 } | 669 } |
| 666 | 670 |
| 667 error::Error GLES2DecoderImpl::HandleDepthRangef( | 671 error::Error GLES2DecoderImpl::HandleDepthRangef( |
| 668 uint32 immediate_data_size, const gles2::DepthRangef& c) { | 672 uint32 immediate_data_size, const gles2::cmds::DepthRangef& c) { |
| 669 GLclampf zNear = static_cast<GLclampf>(c.zNear); | 673 GLclampf zNear = static_cast<GLclampf>(c.zNear); |
| 670 GLclampf zFar = static_cast<GLclampf>(c.zFar); | 674 GLclampf zFar = static_cast<GLclampf>(c.zFar); |
| 671 DoDepthRangef(zNear, zFar); | 675 DoDepthRangef(zNear, zFar); |
| 672 return error::kNoError; | 676 return error::kNoError; |
| 673 } | 677 } |
| 674 | 678 |
| 675 error::Error GLES2DecoderImpl::HandleDetachShader( | 679 error::Error GLES2DecoderImpl::HandleDetachShader( |
| 676 uint32 immediate_data_size, const gles2::DetachShader& c) { | 680 uint32 immediate_data_size, const gles2::cmds::DetachShader& c) { |
| 677 GLuint program = c.program; | 681 GLuint program = c.program; |
| 678 GLuint shader = c.shader; | 682 GLuint shader = c.shader; |
| 679 DoDetachShader(program, shader); | 683 DoDetachShader(program, shader); |
| 680 return error::kNoError; | 684 return error::kNoError; |
| 681 } | 685 } |
| 682 | 686 |
| 683 error::Error GLES2DecoderImpl::HandleDisable( | 687 error::Error GLES2DecoderImpl::HandleDisable( |
| 684 uint32 immediate_data_size, const gles2::Disable& c) { | 688 uint32 immediate_data_size, const gles2::cmds::Disable& c) { |
| 685 GLenum cap = static_cast<GLenum>(c.cap); | 689 GLenum cap = static_cast<GLenum>(c.cap); |
| 686 if (!validators_->capability.IsValid(cap)) { | 690 if (!validators_->capability.IsValid(cap)) { |
| 687 SetGLErrorInvalidEnum("glDisable", cap, "cap"); | 691 SetGLErrorInvalidEnum("glDisable", cap, "cap"); |
| 688 return error::kNoError; | 692 return error::kNoError; |
| 689 } | 693 } |
| 690 DoDisable(cap); | 694 DoDisable(cap); |
| 691 return error::kNoError; | 695 return error::kNoError; |
| 692 } | 696 } |
| 693 | 697 |
| 694 error::Error GLES2DecoderImpl::HandleDisableVertexAttribArray( | 698 error::Error GLES2DecoderImpl::HandleDisableVertexAttribArray( |
| 695 uint32 immediate_data_size, const gles2::DisableVertexAttribArray& c) { | 699 uint32 immediate_data_size, |
| 700 const gles2::cmds::DisableVertexAttribArray& c) { |
| 696 GLuint index = static_cast<GLuint>(c.index); | 701 GLuint index = static_cast<GLuint>(c.index); |
| 697 DoDisableVertexAttribArray(index); | 702 DoDisableVertexAttribArray(index); |
| 698 return error::kNoError; | 703 return error::kNoError; |
| 699 } | 704 } |
| 700 | 705 |
| 701 error::Error GLES2DecoderImpl::HandleEnable( | 706 error::Error GLES2DecoderImpl::HandleEnable( |
| 702 uint32 immediate_data_size, const gles2::Enable& c) { | 707 uint32 immediate_data_size, const gles2::cmds::Enable& c) { |
| 703 GLenum cap = static_cast<GLenum>(c.cap); | 708 GLenum cap = static_cast<GLenum>(c.cap); |
| 704 if (!validators_->capability.IsValid(cap)) { | 709 if (!validators_->capability.IsValid(cap)) { |
| 705 SetGLErrorInvalidEnum("glEnable", cap, "cap"); | 710 SetGLErrorInvalidEnum("glEnable", cap, "cap"); |
| 706 return error::kNoError; | 711 return error::kNoError; |
| 707 } | 712 } |
| 708 DoEnable(cap); | 713 DoEnable(cap); |
| 709 return error::kNoError; | 714 return error::kNoError; |
| 710 } | 715 } |
| 711 | 716 |
| 712 error::Error GLES2DecoderImpl::HandleEnableVertexAttribArray( | 717 error::Error GLES2DecoderImpl::HandleEnableVertexAttribArray( |
| 713 uint32 immediate_data_size, const gles2::EnableVertexAttribArray& c) { | 718 uint32 immediate_data_size, |
| 719 const gles2::cmds::EnableVertexAttribArray& c) { |
| 714 GLuint index = static_cast<GLuint>(c.index); | 720 GLuint index = static_cast<GLuint>(c.index); |
| 715 DoEnableVertexAttribArray(index); | 721 DoEnableVertexAttribArray(index); |
| 716 return error::kNoError; | 722 return error::kNoError; |
| 717 } | 723 } |
| 718 | 724 |
| 719 error::Error GLES2DecoderImpl::HandleFinish( | 725 error::Error GLES2DecoderImpl::HandleFinish( |
| 720 uint32 immediate_data_size, const gles2::Finish& c) { | 726 uint32 immediate_data_size, const gles2::cmds::Finish& c) { |
| 721 DoFinish(); | 727 DoFinish(); |
| 722 return error::kNoError; | 728 return error::kNoError; |
| 723 } | 729 } |
| 724 | 730 |
| 725 error::Error GLES2DecoderImpl::HandleFlush( | 731 error::Error GLES2DecoderImpl::HandleFlush( |
| 726 uint32 immediate_data_size, const gles2::Flush& c) { | 732 uint32 immediate_data_size, const gles2::cmds::Flush& c) { |
| 727 DoFlush(); | 733 DoFlush(); |
| 728 return error::kNoError; | 734 return error::kNoError; |
| 729 } | 735 } |
| 730 | 736 |
| 731 error::Error GLES2DecoderImpl::HandleFramebufferRenderbuffer( | 737 error::Error GLES2DecoderImpl::HandleFramebufferRenderbuffer( |
| 732 uint32 immediate_data_size, const gles2::FramebufferRenderbuffer& c) { | 738 uint32 immediate_data_size, |
| 739 const gles2::cmds::FramebufferRenderbuffer& c) { |
| 733 GLenum target = static_cast<GLenum>(c.target); | 740 GLenum target = static_cast<GLenum>(c.target); |
| 734 GLenum attachment = static_cast<GLenum>(c.attachment); | 741 GLenum attachment = static_cast<GLenum>(c.attachment); |
| 735 GLenum renderbuffertarget = static_cast<GLenum>(c.renderbuffertarget); | 742 GLenum renderbuffertarget = static_cast<GLenum>(c.renderbuffertarget); |
| 736 GLuint renderbuffer = c.renderbuffer; | 743 GLuint renderbuffer = c.renderbuffer; |
| 737 if (!validators_->frame_buffer_target.IsValid(target)) { | 744 if (!validators_->frame_buffer_target.IsValid(target)) { |
| 738 SetGLErrorInvalidEnum("glFramebufferRenderbuffer", target, "target"); | 745 SetGLErrorInvalidEnum("glFramebufferRenderbuffer", target, "target"); |
| 739 return error::kNoError; | 746 return error::kNoError; |
| 740 } | 747 } |
| 741 if (!validators_->attachment.IsValid(attachment)) { | 748 if (!validators_->attachment.IsValid(attachment)) { |
| 742 SetGLErrorInvalidEnum("glFramebufferRenderbuffer", attachment, | 749 SetGLErrorInvalidEnum("glFramebufferRenderbuffer", attachment, |
| 743 "attachment"); | 750 "attachment"); |
| 744 return error::kNoError; | 751 return error::kNoError; |
| 745 } | 752 } |
| 746 if (!validators_->render_buffer_target.IsValid(renderbuffertarget)) { | 753 if (!validators_->render_buffer_target.IsValid(renderbuffertarget)) { |
| 747 SetGLErrorInvalidEnum("glFramebufferRenderbuffer", renderbuffertarget, | 754 SetGLErrorInvalidEnum("glFramebufferRenderbuffer", renderbuffertarget, |
| 748 "renderbuffertarget"); | 755 "renderbuffertarget"); |
| 749 return error::kNoError; | 756 return error::kNoError; |
| 750 } | 757 } |
| 751 DoFramebufferRenderbuffer( | 758 DoFramebufferRenderbuffer( |
| 752 target, attachment, renderbuffertarget, renderbuffer); | 759 target, attachment, renderbuffertarget, renderbuffer); |
| 753 return error::kNoError; | 760 return error::kNoError; |
| 754 } | 761 } |
| 755 | 762 |
| 756 error::Error GLES2DecoderImpl::HandleFramebufferTexture2D( | 763 error::Error GLES2DecoderImpl::HandleFramebufferTexture2D( |
| 757 uint32 immediate_data_size, const gles2::FramebufferTexture2D& c) { | 764 uint32 immediate_data_size, const gles2::cmds::FramebufferTexture2D& c) { |
| 758 GLenum target = static_cast<GLenum>(c.target); | 765 GLenum target = static_cast<GLenum>(c.target); |
| 759 GLenum attachment = static_cast<GLenum>(c.attachment); | 766 GLenum attachment = static_cast<GLenum>(c.attachment); |
| 760 GLenum textarget = static_cast<GLenum>(c.textarget); | 767 GLenum textarget = static_cast<GLenum>(c.textarget); |
| 761 GLuint texture = c.texture; | 768 GLuint texture = c.texture; |
| 762 GLint level = static_cast<GLint>(c.level); | 769 GLint level = static_cast<GLint>(c.level); |
| 763 if (!validators_->frame_buffer_target.IsValid(target)) { | 770 if (!validators_->frame_buffer_target.IsValid(target)) { |
| 764 SetGLErrorInvalidEnum("glFramebufferTexture2D", target, "target"); | 771 SetGLErrorInvalidEnum("glFramebufferTexture2D", target, "target"); |
| 765 return error::kNoError; | 772 return error::kNoError; |
| 766 } | 773 } |
| 767 if (!validators_->attachment.IsValid(attachment)) { | 774 if (!validators_->attachment.IsValid(attachment)) { |
| 768 SetGLErrorInvalidEnum("glFramebufferTexture2D", attachment, "attachment"); | 775 SetGLErrorInvalidEnum("glFramebufferTexture2D", attachment, "attachment"); |
| 769 return error::kNoError; | 776 return error::kNoError; |
| 770 } | 777 } |
| 771 if (!validators_->texture_target.IsValid(textarget)) { | 778 if (!validators_->texture_target.IsValid(textarget)) { |
| 772 SetGLErrorInvalidEnum("glFramebufferTexture2D", textarget, "textarget"); | 779 SetGLErrorInvalidEnum("glFramebufferTexture2D", textarget, "textarget"); |
| 773 return error::kNoError; | 780 return error::kNoError; |
| 774 } | 781 } |
| 775 if (!validators_->zero_only.IsValid(level)) { | 782 if (!validators_->zero_only.IsValid(level)) { |
| 776 SetGLError( | 783 SetGLError( |
| 777 GL_INVALID_VALUE, "glFramebufferTexture2D", "level GL_INVALID_VALUE"); | 784 GL_INVALID_VALUE, "glFramebufferTexture2D", "level GL_INVALID_VALUE"); |
| 778 return error::kNoError; | 785 return error::kNoError; |
| 779 } | 786 } |
| 780 DoFramebufferTexture2D(target, attachment, textarget, texture, level); | 787 DoFramebufferTexture2D(target, attachment, textarget, texture, level); |
| 781 return error::kNoError; | 788 return error::kNoError; |
| 782 } | 789 } |
| 783 | 790 |
| 784 error::Error GLES2DecoderImpl::HandleFrontFace( | 791 error::Error GLES2DecoderImpl::HandleFrontFace( |
| 785 uint32 immediate_data_size, const gles2::FrontFace& c) { | 792 uint32 immediate_data_size, const gles2::cmds::FrontFace& c) { |
| 786 GLenum mode = static_cast<GLenum>(c.mode); | 793 GLenum mode = static_cast<GLenum>(c.mode); |
| 787 if (!validators_->face_mode.IsValid(mode)) { | 794 if (!validators_->face_mode.IsValid(mode)) { |
| 788 SetGLErrorInvalidEnum("glFrontFace", mode, "mode"); | 795 SetGLErrorInvalidEnum("glFrontFace", mode, "mode"); |
| 789 return error::kNoError; | 796 return error::kNoError; |
| 790 } | 797 } |
| 791 if (state_.front_face != mode) { | 798 if (state_.front_face != mode) { |
| 792 state_.front_face = mode; | 799 state_.front_face = mode; |
| 793 glFrontFace(mode); | 800 glFrontFace(mode); |
| 794 } | 801 } |
| 795 return error::kNoError; | 802 return error::kNoError; |
| 796 } | 803 } |
| 797 | 804 |
| 798 error::Error GLES2DecoderImpl::HandleGenBuffers( | 805 error::Error GLES2DecoderImpl::HandleGenBuffers( |
| 799 uint32 immediate_data_size, const gles2::GenBuffers& c) { | 806 uint32 immediate_data_size, const gles2::cmds::GenBuffers& c) { |
| 800 GLsizei n = static_cast<GLsizei>(c.n); | 807 GLsizei n = static_cast<GLsizei>(c.n); |
| 801 uint32 data_size; | 808 uint32 data_size; |
| 802 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 809 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 803 return error::kOutOfBounds; | 810 return error::kOutOfBounds; |
| 804 } | 811 } |
| 805 GLuint* buffers = GetSharedMemoryAs<GLuint*>( | 812 GLuint* buffers = GetSharedMemoryAs<GLuint*>( |
| 806 c.buffers_shm_id, c.buffers_shm_offset, data_size); | 813 c.buffers_shm_id, c.buffers_shm_offset, data_size); |
| 807 if (buffers == NULL) { | 814 if (buffers == NULL) { |
| 808 return error::kOutOfBounds; | 815 return error::kOutOfBounds; |
| 809 } | 816 } |
| 810 if (!GenBuffersHelper(n, buffers)) { | 817 if (!GenBuffersHelper(n, buffers)) { |
| 811 return error::kInvalidArguments; | 818 return error::kInvalidArguments; |
| 812 } | 819 } |
| 813 return error::kNoError; | 820 return error::kNoError; |
| 814 } | 821 } |
| 815 | 822 |
| 816 error::Error GLES2DecoderImpl::HandleGenBuffersImmediate( | 823 error::Error GLES2DecoderImpl::HandleGenBuffersImmediate( |
| 817 uint32 immediate_data_size, const gles2::GenBuffersImmediate& c) { | 824 uint32 immediate_data_size, const gles2::cmds::GenBuffersImmediate& c) { |
| 818 GLsizei n = static_cast<GLsizei>(c.n); | 825 GLsizei n = static_cast<GLsizei>(c.n); |
| 819 uint32 data_size; | 826 uint32 data_size; |
| 820 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 827 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 821 return error::kOutOfBounds; | 828 return error::kOutOfBounds; |
| 822 } | 829 } |
| 823 GLuint* buffers = GetImmediateDataAs<GLuint*>( | 830 GLuint* buffers = GetImmediateDataAs<GLuint*>( |
| 824 c, data_size, immediate_data_size); | 831 c, data_size, immediate_data_size); |
| 825 if (buffers == NULL) { | 832 if (buffers == NULL) { |
| 826 return error::kOutOfBounds; | 833 return error::kOutOfBounds; |
| 827 } | 834 } |
| 828 if (!GenBuffersHelper(n, buffers)) { | 835 if (!GenBuffersHelper(n, buffers)) { |
| 829 return error::kInvalidArguments; | 836 return error::kInvalidArguments; |
| 830 } | 837 } |
| 831 return error::kNoError; | 838 return error::kNoError; |
| 832 } | 839 } |
| 833 | 840 |
| 834 error::Error GLES2DecoderImpl::HandleGenerateMipmap( | 841 error::Error GLES2DecoderImpl::HandleGenerateMipmap( |
| 835 uint32 immediate_data_size, const gles2::GenerateMipmap& c) { | 842 uint32 immediate_data_size, const gles2::cmds::GenerateMipmap& c) { |
| 836 GLenum target = static_cast<GLenum>(c.target); | 843 GLenum target = static_cast<GLenum>(c.target); |
| 837 if (!validators_->texture_bind_target.IsValid(target)) { | 844 if (!validators_->texture_bind_target.IsValid(target)) { |
| 838 SetGLErrorInvalidEnum("glGenerateMipmap", target, "target"); | 845 SetGLErrorInvalidEnum("glGenerateMipmap", target, "target"); |
| 839 return error::kNoError; | 846 return error::kNoError; |
| 840 } | 847 } |
| 841 DoGenerateMipmap(target); | 848 DoGenerateMipmap(target); |
| 842 return error::kNoError; | 849 return error::kNoError; |
| 843 } | 850 } |
| 844 | 851 |
| 845 error::Error GLES2DecoderImpl::HandleGenFramebuffers( | 852 error::Error GLES2DecoderImpl::HandleGenFramebuffers( |
| 846 uint32 immediate_data_size, const gles2::GenFramebuffers& c) { | 853 uint32 immediate_data_size, const gles2::cmds::GenFramebuffers& c) { |
| 847 GLsizei n = static_cast<GLsizei>(c.n); | 854 GLsizei n = static_cast<GLsizei>(c.n); |
| 848 uint32 data_size; | 855 uint32 data_size; |
| 849 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 856 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 850 return error::kOutOfBounds; | 857 return error::kOutOfBounds; |
| 851 } | 858 } |
| 852 GLuint* framebuffers = GetSharedMemoryAs<GLuint*>( | 859 GLuint* framebuffers = GetSharedMemoryAs<GLuint*>( |
| 853 c.framebuffers_shm_id, c.framebuffers_shm_offset, data_size); | 860 c.framebuffers_shm_id, c.framebuffers_shm_offset, data_size); |
| 854 if (framebuffers == NULL) { | 861 if (framebuffers == NULL) { |
| 855 return error::kOutOfBounds; | 862 return error::kOutOfBounds; |
| 856 } | 863 } |
| 857 if (!GenFramebuffersHelper(n, framebuffers)) { | 864 if (!GenFramebuffersHelper(n, framebuffers)) { |
| 858 return error::kInvalidArguments; | 865 return error::kInvalidArguments; |
| 859 } | 866 } |
| 860 return error::kNoError; | 867 return error::kNoError; |
| 861 } | 868 } |
| 862 | 869 |
| 863 error::Error GLES2DecoderImpl::HandleGenFramebuffersImmediate( | 870 error::Error GLES2DecoderImpl::HandleGenFramebuffersImmediate( |
| 864 uint32 immediate_data_size, const gles2::GenFramebuffersImmediate& c) { | 871 uint32 immediate_data_size, |
| 872 const gles2::cmds::GenFramebuffersImmediate& c) { |
| 865 GLsizei n = static_cast<GLsizei>(c.n); | 873 GLsizei n = static_cast<GLsizei>(c.n); |
| 866 uint32 data_size; | 874 uint32 data_size; |
| 867 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 875 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 868 return error::kOutOfBounds; | 876 return error::kOutOfBounds; |
| 869 } | 877 } |
| 870 GLuint* framebuffers = GetImmediateDataAs<GLuint*>( | 878 GLuint* framebuffers = GetImmediateDataAs<GLuint*>( |
| 871 c, data_size, immediate_data_size); | 879 c, data_size, immediate_data_size); |
| 872 if (framebuffers == NULL) { | 880 if (framebuffers == NULL) { |
| 873 return error::kOutOfBounds; | 881 return error::kOutOfBounds; |
| 874 } | 882 } |
| 875 if (!GenFramebuffersHelper(n, framebuffers)) { | 883 if (!GenFramebuffersHelper(n, framebuffers)) { |
| 876 return error::kInvalidArguments; | 884 return error::kInvalidArguments; |
| 877 } | 885 } |
| 878 return error::kNoError; | 886 return error::kNoError; |
| 879 } | 887 } |
| 880 | 888 |
| 881 error::Error GLES2DecoderImpl::HandleGenRenderbuffers( | 889 error::Error GLES2DecoderImpl::HandleGenRenderbuffers( |
| 882 uint32 immediate_data_size, const gles2::GenRenderbuffers& c) { | 890 uint32 immediate_data_size, const gles2::cmds::GenRenderbuffers& c) { |
| 883 GLsizei n = static_cast<GLsizei>(c.n); | 891 GLsizei n = static_cast<GLsizei>(c.n); |
| 884 uint32 data_size; | 892 uint32 data_size; |
| 885 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 893 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 886 return error::kOutOfBounds; | 894 return error::kOutOfBounds; |
| 887 } | 895 } |
| 888 GLuint* renderbuffers = GetSharedMemoryAs<GLuint*>( | 896 GLuint* renderbuffers = GetSharedMemoryAs<GLuint*>( |
| 889 c.renderbuffers_shm_id, c.renderbuffers_shm_offset, data_size); | 897 c.renderbuffers_shm_id, c.renderbuffers_shm_offset, data_size); |
| 890 if (renderbuffers == NULL) { | 898 if (renderbuffers == NULL) { |
| 891 return error::kOutOfBounds; | 899 return error::kOutOfBounds; |
| 892 } | 900 } |
| 893 if (!GenRenderbuffersHelper(n, renderbuffers)) { | 901 if (!GenRenderbuffersHelper(n, renderbuffers)) { |
| 894 return error::kInvalidArguments; | 902 return error::kInvalidArguments; |
| 895 } | 903 } |
| 896 return error::kNoError; | 904 return error::kNoError; |
| 897 } | 905 } |
| 898 | 906 |
| 899 error::Error GLES2DecoderImpl::HandleGenRenderbuffersImmediate( | 907 error::Error GLES2DecoderImpl::HandleGenRenderbuffersImmediate( |
| 900 uint32 immediate_data_size, const gles2::GenRenderbuffersImmediate& c) { | 908 uint32 immediate_data_size, |
| 909 const gles2::cmds::GenRenderbuffersImmediate& c) { |
| 901 GLsizei n = static_cast<GLsizei>(c.n); | 910 GLsizei n = static_cast<GLsizei>(c.n); |
| 902 uint32 data_size; | 911 uint32 data_size; |
| 903 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 912 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 904 return error::kOutOfBounds; | 913 return error::kOutOfBounds; |
| 905 } | 914 } |
| 906 GLuint* renderbuffers = GetImmediateDataAs<GLuint*>( | 915 GLuint* renderbuffers = GetImmediateDataAs<GLuint*>( |
| 907 c, data_size, immediate_data_size); | 916 c, data_size, immediate_data_size); |
| 908 if (renderbuffers == NULL) { | 917 if (renderbuffers == NULL) { |
| 909 return error::kOutOfBounds; | 918 return error::kOutOfBounds; |
| 910 } | 919 } |
| 911 if (!GenRenderbuffersHelper(n, renderbuffers)) { | 920 if (!GenRenderbuffersHelper(n, renderbuffers)) { |
| 912 return error::kInvalidArguments; | 921 return error::kInvalidArguments; |
| 913 } | 922 } |
| 914 return error::kNoError; | 923 return error::kNoError; |
| 915 } | 924 } |
| 916 | 925 |
| 917 error::Error GLES2DecoderImpl::HandleGenTextures( | 926 error::Error GLES2DecoderImpl::HandleGenTextures( |
| 918 uint32 immediate_data_size, const gles2::GenTextures& c) { | 927 uint32 immediate_data_size, const gles2::cmds::GenTextures& c) { |
| 919 GLsizei n = static_cast<GLsizei>(c.n); | 928 GLsizei n = static_cast<GLsizei>(c.n); |
| 920 uint32 data_size; | 929 uint32 data_size; |
| 921 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 930 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 922 return error::kOutOfBounds; | 931 return error::kOutOfBounds; |
| 923 } | 932 } |
| 924 GLuint* textures = GetSharedMemoryAs<GLuint*>( | 933 GLuint* textures = GetSharedMemoryAs<GLuint*>( |
| 925 c.textures_shm_id, c.textures_shm_offset, data_size); | 934 c.textures_shm_id, c.textures_shm_offset, data_size); |
| 926 if (textures == NULL) { | 935 if (textures == NULL) { |
| 927 return error::kOutOfBounds; | 936 return error::kOutOfBounds; |
| 928 } | 937 } |
| 929 if (!GenTexturesHelper(n, textures)) { | 938 if (!GenTexturesHelper(n, textures)) { |
| 930 return error::kInvalidArguments; | 939 return error::kInvalidArguments; |
| 931 } | 940 } |
| 932 return error::kNoError; | 941 return error::kNoError; |
| 933 } | 942 } |
| 934 | 943 |
| 935 error::Error GLES2DecoderImpl::HandleGenTexturesImmediate( | 944 error::Error GLES2DecoderImpl::HandleGenTexturesImmediate( |
| 936 uint32 immediate_data_size, const gles2::GenTexturesImmediate& c) { | 945 uint32 immediate_data_size, const gles2::cmds::GenTexturesImmediate& c) { |
| 937 GLsizei n = static_cast<GLsizei>(c.n); | 946 GLsizei n = static_cast<GLsizei>(c.n); |
| 938 uint32 data_size; | 947 uint32 data_size; |
| 939 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 948 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 940 return error::kOutOfBounds; | 949 return error::kOutOfBounds; |
| 941 } | 950 } |
| 942 GLuint* textures = GetImmediateDataAs<GLuint*>( | 951 GLuint* textures = GetImmediateDataAs<GLuint*>( |
| 943 c, data_size, immediate_data_size); | 952 c, data_size, immediate_data_size); |
| 944 if (textures == NULL) { | 953 if (textures == NULL) { |
| 945 return error::kOutOfBounds; | 954 return error::kOutOfBounds; |
| 946 } | 955 } |
| 947 if (!GenTexturesHelper(n, textures)) { | 956 if (!GenTexturesHelper(n, textures)) { |
| 948 return error::kInvalidArguments; | 957 return error::kInvalidArguments; |
| 949 } | 958 } |
| 950 return error::kNoError; | 959 return error::kNoError; |
| 951 } | 960 } |
| 952 | 961 |
| 953 error::Error GLES2DecoderImpl::HandleGetBooleanv( | 962 error::Error GLES2DecoderImpl::HandleGetBooleanv( |
| 954 uint32 immediate_data_size, const gles2::GetBooleanv& c) { | 963 uint32 immediate_data_size, const gles2::cmds::GetBooleanv& c) { |
| 955 GLenum pname = static_cast<GLenum>(c.pname); | 964 GLenum pname = static_cast<GLenum>(c.pname); |
| 956 typedef GetBooleanv::Result Result; | 965 typedef cmds::GetBooleanv::Result Result; |
| 957 GLsizei num_values = 0; | 966 GLsizei num_values = 0; |
| 958 GetNumValuesReturnedForGLGet(pname, &num_values); | 967 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 959 Result* result = GetSharedMemoryAs<Result*>( | 968 Result* result = GetSharedMemoryAs<Result*>( |
| 960 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); | 969 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 961 GLboolean* params = result ? result->GetData() : NULL; | 970 GLboolean* params = result ? result->GetData() : NULL; |
| 962 if (!validators_->g_l_state.IsValid(pname)) { | 971 if (!validators_->g_l_state.IsValid(pname)) { |
| 963 SetGLErrorInvalidEnum("glGetBooleanv", pname, "pname"); | 972 SetGLErrorInvalidEnum("glGetBooleanv", pname, "pname"); |
| 964 return error::kNoError; | 973 return error::kNoError; |
| 965 } | 974 } |
| 966 if (params == NULL) { | 975 if (params == NULL) { |
| 967 return error::kOutOfBounds; | 976 return error::kOutOfBounds; |
| 968 } | 977 } |
| 969 // Check that the client initialized the result. | 978 // Check that the client initialized the result. |
| 970 if (result->size != 0) { | 979 if (result->size != 0) { |
| 971 return error::kInvalidArguments; | 980 return error::kInvalidArguments; |
| 972 } | 981 } |
| 973 CopyRealGLErrorsToWrapper(); | 982 CopyRealGLErrorsToWrapper(); |
| 974 DoGetBooleanv(pname, params); | 983 DoGetBooleanv(pname, params); |
| 975 GLenum error = glGetError(); | 984 GLenum error = glGetError(); |
| 976 if (error == GL_NO_ERROR) { | 985 if (error == GL_NO_ERROR) { |
| 977 result->SetNumResults(num_values); | 986 result->SetNumResults(num_values); |
| 978 } else { | 987 } else { |
| 979 SetGLError(error, "", ""); | 988 SetGLError(error, "", ""); |
| 980 } | 989 } |
| 981 return error::kNoError; | 990 return error::kNoError; |
| 982 } | 991 } |
| 983 | 992 |
| 984 error::Error GLES2DecoderImpl::HandleGetBufferParameteriv( | 993 error::Error GLES2DecoderImpl::HandleGetBufferParameteriv( |
| 985 uint32 immediate_data_size, const gles2::GetBufferParameteriv& c) { | 994 uint32 immediate_data_size, const gles2::cmds::GetBufferParameteriv& c) { |
| 986 GLenum target = static_cast<GLenum>(c.target); | 995 GLenum target = static_cast<GLenum>(c.target); |
| 987 GLenum pname = static_cast<GLenum>(c.pname); | 996 GLenum pname = static_cast<GLenum>(c.pname); |
| 988 typedef GetBufferParameteriv::Result Result; | 997 typedef cmds::GetBufferParameteriv::Result Result; |
| 989 GLsizei num_values = 0; | 998 GLsizei num_values = 0; |
| 990 GetNumValuesReturnedForGLGet(pname, &num_values); | 999 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 991 Result* result = GetSharedMemoryAs<Result*>( | 1000 Result* result = GetSharedMemoryAs<Result*>( |
| 992 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); | 1001 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 993 GLint* params = result ? result->GetData() : NULL; | 1002 GLint* params = result ? result->GetData() : NULL; |
| 994 if (!validators_->buffer_target.IsValid(target)) { | 1003 if (!validators_->buffer_target.IsValid(target)) { |
| 995 SetGLErrorInvalidEnum("glGetBufferParameteriv", target, "target"); | 1004 SetGLErrorInvalidEnum("glGetBufferParameteriv", target, "target"); |
| 996 return error::kNoError; | 1005 return error::kNoError; |
| 997 } | 1006 } |
| 998 if (!validators_->buffer_parameter.IsValid(pname)) { | 1007 if (!validators_->buffer_parameter.IsValid(pname)) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1011 GLenum error = glGetError(); | 1020 GLenum error = glGetError(); |
| 1012 if (error == GL_NO_ERROR) { | 1021 if (error == GL_NO_ERROR) { |
| 1013 result->SetNumResults(num_values); | 1022 result->SetNumResults(num_values); |
| 1014 } else { | 1023 } else { |
| 1015 SetGLError(error, "", ""); | 1024 SetGLError(error, "", ""); |
| 1016 } | 1025 } |
| 1017 return error::kNoError; | 1026 return error::kNoError; |
| 1018 } | 1027 } |
| 1019 | 1028 |
| 1020 error::Error GLES2DecoderImpl::HandleGetError( | 1029 error::Error GLES2DecoderImpl::HandleGetError( |
| 1021 uint32 immediate_data_size, const gles2::GetError& c) { | 1030 uint32 immediate_data_size, const gles2::cmds::GetError& c) { |
| 1022 typedef GetError::Result Result; | 1031 typedef cmds::GetError::Result Result; |
| 1023 Result* result_dst = GetSharedMemoryAs<Result*>( | 1032 Result* result_dst = GetSharedMemoryAs<Result*>( |
| 1024 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); | 1033 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); |
| 1025 if (!result_dst) { | 1034 if (!result_dst) { |
| 1026 return error::kOutOfBounds; | 1035 return error::kOutOfBounds; |
| 1027 } | 1036 } |
| 1028 *result_dst = GetGLError(); | 1037 *result_dst = GetGLError(); |
| 1029 return error::kNoError; | 1038 return error::kNoError; |
| 1030 } | 1039 } |
| 1031 | 1040 |
| 1032 error::Error GLES2DecoderImpl::HandleGetFloatv( | 1041 error::Error GLES2DecoderImpl::HandleGetFloatv( |
| 1033 uint32 immediate_data_size, const gles2::GetFloatv& c) { | 1042 uint32 immediate_data_size, const gles2::cmds::GetFloatv& c) { |
| 1034 GLenum pname = static_cast<GLenum>(c.pname); | 1043 GLenum pname = static_cast<GLenum>(c.pname); |
| 1035 typedef GetFloatv::Result Result; | 1044 typedef cmds::GetFloatv::Result Result; |
| 1036 GLsizei num_values = 0; | 1045 GLsizei num_values = 0; |
| 1037 GetNumValuesReturnedForGLGet(pname, &num_values); | 1046 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 1038 Result* result = GetSharedMemoryAs<Result*>( | 1047 Result* result = GetSharedMemoryAs<Result*>( |
| 1039 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); | 1048 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 1040 GLfloat* params = result ? result->GetData() : NULL; | 1049 GLfloat* params = result ? result->GetData() : NULL; |
| 1041 if (!validators_->g_l_state.IsValid(pname)) { | 1050 if (!validators_->g_l_state.IsValid(pname)) { |
| 1042 SetGLErrorInvalidEnum("glGetFloatv", pname, "pname"); | 1051 SetGLErrorInvalidEnum("glGetFloatv", pname, "pname"); |
| 1043 return error::kNoError; | 1052 return error::kNoError; |
| 1044 } | 1053 } |
| 1045 if (params == NULL) { | 1054 if (params == NULL) { |
| 1046 return error::kOutOfBounds; | 1055 return error::kOutOfBounds; |
| 1047 } | 1056 } |
| 1048 // Check that the client initialized the result. | 1057 // Check that the client initialized the result. |
| 1049 if (result->size != 0) { | 1058 if (result->size != 0) { |
| 1050 return error::kInvalidArguments; | 1059 return error::kInvalidArguments; |
| 1051 } | 1060 } |
| 1052 CopyRealGLErrorsToWrapper(); | 1061 CopyRealGLErrorsToWrapper(); |
| 1053 DoGetFloatv(pname, params); | 1062 DoGetFloatv(pname, params); |
| 1054 GLenum error = glGetError(); | 1063 GLenum error = glGetError(); |
| 1055 if (error == GL_NO_ERROR) { | 1064 if (error == GL_NO_ERROR) { |
| 1056 result->SetNumResults(num_values); | 1065 result->SetNumResults(num_values); |
| 1057 } else { | 1066 } else { |
| 1058 SetGLError(error, "", ""); | 1067 SetGLError(error, "", ""); |
| 1059 } | 1068 } |
| 1060 return error::kNoError; | 1069 return error::kNoError; |
| 1061 } | 1070 } |
| 1062 | 1071 |
| 1063 error::Error GLES2DecoderImpl::HandleGetFramebufferAttachmentParameteriv( | 1072 error::Error GLES2DecoderImpl::HandleGetFramebufferAttachmentParameteriv( |
| 1064 uint32 immediate_data_size, | 1073 uint32 immediate_data_size, |
| 1065 const gles2::GetFramebufferAttachmentParameteriv& c) { | 1074 const gles2::cmds::GetFramebufferAttachmentParameteriv& c) { |
| 1066 GLenum target = static_cast<GLenum>(c.target); | 1075 GLenum target = static_cast<GLenum>(c.target); |
| 1067 GLenum attachment = static_cast<GLenum>(c.attachment); | 1076 GLenum attachment = static_cast<GLenum>(c.attachment); |
| 1068 GLenum pname = static_cast<GLenum>(c.pname); | 1077 GLenum pname = static_cast<GLenum>(c.pname); |
| 1069 typedef GetFramebufferAttachmentParameteriv::Result Result; | 1078 typedef cmds::GetFramebufferAttachmentParameteriv::Result Result; |
| 1070 GLsizei num_values = 0; | 1079 GLsizei num_values = 0; |
| 1071 GetNumValuesReturnedForGLGet(pname, &num_values); | 1080 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 1072 Result* result = GetSharedMemoryAs<Result*>( | 1081 Result* result = GetSharedMemoryAs<Result*>( |
| 1073 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); | 1082 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 1074 GLint* params = result ? result->GetData() : NULL; | 1083 GLint* params = result ? result->GetData() : NULL; |
| 1075 if (!validators_->frame_buffer_target.IsValid(target)) { | 1084 if (!validators_->frame_buffer_target.IsValid(target)) { |
| 1076 SetGLErrorInvalidEnum("glGetFramebufferAttachmentParameteriv", target, | 1085 SetGLErrorInvalidEnum("glGetFramebufferAttachmentParameteriv", target, |
| 1077 "target"); | 1086 "target"); |
| 1078 return error::kNoError; | 1087 return error::kNoError; |
| 1079 } | 1088 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1099 GLenum error = glGetError(); | 1108 GLenum error = glGetError(); |
| 1100 if (error == GL_NO_ERROR) { | 1109 if (error == GL_NO_ERROR) { |
| 1101 result->SetNumResults(num_values); | 1110 result->SetNumResults(num_values); |
| 1102 } else { | 1111 } else { |
| 1103 SetGLError(error, "", ""); | 1112 SetGLError(error, "", ""); |
| 1104 } | 1113 } |
| 1105 return error::kNoError; | 1114 return error::kNoError; |
| 1106 } | 1115 } |
| 1107 | 1116 |
| 1108 error::Error GLES2DecoderImpl::HandleGetIntegerv( | 1117 error::Error GLES2DecoderImpl::HandleGetIntegerv( |
| 1109 uint32 immediate_data_size, const gles2::GetIntegerv& c) { | 1118 uint32 immediate_data_size, const gles2::cmds::GetIntegerv& c) { |
| 1110 GLenum pname = static_cast<GLenum>(c.pname); | 1119 GLenum pname = static_cast<GLenum>(c.pname); |
| 1111 typedef GetIntegerv::Result Result; | 1120 typedef cmds::GetIntegerv::Result Result; |
| 1112 GLsizei num_values = 0; | 1121 GLsizei num_values = 0; |
| 1113 GetNumValuesReturnedForGLGet(pname, &num_values); | 1122 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 1114 Result* result = GetSharedMemoryAs<Result*>( | 1123 Result* result = GetSharedMemoryAs<Result*>( |
| 1115 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); | 1124 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 1116 GLint* params = result ? result->GetData() : NULL; | 1125 GLint* params = result ? result->GetData() : NULL; |
| 1117 if (!validators_->g_l_state.IsValid(pname)) { | 1126 if (!validators_->g_l_state.IsValid(pname)) { |
| 1118 SetGLErrorInvalidEnum("glGetIntegerv", pname, "pname"); | 1127 SetGLErrorInvalidEnum("glGetIntegerv", pname, "pname"); |
| 1119 return error::kNoError; | 1128 return error::kNoError; |
| 1120 } | 1129 } |
| 1121 if (params == NULL) { | 1130 if (params == NULL) { |
| 1122 return error::kOutOfBounds; | 1131 return error::kOutOfBounds; |
| 1123 } | 1132 } |
| 1124 // Check that the client initialized the result. | 1133 // Check that the client initialized the result. |
| 1125 if (result->size != 0) { | 1134 if (result->size != 0) { |
| 1126 return error::kInvalidArguments; | 1135 return error::kInvalidArguments; |
| 1127 } | 1136 } |
| 1128 CopyRealGLErrorsToWrapper(); | 1137 CopyRealGLErrorsToWrapper(); |
| 1129 DoGetIntegerv(pname, params); | 1138 DoGetIntegerv(pname, params); |
| 1130 GLenum error = glGetError(); | 1139 GLenum error = glGetError(); |
| 1131 if (error == GL_NO_ERROR) { | 1140 if (error == GL_NO_ERROR) { |
| 1132 result->SetNumResults(num_values); | 1141 result->SetNumResults(num_values); |
| 1133 } else { | 1142 } else { |
| 1134 SetGLError(error, "", ""); | 1143 SetGLError(error, "", ""); |
| 1135 } | 1144 } |
| 1136 return error::kNoError; | 1145 return error::kNoError; |
| 1137 } | 1146 } |
| 1138 | 1147 |
| 1139 error::Error GLES2DecoderImpl::HandleGetProgramiv( | 1148 error::Error GLES2DecoderImpl::HandleGetProgramiv( |
| 1140 uint32 immediate_data_size, const gles2::GetProgramiv& c) { | 1149 uint32 immediate_data_size, const gles2::cmds::GetProgramiv& c) { |
| 1141 GLuint program = c.program; | 1150 GLuint program = c.program; |
| 1142 GLenum pname = static_cast<GLenum>(c.pname); | 1151 GLenum pname = static_cast<GLenum>(c.pname); |
| 1143 typedef GetProgramiv::Result Result; | 1152 typedef cmds::GetProgramiv::Result Result; |
| 1144 GLsizei num_values = 0; | 1153 GLsizei num_values = 0; |
| 1145 GetNumValuesReturnedForGLGet(pname, &num_values); | 1154 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 1146 Result* result = GetSharedMemoryAs<Result*>( | 1155 Result* result = GetSharedMemoryAs<Result*>( |
| 1147 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); | 1156 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 1148 GLint* params = result ? result->GetData() : NULL; | 1157 GLint* params = result ? result->GetData() : NULL; |
| 1149 if (!validators_->program_parameter.IsValid(pname)) { | 1158 if (!validators_->program_parameter.IsValid(pname)) { |
| 1150 SetGLErrorInvalidEnum("glGetProgramiv", pname, "pname"); | 1159 SetGLErrorInvalidEnum("glGetProgramiv", pname, "pname"); |
| 1151 return error::kNoError; | 1160 return error::kNoError; |
| 1152 } | 1161 } |
| 1153 if (params == NULL) { | 1162 if (params == NULL) { |
| 1154 return error::kOutOfBounds; | 1163 return error::kOutOfBounds; |
| 1155 } | 1164 } |
| 1156 // Check that the client initialized the result. | 1165 // Check that the client initialized the result. |
| 1157 if (result->size != 0) { | 1166 if (result->size != 0) { |
| 1158 return error::kInvalidArguments; | 1167 return error::kInvalidArguments; |
| 1159 } | 1168 } |
| 1160 CopyRealGLErrorsToWrapper(); | 1169 CopyRealGLErrorsToWrapper(); |
| 1161 DoGetProgramiv(program, pname, params); | 1170 DoGetProgramiv(program, pname, params); |
| 1162 GLenum error = glGetError(); | 1171 GLenum error = glGetError(); |
| 1163 if (error == GL_NO_ERROR) { | 1172 if (error == GL_NO_ERROR) { |
| 1164 result->SetNumResults(num_values); | 1173 result->SetNumResults(num_values); |
| 1165 } else { | 1174 } else { |
| 1166 SetGLError(error, "", ""); | 1175 SetGLError(error, "", ""); |
| 1167 } | 1176 } |
| 1168 return error::kNoError; | 1177 return error::kNoError; |
| 1169 } | 1178 } |
| 1170 | 1179 |
| 1171 error::Error GLES2DecoderImpl::HandleGetRenderbufferParameteriv( | 1180 error::Error GLES2DecoderImpl::HandleGetRenderbufferParameteriv( |
| 1172 uint32 immediate_data_size, const gles2::GetRenderbufferParameteriv& c) { | 1181 uint32 immediate_data_size, |
| 1182 const gles2::cmds::GetRenderbufferParameteriv& c) { |
| 1173 GLenum target = static_cast<GLenum>(c.target); | 1183 GLenum target = static_cast<GLenum>(c.target); |
| 1174 GLenum pname = static_cast<GLenum>(c.pname); | 1184 GLenum pname = static_cast<GLenum>(c.pname); |
| 1175 typedef GetRenderbufferParameteriv::Result Result; | 1185 typedef cmds::GetRenderbufferParameteriv::Result Result; |
| 1176 GLsizei num_values = 0; | 1186 GLsizei num_values = 0; |
| 1177 GetNumValuesReturnedForGLGet(pname, &num_values); | 1187 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 1178 Result* result = GetSharedMemoryAs<Result*>( | 1188 Result* result = GetSharedMemoryAs<Result*>( |
| 1179 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); | 1189 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 1180 GLint* params = result ? result->GetData() : NULL; | 1190 GLint* params = result ? result->GetData() : NULL; |
| 1181 if (!validators_->render_buffer_target.IsValid(target)) { | 1191 if (!validators_->render_buffer_target.IsValid(target)) { |
| 1182 SetGLErrorInvalidEnum("glGetRenderbufferParameteriv", target, "target"); | 1192 SetGLErrorInvalidEnum("glGetRenderbufferParameteriv", target, "target"); |
| 1183 return error::kNoError; | 1193 return error::kNoError; |
| 1184 } | 1194 } |
| 1185 if (!validators_->render_buffer_parameter.IsValid(pname)) { | 1195 if (!validators_->render_buffer_parameter.IsValid(pname)) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1198 GLenum error = glGetError(); | 1208 GLenum error = glGetError(); |
| 1199 if (error == GL_NO_ERROR) { | 1209 if (error == GL_NO_ERROR) { |
| 1200 result->SetNumResults(num_values); | 1210 result->SetNumResults(num_values); |
| 1201 } else { | 1211 } else { |
| 1202 SetGLError(error, "", ""); | 1212 SetGLError(error, "", ""); |
| 1203 } | 1213 } |
| 1204 return error::kNoError; | 1214 return error::kNoError; |
| 1205 } | 1215 } |
| 1206 | 1216 |
| 1207 error::Error GLES2DecoderImpl::HandleGetShaderiv( | 1217 error::Error GLES2DecoderImpl::HandleGetShaderiv( |
| 1208 uint32 immediate_data_size, const gles2::GetShaderiv& c) { | 1218 uint32 immediate_data_size, const gles2::cmds::GetShaderiv& c) { |
| 1209 GLuint shader = c.shader; | 1219 GLuint shader = c.shader; |
| 1210 GLenum pname = static_cast<GLenum>(c.pname); | 1220 GLenum pname = static_cast<GLenum>(c.pname); |
| 1211 typedef GetShaderiv::Result Result; | 1221 typedef cmds::GetShaderiv::Result Result; |
| 1212 GLsizei num_values = 0; | 1222 GLsizei num_values = 0; |
| 1213 GetNumValuesReturnedForGLGet(pname, &num_values); | 1223 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 1214 Result* result = GetSharedMemoryAs<Result*>( | 1224 Result* result = GetSharedMemoryAs<Result*>( |
| 1215 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); | 1225 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 1216 GLint* params = result ? result->GetData() : NULL; | 1226 GLint* params = result ? result->GetData() : NULL; |
| 1217 if (!validators_->shader_parameter.IsValid(pname)) { | 1227 if (!validators_->shader_parameter.IsValid(pname)) { |
| 1218 SetGLErrorInvalidEnum("glGetShaderiv", pname, "pname"); | 1228 SetGLErrorInvalidEnum("glGetShaderiv", pname, "pname"); |
| 1219 return error::kNoError; | 1229 return error::kNoError; |
| 1220 } | 1230 } |
| 1221 if (params == NULL) { | 1231 if (params == NULL) { |
| 1222 return error::kOutOfBounds; | 1232 return error::kOutOfBounds; |
| 1223 } | 1233 } |
| 1224 // Check that the client initialized the result. | 1234 // Check that the client initialized the result. |
| 1225 if (result->size != 0) { | 1235 if (result->size != 0) { |
| 1226 return error::kInvalidArguments; | 1236 return error::kInvalidArguments; |
| 1227 } | 1237 } |
| 1228 CopyRealGLErrorsToWrapper(); | 1238 CopyRealGLErrorsToWrapper(); |
| 1229 DoGetShaderiv(shader, pname, params); | 1239 DoGetShaderiv(shader, pname, params); |
| 1230 GLenum error = glGetError(); | 1240 GLenum error = glGetError(); |
| 1231 if (error == GL_NO_ERROR) { | 1241 if (error == GL_NO_ERROR) { |
| 1232 result->SetNumResults(num_values); | 1242 result->SetNumResults(num_values); |
| 1233 } else { | 1243 } else { |
| 1234 SetGLError(error, "", ""); | 1244 SetGLError(error, "", ""); |
| 1235 } | 1245 } |
| 1236 return error::kNoError; | 1246 return error::kNoError; |
| 1237 } | 1247 } |
| 1238 | 1248 |
| 1239 error::Error GLES2DecoderImpl::HandleGetTexParameterfv( | 1249 error::Error GLES2DecoderImpl::HandleGetTexParameterfv( |
| 1240 uint32 immediate_data_size, const gles2::GetTexParameterfv& c) { | 1250 uint32 immediate_data_size, const gles2::cmds::GetTexParameterfv& c) { |
| 1241 GLenum target = static_cast<GLenum>(c.target); | 1251 GLenum target = static_cast<GLenum>(c.target); |
| 1242 GLenum pname = static_cast<GLenum>(c.pname); | 1252 GLenum pname = static_cast<GLenum>(c.pname); |
| 1243 typedef GetTexParameterfv::Result Result; | 1253 typedef cmds::GetTexParameterfv::Result Result; |
| 1244 GLsizei num_values = 0; | 1254 GLsizei num_values = 0; |
| 1245 GetNumValuesReturnedForGLGet(pname, &num_values); | 1255 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 1246 Result* result = GetSharedMemoryAs<Result*>( | 1256 Result* result = GetSharedMemoryAs<Result*>( |
| 1247 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); | 1257 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 1248 GLfloat* params = result ? result->GetData() : NULL; | 1258 GLfloat* params = result ? result->GetData() : NULL; |
| 1249 if (!validators_->get_tex_param_target.IsValid(target)) { | 1259 if (!validators_->get_tex_param_target.IsValid(target)) { |
| 1250 SetGLErrorInvalidEnum("glGetTexParameterfv", target, "target"); | 1260 SetGLErrorInvalidEnum("glGetTexParameterfv", target, "target"); |
| 1251 return error::kNoError; | 1261 return error::kNoError; |
| 1252 } | 1262 } |
| 1253 if (!validators_->texture_parameter.IsValid(pname)) { | 1263 if (!validators_->texture_parameter.IsValid(pname)) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1266 GLenum error = glGetError(); | 1276 GLenum error = glGetError(); |
| 1267 if (error == GL_NO_ERROR) { | 1277 if (error == GL_NO_ERROR) { |
| 1268 result->SetNumResults(num_values); | 1278 result->SetNumResults(num_values); |
| 1269 } else { | 1279 } else { |
| 1270 SetGLError(error, "", ""); | 1280 SetGLError(error, "", ""); |
| 1271 } | 1281 } |
| 1272 return error::kNoError; | 1282 return error::kNoError; |
| 1273 } | 1283 } |
| 1274 | 1284 |
| 1275 error::Error GLES2DecoderImpl::HandleGetTexParameteriv( | 1285 error::Error GLES2DecoderImpl::HandleGetTexParameteriv( |
| 1276 uint32 immediate_data_size, const gles2::GetTexParameteriv& c) { | 1286 uint32 immediate_data_size, const gles2::cmds::GetTexParameteriv& c) { |
| 1277 GLenum target = static_cast<GLenum>(c.target); | 1287 GLenum target = static_cast<GLenum>(c.target); |
| 1278 GLenum pname = static_cast<GLenum>(c.pname); | 1288 GLenum pname = static_cast<GLenum>(c.pname); |
| 1279 typedef GetTexParameteriv::Result Result; | 1289 typedef cmds::GetTexParameteriv::Result Result; |
| 1280 GLsizei num_values = 0; | 1290 GLsizei num_values = 0; |
| 1281 GetNumValuesReturnedForGLGet(pname, &num_values); | 1291 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 1282 Result* result = GetSharedMemoryAs<Result*>( | 1292 Result* result = GetSharedMemoryAs<Result*>( |
| 1283 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); | 1293 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 1284 GLint* params = result ? result->GetData() : NULL; | 1294 GLint* params = result ? result->GetData() : NULL; |
| 1285 if (!validators_->get_tex_param_target.IsValid(target)) { | 1295 if (!validators_->get_tex_param_target.IsValid(target)) { |
| 1286 SetGLErrorInvalidEnum("glGetTexParameteriv", target, "target"); | 1296 SetGLErrorInvalidEnum("glGetTexParameteriv", target, "target"); |
| 1287 return error::kNoError; | 1297 return error::kNoError; |
| 1288 } | 1298 } |
| 1289 if (!validators_->texture_parameter.IsValid(pname)) { | 1299 if (!validators_->texture_parameter.IsValid(pname)) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1302 GLenum error = glGetError(); | 1312 GLenum error = glGetError(); |
| 1303 if (error == GL_NO_ERROR) { | 1313 if (error == GL_NO_ERROR) { |
| 1304 result->SetNumResults(num_values); | 1314 result->SetNumResults(num_values); |
| 1305 } else { | 1315 } else { |
| 1306 SetGLError(error, "", ""); | 1316 SetGLError(error, "", ""); |
| 1307 } | 1317 } |
| 1308 return error::kNoError; | 1318 return error::kNoError; |
| 1309 } | 1319 } |
| 1310 | 1320 |
| 1311 error::Error GLES2DecoderImpl::HandleGetVertexAttribfv( | 1321 error::Error GLES2DecoderImpl::HandleGetVertexAttribfv( |
| 1312 uint32 immediate_data_size, const gles2::GetVertexAttribfv& c) { | 1322 uint32 immediate_data_size, const gles2::cmds::GetVertexAttribfv& c) { |
| 1313 GLuint index = static_cast<GLuint>(c.index); | 1323 GLuint index = static_cast<GLuint>(c.index); |
| 1314 GLenum pname = static_cast<GLenum>(c.pname); | 1324 GLenum pname = static_cast<GLenum>(c.pname); |
| 1315 typedef GetVertexAttribfv::Result Result; | 1325 typedef cmds::GetVertexAttribfv::Result Result; |
| 1316 GLsizei num_values = 0; | 1326 GLsizei num_values = 0; |
| 1317 GetNumValuesReturnedForGLGet(pname, &num_values); | 1327 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 1318 Result* result = GetSharedMemoryAs<Result*>( | 1328 Result* result = GetSharedMemoryAs<Result*>( |
| 1319 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); | 1329 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 1320 GLfloat* params = result ? result->GetData() : NULL; | 1330 GLfloat* params = result ? result->GetData() : NULL; |
| 1321 if (!validators_->vertex_attribute.IsValid(pname)) { | 1331 if (!validators_->vertex_attribute.IsValid(pname)) { |
| 1322 SetGLErrorInvalidEnum("glGetVertexAttribfv", pname, "pname"); | 1332 SetGLErrorInvalidEnum("glGetVertexAttribfv", pname, "pname"); |
| 1323 return error::kNoError; | 1333 return error::kNoError; |
| 1324 } | 1334 } |
| 1325 if (params == NULL) { | 1335 if (params == NULL) { |
| 1326 return error::kOutOfBounds; | 1336 return error::kOutOfBounds; |
| 1327 } | 1337 } |
| 1328 // Check that the client initialized the result. | 1338 // Check that the client initialized the result. |
| 1329 if (result->size != 0) { | 1339 if (result->size != 0) { |
| 1330 return error::kInvalidArguments; | 1340 return error::kInvalidArguments; |
| 1331 } | 1341 } |
| 1332 CopyRealGLErrorsToWrapper(); | 1342 CopyRealGLErrorsToWrapper(); |
| 1333 DoGetVertexAttribfv(index, pname, params); | 1343 DoGetVertexAttribfv(index, pname, params); |
| 1334 GLenum error = glGetError(); | 1344 GLenum error = glGetError(); |
| 1335 if (error == GL_NO_ERROR) { | 1345 if (error == GL_NO_ERROR) { |
| 1336 result->SetNumResults(num_values); | 1346 result->SetNumResults(num_values); |
| 1337 } else { | 1347 } else { |
| 1338 SetGLError(error, "", ""); | 1348 SetGLError(error, "", ""); |
| 1339 } | 1349 } |
| 1340 return error::kNoError; | 1350 return error::kNoError; |
| 1341 } | 1351 } |
| 1342 | 1352 |
| 1343 error::Error GLES2DecoderImpl::HandleGetVertexAttribiv( | 1353 error::Error GLES2DecoderImpl::HandleGetVertexAttribiv( |
| 1344 uint32 immediate_data_size, const gles2::GetVertexAttribiv& c) { | 1354 uint32 immediate_data_size, const gles2::cmds::GetVertexAttribiv& c) { |
| 1345 GLuint index = static_cast<GLuint>(c.index); | 1355 GLuint index = static_cast<GLuint>(c.index); |
| 1346 GLenum pname = static_cast<GLenum>(c.pname); | 1356 GLenum pname = static_cast<GLenum>(c.pname); |
| 1347 typedef GetVertexAttribiv::Result Result; | 1357 typedef cmds::GetVertexAttribiv::Result Result; |
| 1348 GLsizei num_values = 0; | 1358 GLsizei num_values = 0; |
| 1349 GetNumValuesReturnedForGLGet(pname, &num_values); | 1359 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 1350 Result* result = GetSharedMemoryAs<Result*>( | 1360 Result* result = GetSharedMemoryAs<Result*>( |
| 1351 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); | 1361 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 1352 GLint* params = result ? result->GetData() : NULL; | 1362 GLint* params = result ? result->GetData() : NULL; |
| 1353 if (!validators_->vertex_attribute.IsValid(pname)) { | 1363 if (!validators_->vertex_attribute.IsValid(pname)) { |
| 1354 SetGLErrorInvalidEnum("glGetVertexAttribiv", pname, "pname"); | 1364 SetGLErrorInvalidEnum("glGetVertexAttribiv", pname, "pname"); |
| 1355 return error::kNoError; | 1365 return error::kNoError; |
| 1356 } | 1366 } |
| 1357 if (params == NULL) { | 1367 if (params == NULL) { |
| 1358 return error::kOutOfBounds; | 1368 return error::kOutOfBounds; |
| 1359 } | 1369 } |
| 1360 // Check that the client initialized the result. | 1370 // Check that the client initialized the result. |
| 1361 if (result->size != 0) { | 1371 if (result->size != 0) { |
| 1362 return error::kInvalidArguments; | 1372 return error::kInvalidArguments; |
| 1363 } | 1373 } |
| 1364 CopyRealGLErrorsToWrapper(); | 1374 CopyRealGLErrorsToWrapper(); |
| 1365 DoGetVertexAttribiv(index, pname, params); | 1375 DoGetVertexAttribiv(index, pname, params); |
| 1366 GLenum error = glGetError(); | 1376 GLenum error = glGetError(); |
| 1367 if (error == GL_NO_ERROR) { | 1377 if (error == GL_NO_ERROR) { |
| 1368 result->SetNumResults(num_values); | 1378 result->SetNumResults(num_values); |
| 1369 } else { | 1379 } else { |
| 1370 SetGLError(error, "", ""); | 1380 SetGLError(error, "", ""); |
| 1371 } | 1381 } |
| 1372 return error::kNoError; | 1382 return error::kNoError; |
| 1373 } | 1383 } |
| 1374 | 1384 |
| 1375 error::Error GLES2DecoderImpl::HandleHint( | 1385 error::Error GLES2DecoderImpl::HandleHint( |
| 1376 uint32 immediate_data_size, const gles2::Hint& c) { | 1386 uint32 immediate_data_size, const gles2::cmds::Hint& c) { |
| 1377 GLenum target = static_cast<GLenum>(c.target); | 1387 GLenum target = static_cast<GLenum>(c.target); |
| 1378 GLenum mode = static_cast<GLenum>(c.mode); | 1388 GLenum mode = static_cast<GLenum>(c.mode); |
| 1379 if (!validators_->hint_target.IsValid(target)) { | 1389 if (!validators_->hint_target.IsValid(target)) { |
| 1380 SetGLErrorInvalidEnum("glHint", target, "target"); | 1390 SetGLErrorInvalidEnum("glHint", target, "target"); |
| 1381 return error::kNoError; | 1391 return error::kNoError; |
| 1382 } | 1392 } |
| 1383 if (!validators_->hint_mode.IsValid(mode)) { | 1393 if (!validators_->hint_mode.IsValid(mode)) { |
| 1384 SetGLErrorInvalidEnum("glHint", mode, "mode"); | 1394 SetGLErrorInvalidEnum("glHint", mode, "mode"); |
| 1385 return error::kNoError; | 1395 return error::kNoError; |
| 1386 } | 1396 } |
| 1387 DoHint(target, mode); | 1397 DoHint(target, mode); |
| 1388 return error::kNoError; | 1398 return error::kNoError; |
| 1389 } | 1399 } |
| 1390 | 1400 |
| 1391 error::Error GLES2DecoderImpl::HandleIsBuffer( | 1401 error::Error GLES2DecoderImpl::HandleIsBuffer( |
| 1392 uint32 immediate_data_size, const gles2::IsBuffer& c) { | 1402 uint32 immediate_data_size, const gles2::cmds::IsBuffer& c) { |
| 1393 GLuint buffer = c.buffer; | 1403 GLuint buffer = c.buffer; |
| 1394 typedef IsBuffer::Result Result; | 1404 typedef cmds::IsBuffer::Result Result; |
| 1395 Result* result_dst = GetSharedMemoryAs<Result*>( | 1405 Result* result_dst = GetSharedMemoryAs<Result*>( |
| 1396 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); | 1406 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); |
| 1397 if (!result_dst) { | 1407 if (!result_dst) { |
| 1398 return error::kOutOfBounds; | 1408 return error::kOutOfBounds; |
| 1399 } | 1409 } |
| 1400 *result_dst = DoIsBuffer(buffer); | 1410 *result_dst = DoIsBuffer(buffer); |
| 1401 return error::kNoError; | 1411 return error::kNoError; |
| 1402 } | 1412 } |
| 1403 | 1413 |
| 1404 error::Error GLES2DecoderImpl::HandleIsEnabled( | 1414 error::Error GLES2DecoderImpl::HandleIsEnabled( |
| 1405 uint32 immediate_data_size, const gles2::IsEnabled& c) { | 1415 uint32 immediate_data_size, const gles2::cmds::IsEnabled& c) { |
| 1406 GLenum cap = static_cast<GLenum>(c.cap); | 1416 GLenum cap = static_cast<GLenum>(c.cap); |
| 1407 typedef IsEnabled::Result Result; | 1417 typedef cmds::IsEnabled::Result Result; |
| 1408 Result* result_dst = GetSharedMemoryAs<Result*>( | 1418 Result* result_dst = GetSharedMemoryAs<Result*>( |
| 1409 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); | 1419 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); |
| 1410 if (!result_dst) { | 1420 if (!result_dst) { |
| 1411 return error::kOutOfBounds; | 1421 return error::kOutOfBounds; |
| 1412 } | 1422 } |
| 1413 if (!validators_->capability.IsValid(cap)) { | 1423 if (!validators_->capability.IsValid(cap)) { |
| 1414 SetGLErrorInvalidEnum("glIsEnabled", cap, "cap"); | 1424 SetGLErrorInvalidEnum("glIsEnabled", cap, "cap"); |
| 1415 return error::kNoError; | 1425 return error::kNoError; |
| 1416 } | 1426 } |
| 1417 *result_dst = DoIsEnabled(cap); | 1427 *result_dst = DoIsEnabled(cap); |
| 1418 return error::kNoError; | 1428 return error::kNoError; |
| 1419 } | 1429 } |
| 1420 | 1430 |
| 1421 error::Error GLES2DecoderImpl::HandleIsFramebuffer( | 1431 error::Error GLES2DecoderImpl::HandleIsFramebuffer( |
| 1422 uint32 immediate_data_size, const gles2::IsFramebuffer& c) { | 1432 uint32 immediate_data_size, const gles2::cmds::IsFramebuffer& c) { |
| 1423 GLuint framebuffer = c.framebuffer; | 1433 GLuint framebuffer = c.framebuffer; |
| 1424 typedef IsFramebuffer::Result Result; | 1434 typedef cmds::IsFramebuffer::Result Result; |
| 1425 Result* result_dst = GetSharedMemoryAs<Result*>( | 1435 Result* result_dst = GetSharedMemoryAs<Result*>( |
| 1426 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); | 1436 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); |
| 1427 if (!result_dst) { | 1437 if (!result_dst) { |
| 1428 return error::kOutOfBounds; | 1438 return error::kOutOfBounds; |
| 1429 } | 1439 } |
| 1430 *result_dst = DoIsFramebuffer(framebuffer); | 1440 *result_dst = DoIsFramebuffer(framebuffer); |
| 1431 return error::kNoError; | 1441 return error::kNoError; |
| 1432 } | 1442 } |
| 1433 | 1443 |
| 1434 error::Error GLES2DecoderImpl::HandleIsProgram( | 1444 error::Error GLES2DecoderImpl::HandleIsProgram( |
| 1435 uint32 immediate_data_size, const gles2::IsProgram& c) { | 1445 uint32 immediate_data_size, const gles2::cmds::IsProgram& c) { |
| 1436 GLuint program = c.program; | 1446 GLuint program = c.program; |
| 1437 typedef IsProgram::Result Result; | 1447 typedef cmds::IsProgram::Result Result; |
| 1438 Result* result_dst = GetSharedMemoryAs<Result*>( | 1448 Result* result_dst = GetSharedMemoryAs<Result*>( |
| 1439 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); | 1449 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); |
| 1440 if (!result_dst) { | 1450 if (!result_dst) { |
| 1441 return error::kOutOfBounds; | 1451 return error::kOutOfBounds; |
| 1442 } | 1452 } |
| 1443 *result_dst = DoIsProgram(program); | 1453 *result_dst = DoIsProgram(program); |
| 1444 return error::kNoError; | 1454 return error::kNoError; |
| 1445 } | 1455 } |
| 1446 | 1456 |
| 1447 error::Error GLES2DecoderImpl::HandleIsRenderbuffer( | 1457 error::Error GLES2DecoderImpl::HandleIsRenderbuffer( |
| 1448 uint32 immediate_data_size, const gles2::IsRenderbuffer& c) { | 1458 uint32 immediate_data_size, const gles2::cmds::IsRenderbuffer& c) { |
| 1449 GLuint renderbuffer = c.renderbuffer; | 1459 GLuint renderbuffer = c.renderbuffer; |
| 1450 typedef IsRenderbuffer::Result Result; | 1460 typedef cmds::IsRenderbuffer::Result Result; |
| 1451 Result* result_dst = GetSharedMemoryAs<Result*>( | 1461 Result* result_dst = GetSharedMemoryAs<Result*>( |
| 1452 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); | 1462 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); |
| 1453 if (!result_dst) { | 1463 if (!result_dst) { |
| 1454 return error::kOutOfBounds; | 1464 return error::kOutOfBounds; |
| 1455 } | 1465 } |
| 1456 *result_dst = DoIsRenderbuffer(renderbuffer); | 1466 *result_dst = DoIsRenderbuffer(renderbuffer); |
| 1457 return error::kNoError; | 1467 return error::kNoError; |
| 1458 } | 1468 } |
| 1459 | 1469 |
| 1460 error::Error GLES2DecoderImpl::HandleIsShader( | 1470 error::Error GLES2DecoderImpl::HandleIsShader( |
| 1461 uint32 immediate_data_size, const gles2::IsShader& c) { | 1471 uint32 immediate_data_size, const gles2::cmds::IsShader& c) { |
| 1462 GLuint shader = c.shader; | 1472 GLuint shader = c.shader; |
| 1463 typedef IsShader::Result Result; | 1473 typedef cmds::IsShader::Result Result; |
| 1464 Result* result_dst = GetSharedMemoryAs<Result*>( | 1474 Result* result_dst = GetSharedMemoryAs<Result*>( |
| 1465 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); | 1475 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); |
| 1466 if (!result_dst) { | 1476 if (!result_dst) { |
| 1467 return error::kOutOfBounds; | 1477 return error::kOutOfBounds; |
| 1468 } | 1478 } |
| 1469 *result_dst = DoIsShader(shader); | 1479 *result_dst = DoIsShader(shader); |
| 1470 return error::kNoError; | 1480 return error::kNoError; |
| 1471 } | 1481 } |
| 1472 | 1482 |
| 1473 error::Error GLES2DecoderImpl::HandleIsTexture( | 1483 error::Error GLES2DecoderImpl::HandleIsTexture( |
| 1474 uint32 immediate_data_size, const gles2::IsTexture& c) { | 1484 uint32 immediate_data_size, const gles2::cmds::IsTexture& c) { |
| 1475 GLuint texture = c.texture; | 1485 GLuint texture = c.texture; |
| 1476 typedef IsTexture::Result Result; | 1486 typedef cmds::IsTexture::Result Result; |
| 1477 Result* result_dst = GetSharedMemoryAs<Result*>( | 1487 Result* result_dst = GetSharedMemoryAs<Result*>( |
| 1478 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); | 1488 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); |
| 1479 if (!result_dst) { | 1489 if (!result_dst) { |
| 1480 return error::kOutOfBounds; | 1490 return error::kOutOfBounds; |
| 1481 } | 1491 } |
| 1482 *result_dst = DoIsTexture(texture); | 1492 *result_dst = DoIsTexture(texture); |
| 1483 return error::kNoError; | 1493 return error::kNoError; |
| 1484 } | 1494 } |
| 1485 | 1495 |
| 1486 error::Error GLES2DecoderImpl::HandleLineWidth( | 1496 error::Error GLES2DecoderImpl::HandleLineWidth( |
| 1487 uint32 immediate_data_size, const gles2::LineWidth& c) { | 1497 uint32 immediate_data_size, const gles2::cmds::LineWidth& c) { |
| 1488 GLfloat width = static_cast<GLfloat>(c.width); | 1498 GLfloat width = static_cast<GLfloat>(c.width); |
| 1489 if (width <= 0.0f) { | 1499 if (width <= 0.0f) { |
| 1490 SetGLError(GL_INVALID_VALUE, "LineWidth", "width out of range"); | 1500 SetGLError(GL_INVALID_VALUE, "LineWidth", "width out of range"); |
| 1491 return error::kNoError; | 1501 return error::kNoError; |
| 1492 } | 1502 } |
| 1493 if (state_.line_width != width) { | 1503 if (state_.line_width != width) { |
| 1494 state_.line_width = width; | 1504 state_.line_width = width; |
| 1495 glLineWidth(width); | 1505 glLineWidth(width); |
| 1496 } | 1506 } |
| 1497 return error::kNoError; | 1507 return error::kNoError; |
| 1498 } | 1508 } |
| 1499 | 1509 |
| 1500 error::Error GLES2DecoderImpl::HandleLinkProgram( | 1510 error::Error GLES2DecoderImpl::HandleLinkProgram( |
| 1501 uint32 immediate_data_size, const gles2::LinkProgram& c) { | 1511 uint32 immediate_data_size, const gles2::cmds::LinkProgram& c) { |
| 1502 GLuint program = c.program; | 1512 GLuint program = c.program; |
| 1503 DoLinkProgram(program); | 1513 DoLinkProgram(program); |
| 1504 return error::kNoError; | 1514 return error::kNoError; |
| 1505 } | 1515 } |
| 1506 | 1516 |
| 1507 error::Error GLES2DecoderImpl::HandlePolygonOffset( | 1517 error::Error GLES2DecoderImpl::HandlePolygonOffset( |
| 1508 uint32 immediate_data_size, const gles2::PolygonOffset& c) { | 1518 uint32 immediate_data_size, const gles2::cmds::PolygonOffset& c) { |
| 1509 GLfloat factor = static_cast<GLfloat>(c.factor); | 1519 GLfloat factor = static_cast<GLfloat>(c.factor); |
| 1510 GLfloat units = static_cast<GLfloat>(c.units); | 1520 GLfloat units = static_cast<GLfloat>(c.units); |
| 1511 if (state_.polygon_offset_factor != factor || | 1521 if (state_.polygon_offset_factor != factor || |
| 1512 state_.polygon_offset_units != units) { | 1522 state_.polygon_offset_units != units) { |
| 1513 state_.polygon_offset_factor = factor; | 1523 state_.polygon_offset_factor = factor; |
| 1514 state_.polygon_offset_units = units; | 1524 state_.polygon_offset_units = units; |
| 1515 glPolygonOffset(factor, units); | 1525 glPolygonOffset(factor, units); |
| 1516 } | 1526 } |
| 1517 return error::kNoError; | 1527 return error::kNoError; |
| 1518 } | 1528 } |
| 1519 | 1529 |
| 1520 error::Error GLES2DecoderImpl::HandleReleaseShaderCompiler( | 1530 error::Error GLES2DecoderImpl::HandleReleaseShaderCompiler( |
| 1521 uint32 immediate_data_size, const gles2::ReleaseShaderCompiler& c) { | 1531 uint32 immediate_data_size, const gles2::cmds::ReleaseShaderCompiler& c) { |
| 1522 DoReleaseShaderCompiler(); | 1532 DoReleaseShaderCompiler(); |
| 1523 return error::kNoError; | 1533 return error::kNoError; |
| 1524 } | 1534 } |
| 1525 | 1535 |
| 1526 error::Error GLES2DecoderImpl::HandleRenderbufferStorage( | 1536 error::Error GLES2DecoderImpl::HandleRenderbufferStorage( |
| 1527 uint32 immediate_data_size, const gles2::RenderbufferStorage& c) { | 1537 uint32 immediate_data_size, const gles2::cmds::RenderbufferStorage& c) { |
| 1528 GLenum target = static_cast<GLenum>(c.target); | 1538 GLenum target = static_cast<GLenum>(c.target); |
| 1529 GLenum internalformat = static_cast<GLenum>(c.internalformat); | 1539 GLenum internalformat = static_cast<GLenum>(c.internalformat); |
| 1530 GLsizei width = static_cast<GLsizei>(c.width); | 1540 GLsizei width = static_cast<GLsizei>(c.width); |
| 1531 GLsizei height = static_cast<GLsizei>(c.height); | 1541 GLsizei height = static_cast<GLsizei>(c.height); |
| 1532 if (!validators_->render_buffer_target.IsValid(target)) { | 1542 if (!validators_->render_buffer_target.IsValid(target)) { |
| 1533 SetGLErrorInvalidEnum("glRenderbufferStorage", target, "target"); | 1543 SetGLErrorInvalidEnum("glRenderbufferStorage", target, "target"); |
| 1534 return error::kNoError; | 1544 return error::kNoError; |
| 1535 } | 1545 } |
| 1536 if (!validators_->render_buffer_format.IsValid(internalformat)) { | 1546 if (!validators_->render_buffer_format.IsValid(internalformat)) { |
| 1537 SetGLErrorInvalidEnum("glRenderbufferStorage", internalformat, | 1547 SetGLErrorInvalidEnum("glRenderbufferStorage", internalformat, |
| 1538 "internalformat"); | 1548 "internalformat"); |
| 1539 return error::kNoError; | 1549 return error::kNoError; |
| 1540 } | 1550 } |
| 1541 if (width < 0) { | 1551 if (width < 0) { |
| 1542 SetGLError(GL_INVALID_VALUE, "glRenderbufferStorage", "width < 0"); | 1552 SetGLError(GL_INVALID_VALUE, "glRenderbufferStorage", "width < 0"); |
| 1543 return error::kNoError; | 1553 return error::kNoError; |
| 1544 } | 1554 } |
| 1545 if (height < 0) { | 1555 if (height < 0) { |
| 1546 SetGLError(GL_INVALID_VALUE, "glRenderbufferStorage", "height < 0"); | 1556 SetGLError(GL_INVALID_VALUE, "glRenderbufferStorage", "height < 0"); |
| 1547 return error::kNoError; | 1557 return error::kNoError; |
| 1548 } | 1558 } |
| 1549 DoRenderbufferStorage(target, internalformat, width, height); | 1559 DoRenderbufferStorage(target, internalformat, width, height); |
| 1550 return error::kNoError; | 1560 return error::kNoError; |
| 1551 } | 1561 } |
| 1552 | 1562 |
| 1553 error::Error GLES2DecoderImpl::HandleSampleCoverage( | 1563 error::Error GLES2DecoderImpl::HandleSampleCoverage( |
| 1554 uint32 immediate_data_size, const gles2::SampleCoverage& c) { | 1564 uint32 immediate_data_size, const gles2::cmds::SampleCoverage& c) { |
| 1555 GLclampf value = static_cast<GLclampf>(c.value); | 1565 GLclampf value = static_cast<GLclampf>(c.value); |
| 1556 GLboolean invert = static_cast<GLboolean>(c.invert); | 1566 GLboolean invert = static_cast<GLboolean>(c.invert); |
| 1557 DoSampleCoverage(value, invert); | 1567 DoSampleCoverage(value, invert); |
| 1558 return error::kNoError; | 1568 return error::kNoError; |
| 1559 } | 1569 } |
| 1560 | 1570 |
| 1561 error::Error GLES2DecoderImpl::HandleScissor( | 1571 error::Error GLES2DecoderImpl::HandleScissor( |
| 1562 uint32 immediate_data_size, const gles2::Scissor& c) { | 1572 uint32 immediate_data_size, const gles2::cmds::Scissor& c) { |
| 1563 GLint x = static_cast<GLint>(c.x); | 1573 GLint x = static_cast<GLint>(c.x); |
| 1564 GLint y = static_cast<GLint>(c.y); | 1574 GLint y = static_cast<GLint>(c.y); |
| 1565 GLsizei width = static_cast<GLsizei>(c.width); | 1575 GLsizei width = static_cast<GLsizei>(c.width); |
| 1566 GLsizei height = static_cast<GLsizei>(c.height); | 1576 GLsizei height = static_cast<GLsizei>(c.height); |
| 1567 if (width < 0) { | 1577 if (width < 0) { |
| 1568 SetGLError(GL_INVALID_VALUE, "glScissor", "width < 0"); | 1578 SetGLError(GL_INVALID_VALUE, "glScissor", "width < 0"); |
| 1569 return error::kNoError; | 1579 return error::kNoError; |
| 1570 } | 1580 } |
| 1571 if (height < 0) { | 1581 if (height < 0) { |
| 1572 SetGLError(GL_INVALID_VALUE, "glScissor", "height < 0"); | 1582 SetGLError(GL_INVALID_VALUE, "glScissor", "height < 0"); |
| 1573 return error::kNoError; | 1583 return error::kNoError; |
| 1574 } | 1584 } |
| 1575 if (state_.scissor_x != x || | 1585 if (state_.scissor_x != x || |
| 1576 state_.scissor_y != y || | 1586 state_.scissor_y != y || |
| 1577 state_.scissor_width != width || | 1587 state_.scissor_width != width || |
| 1578 state_.scissor_height != height) { | 1588 state_.scissor_height != height) { |
| 1579 state_.scissor_x = x; | 1589 state_.scissor_x = x; |
| 1580 state_.scissor_y = y; | 1590 state_.scissor_y = y; |
| 1581 state_.scissor_width = width; | 1591 state_.scissor_width = width; |
| 1582 state_.scissor_height = height; | 1592 state_.scissor_height = height; |
| 1583 glScissor(x, y, width, height); | 1593 glScissor(x, y, width, height); |
| 1584 } | 1594 } |
| 1585 return error::kNoError; | 1595 return error::kNoError; |
| 1586 } | 1596 } |
| 1587 | 1597 |
| 1588 error::Error GLES2DecoderImpl::HandleStencilFunc( | 1598 error::Error GLES2DecoderImpl::HandleStencilFunc( |
| 1589 uint32 immediate_data_size, const gles2::StencilFunc& c) { | 1599 uint32 immediate_data_size, const gles2::cmds::StencilFunc& c) { |
| 1590 GLenum func = static_cast<GLenum>(c.func); | 1600 GLenum func = static_cast<GLenum>(c.func); |
| 1591 GLint ref = static_cast<GLint>(c.ref); | 1601 GLint ref = static_cast<GLint>(c.ref); |
| 1592 GLuint mask = static_cast<GLuint>(c.mask); | 1602 GLuint mask = static_cast<GLuint>(c.mask); |
| 1593 if (!validators_->cmp_function.IsValid(func)) { | 1603 if (!validators_->cmp_function.IsValid(func)) { |
| 1594 SetGLErrorInvalidEnum("glStencilFunc", func, "func"); | 1604 SetGLErrorInvalidEnum("glStencilFunc", func, "func"); |
| 1595 return error::kNoError; | 1605 return error::kNoError; |
| 1596 } | 1606 } |
| 1597 if (state_.stencil_front_func != func || | 1607 if (state_.stencil_front_func != func || |
| 1598 state_.stencil_front_ref != ref || | 1608 state_.stencil_front_ref != ref || |
| 1599 state_.stencil_front_mask != mask || | 1609 state_.stencil_front_mask != mask || |
| 1600 state_.stencil_back_func != func || | 1610 state_.stencil_back_func != func || |
| 1601 state_.stencil_back_ref != ref || | 1611 state_.stencil_back_ref != ref || |
| 1602 state_.stencil_back_mask != mask) { | 1612 state_.stencil_back_mask != mask) { |
| 1603 state_.stencil_front_func = func; | 1613 state_.stencil_front_func = func; |
| 1604 state_.stencil_front_ref = ref; | 1614 state_.stencil_front_ref = ref; |
| 1605 state_.stencil_front_mask = mask; | 1615 state_.stencil_front_mask = mask; |
| 1606 state_.stencil_back_func = func; | 1616 state_.stencil_back_func = func; |
| 1607 state_.stencil_back_ref = ref; | 1617 state_.stencil_back_ref = ref; |
| 1608 state_.stencil_back_mask = mask; | 1618 state_.stencil_back_mask = mask; |
| 1609 glStencilFunc(func, ref, mask); | 1619 glStencilFunc(func, ref, mask); |
| 1610 } | 1620 } |
| 1611 return error::kNoError; | 1621 return error::kNoError; |
| 1612 } | 1622 } |
| 1613 | 1623 |
| 1614 error::Error GLES2DecoderImpl::HandleStencilFuncSeparate( | 1624 error::Error GLES2DecoderImpl::HandleStencilFuncSeparate( |
| 1615 uint32 immediate_data_size, const gles2::StencilFuncSeparate& c) { | 1625 uint32 immediate_data_size, const gles2::cmds::StencilFuncSeparate& c) { |
| 1616 GLenum face = static_cast<GLenum>(c.face); | 1626 GLenum face = static_cast<GLenum>(c.face); |
| 1617 GLenum func = static_cast<GLenum>(c.func); | 1627 GLenum func = static_cast<GLenum>(c.func); |
| 1618 GLint ref = static_cast<GLint>(c.ref); | 1628 GLint ref = static_cast<GLint>(c.ref); |
| 1619 GLuint mask = static_cast<GLuint>(c.mask); | 1629 GLuint mask = static_cast<GLuint>(c.mask); |
| 1620 if (!validators_->face_type.IsValid(face)) { | 1630 if (!validators_->face_type.IsValid(face)) { |
| 1621 SetGLErrorInvalidEnum("glStencilFuncSeparate", face, "face"); | 1631 SetGLErrorInvalidEnum("glStencilFuncSeparate", face, "face"); |
| 1622 return error::kNoError; | 1632 return error::kNoError; |
| 1623 } | 1633 } |
| 1624 if (!validators_->cmp_function.IsValid(func)) { | 1634 if (!validators_->cmp_function.IsValid(func)) { |
| 1625 SetGLErrorInvalidEnum("glStencilFuncSeparate", func, "func"); | 1635 SetGLErrorInvalidEnum("glStencilFuncSeparate", func, "func"); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1646 state_.stencil_back_func = func; | 1656 state_.stencil_back_func = func; |
| 1647 state_.stencil_back_ref = ref; | 1657 state_.stencil_back_ref = ref; |
| 1648 state_.stencil_back_mask = mask; | 1658 state_.stencil_back_mask = mask; |
| 1649 } | 1659 } |
| 1650 glStencilFuncSeparate(face, func, ref, mask); | 1660 glStencilFuncSeparate(face, func, ref, mask); |
| 1651 } | 1661 } |
| 1652 return error::kNoError; | 1662 return error::kNoError; |
| 1653 } | 1663 } |
| 1654 | 1664 |
| 1655 error::Error GLES2DecoderImpl::HandleStencilMask( | 1665 error::Error GLES2DecoderImpl::HandleStencilMask( |
| 1656 uint32 immediate_data_size, const gles2::StencilMask& c) { | 1666 uint32 immediate_data_size, const gles2::cmds::StencilMask& c) { |
| 1657 GLuint mask = static_cast<GLuint>(c.mask); | 1667 GLuint mask = static_cast<GLuint>(c.mask); |
| 1658 if (state_.stencil_front_writemask != mask || | 1668 if (state_.stencil_front_writemask != mask || |
| 1659 state_.stencil_back_writemask != mask) { | 1669 state_.stencil_back_writemask != mask) { |
| 1660 state_.stencil_front_writemask = mask; | 1670 state_.stencil_front_writemask = mask; |
| 1661 state_.stencil_back_writemask = mask; | 1671 state_.stencil_back_writemask = mask; |
| 1662 clear_state_dirty_ = true; | 1672 clear_state_dirty_ = true; |
| 1663 } | 1673 } |
| 1664 return error::kNoError; | 1674 return error::kNoError; |
| 1665 } | 1675 } |
| 1666 | 1676 |
| 1667 error::Error GLES2DecoderImpl::HandleStencilMaskSeparate( | 1677 error::Error GLES2DecoderImpl::HandleStencilMaskSeparate( |
| 1668 uint32 immediate_data_size, const gles2::StencilMaskSeparate& c) { | 1678 uint32 immediate_data_size, const gles2::cmds::StencilMaskSeparate& c) { |
| 1669 GLenum face = static_cast<GLenum>(c.face); | 1679 GLenum face = static_cast<GLenum>(c.face); |
| 1670 GLuint mask = static_cast<GLuint>(c.mask); | 1680 GLuint mask = static_cast<GLuint>(c.mask); |
| 1671 if (!validators_->face_type.IsValid(face)) { | 1681 if (!validators_->face_type.IsValid(face)) { |
| 1672 SetGLErrorInvalidEnum("glStencilMaskSeparate", face, "face"); | 1682 SetGLErrorInvalidEnum("glStencilMaskSeparate", face, "face"); |
| 1673 return error::kNoError; | 1683 return error::kNoError; |
| 1674 } | 1684 } |
| 1675 bool changed = false; | 1685 bool changed = false; |
| 1676 if (face == GL_FRONT || face == GL_FRONT_AND_BACK) { | 1686 if (face == GL_FRONT || face == GL_FRONT_AND_BACK) { |
| 1677 changed |= state_.stencil_front_writemask != mask; | 1687 changed |= state_.stencil_front_writemask != mask; |
| 1678 } | 1688 } |
| 1679 if (face == GL_BACK || face == GL_FRONT_AND_BACK) { | 1689 if (face == GL_BACK || face == GL_FRONT_AND_BACK) { |
| 1680 changed |= state_.stencil_back_writemask != mask; | 1690 changed |= state_.stencil_back_writemask != mask; |
| 1681 } | 1691 } |
| 1682 if (changed) { | 1692 if (changed) { |
| 1683 if (face == GL_FRONT || face == GL_FRONT_AND_BACK) { | 1693 if (face == GL_FRONT || face == GL_FRONT_AND_BACK) { |
| 1684 state_.stencil_front_writemask = mask; | 1694 state_.stencil_front_writemask = mask; |
| 1685 } | 1695 } |
| 1686 if (face == GL_BACK || face == GL_FRONT_AND_BACK) { | 1696 if (face == GL_BACK || face == GL_FRONT_AND_BACK) { |
| 1687 state_.stencil_back_writemask = mask; | 1697 state_.stencil_back_writemask = mask; |
| 1688 } | 1698 } |
| 1689 clear_state_dirty_ = true; | 1699 clear_state_dirty_ = true; |
| 1690 } | 1700 } |
| 1691 return error::kNoError; | 1701 return error::kNoError; |
| 1692 } | 1702 } |
| 1693 | 1703 |
| 1694 error::Error GLES2DecoderImpl::HandleStencilOp( | 1704 error::Error GLES2DecoderImpl::HandleStencilOp( |
| 1695 uint32 immediate_data_size, const gles2::StencilOp& c) { | 1705 uint32 immediate_data_size, const gles2::cmds::StencilOp& c) { |
| 1696 GLenum fail = static_cast<GLenum>(c.fail); | 1706 GLenum fail = static_cast<GLenum>(c.fail); |
| 1697 GLenum zfail = static_cast<GLenum>(c.zfail); | 1707 GLenum zfail = static_cast<GLenum>(c.zfail); |
| 1698 GLenum zpass = static_cast<GLenum>(c.zpass); | 1708 GLenum zpass = static_cast<GLenum>(c.zpass); |
| 1699 if (!validators_->stencil_op.IsValid(fail)) { | 1709 if (!validators_->stencil_op.IsValid(fail)) { |
| 1700 SetGLErrorInvalidEnum("glStencilOp", fail, "fail"); | 1710 SetGLErrorInvalidEnum("glStencilOp", fail, "fail"); |
| 1701 return error::kNoError; | 1711 return error::kNoError; |
| 1702 } | 1712 } |
| 1703 if (!validators_->stencil_op.IsValid(zfail)) { | 1713 if (!validators_->stencil_op.IsValid(zfail)) { |
| 1704 SetGLErrorInvalidEnum("glStencilOp", zfail, "zfail"); | 1714 SetGLErrorInvalidEnum("glStencilOp", zfail, "zfail"); |
| 1705 return error::kNoError; | 1715 return error::kNoError; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1719 state_.stencil_front_z_pass_op = zpass; | 1729 state_.stencil_front_z_pass_op = zpass; |
| 1720 state_.stencil_back_fail_op = fail; | 1730 state_.stencil_back_fail_op = fail; |
| 1721 state_.stencil_back_z_fail_op = zfail; | 1731 state_.stencil_back_z_fail_op = zfail; |
| 1722 state_.stencil_back_z_pass_op = zpass; | 1732 state_.stencil_back_z_pass_op = zpass; |
| 1723 glStencilOp(fail, zfail, zpass); | 1733 glStencilOp(fail, zfail, zpass); |
| 1724 } | 1734 } |
| 1725 return error::kNoError; | 1735 return error::kNoError; |
| 1726 } | 1736 } |
| 1727 | 1737 |
| 1728 error::Error GLES2DecoderImpl::HandleStencilOpSeparate( | 1738 error::Error GLES2DecoderImpl::HandleStencilOpSeparate( |
| 1729 uint32 immediate_data_size, const gles2::StencilOpSeparate& c) { | 1739 uint32 immediate_data_size, const gles2::cmds::StencilOpSeparate& c) { |
| 1730 GLenum face = static_cast<GLenum>(c.face); | 1740 GLenum face = static_cast<GLenum>(c.face); |
| 1731 GLenum fail = static_cast<GLenum>(c.fail); | 1741 GLenum fail = static_cast<GLenum>(c.fail); |
| 1732 GLenum zfail = static_cast<GLenum>(c.zfail); | 1742 GLenum zfail = static_cast<GLenum>(c.zfail); |
| 1733 GLenum zpass = static_cast<GLenum>(c.zpass); | 1743 GLenum zpass = static_cast<GLenum>(c.zpass); |
| 1734 if (!validators_->face_type.IsValid(face)) { | 1744 if (!validators_->face_type.IsValid(face)) { |
| 1735 SetGLErrorInvalidEnum("glStencilOpSeparate", face, "face"); | 1745 SetGLErrorInvalidEnum("glStencilOpSeparate", face, "face"); |
| 1736 return error::kNoError; | 1746 return error::kNoError; |
| 1737 } | 1747 } |
| 1738 if (!validators_->stencil_op.IsValid(fail)) { | 1748 if (!validators_->stencil_op.IsValid(fail)) { |
| 1739 SetGLErrorInvalidEnum("glStencilOpSeparate", fail, "fail"); | 1749 SetGLErrorInvalidEnum("glStencilOpSeparate", fail, "fail"); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1768 state_.stencil_back_fail_op = fail; | 1778 state_.stencil_back_fail_op = fail; |
| 1769 state_.stencil_back_z_fail_op = zfail; | 1779 state_.stencil_back_z_fail_op = zfail; |
| 1770 state_.stencil_back_z_pass_op = zpass; | 1780 state_.stencil_back_z_pass_op = zpass; |
| 1771 } | 1781 } |
| 1772 glStencilOpSeparate(face, fail, zfail, zpass); | 1782 glStencilOpSeparate(face, fail, zfail, zpass); |
| 1773 } | 1783 } |
| 1774 return error::kNoError; | 1784 return error::kNoError; |
| 1775 } | 1785 } |
| 1776 | 1786 |
| 1777 error::Error GLES2DecoderImpl::HandleTexParameterf( | 1787 error::Error GLES2DecoderImpl::HandleTexParameterf( |
| 1778 uint32 immediate_data_size, const gles2::TexParameterf& c) { | 1788 uint32 immediate_data_size, const gles2::cmds::TexParameterf& c) { |
| 1779 GLenum target = static_cast<GLenum>(c.target); | 1789 GLenum target = static_cast<GLenum>(c.target); |
| 1780 GLenum pname = static_cast<GLenum>(c.pname); | 1790 GLenum pname = static_cast<GLenum>(c.pname); |
| 1781 GLfloat param = static_cast<GLfloat>(c.param); | 1791 GLfloat param = static_cast<GLfloat>(c.param); |
| 1782 if (!validators_->texture_bind_target.IsValid(target)) { | 1792 if (!validators_->texture_bind_target.IsValid(target)) { |
| 1783 SetGLErrorInvalidEnum("glTexParameterf", target, "target"); | 1793 SetGLErrorInvalidEnum("glTexParameterf", target, "target"); |
| 1784 return error::kNoError; | 1794 return error::kNoError; |
| 1785 } | 1795 } |
| 1786 if (!validators_->texture_parameter.IsValid(pname)) { | 1796 if (!validators_->texture_parameter.IsValid(pname)) { |
| 1787 SetGLErrorInvalidEnum("glTexParameterf", pname, "pname"); | 1797 SetGLErrorInvalidEnum("glTexParameterf", pname, "pname"); |
| 1788 return error::kNoError; | 1798 return error::kNoError; |
| 1789 } | 1799 } |
| 1790 DoTexParameterf(target, pname, param); | 1800 DoTexParameterf(target, pname, param); |
| 1791 return error::kNoError; | 1801 return error::kNoError; |
| 1792 } | 1802 } |
| 1793 | 1803 |
| 1794 error::Error GLES2DecoderImpl::HandleTexParameterfv( | 1804 error::Error GLES2DecoderImpl::HandleTexParameterfv( |
| 1795 uint32 immediate_data_size, const gles2::TexParameterfv& c) { | 1805 uint32 immediate_data_size, const gles2::cmds::TexParameterfv& c) { |
| 1796 GLenum target = static_cast<GLenum>(c.target); | 1806 GLenum target = static_cast<GLenum>(c.target); |
| 1797 GLenum pname = static_cast<GLenum>(c.pname); | 1807 GLenum pname = static_cast<GLenum>(c.pname); |
| 1798 uint32 data_size; | 1808 uint32 data_size; |
| 1799 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { | 1809 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { |
| 1800 return error::kOutOfBounds; | 1810 return error::kOutOfBounds; |
| 1801 } | 1811 } |
| 1802 const GLfloat* params = GetSharedMemoryAs<const GLfloat*>( | 1812 const GLfloat* params = GetSharedMemoryAs<const GLfloat*>( |
| 1803 c.params_shm_id, c.params_shm_offset, data_size); | 1813 c.params_shm_id, c.params_shm_offset, data_size); |
| 1804 if (!validators_->texture_bind_target.IsValid(target)) { | 1814 if (!validators_->texture_bind_target.IsValid(target)) { |
| 1805 SetGLErrorInvalidEnum("glTexParameterfv", target, "target"); | 1815 SetGLErrorInvalidEnum("glTexParameterfv", target, "target"); |
| 1806 return error::kNoError; | 1816 return error::kNoError; |
| 1807 } | 1817 } |
| 1808 if (!validators_->texture_parameter.IsValid(pname)) { | 1818 if (!validators_->texture_parameter.IsValid(pname)) { |
| 1809 SetGLErrorInvalidEnum("glTexParameterfv", pname, "pname"); | 1819 SetGLErrorInvalidEnum("glTexParameterfv", pname, "pname"); |
| 1810 return error::kNoError; | 1820 return error::kNoError; |
| 1811 } | 1821 } |
| 1812 if (params == NULL) { | 1822 if (params == NULL) { |
| 1813 return error::kOutOfBounds; | 1823 return error::kOutOfBounds; |
| 1814 } | 1824 } |
| 1815 DoTexParameterfv(target, pname, params); | 1825 DoTexParameterfv(target, pname, params); |
| 1816 return error::kNoError; | 1826 return error::kNoError; |
| 1817 } | 1827 } |
| 1818 | 1828 |
| 1819 error::Error GLES2DecoderImpl::HandleTexParameterfvImmediate( | 1829 error::Error GLES2DecoderImpl::HandleTexParameterfvImmediate( |
| 1820 uint32 immediate_data_size, const gles2::TexParameterfvImmediate& c) { | 1830 uint32 immediate_data_size, |
| 1831 const gles2::cmds::TexParameterfvImmediate& c) { |
| 1821 GLenum target = static_cast<GLenum>(c.target); | 1832 GLenum target = static_cast<GLenum>(c.target); |
| 1822 GLenum pname = static_cast<GLenum>(c.pname); | 1833 GLenum pname = static_cast<GLenum>(c.pname); |
| 1823 uint32 data_size; | 1834 uint32 data_size; |
| 1824 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { | 1835 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { |
| 1825 return error::kOutOfBounds; | 1836 return error::kOutOfBounds; |
| 1826 } | 1837 } |
| 1827 if (data_size > immediate_data_size) { | 1838 if (data_size > immediate_data_size) { |
| 1828 return error::kOutOfBounds; | 1839 return error::kOutOfBounds; |
| 1829 } | 1840 } |
| 1830 const GLfloat* params = GetImmediateDataAs<const GLfloat*>( | 1841 const GLfloat* params = GetImmediateDataAs<const GLfloat*>( |
| 1831 c, data_size, immediate_data_size); | 1842 c, data_size, immediate_data_size); |
| 1832 if (!validators_->texture_bind_target.IsValid(target)) { | 1843 if (!validators_->texture_bind_target.IsValid(target)) { |
| 1833 SetGLErrorInvalidEnum("glTexParameterfv", target, "target"); | 1844 SetGLErrorInvalidEnum("glTexParameterfv", target, "target"); |
| 1834 return error::kNoError; | 1845 return error::kNoError; |
| 1835 } | 1846 } |
| 1836 if (!validators_->texture_parameter.IsValid(pname)) { | 1847 if (!validators_->texture_parameter.IsValid(pname)) { |
| 1837 SetGLErrorInvalidEnum("glTexParameterfv", pname, "pname"); | 1848 SetGLErrorInvalidEnum("glTexParameterfv", pname, "pname"); |
| 1838 return error::kNoError; | 1849 return error::kNoError; |
| 1839 } | 1850 } |
| 1840 if (params == NULL) { | 1851 if (params == NULL) { |
| 1841 return error::kOutOfBounds; | 1852 return error::kOutOfBounds; |
| 1842 } | 1853 } |
| 1843 DoTexParameterfv(target, pname, params); | 1854 DoTexParameterfv(target, pname, params); |
| 1844 return error::kNoError; | 1855 return error::kNoError; |
| 1845 } | 1856 } |
| 1846 | 1857 |
| 1847 error::Error GLES2DecoderImpl::HandleTexParameteri( | 1858 error::Error GLES2DecoderImpl::HandleTexParameteri( |
| 1848 uint32 immediate_data_size, const gles2::TexParameteri& c) { | 1859 uint32 immediate_data_size, const gles2::cmds::TexParameteri& c) { |
| 1849 GLenum target = static_cast<GLenum>(c.target); | 1860 GLenum target = static_cast<GLenum>(c.target); |
| 1850 GLenum pname = static_cast<GLenum>(c.pname); | 1861 GLenum pname = static_cast<GLenum>(c.pname); |
| 1851 GLint param = static_cast<GLint>(c.param); | 1862 GLint param = static_cast<GLint>(c.param); |
| 1852 if (!validators_->texture_bind_target.IsValid(target)) { | 1863 if (!validators_->texture_bind_target.IsValid(target)) { |
| 1853 SetGLErrorInvalidEnum("glTexParameteri", target, "target"); | 1864 SetGLErrorInvalidEnum("glTexParameteri", target, "target"); |
| 1854 return error::kNoError; | 1865 return error::kNoError; |
| 1855 } | 1866 } |
| 1856 if (!validators_->texture_parameter.IsValid(pname)) { | 1867 if (!validators_->texture_parameter.IsValid(pname)) { |
| 1857 SetGLErrorInvalidEnum("glTexParameteri", pname, "pname"); | 1868 SetGLErrorInvalidEnum("glTexParameteri", pname, "pname"); |
| 1858 return error::kNoError; | 1869 return error::kNoError; |
| 1859 } | 1870 } |
| 1860 DoTexParameteri(target, pname, param); | 1871 DoTexParameteri(target, pname, param); |
| 1861 return error::kNoError; | 1872 return error::kNoError; |
| 1862 } | 1873 } |
| 1863 | 1874 |
| 1864 error::Error GLES2DecoderImpl::HandleTexParameteriv( | 1875 error::Error GLES2DecoderImpl::HandleTexParameteriv( |
| 1865 uint32 immediate_data_size, const gles2::TexParameteriv& c) { | 1876 uint32 immediate_data_size, const gles2::cmds::TexParameteriv& c) { |
| 1866 GLenum target = static_cast<GLenum>(c.target); | 1877 GLenum target = static_cast<GLenum>(c.target); |
| 1867 GLenum pname = static_cast<GLenum>(c.pname); | 1878 GLenum pname = static_cast<GLenum>(c.pname); |
| 1868 uint32 data_size; | 1879 uint32 data_size; |
| 1869 if (!ComputeDataSize(1, sizeof(GLint), 1, &data_size)) { | 1880 if (!ComputeDataSize(1, sizeof(GLint), 1, &data_size)) { |
| 1870 return error::kOutOfBounds; | 1881 return error::kOutOfBounds; |
| 1871 } | 1882 } |
| 1872 const GLint* params = GetSharedMemoryAs<const GLint*>( | 1883 const GLint* params = GetSharedMemoryAs<const GLint*>( |
| 1873 c.params_shm_id, c.params_shm_offset, data_size); | 1884 c.params_shm_id, c.params_shm_offset, data_size); |
| 1874 if (!validators_->texture_bind_target.IsValid(target)) { | 1885 if (!validators_->texture_bind_target.IsValid(target)) { |
| 1875 SetGLErrorInvalidEnum("glTexParameteriv", target, "target"); | 1886 SetGLErrorInvalidEnum("glTexParameteriv", target, "target"); |
| 1876 return error::kNoError; | 1887 return error::kNoError; |
| 1877 } | 1888 } |
| 1878 if (!validators_->texture_parameter.IsValid(pname)) { | 1889 if (!validators_->texture_parameter.IsValid(pname)) { |
| 1879 SetGLErrorInvalidEnum("glTexParameteriv", pname, "pname"); | 1890 SetGLErrorInvalidEnum("glTexParameteriv", pname, "pname"); |
| 1880 return error::kNoError; | 1891 return error::kNoError; |
| 1881 } | 1892 } |
| 1882 if (params == NULL) { | 1893 if (params == NULL) { |
| 1883 return error::kOutOfBounds; | 1894 return error::kOutOfBounds; |
| 1884 } | 1895 } |
| 1885 DoTexParameteriv(target, pname, params); | 1896 DoTexParameteriv(target, pname, params); |
| 1886 return error::kNoError; | 1897 return error::kNoError; |
| 1887 } | 1898 } |
| 1888 | 1899 |
| 1889 error::Error GLES2DecoderImpl::HandleTexParameterivImmediate( | 1900 error::Error GLES2DecoderImpl::HandleTexParameterivImmediate( |
| 1890 uint32 immediate_data_size, const gles2::TexParameterivImmediate& c) { | 1901 uint32 immediate_data_size, |
| 1902 const gles2::cmds::TexParameterivImmediate& c) { |
| 1891 GLenum target = static_cast<GLenum>(c.target); | 1903 GLenum target = static_cast<GLenum>(c.target); |
| 1892 GLenum pname = static_cast<GLenum>(c.pname); | 1904 GLenum pname = static_cast<GLenum>(c.pname); |
| 1893 uint32 data_size; | 1905 uint32 data_size; |
| 1894 if (!ComputeDataSize(1, sizeof(GLint), 1, &data_size)) { | 1906 if (!ComputeDataSize(1, sizeof(GLint), 1, &data_size)) { |
| 1895 return error::kOutOfBounds; | 1907 return error::kOutOfBounds; |
| 1896 } | 1908 } |
| 1897 if (data_size > immediate_data_size) { | 1909 if (data_size > immediate_data_size) { |
| 1898 return error::kOutOfBounds; | 1910 return error::kOutOfBounds; |
| 1899 } | 1911 } |
| 1900 const GLint* params = GetImmediateDataAs<const GLint*>( | 1912 const GLint* params = GetImmediateDataAs<const GLint*>( |
| 1901 c, data_size, immediate_data_size); | 1913 c, data_size, immediate_data_size); |
| 1902 if (!validators_->texture_bind_target.IsValid(target)) { | 1914 if (!validators_->texture_bind_target.IsValid(target)) { |
| 1903 SetGLErrorInvalidEnum("glTexParameteriv", target, "target"); | 1915 SetGLErrorInvalidEnum("glTexParameteriv", target, "target"); |
| 1904 return error::kNoError; | 1916 return error::kNoError; |
| 1905 } | 1917 } |
| 1906 if (!validators_->texture_parameter.IsValid(pname)) { | 1918 if (!validators_->texture_parameter.IsValid(pname)) { |
| 1907 SetGLErrorInvalidEnum("glTexParameteriv", pname, "pname"); | 1919 SetGLErrorInvalidEnum("glTexParameteriv", pname, "pname"); |
| 1908 return error::kNoError; | 1920 return error::kNoError; |
| 1909 } | 1921 } |
| 1910 if (params == NULL) { | 1922 if (params == NULL) { |
| 1911 return error::kOutOfBounds; | 1923 return error::kOutOfBounds; |
| 1912 } | 1924 } |
| 1913 DoTexParameteriv(target, pname, params); | 1925 DoTexParameteriv(target, pname, params); |
| 1914 return error::kNoError; | 1926 return error::kNoError; |
| 1915 } | 1927 } |
| 1916 | 1928 |
| 1917 error::Error GLES2DecoderImpl::HandleUniform1f( | 1929 error::Error GLES2DecoderImpl::HandleUniform1f( |
| 1918 uint32 immediate_data_size, const gles2::Uniform1f& c) { | 1930 uint32 immediate_data_size, const gles2::cmds::Uniform1f& c) { |
| 1919 GLint location = static_cast<GLint>(c.location); | 1931 GLint location = static_cast<GLint>(c.location); |
| 1920 GLfloat x = static_cast<GLfloat>(c.x); | 1932 GLfloat x = static_cast<GLfloat>(c.x); |
| 1921 GLfloat temp[1] = { x, }; | 1933 GLfloat temp[1] = { x, }; |
| 1922 DoUniform1fv(location, 1, &temp[0]); | 1934 DoUniform1fv(location, 1, &temp[0]); |
| 1923 return error::kNoError; | 1935 return error::kNoError; |
| 1924 } | 1936 } |
| 1925 | 1937 |
| 1926 error::Error GLES2DecoderImpl::HandleUniform1fv( | 1938 error::Error GLES2DecoderImpl::HandleUniform1fv( |
| 1927 uint32 immediate_data_size, const gles2::Uniform1fv& c) { | 1939 uint32 immediate_data_size, const gles2::cmds::Uniform1fv& c) { |
| 1928 GLint location = static_cast<GLint>(c.location); | 1940 GLint location = static_cast<GLint>(c.location); |
| 1929 GLsizei count = static_cast<GLsizei>(c.count); | 1941 GLsizei count = static_cast<GLsizei>(c.count); |
| 1930 uint32 data_size; | 1942 uint32 data_size; |
| 1931 if (!ComputeDataSize(count, sizeof(GLfloat), 1, &data_size)) { | 1943 if (!ComputeDataSize(count, sizeof(GLfloat), 1, &data_size)) { |
| 1932 return error::kOutOfBounds; | 1944 return error::kOutOfBounds; |
| 1933 } | 1945 } |
| 1934 const GLfloat* v = GetSharedMemoryAs<const GLfloat*>( | 1946 const GLfloat* v = GetSharedMemoryAs<const GLfloat*>( |
| 1935 c.v_shm_id, c.v_shm_offset, data_size); | 1947 c.v_shm_id, c.v_shm_offset, data_size); |
| 1936 if (v == NULL) { | 1948 if (v == NULL) { |
| 1937 return error::kOutOfBounds; | 1949 return error::kOutOfBounds; |
| 1938 } | 1950 } |
| 1939 DoUniform1fv(location, count, v); | 1951 DoUniform1fv(location, count, v); |
| 1940 return error::kNoError; | 1952 return error::kNoError; |
| 1941 } | 1953 } |
| 1942 | 1954 |
| 1943 error::Error GLES2DecoderImpl::HandleUniform1fvImmediate( | 1955 error::Error GLES2DecoderImpl::HandleUniform1fvImmediate( |
| 1944 uint32 immediate_data_size, const gles2::Uniform1fvImmediate& c) { | 1956 uint32 immediate_data_size, const gles2::cmds::Uniform1fvImmediate& c) { |
| 1945 GLint location = static_cast<GLint>(c.location); | 1957 GLint location = static_cast<GLint>(c.location); |
| 1946 GLsizei count = static_cast<GLsizei>(c.count); | 1958 GLsizei count = static_cast<GLsizei>(c.count); |
| 1947 uint32 data_size; | 1959 uint32 data_size; |
| 1948 if (!ComputeDataSize(count, sizeof(GLfloat), 1, &data_size)) { | 1960 if (!ComputeDataSize(count, sizeof(GLfloat), 1, &data_size)) { |
| 1949 return error::kOutOfBounds; | 1961 return error::kOutOfBounds; |
| 1950 } | 1962 } |
| 1951 if (data_size > immediate_data_size) { | 1963 if (data_size > immediate_data_size) { |
| 1952 return error::kOutOfBounds; | 1964 return error::kOutOfBounds; |
| 1953 } | 1965 } |
| 1954 const GLfloat* v = GetImmediateDataAs<const GLfloat*>( | 1966 const GLfloat* v = GetImmediateDataAs<const GLfloat*>( |
| 1955 c, data_size, immediate_data_size); | 1967 c, data_size, immediate_data_size); |
| 1956 if (v == NULL) { | 1968 if (v == NULL) { |
| 1957 return error::kOutOfBounds; | 1969 return error::kOutOfBounds; |
| 1958 } | 1970 } |
| 1959 DoUniform1fv(location, count, v); | 1971 DoUniform1fv(location, count, v); |
| 1960 return error::kNoError; | 1972 return error::kNoError; |
| 1961 } | 1973 } |
| 1962 | 1974 |
| 1963 error::Error GLES2DecoderImpl::HandleUniform1i( | 1975 error::Error GLES2DecoderImpl::HandleUniform1i( |
| 1964 uint32 immediate_data_size, const gles2::Uniform1i& c) { | 1976 uint32 immediate_data_size, const gles2::cmds::Uniform1i& c) { |
| 1965 GLint location = static_cast<GLint>(c.location); | 1977 GLint location = static_cast<GLint>(c.location); |
| 1966 GLint x = static_cast<GLint>(c.x); | 1978 GLint x = static_cast<GLint>(c.x); |
| 1967 DoUniform1i(location, x); | 1979 DoUniform1i(location, x); |
| 1968 return error::kNoError; | 1980 return error::kNoError; |
| 1969 } | 1981 } |
| 1970 | 1982 |
| 1971 error::Error GLES2DecoderImpl::HandleUniform1iv( | 1983 error::Error GLES2DecoderImpl::HandleUniform1iv( |
| 1972 uint32 immediate_data_size, const gles2::Uniform1iv& c) { | 1984 uint32 immediate_data_size, const gles2::cmds::Uniform1iv& c) { |
| 1973 GLint location = static_cast<GLint>(c.location); | 1985 GLint location = static_cast<GLint>(c.location); |
| 1974 GLsizei count = static_cast<GLsizei>(c.count); | 1986 GLsizei count = static_cast<GLsizei>(c.count); |
| 1975 uint32 data_size; | 1987 uint32 data_size; |
| 1976 if (!ComputeDataSize(count, sizeof(GLint), 1, &data_size)) { | 1988 if (!ComputeDataSize(count, sizeof(GLint), 1, &data_size)) { |
| 1977 return error::kOutOfBounds; | 1989 return error::kOutOfBounds; |
| 1978 } | 1990 } |
| 1979 const GLint* v = GetSharedMemoryAs<const GLint*>( | 1991 const GLint* v = GetSharedMemoryAs<const GLint*>( |
| 1980 c.v_shm_id, c.v_shm_offset, data_size); | 1992 c.v_shm_id, c.v_shm_offset, data_size); |
| 1981 if (v == NULL) { | 1993 if (v == NULL) { |
| 1982 return error::kOutOfBounds; | 1994 return error::kOutOfBounds; |
| 1983 } | 1995 } |
| 1984 DoUniform1iv(location, count, v); | 1996 DoUniform1iv(location, count, v); |
| 1985 return error::kNoError; | 1997 return error::kNoError; |
| 1986 } | 1998 } |
| 1987 | 1999 |
| 1988 error::Error GLES2DecoderImpl::HandleUniform1ivImmediate( | 2000 error::Error GLES2DecoderImpl::HandleUniform1ivImmediate( |
| 1989 uint32 immediate_data_size, const gles2::Uniform1ivImmediate& c) { | 2001 uint32 immediate_data_size, const gles2::cmds::Uniform1ivImmediate& c) { |
| 1990 GLint location = static_cast<GLint>(c.location); | 2002 GLint location = static_cast<GLint>(c.location); |
| 1991 GLsizei count = static_cast<GLsizei>(c.count); | 2003 GLsizei count = static_cast<GLsizei>(c.count); |
| 1992 uint32 data_size; | 2004 uint32 data_size; |
| 1993 if (!ComputeDataSize(count, sizeof(GLint), 1, &data_size)) { | 2005 if (!ComputeDataSize(count, sizeof(GLint), 1, &data_size)) { |
| 1994 return error::kOutOfBounds; | 2006 return error::kOutOfBounds; |
| 1995 } | 2007 } |
| 1996 if (data_size > immediate_data_size) { | 2008 if (data_size > immediate_data_size) { |
| 1997 return error::kOutOfBounds; | 2009 return error::kOutOfBounds; |
| 1998 } | 2010 } |
| 1999 const GLint* v = GetImmediateDataAs<const GLint*>( | 2011 const GLint* v = GetImmediateDataAs<const GLint*>( |
| 2000 c, data_size, immediate_data_size); | 2012 c, data_size, immediate_data_size); |
| 2001 if (v == NULL) { | 2013 if (v == NULL) { |
| 2002 return error::kOutOfBounds; | 2014 return error::kOutOfBounds; |
| 2003 } | 2015 } |
| 2004 DoUniform1iv(location, count, v); | 2016 DoUniform1iv(location, count, v); |
| 2005 return error::kNoError; | 2017 return error::kNoError; |
| 2006 } | 2018 } |
| 2007 | 2019 |
| 2008 error::Error GLES2DecoderImpl::HandleUniform2f( | 2020 error::Error GLES2DecoderImpl::HandleUniform2f( |
| 2009 uint32 immediate_data_size, const gles2::Uniform2f& c) { | 2021 uint32 immediate_data_size, const gles2::cmds::Uniform2f& c) { |
| 2010 GLint location = static_cast<GLint>(c.location); | 2022 GLint location = static_cast<GLint>(c.location); |
| 2011 GLfloat x = static_cast<GLfloat>(c.x); | 2023 GLfloat x = static_cast<GLfloat>(c.x); |
| 2012 GLfloat y = static_cast<GLfloat>(c.y); | 2024 GLfloat y = static_cast<GLfloat>(c.y); |
| 2013 GLfloat temp[2] = { x, y, }; | 2025 GLfloat temp[2] = { x, y, }; |
| 2014 DoUniform2fv(location, 1, &temp[0]); | 2026 DoUniform2fv(location, 1, &temp[0]); |
| 2015 return error::kNoError; | 2027 return error::kNoError; |
| 2016 } | 2028 } |
| 2017 | 2029 |
| 2018 error::Error GLES2DecoderImpl::HandleUniform2fv( | 2030 error::Error GLES2DecoderImpl::HandleUniform2fv( |
| 2019 uint32 immediate_data_size, const gles2::Uniform2fv& c) { | 2031 uint32 immediate_data_size, const gles2::cmds::Uniform2fv& c) { |
| 2020 GLint location = static_cast<GLint>(c.location); | 2032 GLint location = static_cast<GLint>(c.location); |
| 2021 GLsizei count = static_cast<GLsizei>(c.count); | 2033 GLsizei count = static_cast<GLsizei>(c.count); |
| 2022 uint32 data_size; | 2034 uint32 data_size; |
| 2023 if (!ComputeDataSize(count, sizeof(GLfloat), 2, &data_size)) { | 2035 if (!ComputeDataSize(count, sizeof(GLfloat), 2, &data_size)) { |
| 2024 return error::kOutOfBounds; | 2036 return error::kOutOfBounds; |
| 2025 } | 2037 } |
| 2026 const GLfloat* v = GetSharedMemoryAs<const GLfloat*>( | 2038 const GLfloat* v = GetSharedMemoryAs<const GLfloat*>( |
| 2027 c.v_shm_id, c.v_shm_offset, data_size); | 2039 c.v_shm_id, c.v_shm_offset, data_size); |
| 2028 if (v == NULL) { | 2040 if (v == NULL) { |
| 2029 return error::kOutOfBounds; | 2041 return error::kOutOfBounds; |
| 2030 } | 2042 } |
| 2031 DoUniform2fv(location, count, v); | 2043 DoUniform2fv(location, count, v); |
| 2032 return error::kNoError; | 2044 return error::kNoError; |
| 2033 } | 2045 } |
| 2034 | 2046 |
| 2035 error::Error GLES2DecoderImpl::HandleUniform2fvImmediate( | 2047 error::Error GLES2DecoderImpl::HandleUniform2fvImmediate( |
| 2036 uint32 immediate_data_size, const gles2::Uniform2fvImmediate& c) { | 2048 uint32 immediate_data_size, const gles2::cmds::Uniform2fvImmediate& c) { |
| 2037 GLint location = static_cast<GLint>(c.location); | 2049 GLint location = static_cast<GLint>(c.location); |
| 2038 GLsizei count = static_cast<GLsizei>(c.count); | 2050 GLsizei count = static_cast<GLsizei>(c.count); |
| 2039 uint32 data_size; | 2051 uint32 data_size; |
| 2040 if (!ComputeDataSize(count, sizeof(GLfloat), 2, &data_size)) { | 2052 if (!ComputeDataSize(count, sizeof(GLfloat), 2, &data_size)) { |
| 2041 return error::kOutOfBounds; | 2053 return error::kOutOfBounds; |
| 2042 } | 2054 } |
| 2043 if (data_size > immediate_data_size) { | 2055 if (data_size > immediate_data_size) { |
| 2044 return error::kOutOfBounds; | 2056 return error::kOutOfBounds; |
| 2045 } | 2057 } |
| 2046 const GLfloat* v = GetImmediateDataAs<const GLfloat*>( | 2058 const GLfloat* v = GetImmediateDataAs<const GLfloat*>( |
| 2047 c, data_size, immediate_data_size); | 2059 c, data_size, immediate_data_size); |
| 2048 if (v == NULL) { | 2060 if (v == NULL) { |
| 2049 return error::kOutOfBounds; | 2061 return error::kOutOfBounds; |
| 2050 } | 2062 } |
| 2051 DoUniform2fv(location, count, v); | 2063 DoUniform2fv(location, count, v); |
| 2052 return error::kNoError; | 2064 return error::kNoError; |
| 2053 } | 2065 } |
| 2054 | 2066 |
| 2055 error::Error GLES2DecoderImpl::HandleUniform2i( | 2067 error::Error GLES2DecoderImpl::HandleUniform2i( |
| 2056 uint32 immediate_data_size, const gles2::Uniform2i& c) { | 2068 uint32 immediate_data_size, const gles2::cmds::Uniform2i& c) { |
| 2057 GLint location = static_cast<GLint>(c.location); | 2069 GLint location = static_cast<GLint>(c.location); |
| 2058 GLint x = static_cast<GLint>(c.x); | 2070 GLint x = static_cast<GLint>(c.x); |
| 2059 GLint y = static_cast<GLint>(c.y); | 2071 GLint y = static_cast<GLint>(c.y); |
| 2060 GLint temp[2] = { x, y, }; | 2072 GLint temp[2] = { x, y, }; |
| 2061 DoUniform2iv(location, 1, &temp[0]); | 2073 DoUniform2iv(location, 1, &temp[0]); |
| 2062 return error::kNoError; | 2074 return error::kNoError; |
| 2063 } | 2075 } |
| 2064 | 2076 |
| 2065 error::Error GLES2DecoderImpl::HandleUniform2iv( | 2077 error::Error GLES2DecoderImpl::HandleUniform2iv( |
| 2066 uint32 immediate_data_size, const gles2::Uniform2iv& c) { | 2078 uint32 immediate_data_size, const gles2::cmds::Uniform2iv& c) { |
| 2067 GLint location = static_cast<GLint>(c.location); | 2079 GLint location = static_cast<GLint>(c.location); |
| 2068 GLsizei count = static_cast<GLsizei>(c.count); | 2080 GLsizei count = static_cast<GLsizei>(c.count); |
| 2069 uint32 data_size; | 2081 uint32 data_size; |
| 2070 if (!ComputeDataSize(count, sizeof(GLint), 2, &data_size)) { | 2082 if (!ComputeDataSize(count, sizeof(GLint), 2, &data_size)) { |
| 2071 return error::kOutOfBounds; | 2083 return error::kOutOfBounds; |
| 2072 } | 2084 } |
| 2073 const GLint* v = GetSharedMemoryAs<const GLint*>( | 2085 const GLint* v = GetSharedMemoryAs<const GLint*>( |
| 2074 c.v_shm_id, c.v_shm_offset, data_size); | 2086 c.v_shm_id, c.v_shm_offset, data_size); |
| 2075 if (v == NULL) { | 2087 if (v == NULL) { |
| 2076 return error::kOutOfBounds; | 2088 return error::kOutOfBounds; |
| 2077 } | 2089 } |
| 2078 DoUniform2iv(location, count, v); | 2090 DoUniform2iv(location, count, v); |
| 2079 return error::kNoError; | 2091 return error::kNoError; |
| 2080 } | 2092 } |
| 2081 | 2093 |
| 2082 error::Error GLES2DecoderImpl::HandleUniform2ivImmediate( | 2094 error::Error GLES2DecoderImpl::HandleUniform2ivImmediate( |
| 2083 uint32 immediate_data_size, const gles2::Uniform2ivImmediate& c) { | 2095 uint32 immediate_data_size, const gles2::cmds::Uniform2ivImmediate& c) { |
| 2084 GLint location = static_cast<GLint>(c.location); | 2096 GLint location = static_cast<GLint>(c.location); |
| 2085 GLsizei count = static_cast<GLsizei>(c.count); | 2097 GLsizei count = static_cast<GLsizei>(c.count); |
| 2086 uint32 data_size; | 2098 uint32 data_size; |
| 2087 if (!ComputeDataSize(count, sizeof(GLint), 2, &data_size)) { | 2099 if (!ComputeDataSize(count, sizeof(GLint), 2, &data_size)) { |
| 2088 return error::kOutOfBounds; | 2100 return error::kOutOfBounds; |
| 2089 } | 2101 } |
| 2090 if (data_size > immediate_data_size) { | 2102 if (data_size > immediate_data_size) { |
| 2091 return error::kOutOfBounds; | 2103 return error::kOutOfBounds; |
| 2092 } | 2104 } |
| 2093 const GLint* v = GetImmediateDataAs<const GLint*>( | 2105 const GLint* v = GetImmediateDataAs<const GLint*>( |
| 2094 c, data_size, immediate_data_size); | 2106 c, data_size, immediate_data_size); |
| 2095 if (v == NULL) { | 2107 if (v == NULL) { |
| 2096 return error::kOutOfBounds; | 2108 return error::kOutOfBounds; |
| 2097 } | 2109 } |
| 2098 DoUniform2iv(location, count, v); | 2110 DoUniform2iv(location, count, v); |
| 2099 return error::kNoError; | 2111 return error::kNoError; |
| 2100 } | 2112 } |
| 2101 | 2113 |
| 2102 error::Error GLES2DecoderImpl::HandleUniform3f( | 2114 error::Error GLES2DecoderImpl::HandleUniform3f( |
| 2103 uint32 immediate_data_size, const gles2::Uniform3f& c) { | 2115 uint32 immediate_data_size, const gles2::cmds::Uniform3f& c) { |
| 2104 GLint location = static_cast<GLint>(c.location); | 2116 GLint location = static_cast<GLint>(c.location); |
| 2105 GLfloat x = static_cast<GLfloat>(c.x); | 2117 GLfloat x = static_cast<GLfloat>(c.x); |
| 2106 GLfloat y = static_cast<GLfloat>(c.y); | 2118 GLfloat y = static_cast<GLfloat>(c.y); |
| 2107 GLfloat z = static_cast<GLfloat>(c.z); | 2119 GLfloat z = static_cast<GLfloat>(c.z); |
| 2108 GLfloat temp[3] = { x, y, z, }; | 2120 GLfloat temp[3] = { x, y, z, }; |
| 2109 DoUniform3fv(location, 1, &temp[0]); | 2121 DoUniform3fv(location, 1, &temp[0]); |
| 2110 return error::kNoError; | 2122 return error::kNoError; |
| 2111 } | 2123 } |
| 2112 | 2124 |
| 2113 error::Error GLES2DecoderImpl::HandleUniform3fv( | 2125 error::Error GLES2DecoderImpl::HandleUniform3fv( |
| 2114 uint32 immediate_data_size, const gles2::Uniform3fv& c) { | 2126 uint32 immediate_data_size, const gles2::cmds::Uniform3fv& c) { |
| 2115 GLint location = static_cast<GLint>(c.location); | 2127 GLint location = static_cast<GLint>(c.location); |
| 2116 GLsizei count = static_cast<GLsizei>(c.count); | 2128 GLsizei count = static_cast<GLsizei>(c.count); |
| 2117 uint32 data_size; | 2129 uint32 data_size; |
| 2118 if (!ComputeDataSize(count, sizeof(GLfloat), 3, &data_size)) { | 2130 if (!ComputeDataSize(count, sizeof(GLfloat), 3, &data_size)) { |
| 2119 return error::kOutOfBounds; | 2131 return error::kOutOfBounds; |
| 2120 } | 2132 } |
| 2121 const GLfloat* v = GetSharedMemoryAs<const GLfloat*>( | 2133 const GLfloat* v = GetSharedMemoryAs<const GLfloat*>( |
| 2122 c.v_shm_id, c.v_shm_offset, data_size); | 2134 c.v_shm_id, c.v_shm_offset, data_size); |
| 2123 if (v == NULL) { | 2135 if (v == NULL) { |
| 2124 return error::kOutOfBounds; | 2136 return error::kOutOfBounds; |
| 2125 } | 2137 } |
| 2126 DoUniform3fv(location, count, v); | 2138 DoUniform3fv(location, count, v); |
| 2127 return error::kNoError; | 2139 return error::kNoError; |
| 2128 } | 2140 } |
| 2129 | 2141 |
| 2130 error::Error GLES2DecoderImpl::HandleUniform3fvImmediate( | 2142 error::Error GLES2DecoderImpl::HandleUniform3fvImmediate( |
| 2131 uint32 immediate_data_size, const gles2::Uniform3fvImmediate& c) { | 2143 uint32 immediate_data_size, const gles2::cmds::Uniform3fvImmediate& c) { |
| 2132 GLint location = static_cast<GLint>(c.location); | 2144 GLint location = static_cast<GLint>(c.location); |
| 2133 GLsizei count = static_cast<GLsizei>(c.count); | 2145 GLsizei count = static_cast<GLsizei>(c.count); |
| 2134 uint32 data_size; | 2146 uint32 data_size; |
| 2135 if (!ComputeDataSize(count, sizeof(GLfloat), 3, &data_size)) { | 2147 if (!ComputeDataSize(count, sizeof(GLfloat), 3, &data_size)) { |
| 2136 return error::kOutOfBounds; | 2148 return error::kOutOfBounds; |
| 2137 } | 2149 } |
| 2138 if (data_size > immediate_data_size) { | 2150 if (data_size > immediate_data_size) { |
| 2139 return error::kOutOfBounds; | 2151 return error::kOutOfBounds; |
| 2140 } | 2152 } |
| 2141 const GLfloat* v = GetImmediateDataAs<const GLfloat*>( | 2153 const GLfloat* v = GetImmediateDataAs<const GLfloat*>( |
| 2142 c, data_size, immediate_data_size); | 2154 c, data_size, immediate_data_size); |
| 2143 if (v == NULL) { | 2155 if (v == NULL) { |
| 2144 return error::kOutOfBounds; | 2156 return error::kOutOfBounds; |
| 2145 } | 2157 } |
| 2146 DoUniform3fv(location, count, v); | 2158 DoUniform3fv(location, count, v); |
| 2147 return error::kNoError; | 2159 return error::kNoError; |
| 2148 } | 2160 } |
| 2149 | 2161 |
| 2150 error::Error GLES2DecoderImpl::HandleUniform3i( | 2162 error::Error GLES2DecoderImpl::HandleUniform3i( |
| 2151 uint32 immediate_data_size, const gles2::Uniform3i& c) { | 2163 uint32 immediate_data_size, const gles2::cmds::Uniform3i& c) { |
| 2152 GLint location = static_cast<GLint>(c.location); | 2164 GLint location = static_cast<GLint>(c.location); |
| 2153 GLint x = static_cast<GLint>(c.x); | 2165 GLint x = static_cast<GLint>(c.x); |
| 2154 GLint y = static_cast<GLint>(c.y); | 2166 GLint y = static_cast<GLint>(c.y); |
| 2155 GLint z = static_cast<GLint>(c.z); | 2167 GLint z = static_cast<GLint>(c.z); |
| 2156 GLint temp[3] = { x, y, z, }; | 2168 GLint temp[3] = { x, y, z, }; |
| 2157 DoUniform3iv(location, 1, &temp[0]); | 2169 DoUniform3iv(location, 1, &temp[0]); |
| 2158 return error::kNoError; | 2170 return error::kNoError; |
| 2159 } | 2171 } |
| 2160 | 2172 |
| 2161 error::Error GLES2DecoderImpl::HandleUniform3iv( | 2173 error::Error GLES2DecoderImpl::HandleUniform3iv( |
| 2162 uint32 immediate_data_size, const gles2::Uniform3iv& c) { | 2174 uint32 immediate_data_size, const gles2::cmds::Uniform3iv& c) { |
| 2163 GLint location = static_cast<GLint>(c.location); | 2175 GLint location = static_cast<GLint>(c.location); |
| 2164 GLsizei count = static_cast<GLsizei>(c.count); | 2176 GLsizei count = static_cast<GLsizei>(c.count); |
| 2165 uint32 data_size; | 2177 uint32 data_size; |
| 2166 if (!ComputeDataSize(count, sizeof(GLint), 3, &data_size)) { | 2178 if (!ComputeDataSize(count, sizeof(GLint), 3, &data_size)) { |
| 2167 return error::kOutOfBounds; | 2179 return error::kOutOfBounds; |
| 2168 } | 2180 } |
| 2169 const GLint* v = GetSharedMemoryAs<const GLint*>( | 2181 const GLint* v = GetSharedMemoryAs<const GLint*>( |
| 2170 c.v_shm_id, c.v_shm_offset, data_size); | 2182 c.v_shm_id, c.v_shm_offset, data_size); |
| 2171 if (v == NULL) { | 2183 if (v == NULL) { |
| 2172 return error::kOutOfBounds; | 2184 return error::kOutOfBounds; |
| 2173 } | 2185 } |
| 2174 DoUniform3iv(location, count, v); | 2186 DoUniform3iv(location, count, v); |
| 2175 return error::kNoError; | 2187 return error::kNoError; |
| 2176 } | 2188 } |
| 2177 | 2189 |
| 2178 error::Error GLES2DecoderImpl::HandleUniform3ivImmediate( | 2190 error::Error GLES2DecoderImpl::HandleUniform3ivImmediate( |
| 2179 uint32 immediate_data_size, const gles2::Uniform3ivImmediate& c) { | 2191 uint32 immediate_data_size, const gles2::cmds::Uniform3ivImmediate& c) { |
| 2180 GLint location = static_cast<GLint>(c.location); | 2192 GLint location = static_cast<GLint>(c.location); |
| 2181 GLsizei count = static_cast<GLsizei>(c.count); | 2193 GLsizei count = static_cast<GLsizei>(c.count); |
| 2182 uint32 data_size; | 2194 uint32 data_size; |
| 2183 if (!ComputeDataSize(count, sizeof(GLint), 3, &data_size)) { | 2195 if (!ComputeDataSize(count, sizeof(GLint), 3, &data_size)) { |
| 2184 return error::kOutOfBounds; | 2196 return error::kOutOfBounds; |
| 2185 } | 2197 } |
| 2186 if (data_size > immediate_data_size) { | 2198 if (data_size > immediate_data_size) { |
| 2187 return error::kOutOfBounds; | 2199 return error::kOutOfBounds; |
| 2188 } | 2200 } |
| 2189 const GLint* v = GetImmediateDataAs<const GLint*>( | 2201 const GLint* v = GetImmediateDataAs<const GLint*>( |
| 2190 c, data_size, immediate_data_size); | 2202 c, data_size, immediate_data_size); |
| 2191 if (v == NULL) { | 2203 if (v == NULL) { |
| 2192 return error::kOutOfBounds; | 2204 return error::kOutOfBounds; |
| 2193 } | 2205 } |
| 2194 DoUniform3iv(location, count, v); | 2206 DoUniform3iv(location, count, v); |
| 2195 return error::kNoError; | 2207 return error::kNoError; |
| 2196 } | 2208 } |
| 2197 | 2209 |
| 2198 error::Error GLES2DecoderImpl::HandleUniform4f( | 2210 error::Error GLES2DecoderImpl::HandleUniform4f( |
| 2199 uint32 immediate_data_size, const gles2::Uniform4f& c) { | 2211 uint32 immediate_data_size, const gles2::cmds::Uniform4f& c) { |
| 2200 GLint location = static_cast<GLint>(c.location); | 2212 GLint location = static_cast<GLint>(c.location); |
| 2201 GLfloat x = static_cast<GLfloat>(c.x); | 2213 GLfloat x = static_cast<GLfloat>(c.x); |
| 2202 GLfloat y = static_cast<GLfloat>(c.y); | 2214 GLfloat y = static_cast<GLfloat>(c.y); |
| 2203 GLfloat z = static_cast<GLfloat>(c.z); | 2215 GLfloat z = static_cast<GLfloat>(c.z); |
| 2204 GLfloat w = static_cast<GLfloat>(c.w); | 2216 GLfloat w = static_cast<GLfloat>(c.w); |
| 2205 GLfloat temp[4] = { x, y, z, w, }; | 2217 GLfloat temp[4] = { x, y, z, w, }; |
| 2206 DoUniform4fv(location, 1, &temp[0]); | 2218 DoUniform4fv(location, 1, &temp[0]); |
| 2207 return error::kNoError; | 2219 return error::kNoError; |
| 2208 } | 2220 } |
| 2209 | 2221 |
| 2210 error::Error GLES2DecoderImpl::HandleUniform4fv( | 2222 error::Error GLES2DecoderImpl::HandleUniform4fv( |
| 2211 uint32 immediate_data_size, const gles2::Uniform4fv& c) { | 2223 uint32 immediate_data_size, const gles2::cmds::Uniform4fv& c) { |
| 2212 GLint location = static_cast<GLint>(c.location); | 2224 GLint location = static_cast<GLint>(c.location); |
| 2213 GLsizei count = static_cast<GLsizei>(c.count); | 2225 GLsizei count = static_cast<GLsizei>(c.count); |
| 2214 uint32 data_size; | 2226 uint32 data_size; |
| 2215 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { | 2227 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { |
| 2216 return error::kOutOfBounds; | 2228 return error::kOutOfBounds; |
| 2217 } | 2229 } |
| 2218 const GLfloat* v = GetSharedMemoryAs<const GLfloat*>( | 2230 const GLfloat* v = GetSharedMemoryAs<const GLfloat*>( |
| 2219 c.v_shm_id, c.v_shm_offset, data_size); | 2231 c.v_shm_id, c.v_shm_offset, data_size); |
| 2220 if (v == NULL) { | 2232 if (v == NULL) { |
| 2221 return error::kOutOfBounds; | 2233 return error::kOutOfBounds; |
| 2222 } | 2234 } |
| 2223 DoUniform4fv(location, count, v); | 2235 DoUniform4fv(location, count, v); |
| 2224 return error::kNoError; | 2236 return error::kNoError; |
| 2225 } | 2237 } |
| 2226 | 2238 |
| 2227 error::Error GLES2DecoderImpl::HandleUniform4fvImmediate( | 2239 error::Error GLES2DecoderImpl::HandleUniform4fvImmediate( |
| 2228 uint32 immediate_data_size, const gles2::Uniform4fvImmediate& c) { | 2240 uint32 immediate_data_size, const gles2::cmds::Uniform4fvImmediate& c) { |
| 2229 GLint location = static_cast<GLint>(c.location); | 2241 GLint location = static_cast<GLint>(c.location); |
| 2230 GLsizei count = static_cast<GLsizei>(c.count); | 2242 GLsizei count = static_cast<GLsizei>(c.count); |
| 2231 uint32 data_size; | 2243 uint32 data_size; |
| 2232 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { | 2244 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { |
| 2233 return error::kOutOfBounds; | 2245 return error::kOutOfBounds; |
| 2234 } | 2246 } |
| 2235 if (data_size > immediate_data_size) { | 2247 if (data_size > immediate_data_size) { |
| 2236 return error::kOutOfBounds; | 2248 return error::kOutOfBounds; |
| 2237 } | 2249 } |
| 2238 const GLfloat* v = GetImmediateDataAs<const GLfloat*>( | 2250 const GLfloat* v = GetImmediateDataAs<const GLfloat*>( |
| 2239 c, data_size, immediate_data_size); | 2251 c, data_size, immediate_data_size); |
| 2240 if (v == NULL) { | 2252 if (v == NULL) { |
| 2241 return error::kOutOfBounds; | 2253 return error::kOutOfBounds; |
| 2242 } | 2254 } |
| 2243 DoUniform4fv(location, count, v); | 2255 DoUniform4fv(location, count, v); |
| 2244 return error::kNoError; | 2256 return error::kNoError; |
| 2245 } | 2257 } |
| 2246 | 2258 |
| 2247 error::Error GLES2DecoderImpl::HandleUniform4i( | 2259 error::Error GLES2DecoderImpl::HandleUniform4i( |
| 2248 uint32 immediate_data_size, const gles2::Uniform4i& c) { | 2260 uint32 immediate_data_size, const gles2::cmds::Uniform4i& c) { |
| 2249 GLint location = static_cast<GLint>(c.location); | 2261 GLint location = static_cast<GLint>(c.location); |
| 2250 GLint x = static_cast<GLint>(c.x); | 2262 GLint x = static_cast<GLint>(c.x); |
| 2251 GLint y = static_cast<GLint>(c.y); | 2263 GLint y = static_cast<GLint>(c.y); |
| 2252 GLint z = static_cast<GLint>(c.z); | 2264 GLint z = static_cast<GLint>(c.z); |
| 2253 GLint w = static_cast<GLint>(c.w); | 2265 GLint w = static_cast<GLint>(c.w); |
| 2254 GLint temp[4] = { x, y, z, w, }; | 2266 GLint temp[4] = { x, y, z, w, }; |
| 2255 DoUniform4iv(location, 1, &temp[0]); | 2267 DoUniform4iv(location, 1, &temp[0]); |
| 2256 return error::kNoError; | 2268 return error::kNoError; |
| 2257 } | 2269 } |
| 2258 | 2270 |
| 2259 error::Error GLES2DecoderImpl::HandleUniform4iv( | 2271 error::Error GLES2DecoderImpl::HandleUniform4iv( |
| 2260 uint32 immediate_data_size, const gles2::Uniform4iv& c) { | 2272 uint32 immediate_data_size, const gles2::cmds::Uniform4iv& c) { |
| 2261 GLint location = static_cast<GLint>(c.location); | 2273 GLint location = static_cast<GLint>(c.location); |
| 2262 GLsizei count = static_cast<GLsizei>(c.count); | 2274 GLsizei count = static_cast<GLsizei>(c.count); |
| 2263 uint32 data_size; | 2275 uint32 data_size; |
| 2264 if (!ComputeDataSize(count, sizeof(GLint), 4, &data_size)) { | 2276 if (!ComputeDataSize(count, sizeof(GLint), 4, &data_size)) { |
| 2265 return error::kOutOfBounds; | 2277 return error::kOutOfBounds; |
| 2266 } | 2278 } |
| 2267 const GLint* v = GetSharedMemoryAs<const GLint*>( | 2279 const GLint* v = GetSharedMemoryAs<const GLint*>( |
| 2268 c.v_shm_id, c.v_shm_offset, data_size); | 2280 c.v_shm_id, c.v_shm_offset, data_size); |
| 2269 if (v == NULL) { | 2281 if (v == NULL) { |
| 2270 return error::kOutOfBounds; | 2282 return error::kOutOfBounds; |
| 2271 } | 2283 } |
| 2272 DoUniform4iv(location, count, v); | 2284 DoUniform4iv(location, count, v); |
| 2273 return error::kNoError; | 2285 return error::kNoError; |
| 2274 } | 2286 } |
| 2275 | 2287 |
| 2276 error::Error GLES2DecoderImpl::HandleUniform4ivImmediate( | 2288 error::Error GLES2DecoderImpl::HandleUniform4ivImmediate( |
| 2277 uint32 immediate_data_size, const gles2::Uniform4ivImmediate& c) { | 2289 uint32 immediate_data_size, const gles2::cmds::Uniform4ivImmediate& c) { |
| 2278 GLint location = static_cast<GLint>(c.location); | 2290 GLint location = static_cast<GLint>(c.location); |
| 2279 GLsizei count = static_cast<GLsizei>(c.count); | 2291 GLsizei count = static_cast<GLsizei>(c.count); |
| 2280 uint32 data_size; | 2292 uint32 data_size; |
| 2281 if (!ComputeDataSize(count, sizeof(GLint), 4, &data_size)) { | 2293 if (!ComputeDataSize(count, sizeof(GLint), 4, &data_size)) { |
| 2282 return error::kOutOfBounds; | 2294 return error::kOutOfBounds; |
| 2283 } | 2295 } |
| 2284 if (data_size > immediate_data_size) { | 2296 if (data_size > immediate_data_size) { |
| 2285 return error::kOutOfBounds; | 2297 return error::kOutOfBounds; |
| 2286 } | 2298 } |
| 2287 const GLint* v = GetImmediateDataAs<const GLint*>( | 2299 const GLint* v = GetImmediateDataAs<const GLint*>( |
| 2288 c, data_size, immediate_data_size); | 2300 c, data_size, immediate_data_size); |
| 2289 if (v == NULL) { | 2301 if (v == NULL) { |
| 2290 return error::kOutOfBounds; | 2302 return error::kOutOfBounds; |
| 2291 } | 2303 } |
| 2292 DoUniform4iv(location, count, v); | 2304 DoUniform4iv(location, count, v); |
| 2293 return error::kNoError; | 2305 return error::kNoError; |
| 2294 } | 2306 } |
| 2295 | 2307 |
| 2296 error::Error GLES2DecoderImpl::HandleUniformMatrix2fv( | 2308 error::Error GLES2DecoderImpl::HandleUniformMatrix2fv( |
| 2297 uint32 immediate_data_size, const gles2::UniformMatrix2fv& c) { | 2309 uint32 immediate_data_size, const gles2::cmds::UniformMatrix2fv& c) { |
| 2298 GLint location = static_cast<GLint>(c.location); | 2310 GLint location = static_cast<GLint>(c.location); |
| 2299 GLsizei count = static_cast<GLsizei>(c.count); | 2311 GLsizei count = static_cast<GLsizei>(c.count); |
| 2300 GLboolean transpose = static_cast<GLboolean>(c.transpose); | 2312 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
| 2301 uint32 data_size; | 2313 uint32 data_size; |
| 2302 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { | 2314 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { |
| 2303 return error::kOutOfBounds; | 2315 return error::kOutOfBounds; |
| 2304 } | 2316 } |
| 2305 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>( | 2317 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>( |
| 2306 c.value_shm_id, c.value_shm_offset, data_size); | 2318 c.value_shm_id, c.value_shm_offset, data_size); |
| 2307 if (!validators_->false_only.IsValid(transpose)) { | 2319 if (!validators_->false_only.IsValid(transpose)) { |
| 2308 SetGLError( | 2320 SetGLError( |
| 2309 GL_INVALID_VALUE, "glUniformMatrix2fv", "transpose GL_INVALID_VALUE"); | 2321 GL_INVALID_VALUE, "glUniformMatrix2fv", "transpose GL_INVALID_VALUE"); |
| 2310 return error::kNoError; | 2322 return error::kNoError; |
| 2311 } | 2323 } |
| 2312 if (value == NULL) { | 2324 if (value == NULL) { |
| 2313 return error::kOutOfBounds; | 2325 return error::kOutOfBounds; |
| 2314 } | 2326 } |
| 2315 DoUniformMatrix2fv(location, count, transpose, value); | 2327 DoUniformMatrix2fv(location, count, transpose, value); |
| 2316 return error::kNoError; | 2328 return error::kNoError; |
| 2317 } | 2329 } |
| 2318 | 2330 |
| 2319 error::Error GLES2DecoderImpl::HandleUniformMatrix2fvImmediate( | 2331 error::Error GLES2DecoderImpl::HandleUniformMatrix2fvImmediate( |
| 2320 uint32 immediate_data_size, const gles2::UniformMatrix2fvImmediate& c) { | 2332 uint32 immediate_data_size, |
| 2333 const gles2::cmds::UniformMatrix2fvImmediate& c) { |
| 2321 GLint location = static_cast<GLint>(c.location); | 2334 GLint location = static_cast<GLint>(c.location); |
| 2322 GLsizei count = static_cast<GLsizei>(c.count); | 2335 GLsizei count = static_cast<GLsizei>(c.count); |
| 2323 GLboolean transpose = static_cast<GLboolean>(c.transpose); | 2336 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
| 2324 uint32 data_size; | 2337 uint32 data_size; |
| 2325 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { | 2338 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { |
| 2326 return error::kOutOfBounds; | 2339 return error::kOutOfBounds; |
| 2327 } | 2340 } |
| 2328 if (data_size > immediate_data_size) { | 2341 if (data_size > immediate_data_size) { |
| 2329 return error::kOutOfBounds; | 2342 return error::kOutOfBounds; |
| 2330 } | 2343 } |
| 2331 const GLfloat* value = GetImmediateDataAs<const GLfloat*>( | 2344 const GLfloat* value = GetImmediateDataAs<const GLfloat*>( |
| 2332 c, data_size, immediate_data_size); | 2345 c, data_size, immediate_data_size); |
| 2333 if (!validators_->false_only.IsValid(transpose)) { | 2346 if (!validators_->false_only.IsValid(transpose)) { |
| 2334 SetGLError( | 2347 SetGLError( |
| 2335 GL_INVALID_VALUE, "glUniformMatrix2fv", "transpose GL_INVALID_VALUE"); | 2348 GL_INVALID_VALUE, "glUniformMatrix2fv", "transpose GL_INVALID_VALUE"); |
| 2336 return error::kNoError; | 2349 return error::kNoError; |
| 2337 } | 2350 } |
| 2338 if (value == NULL) { | 2351 if (value == NULL) { |
| 2339 return error::kOutOfBounds; | 2352 return error::kOutOfBounds; |
| 2340 } | 2353 } |
| 2341 DoUniformMatrix2fv(location, count, transpose, value); | 2354 DoUniformMatrix2fv(location, count, transpose, value); |
| 2342 return error::kNoError; | 2355 return error::kNoError; |
| 2343 } | 2356 } |
| 2344 | 2357 |
| 2345 error::Error GLES2DecoderImpl::HandleUniformMatrix3fv( | 2358 error::Error GLES2DecoderImpl::HandleUniformMatrix3fv( |
| 2346 uint32 immediate_data_size, const gles2::UniformMatrix3fv& c) { | 2359 uint32 immediate_data_size, const gles2::cmds::UniformMatrix3fv& c) { |
| 2347 GLint location = static_cast<GLint>(c.location); | 2360 GLint location = static_cast<GLint>(c.location); |
| 2348 GLsizei count = static_cast<GLsizei>(c.count); | 2361 GLsizei count = static_cast<GLsizei>(c.count); |
| 2349 GLboolean transpose = static_cast<GLboolean>(c.transpose); | 2362 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
| 2350 uint32 data_size; | 2363 uint32 data_size; |
| 2351 if (!ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) { | 2364 if (!ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) { |
| 2352 return error::kOutOfBounds; | 2365 return error::kOutOfBounds; |
| 2353 } | 2366 } |
| 2354 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>( | 2367 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>( |
| 2355 c.value_shm_id, c.value_shm_offset, data_size); | 2368 c.value_shm_id, c.value_shm_offset, data_size); |
| 2356 if (!validators_->false_only.IsValid(transpose)) { | 2369 if (!validators_->false_only.IsValid(transpose)) { |
| 2357 SetGLError( | 2370 SetGLError( |
| 2358 GL_INVALID_VALUE, "glUniformMatrix3fv", "transpose GL_INVALID_VALUE"); | 2371 GL_INVALID_VALUE, "glUniformMatrix3fv", "transpose GL_INVALID_VALUE"); |
| 2359 return error::kNoError; | 2372 return error::kNoError; |
| 2360 } | 2373 } |
| 2361 if (value == NULL) { | 2374 if (value == NULL) { |
| 2362 return error::kOutOfBounds; | 2375 return error::kOutOfBounds; |
| 2363 } | 2376 } |
| 2364 DoUniformMatrix3fv(location, count, transpose, value); | 2377 DoUniformMatrix3fv(location, count, transpose, value); |
| 2365 return error::kNoError; | 2378 return error::kNoError; |
| 2366 } | 2379 } |
| 2367 | 2380 |
| 2368 error::Error GLES2DecoderImpl::HandleUniformMatrix3fvImmediate( | 2381 error::Error GLES2DecoderImpl::HandleUniformMatrix3fvImmediate( |
| 2369 uint32 immediate_data_size, const gles2::UniformMatrix3fvImmediate& c) { | 2382 uint32 immediate_data_size, |
| 2383 const gles2::cmds::UniformMatrix3fvImmediate& c) { |
| 2370 GLint location = static_cast<GLint>(c.location); | 2384 GLint location = static_cast<GLint>(c.location); |
| 2371 GLsizei count = static_cast<GLsizei>(c.count); | 2385 GLsizei count = static_cast<GLsizei>(c.count); |
| 2372 GLboolean transpose = static_cast<GLboolean>(c.transpose); | 2386 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
| 2373 uint32 data_size; | 2387 uint32 data_size; |
| 2374 if (!ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) { | 2388 if (!ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) { |
| 2375 return error::kOutOfBounds; | 2389 return error::kOutOfBounds; |
| 2376 } | 2390 } |
| 2377 if (data_size > immediate_data_size) { | 2391 if (data_size > immediate_data_size) { |
| 2378 return error::kOutOfBounds; | 2392 return error::kOutOfBounds; |
| 2379 } | 2393 } |
| 2380 const GLfloat* value = GetImmediateDataAs<const GLfloat*>( | 2394 const GLfloat* value = GetImmediateDataAs<const GLfloat*>( |
| 2381 c, data_size, immediate_data_size); | 2395 c, data_size, immediate_data_size); |
| 2382 if (!validators_->false_only.IsValid(transpose)) { | 2396 if (!validators_->false_only.IsValid(transpose)) { |
| 2383 SetGLError( | 2397 SetGLError( |
| 2384 GL_INVALID_VALUE, "glUniformMatrix3fv", "transpose GL_INVALID_VALUE"); | 2398 GL_INVALID_VALUE, "glUniformMatrix3fv", "transpose GL_INVALID_VALUE"); |
| 2385 return error::kNoError; | 2399 return error::kNoError; |
| 2386 } | 2400 } |
| 2387 if (value == NULL) { | 2401 if (value == NULL) { |
| 2388 return error::kOutOfBounds; | 2402 return error::kOutOfBounds; |
| 2389 } | 2403 } |
| 2390 DoUniformMatrix3fv(location, count, transpose, value); | 2404 DoUniformMatrix3fv(location, count, transpose, value); |
| 2391 return error::kNoError; | 2405 return error::kNoError; |
| 2392 } | 2406 } |
| 2393 | 2407 |
| 2394 error::Error GLES2DecoderImpl::HandleUniformMatrix4fv( | 2408 error::Error GLES2DecoderImpl::HandleUniformMatrix4fv( |
| 2395 uint32 immediate_data_size, const gles2::UniformMatrix4fv& c) { | 2409 uint32 immediate_data_size, const gles2::cmds::UniformMatrix4fv& c) { |
| 2396 GLint location = static_cast<GLint>(c.location); | 2410 GLint location = static_cast<GLint>(c.location); |
| 2397 GLsizei count = static_cast<GLsizei>(c.count); | 2411 GLsizei count = static_cast<GLsizei>(c.count); |
| 2398 GLboolean transpose = static_cast<GLboolean>(c.transpose); | 2412 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
| 2399 uint32 data_size; | 2413 uint32 data_size; |
| 2400 if (!ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) { | 2414 if (!ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) { |
| 2401 return error::kOutOfBounds; | 2415 return error::kOutOfBounds; |
| 2402 } | 2416 } |
| 2403 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>( | 2417 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>( |
| 2404 c.value_shm_id, c.value_shm_offset, data_size); | 2418 c.value_shm_id, c.value_shm_offset, data_size); |
| 2405 if (!validators_->false_only.IsValid(transpose)) { | 2419 if (!validators_->false_only.IsValid(transpose)) { |
| 2406 SetGLError( | 2420 SetGLError( |
| 2407 GL_INVALID_VALUE, "glUniformMatrix4fv", "transpose GL_INVALID_VALUE"); | 2421 GL_INVALID_VALUE, "glUniformMatrix4fv", "transpose GL_INVALID_VALUE"); |
| 2408 return error::kNoError; | 2422 return error::kNoError; |
| 2409 } | 2423 } |
| 2410 if (value == NULL) { | 2424 if (value == NULL) { |
| 2411 return error::kOutOfBounds; | 2425 return error::kOutOfBounds; |
| 2412 } | 2426 } |
| 2413 DoUniformMatrix4fv(location, count, transpose, value); | 2427 DoUniformMatrix4fv(location, count, transpose, value); |
| 2414 return error::kNoError; | 2428 return error::kNoError; |
| 2415 } | 2429 } |
| 2416 | 2430 |
| 2417 error::Error GLES2DecoderImpl::HandleUniformMatrix4fvImmediate( | 2431 error::Error GLES2DecoderImpl::HandleUniformMatrix4fvImmediate( |
| 2418 uint32 immediate_data_size, const gles2::UniformMatrix4fvImmediate& c) { | 2432 uint32 immediate_data_size, |
| 2433 const gles2::cmds::UniformMatrix4fvImmediate& c) { |
| 2419 GLint location = static_cast<GLint>(c.location); | 2434 GLint location = static_cast<GLint>(c.location); |
| 2420 GLsizei count = static_cast<GLsizei>(c.count); | 2435 GLsizei count = static_cast<GLsizei>(c.count); |
| 2421 GLboolean transpose = static_cast<GLboolean>(c.transpose); | 2436 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
| 2422 uint32 data_size; | 2437 uint32 data_size; |
| 2423 if (!ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) { | 2438 if (!ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) { |
| 2424 return error::kOutOfBounds; | 2439 return error::kOutOfBounds; |
| 2425 } | 2440 } |
| 2426 if (data_size > immediate_data_size) { | 2441 if (data_size > immediate_data_size) { |
| 2427 return error::kOutOfBounds; | 2442 return error::kOutOfBounds; |
| 2428 } | 2443 } |
| 2429 const GLfloat* value = GetImmediateDataAs<const GLfloat*>( | 2444 const GLfloat* value = GetImmediateDataAs<const GLfloat*>( |
| 2430 c, data_size, immediate_data_size); | 2445 c, data_size, immediate_data_size); |
| 2431 if (!validators_->false_only.IsValid(transpose)) { | 2446 if (!validators_->false_only.IsValid(transpose)) { |
| 2432 SetGLError( | 2447 SetGLError( |
| 2433 GL_INVALID_VALUE, "glUniformMatrix4fv", "transpose GL_INVALID_VALUE"); | 2448 GL_INVALID_VALUE, "glUniformMatrix4fv", "transpose GL_INVALID_VALUE"); |
| 2434 return error::kNoError; | 2449 return error::kNoError; |
| 2435 } | 2450 } |
| 2436 if (value == NULL) { | 2451 if (value == NULL) { |
| 2437 return error::kOutOfBounds; | 2452 return error::kOutOfBounds; |
| 2438 } | 2453 } |
| 2439 DoUniformMatrix4fv(location, count, transpose, value); | 2454 DoUniformMatrix4fv(location, count, transpose, value); |
| 2440 return error::kNoError; | 2455 return error::kNoError; |
| 2441 } | 2456 } |
| 2442 | 2457 |
| 2443 error::Error GLES2DecoderImpl::HandleUseProgram( | 2458 error::Error GLES2DecoderImpl::HandleUseProgram( |
| 2444 uint32 immediate_data_size, const gles2::UseProgram& c) { | 2459 uint32 immediate_data_size, const gles2::cmds::UseProgram& c) { |
| 2445 GLuint program = c.program; | 2460 GLuint program = c.program; |
| 2446 DoUseProgram(program); | 2461 DoUseProgram(program); |
| 2447 return error::kNoError; | 2462 return error::kNoError; |
| 2448 } | 2463 } |
| 2449 | 2464 |
| 2450 error::Error GLES2DecoderImpl::HandleValidateProgram( | 2465 error::Error GLES2DecoderImpl::HandleValidateProgram( |
| 2451 uint32 immediate_data_size, const gles2::ValidateProgram& c) { | 2466 uint32 immediate_data_size, const gles2::cmds::ValidateProgram& c) { |
| 2452 GLuint program = c.program; | 2467 GLuint program = c.program; |
| 2453 DoValidateProgram(program); | 2468 DoValidateProgram(program); |
| 2454 return error::kNoError; | 2469 return error::kNoError; |
| 2455 } | 2470 } |
| 2456 | 2471 |
| 2457 error::Error GLES2DecoderImpl::HandleVertexAttrib1f( | 2472 error::Error GLES2DecoderImpl::HandleVertexAttrib1f( |
| 2458 uint32 immediate_data_size, const gles2::VertexAttrib1f& c) { | 2473 uint32 immediate_data_size, const gles2::cmds::VertexAttrib1f& c) { |
| 2459 GLuint indx = static_cast<GLuint>(c.indx); | 2474 GLuint indx = static_cast<GLuint>(c.indx); |
| 2460 GLfloat x = static_cast<GLfloat>(c.x); | 2475 GLfloat x = static_cast<GLfloat>(c.x); |
| 2461 DoVertexAttrib1f(indx, x); | 2476 DoVertexAttrib1f(indx, x); |
| 2462 return error::kNoError; | 2477 return error::kNoError; |
| 2463 } | 2478 } |
| 2464 | 2479 |
| 2465 error::Error GLES2DecoderImpl::HandleVertexAttrib1fv( | 2480 error::Error GLES2DecoderImpl::HandleVertexAttrib1fv( |
| 2466 uint32 immediate_data_size, const gles2::VertexAttrib1fv& c) { | 2481 uint32 immediate_data_size, const gles2::cmds::VertexAttrib1fv& c) { |
| 2467 GLuint indx = static_cast<GLuint>(c.indx); | 2482 GLuint indx = static_cast<GLuint>(c.indx); |
| 2468 uint32 data_size; | 2483 uint32 data_size; |
| 2469 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { | 2484 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { |
| 2470 return error::kOutOfBounds; | 2485 return error::kOutOfBounds; |
| 2471 } | 2486 } |
| 2472 const GLfloat* values = GetSharedMemoryAs<const GLfloat*>( | 2487 const GLfloat* values = GetSharedMemoryAs<const GLfloat*>( |
| 2473 c.values_shm_id, c.values_shm_offset, data_size); | 2488 c.values_shm_id, c.values_shm_offset, data_size); |
| 2474 if (values == NULL) { | 2489 if (values == NULL) { |
| 2475 return error::kOutOfBounds; | 2490 return error::kOutOfBounds; |
| 2476 } | 2491 } |
| 2477 DoVertexAttrib1fv(indx, values); | 2492 DoVertexAttrib1fv(indx, values); |
| 2478 return error::kNoError; | 2493 return error::kNoError; |
| 2479 } | 2494 } |
| 2480 | 2495 |
| 2481 error::Error GLES2DecoderImpl::HandleVertexAttrib1fvImmediate( | 2496 error::Error GLES2DecoderImpl::HandleVertexAttrib1fvImmediate( |
| 2482 uint32 immediate_data_size, const gles2::VertexAttrib1fvImmediate& c) { | 2497 uint32 immediate_data_size, |
| 2498 const gles2::cmds::VertexAttrib1fvImmediate& c) { |
| 2483 GLuint indx = static_cast<GLuint>(c.indx); | 2499 GLuint indx = static_cast<GLuint>(c.indx); |
| 2484 uint32 data_size; | 2500 uint32 data_size; |
| 2485 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { | 2501 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { |
| 2486 return error::kOutOfBounds; | 2502 return error::kOutOfBounds; |
| 2487 } | 2503 } |
| 2488 if (data_size > immediate_data_size) { | 2504 if (data_size > immediate_data_size) { |
| 2489 return error::kOutOfBounds; | 2505 return error::kOutOfBounds; |
| 2490 } | 2506 } |
| 2491 const GLfloat* values = GetImmediateDataAs<const GLfloat*>( | 2507 const GLfloat* values = GetImmediateDataAs<const GLfloat*>( |
| 2492 c, data_size, immediate_data_size); | 2508 c, data_size, immediate_data_size); |
| 2493 if (values == NULL) { | 2509 if (values == NULL) { |
| 2494 return error::kOutOfBounds; | 2510 return error::kOutOfBounds; |
| 2495 } | 2511 } |
| 2496 DoVertexAttrib1fv(indx, values); | 2512 DoVertexAttrib1fv(indx, values); |
| 2497 return error::kNoError; | 2513 return error::kNoError; |
| 2498 } | 2514 } |
| 2499 | 2515 |
| 2500 error::Error GLES2DecoderImpl::HandleVertexAttrib2f( | 2516 error::Error GLES2DecoderImpl::HandleVertexAttrib2f( |
| 2501 uint32 immediate_data_size, const gles2::VertexAttrib2f& c) { | 2517 uint32 immediate_data_size, const gles2::cmds::VertexAttrib2f& c) { |
| 2502 GLuint indx = static_cast<GLuint>(c.indx); | 2518 GLuint indx = static_cast<GLuint>(c.indx); |
| 2503 GLfloat x = static_cast<GLfloat>(c.x); | 2519 GLfloat x = static_cast<GLfloat>(c.x); |
| 2504 GLfloat y = static_cast<GLfloat>(c.y); | 2520 GLfloat y = static_cast<GLfloat>(c.y); |
| 2505 DoVertexAttrib2f(indx, x, y); | 2521 DoVertexAttrib2f(indx, x, y); |
| 2506 return error::kNoError; | 2522 return error::kNoError; |
| 2507 } | 2523 } |
| 2508 | 2524 |
| 2509 error::Error GLES2DecoderImpl::HandleVertexAttrib2fv( | 2525 error::Error GLES2DecoderImpl::HandleVertexAttrib2fv( |
| 2510 uint32 immediate_data_size, const gles2::VertexAttrib2fv& c) { | 2526 uint32 immediate_data_size, const gles2::cmds::VertexAttrib2fv& c) { |
| 2511 GLuint indx = static_cast<GLuint>(c.indx); | 2527 GLuint indx = static_cast<GLuint>(c.indx); |
| 2512 uint32 data_size; | 2528 uint32 data_size; |
| 2513 if (!ComputeDataSize(1, sizeof(GLfloat), 2, &data_size)) { | 2529 if (!ComputeDataSize(1, sizeof(GLfloat), 2, &data_size)) { |
| 2514 return error::kOutOfBounds; | 2530 return error::kOutOfBounds; |
| 2515 } | 2531 } |
| 2516 const GLfloat* values = GetSharedMemoryAs<const GLfloat*>( | 2532 const GLfloat* values = GetSharedMemoryAs<const GLfloat*>( |
| 2517 c.values_shm_id, c.values_shm_offset, data_size); | 2533 c.values_shm_id, c.values_shm_offset, data_size); |
| 2518 if (values == NULL) { | 2534 if (values == NULL) { |
| 2519 return error::kOutOfBounds; | 2535 return error::kOutOfBounds; |
| 2520 } | 2536 } |
| 2521 DoVertexAttrib2fv(indx, values); | 2537 DoVertexAttrib2fv(indx, values); |
| 2522 return error::kNoError; | 2538 return error::kNoError; |
| 2523 } | 2539 } |
| 2524 | 2540 |
| 2525 error::Error GLES2DecoderImpl::HandleVertexAttrib2fvImmediate( | 2541 error::Error GLES2DecoderImpl::HandleVertexAttrib2fvImmediate( |
| 2526 uint32 immediate_data_size, const gles2::VertexAttrib2fvImmediate& c) { | 2542 uint32 immediate_data_size, |
| 2543 const gles2::cmds::VertexAttrib2fvImmediate& c) { |
| 2527 GLuint indx = static_cast<GLuint>(c.indx); | 2544 GLuint indx = static_cast<GLuint>(c.indx); |
| 2528 uint32 data_size; | 2545 uint32 data_size; |
| 2529 if (!ComputeDataSize(1, sizeof(GLfloat), 2, &data_size)) { | 2546 if (!ComputeDataSize(1, sizeof(GLfloat), 2, &data_size)) { |
| 2530 return error::kOutOfBounds; | 2547 return error::kOutOfBounds; |
| 2531 } | 2548 } |
| 2532 if (data_size > immediate_data_size) { | 2549 if (data_size > immediate_data_size) { |
| 2533 return error::kOutOfBounds; | 2550 return error::kOutOfBounds; |
| 2534 } | 2551 } |
| 2535 const GLfloat* values = GetImmediateDataAs<const GLfloat*>( | 2552 const GLfloat* values = GetImmediateDataAs<const GLfloat*>( |
| 2536 c, data_size, immediate_data_size); | 2553 c, data_size, immediate_data_size); |
| 2537 if (values == NULL) { | 2554 if (values == NULL) { |
| 2538 return error::kOutOfBounds; | 2555 return error::kOutOfBounds; |
| 2539 } | 2556 } |
| 2540 DoVertexAttrib2fv(indx, values); | 2557 DoVertexAttrib2fv(indx, values); |
| 2541 return error::kNoError; | 2558 return error::kNoError; |
| 2542 } | 2559 } |
| 2543 | 2560 |
| 2544 error::Error GLES2DecoderImpl::HandleVertexAttrib3f( | 2561 error::Error GLES2DecoderImpl::HandleVertexAttrib3f( |
| 2545 uint32 immediate_data_size, const gles2::VertexAttrib3f& c) { | 2562 uint32 immediate_data_size, const gles2::cmds::VertexAttrib3f& c) { |
| 2546 GLuint indx = static_cast<GLuint>(c.indx); | 2563 GLuint indx = static_cast<GLuint>(c.indx); |
| 2547 GLfloat x = static_cast<GLfloat>(c.x); | 2564 GLfloat x = static_cast<GLfloat>(c.x); |
| 2548 GLfloat y = static_cast<GLfloat>(c.y); | 2565 GLfloat y = static_cast<GLfloat>(c.y); |
| 2549 GLfloat z = static_cast<GLfloat>(c.z); | 2566 GLfloat z = static_cast<GLfloat>(c.z); |
| 2550 DoVertexAttrib3f(indx, x, y, z); | 2567 DoVertexAttrib3f(indx, x, y, z); |
| 2551 return error::kNoError; | 2568 return error::kNoError; |
| 2552 } | 2569 } |
| 2553 | 2570 |
| 2554 error::Error GLES2DecoderImpl::HandleVertexAttrib3fv( | 2571 error::Error GLES2DecoderImpl::HandleVertexAttrib3fv( |
| 2555 uint32 immediate_data_size, const gles2::VertexAttrib3fv& c) { | 2572 uint32 immediate_data_size, const gles2::cmds::VertexAttrib3fv& c) { |
| 2556 GLuint indx = static_cast<GLuint>(c.indx); | 2573 GLuint indx = static_cast<GLuint>(c.indx); |
| 2557 uint32 data_size; | 2574 uint32 data_size; |
| 2558 if (!ComputeDataSize(1, sizeof(GLfloat), 3, &data_size)) { | 2575 if (!ComputeDataSize(1, sizeof(GLfloat), 3, &data_size)) { |
| 2559 return error::kOutOfBounds; | 2576 return error::kOutOfBounds; |
| 2560 } | 2577 } |
| 2561 const GLfloat* values = GetSharedMemoryAs<const GLfloat*>( | 2578 const GLfloat* values = GetSharedMemoryAs<const GLfloat*>( |
| 2562 c.values_shm_id, c.values_shm_offset, data_size); | 2579 c.values_shm_id, c.values_shm_offset, data_size); |
| 2563 if (values == NULL) { | 2580 if (values == NULL) { |
| 2564 return error::kOutOfBounds; | 2581 return error::kOutOfBounds; |
| 2565 } | 2582 } |
| 2566 DoVertexAttrib3fv(indx, values); | 2583 DoVertexAttrib3fv(indx, values); |
| 2567 return error::kNoError; | 2584 return error::kNoError; |
| 2568 } | 2585 } |
| 2569 | 2586 |
| 2570 error::Error GLES2DecoderImpl::HandleVertexAttrib3fvImmediate( | 2587 error::Error GLES2DecoderImpl::HandleVertexAttrib3fvImmediate( |
| 2571 uint32 immediate_data_size, const gles2::VertexAttrib3fvImmediate& c) { | 2588 uint32 immediate_data_size, |
| 2589 const gles2::cmds::VertexAttrib3fvImmediate& c) { |
| 2572 GLuint indx = static_cast<GLuint>(c.indx); | 2590 GLuint indx = static_cast<GLuint>(c.indx); |
| 2573 uint32 data_size; | 2591 uint32 data_size; |
| 2574 if (!ComputeDataSize(1, sizeof(GLfloat), 3, &data_size)) { | 2592 if (!ComputeDataSize(1, sizeof(GLfloat), 3, &data_size)) { |
| 2575 return error::kOutOfBounds; | 2593 return error::kOutOfBounds; |
| 2576 } | 2594 } |
| 2577 if (data_size > immediate_data_size) { | 2595 if (data_size > immediate_data_size) { |
| 2578 return error::kOutOfBounds; | 2596 return error::kOutOfBounds; |
| 2579 } | 2597 } |
| 2580 const GLfloat* values = GetImmediateDataAs<const GLfloat*>( | 2598 const GLfloat* values = GetImmediateDataAs<const GLfloat*>( |
| 2581 c, data_size, immediate_data_size); | 2599 c, data_size, immediate_data_size); |
| 2582 if (values == NULL) { | 2600 if (values == NULL) { |
| 2583 return error::kOutOfBounds; | 2601 return error::kOutOfBounds; |
| 2584 } | 2602 } |
| 2585 DoVertexAttrib3fv(indx, values); | 2603 DoVertexAttrib3fv(indx, values); |
| 2586 return error::kNoError; | 2604 return error::kNoError; |
| 2587 } | 2605 } |
| 2588 | 2606 |
| 2589 error::Error GLES2DecoderImpl::HandleVertexAttrib4f( | 2607 error::Error GLES2DecoderImpl::HandleVertexAttrib4f( |
| 2590 uint32 immediate_data_size, const gles2::VertexAttrib4f& c) { | 2608 uint32 immediate_data_size, const gles2::cmds::VertexAttrib4f& c) { |
| 2591 GLuint indx = static_cast<GLuint>(c.indx); | 2609 GLuint indx = static_cast<GLuint>(c.indx); |
| 2592 GLfloat x = static_cast<GLfloat>(c.x); | 2610 GLfloat x = static_cast<GLfloat>(c.x); |
| 2593 GLfloat y = static_cast<GLfloat>(c.y); | 2611 GLfloat y = static_cast<GLfloat>(c.y); |
| 2594 GLfloat z = static_cast<GLfloat>(c.z); | 2612 GLfloat z = static_cast<GLfloat>(c.z); |
| 2595 GLfloat w = static_cast<GLfloat>(c.w); | 2613 GLfloat w = static_cast<GLfloat>(c.w); |
| 2596 DoVertexAttrib4f(indx, x, y, z, w); | 2614 DoVertexAttrib4f(indx, x, y, z, w); |
| 2597 return error::kNoError; | 2615 return error::kNoError; |
| 2598 } | 2616 } |
| 2599 | 2617 |
| 2600 error::Error GLES2DecoderImpl::HandleVertexAttrib4fv( | 2618 error::Error GLES2DecoderImpl::HandleVertexAttrib4fv( |
| 2601 uint32 immediate_data_size, const gles2::VertexAttrib4fv& c) { | 2619 uint32 immediate_data_size, const gles2::cmds::VertexAttrib4fv& c) { |
| 2602 GLuint indx = static_cast<GLuint>(c.indx); | 2620 GLuint indx = static_cast<GLuint>(c.indx); |
| 2603 uint32 data_size; | 2621 uint32 data_size; |
| 2604 if (!ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) { | 2622 if (!ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) { |
| 2605 return error::kOutOfBounds; | 2623 return error::kOutOfBounds; |
| 2606 } | 2624 } |
| 2607 const GLfloat* values = GetSharedMemoryAs<const GLfloat*>( | 2625 const GLfloat* values = GetSharedMemoryAs<const GLfloat*>( |
| 2608 c.values_shm_id, c.values_shm_offset, data_size); | 2626 c.values_shm_id, c.values_shm_offset, data_size); |
| 2609 if (values == NULL) { | 2627 if (values == NULL) { |
| 2610 return error::kOutOfBounds; | 2628 return error::kOutOfBounds; |
| 2611 } | 2629 } |
| 2612 DoVertexAttrib4fv(indx, values); | 2630 DoVertexAttrib4fv(indx, values); |
| 2613 return error::kNoError; | 2631 return error::kNoError; |
| 2614 } | 2632 } |
| 2615 | 2633 |
| 2616 error::Error GLES2DecoderImpl::HandleVertexAttrib4fvImmediate( | 2634 error::Error GLES2DecoderImpl::HandleVertexAttrib4fvImmediate( |
| 2617 uint32 immediate_data_size, const gles2::VertexAttrib4fvImmediate& c) { | 2635 uint32 immediate_data_size, |
| 2636 const gles2::cmds::VertexAttrib4fvImmediate& c) { |
| 2618 GLuint indx = static_cast<GLuint>(c.indx); | 2637 GLuint indx = static_cast<GLuint>(c.indx); |
| 2619 uint32 data_size; | 2638 uint32 data_size; |
| 2620 if (!ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) { | 2639 if (!ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) { |
| 2621 return error::kOutOfBounds; | 2640 return error::kOutOfBounds; |
| 2622 } | 2641 } |
| 2623 if (data_size > immediate_data_size) { | 2642 if (data_size > immediate_data_size) { |
| 2624 return error::kOutOfBounds; | 2643 return error::kOutOfBounds; |
| 2625 } | 2644 } |
| 2626 const GLfloat* values = GetImmediateDataAs<const GLfloat*>( | 2645 const GLfloat* values = GetImmediateDataAs<const GLfloat*>( |
| 2627 c, data_size, immediate_data_size); | 2646 c, data_size, immediate_data_size); |
| 2628 if (values == NULL) { | 2647 if (values == NULL) { |
| 2629 return error::kOutOfBounds; | 2648 return error::kOutOfBounds; |
| 2630 } | 2649 } |
| 2631 DoVertexAttrib4fv(indx, values); | 2650 DoVertexAttrib4fv(indx, values); |
| 2632 return error::kNoError; | 2651 return error::kNoError; |
| 2633 } | 2652 } |
| 2634 | 2653 |
| 2635 error::Error GLES2DecoderImpl::HandleViewport( | 2654 error::Error GLES2DecoderImpl::HandleViewport( |
| 2636 uint32 immediate_data_size, const gles2::Viewport& c) { | 2655 uint32 immediate_data_size, const gles2::cmds::Viewport& c) { |
| 2637 GLint x = static_cast<GLint>(c.x); | 2656 GLint x = static_cast<GLint>(c.x); |
| 2638 GLint y = static_cast<GLint>(c.y); | 2657 GLint y = static_cast<GLint>(c.y); |
| 2639 GLsizei width = static_cast<GLsizei>(c.width); | 2658 GLsizei width = static_cast<GLsizei>(c.width); |
| 2640 GLsizei height = static_cast<GLsizei>(c.height); | 2659 GLsizei height = static_cast<GLsizei>(c.height); |
| 2641 if (width < 0) { | 2660 if (width < 0) { |
| 2642 SetGLError(GL_INVALID_VALUE, "glViewport", "width < 0"); | 2661 SetGLError(GL_INVALID_VALUE, "glViewport", "width < 0"); |
| 2643 return error::kNoError; | 2662 return error::kNoError; |
| 2644 } | 2663 } |
| 2645 if (height < 0) { | 2664 if (height < 0) { |
| 2646 SetGLError(GL_INVALID_VALUE, "glViewport", "height < 0"); | 2665 SetGLError(GL_INVALID_VALUE, "glViewport", "height < 0"); |
| 2647 return error::kNoError; | 2666 return error::kNoError; |
| 2648 } | 2667 } |
| 2649 DoViewport(x, y, width, height); | 2668 DoViewport(x, y, width, height); |
| 2650 return error::kNoError; | 2669 return error::kNoError; |
| 2651 } | 2670 } |
| 2652 | 2671 |
| 2653 error::Error GLES2DecoderImpl::HandleBlitFramebufferEXT( | 2672 error::Error GLES2DecoderImpl::HandleBlitFramebufferEXT( |
| 2654 uint32 immediate_data_size, const gles2::BlitFramebufferEXT& c) { | 2673 uint32 immediate_data_size, const gles2::cmds::BlitFramebufferEXT& c) { |
| 2655 if (ShouldDeferDraws() || ShouldDeferReads()) | 2674 if (ShouldDeferDraws() || ShouldDeferReads()) |
| 2656 return error::kDeferCommandUntilLater; | 2675 return error::kDeferCommandUntilLater; |
| 2657 GLint srcX0 = static_cast<GLint>(c.srcX0); | 2676 GLint srcX0 = static_cast<GLint>(c.srcX0); |
| 2658 GLint srcY0 = static_cast<GLint>(c.srcY0); | 2677 GLint srcY0 = static_cast<GLint>(c.srcY0); |
| 2659 GLint srcX1 = static_cast<GLint>(c.srcX1); | 2678 GLint srcX1 = static_cast<GLint>(c.srcX1); |
| 2660 GLint srcY1 = static_cast<GLint>(c.srcY1); | 2679 GLint srcY1 = static_cast<GLint>(c.srcY1); |
| 2661 GLint dstX0 = static_cast<GLint>(c.dstX0); | 2680 GLint dstX0 = static_cast<GLint>(c.dstX0); |
| 2662 GLint dstY0 = static_cast<GLint>(c.dstY0); | 2681 GLint dstY0 = static_cast<GLint>(c.dstY0); |
| 2663 GLint dstX1 = static_cast<GLint>(c.dstX1); | 2682 GLint dstX1 = static_cast<GLint>(c.dstX1); |
| 2664 GLint dstY1 = static_cast<GLint>(c.dstY1); | 2683 GLint dstY1 = static_cast<GLint>(c.dstY1); |
| 2665 GLbitfield mask = static_cast<GLbitfield>(c.mask); | 2684 GLbitfield mask = static_cast<GLbitfield>(c.mask); |
| 2666 GLenum filter = static_cast<GLenum>(c.filter); | 2685 GLenum filter = static_cast<GLenum>(c.filter); |
| 2667 if (!validators_->blit_filter.IsValid(filter)) { | 2686 if (!validators_->blit_filter.IsValid(filter)) { |
| 2668 SetGLErrorInvalidEnum("glBlitFramebufferEXT", filter, "filter"); | 2687 SetGLErrorInvalidEnum("glBlitFramebufferEXT", filter, "filter"); |
| 2669 return error::kNoError; | 2688 return error::kNoError; |
| 2670 } | 2689 } |
| 2671 DoBlitFramebufferEXT( | 2690 DoBlitFramebufferEXT( |
| 2672 srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); | 2691 srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); |
| 2673 return error::kNoError; | 2692 return error::kNoError; |
| 2674 } | 2693 } |
| 2675 | 2694 |
| 2676 error::Error GLES2DecoderImpl::HandleRenderbufferStorageMultisampleEXT( | 2695 error::Error GLES2DecoderImpl::HandleRenderbufferStorageMultisampleEXT( |
| 2677 uint32 immediate_data_size, | 2696 uint32 immediate_data_size, |
| 2678 const gles2::RenderbufferStorageMultisampleEXT& c) { | 2697 const gles2::cmds::RenderbufferStorageMultisampleEXT& c) { |
| 2679 GLenum target = static_cast<GLenum>(c.target); | 2698 GLenum target = static_cast<GLenum>(c.target); |
| 2680 GLsizei samples = static_cast<GLsizei>(c.samples); | 2699 GLsizei samples = static_cast<GLsizei>(c.samples); |
| 2681 GLenum internalformat = static_cast<GLenum>(c.internalformat); | 2700 GLenum internalformat = static_cast<GLenum>(c.internalformat); |
| 2682 GLsizei width = static_cast<GLsizei>(c.width); | 2701 GLsizei width = static_cast<GLsizei>(c.width); |
| 2683 GLsizei height = static_cast<GLsizei>(c.height); | 2702 GLsizei height = static_cast<GLsizei>(c.height); |
| 2684 if (!validators_->render_buffer_target.IsValid(target)) { | 2703 if (!validators_->render_buffer_target.IsValid(target)) { |
| 2685 SetGLErrorInvalidEnum("glRenderbufferStorageMultisampleEXT", target, | 2704 SetGLErrorInvalidEnum("glRenderbufferStorageMultisampleEXT", target, |
| 2686 "target"); | 2705 "target"); |
| 2687 return error::kNoError; | 2706 return error::kNoError; |
| 2688 } | 2707 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 2705 SetGLError( | 2724 SetGLError( |
| 2706 GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "height < 0"); | 2725 GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "height < 0"); |
| 2707 return error::kNoError; | 2726 return error::kNoError; |
| 2708 } | 2727 } |
| 2709 DoRenderbufferStorageMultisample( | 2728 DoRenderbufferStorageMultisample( |
| 2710 target, samples, internalformat, width, height); | 2729 target, samples, internalformat, width, height); |
| 2711 return error::kNoError; | 2730 return error::kNoError; |
| 2712 } | 2731 } |
| 2713 | 2732 |
| 2714 error::Error GLES2DecoderImpl::HandleTexStorage2DEXT( | 2733 error::Error GLES2DecoderImpl::HandleTexStorage2DEXT( |
| 2715 uint32 immediate_data_size, const gles2::TexStorage2DEXT& c) { | 2734 uint32 immediate_data_size, const gles2::cmds::TexStorage2DEXT& c) { |
| 2716 GLenum target = static_cast<GLenum>(c.target); | 2735 GLenum target = static_cast<GLenum>(c.target); |
| 2717 GLsizei levels = static_cast<GLsizei>(c.levels); | 2736 GLsizei levels = static_cast<GLsizei>(c.levels); |
| 2718 GLenum internalFormat = static_cast<GLenum>(c.internalFormat); | 2737 GLenum internalFormat = static_cast<GLenum>(c.internalFormat); |
| 2719 GLsizei width = static_cast<GLsizei>(c.width); | 2738 GLsizei width = static_cast<GLsizei>(c.width); |
| 2720 GLsizei height = static_cast<GLsizei>(c.height); | 2739 GLsizei height = static_cast<GLsizei>(c.height); |
| 2721 if (!validators_->texture_target.IsValid(target)) { | 2740 if (!validators_->texture_target.IsValid(target)) { |
| 2722 SetGLErrorInvalidEnum("glTexStorage2DEXT", target, "target"); | 2741 SetGLErrorInvalidEnum("glTexStorage2DEXT", target, "target"); |
| 2723 return error::kNoError; | 2742 return error::kNoError; |
| 2724 } | 2743 } |
| 2725 if (levels < 0) { | 2744 if (levels < 0) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2737 } | 2756 } |
| 2738 if (height < 0) { | 2757 if (height < 0) { |
| 2739 SetGLError(GL_INVALID_VALUE, "glTexStorage2DEXT", "height < 0"); | 2758 SetGLError(GL_INVALID_VALUE, "glTexStorage2DEXT", "height < 0"); |
| 2740 return error::kNoError; | 2759 return error::kNoError; |
| 2741 } | 2760 } |
| 2742 DoTexStorage2DEXT(target, levels, internalFormat, width, height); | 2761 DoTexStorage2DEXT(target, levels, internalFormat, width, height); |
| 2743 return error::kNoError; | 2762 return error::kNoError; |
| 2744 } | 2763 } |
| 2745 | 2764 |
| 2746 error::Error GLES2DecoderImpl::HandleGenQueriesEXT( | 2765 error::Error GLES2DecoderImpl::HandleGenQueriesEXT( |
| 2747 uint32 immediate_data_size, const gles2::GenQueriesEXT& c) { | 2766 uint32 immediate_data_size, const gles2::cmds::GenQueriesEXT& c) { |
| 2748 GLsizei n = static_cast<GLsizei>(c.n); | 2767 GLsizei n = static_cast<GLsizei>(c.n); |
| 2749 uint32 data_size; | 2768 uint32 data_size; |
| 2750 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 2769 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 2751 return error::kOutOfBounds; | 2770 return error::kOutOfBounds; |
| 2752 } | 2771 } |
| 2753 GLuint* queries = GetSharedMemoryAs<GLuint*>( | 2772 GLuint* queries = GetSharedMemoryAs<GLuint*>( |
| 2754 c.queries_shm_id, c.queries_shm_offset, data_size); | 2773 c.queries_shm_id, c.queries_shm_offset, data_size); |
| 2755 if (queries == NULL) { | 2774 if (queries == NULL) { |
| 2756 return error::kOutOfBounds; | 2775 return error::kOutOfBounds; |
| 2757 } | 2776 } |
| 2758 if (!GenQueriesEXTHelper(n, queries)) { | 2777 if (!GenQueriesEXTHelper(n, queries)) { |
| 2759 return error::kInvalidArguments; | 2778 return error::kInvalidArguments; |
| 2760 } | 2779 } |
| 2761 return error::kNoError; | 2780 return error::kNoError; |
| 2762 } | 2781 } |
| 2763 | 2782 |
| 2764 error::Error GLES2DecoderImpl::HandleGenQueriesEXTImmediate( | 2783 error::Error GLES2DecoderImpl::HandleGenQueriesEXTImmediate( |
| 2765 uint32 immediate_data_size, const gles2::GenQueriesEXTImmediate& c) { | 2784 uint32 immediate_data_size, const gles2::cmds::GenQueriesEXTImmediate& c) { |
| 2766 GLsizei n = static_cast<GLsizei>(c.n); | 2785 GLsizei n = static_cast<GLsizei>(c.n); |
| 2767 uint32 data_size; | 2786 uint32 data_size; |
| 2768 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 2787 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 2769 return error::kOutOfBounds; | 2788 return error::kOutOfBounds; |
| 2770 } | 2789 } |
| 2771 GLuint* queries = GetImmediateDataAs<GLuint*>( | 2790 GLuint* queries = GetImmediateDataAs<GLuint*>( |
| 2772 c, data_size, immediate_data_size); | 2791 c, data_size, immediate_data_size); |
| 2773 if (queries == NULL) { | 2792 if (queries == NULL) { |
| 2774 return error::kOutOfBounds; | 2793 return error::kOutOfBounds; |
| 2775 } | 2794 } |
| 2776 if (!GenQueriesEXTHelper(n, queries)) { | 2795 if (!GenQueriesEXTHelper(n, queries)) { |
| 2777 return error::kInvalidArguments; | 2796 return error::kInvalidArguments; |
| 2778 } | 2797 } |
| 2779 return error::kNoError; | 2798 return error::kNoError; |
| 2780 } | 2799 } |
| 2781 | 2800 |
| 2782 error::Error GLES2DecoderImpl::HandleDeleteQueriesEXT( | 2801 error::Error GLES2DecoderImpl::HandleDeleteQueriesEXT( |
| 2783 uint32 immediate_data_size, const gles2::DeleteQueriesEXT& c) { | 2802 uint32 immediate_data_size, const gles2::cmds::DeleteQueriesEXT& c) { |
| 2784 GLsizei n = static_cast<GLsizei>(c.n); | 2803 GLsizei n = static_cast<GLsizei>(c.n); |
| 2785 uint32 data_size; | 2804 uint32 data_size; |
| 2786 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 2805 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 2787 return error::kOutOfBounds; | 2806 return error::kOutOfBounds; |
| 2788 } | 2807 } |
| 2789 const GLuint* queries = GetSharedMemoryAs<const GLuint*>( | 2808 const GLuint* queries = GetSharedMemoryAs<const GLuint*>( |
| 2790 c.queries_shm_id, c.queries_shm_offset, data_size); | 2809 c.queries_shm_id, c.queries_shm_offset, data_size); |
| 2791 if (queries == NULL) { | 2810 if (queries == NULL) { |
| 2792 return error::kOutOfBounds; | 2811 return error::kOutOfBounds; |
| 2793 } | 2812 } |
| 2794 DeleteQueriesEXTHelper(n, queries); | 2813 DeleteQueriesEXTHelper(n, queries); |
| 2795 return error::kNoError; | 2814 return error::kNoError; |
| 2796 } | 2815 } |
| 2797 | 2816 |
| 2798 error::Error GLES2DecoderImpl::HandleDeleteQueriesEXTImmediate( | 2817 error::Error GLES2DecoderImpl::HandleDeleteQueriesEXTImmediate( |
| 2799 uint32 immediate_data_size, const gles2::DeleteQueriesEXTImmediate& c) { | 2818 uint32 immediate_data_size, |
| 2819 const gles2::cmds::DeleteQueriesEXTImmediate& c) { |
| 2800 GLsizei n = static_cast<GLsizei>(c.n); | 2820 GLsizei n = static_cast<GLsizei>(c.n); |
| 2801 uint32 data_size; | 2821 uint32 data_size; |
| 2802 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 2822 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 2803 return error::kOutOfBounds; | 2823 return error::kOutOfBounds; |
| 2804 } | 2824 } |
| 2805 const GLuint* queries = GetImmediateDataAs<const GLuint*>( | 2825 const GLuint* queries = GetImmediateDataAs<const GLuint*>( |
| 2806 c, data_size, immediate_data_size); | 2826 c, data_size, immediate_data_size); |
| 2807 if (queries == NULL) { | 2827 if (queries == NULL) { |
| 2808 return error::kOutOfBounds; | 2828 return error::kOutOfBounds; |
| 2809 } | 2829 } |
| 2810 DeleteQueriesEXTHelper(n, queries); | 2830 DeleteQueriesEXTHelper(n, queries); |
| 2811 return error::kNoError; | 2831 return error::kNoError; |
| 2812 } | 2832 } |
| 2813 | 2833 |
| 2814 error::Error GLES2DecoderImpl::HandleInsertEventMarkerEXT( | 2834 error::Error GLES2DecoderImpl::HandleInsertEventMarkerEXT( |
| 2815 uint32 immediate_data_size, const gles2::InsertEventMarkerEXT& c) { | 2835 uint32 immediate_data_size, const gles2::cmds::InsertEventMarkerEXT& c) { |
| 2816 GLuint bucket_id = static_cast<GLuint>(c.bucket_id); | 2836 GLuint bucket_id = static_cast<GLuint>(c.bucket_id); |
| 2817 Bucket* bucket = GetBucket(bucket_id); | 2837 Bucket* bucket = GetBucket(bucket_id); |
| 2818 if (!bucket || bucket->size() == 0) { | 2838 if (!bucket || bucket->size() == 0) { |
| 2819 return error::kInvalidArguments; | 2839 return error::kInvalidArguments; |
| 2820 } | 2840 } |
| 2821 std::string str; | 2841 std::string str; |
| 2822 if (!bucket->GetAsString(&str)) { | 2842 if (!bucket->GetAsString(&str)) { |
| 2823 return error::kInvalidArguments; | 2843 return error::kInvalidArguments; |
| 2824 } | 2844 } |
| 2825 DoInsertEventMarkerEXT(0, str.c_str()); | 2845 DoInsertEventMarkerEXT(0, str.c_str()); |
| 2826 return error::kNoError; | 2846 return error::kNoError; |
| 2827 } | 2847 } |
| 2828 | 2848 |
| 2829 error::Error GLES2DecoderImpl::HandlePushGroupMarkerEXT( | 2849 error::Error GLES2DecoderImpl::HandlePushGroupMarkerEXT( |
| 2830 uint32 immediate_data_size, const gles2::PushGroupMarkerEXT& c) { | 2850 uint32 immediate_data_size, const gles2::cmds::PushGroupMarkerEXT& c) { |
| 2831 GLuint bucket_id = static_cast<GLuint>(c.bucket_id); | 2851 GLuint bucket_id = static_cast<GLuint>(c.bucket_id); |
| 2832 Bucket* bucket = GetBucket(bucket_id); | 2852 Bucket* bucket = GetBucket(bucket_id); |
| 2833 if (!bucket || bucket->size() == 0) { | 2853 if (!bucket || bucket->size() == 0) { |
| 2834 return error::kInvalidArguments; | 2854 return error::kInvalidArguments; |
| 2835 } | 2855 } |
| 2836 std::string str; | 2856 std::string str; |
| 2837 if (!bucket->GetAsString(&str)) { | 2857 if (!bucket->GetAsString(&str)) { |
| 2838 return error::kInvalidArguments; | 2858 return error::kInvalidArguments; |
| 2839 } | 2859 } |
| 2840 DoPushGroupMarkerEXT(0, str.c_str()); | 2860 DoPushGroupMarkerEXT(0, str.c_str()); |
| 2841 return error::kNoError; | 2861 return error::kNoError; |
| 2842 } | 2862 } |
| 2843 | 2863 |
| 2844 error::Error GLES2DecoderImpl::HandlePopGroupMarkerEXT( | 2864 error::Error GLES2DecoderImpl::HandlePopGroupMarkerEXT( |
| 2845 uint32 immediate_data_size, const gles2::PopGroupMarkerEXT& c) { | 2865 uint32 immediate_data_size, const gles2::cmds::PopGroupMarkerEXT& c) { |
| 2846 DoPopGroupMarkerEXT(); | 2866 DoPopGroupMarkerEXT(); |
| 2847 return error::kNoError; | 2867 return error::kNoError; |
| 2848 } | 2868 } |
| 2849 | 2869 |
| 2850 error::Error GLES2DecoderImpl::HandleGenVertexArraysOES( | 2870 error::Error GLES2DecoderImpl::HandleGenVertexArraysOES( |
| 2851 uint32 immediate_data_size, const gles2::GenVertexArraysOES& c) { | 2871 uint32 immediate_data_size, const gles2::cmds::GenVertexArraysOES& c) { |
| 2852 GLsizei n = static_cast<GLsizei>(c.n); | 2872 GLsizei n = static_cast<GLsizei>(c.n); |
| 2853 uint32 data_size; | 2873 uint32 data_size; |
| 2854 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 2874 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 2855 return error::kOutOfBounds; | 2875 return error::kOutOfBounds; |
| 2856 } | 2876 } |
| 2857 GLuint* arrays = GetSharedMemoryAs<GLuint*>( | 2877 GLuint* arrays = GetSharedMemoryAs<GLuint*>( |
| 2858 c.arrays_shm_id, c.arrays_shm_offset, data_size); | 2878 c.arrays_shm_id, c.arrays_shm_offset, data_size); |
| 2859 if (arrays == NULL) { | 2879 if (arrays == NULL) { |
| 2860 return error::kOutOfBounds; | 2880 return error::kOutOfBounds; |
| 2861 } | 2881 } |
| 2862 if (!GenVertexArraysOESHelper(n, arrays)) { | 2882 if (!GenVertexArraysOESHelper(n, arrays)) { |
| 2863 return error::kInvalidArguments; | 2883 return error::kInvalidArguments; |
| 2864 } | 2884 } |
| 2865 return error::kNoError; | 2885 return error::kNoError; |
| 2866 } | 2886 } |
| 2867 | 2887 |
| 2868 error::Error GLES2DecoderImpl::HandleGenVertexArraysOESImmediate( | 2888 error::Error GLES2DecoderImpl::HandleGenVertexArraysOESImmediate( |
| 2869 uint32 immediate_data_size, const gles2::GenVertexArraysOESImmediate& c) { | 2889 uint32 immediate_data_size, |
| 2890 const gles2::cmds::GenVertexArraysOESImmediate& c) { |
| 2870 GLsizei n = static_cast<GLsizei>(c.n); | 2891 GLsizei n = static_cast<GLsizei>(c.n); |
| 2871 uint32 data_size; | 2892 uint32 data_size; |
| 2872 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 2893 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 2873 return error::kOutOfBounds; | 2894 return error::kOutOfBounds; |
| 2874 } | 2895 } |
| 2875 GLuint* arrays = GetImmediateDataAs<GLuint*>( | 2896 GLuint* arrays = GetImmediateDataAs<GLuint*>( |
| 2876 c, data_size, immediate_data_size); | 2897 c, data_size, immediate_data_size); |
| 2877 if (arrays == NULL) { | 2898 if (arrays == NULL) { |
| 2878 return error::kOutOfBounds; | 2899 return error::kOutOfBounds; |
| 2879 } | 2900 } |
| 2880 if (!GenVertexArraysOESHelper(n, arrays)) { | 2901 if (!GenVertexArraysOESHelper(n, arrays)) { |
| 2881 return error::kInvalidArguments; | 2902 return error::kInvalidArguments; |
| 2882 } | 2903 } |
| 2883 return error::kNoError; | 2904 return error::kNoError; |
| 2884 } | 2905 } |
| 2885 | 2906 |
| 2886 error::Error GLES2DecoderImpl::HandleDeleteVertexArraysOES( | 2907 error::Error GLES2DecoderImpl::HandleDeleteVertexArraysOES( |
| 2887 uint32 immediate_data_size, const gles2::DeleteVertexArraysOES& c) { | 2908 uint32 immediate_data_size, const gles2::cmds::DeleteVertexArraysOES& c) { |
| 2888 GLsizei n = static_cast<GLsizei>(c.n); | 2909 GLsizei n = static_cast<GLsizei>(c.n); |
| 2889 uint32 data_size; | 2910 uint32 data_size; |
| 2890 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 2911 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 2891 return error::kOutOfBounds; | 2912 return error::kOutOfBounds; |
| 2892 } | 2913 } |
| 2893 const GLuint* arrays = GetSharedMemoryAs<const GLuint*>( | 2914 const GLuint* arrays = GetSharedMemoryAs<const GLuint*>( |
| 2894 c.arrays_shm_id, c.arrays_shm_offset, data_size); | 2915 c.arrays_shm_id, c.arrays_shm_offset, data_size); |
| 2895 if (arrays == NULL) { | 2916 if (arrays == NULL) { |
| 2896 return error::kOutOfBounds; | 2917 return error::kOutOfBounds; |
| 2897 } | 2918 } |
| 2898 DeleteVertexArraysOESHelper(n, arrays); | 2919 DeleteVertexArraysOESHelper(n, arrays); |
| 2899 return error::kNoError; | 2920 return error::kNoError; |
| 2900 } | 2921 } |
| 2901 | 2922 |
| 2902 error::Error GLES2DecoderImpl::HandleDeleteVertexArraysOESImmediate( | 2923 error::Error GLES2DecoderImpl::HandleDeleteVertexArraysOESImmediate( |
| 2903 uint32 immediate_data_size, | 2924 uint32 immediate_data_size, |
| 2904 const gles2::DeleteVertexArraysOESImmediate& c) { | 2925 const gles2::cmds::DeleteVertexArraysOESImmediate& c) { |
| 2905 GLsizei n = static_cast<GLsizei>(c.n); | 2926 GLsizei n = static_cast<GLsizei>(c.n); |
| 2906 uint32 data_size; | 2927 uint32 data_size; |
| 2907 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | 2928 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { |
| 2908 return error::kOutOfBounds; | 2929 return error::kOutOfBounds; |
| 2909 } | 2930 } |
| 2910 const GLuint* arrays = GetImmediateDataAs<const GLuint*>( | 2931 const GLuint* arrays = GetImmediateDataAs<const GLuint*>( |
| 2911 c, data_size, immediate_data_size); | 2932 c, data_size, immediate_data_size); |
| 2912 if (arrays == NULL) { | 2933 if (arrays == NULL) { |
| 2913 return error::kOutOfBounds; | 2934 return error::kOutOfBounds; |
| 2914 } | 2935 } |
| 2915 DeleteVertexArraysOESHelper(n, arrays); | 2936 DeleteVertexArraysOESHelper(n, arrays); |
| 2916 return error::kNoError; | 2937 return error::kNoError; |
| 2917 } | 2938 } |
| 2918 | 2939 |
| 2919 error::Error GLES2DecoderImpl::HandleIsVertexArrayOES( | 2940 error::Error GLES2DecoderImpl::HandleIsVertexArrayOES( |
| 2920 uint32 immediate_data_size, const gles2::IsVertexArrayOES& c) { | 2941 uint32 immediate_data_size, const gles2::cmds::IsVertexArrayOES& c) { |
| 2921 GLuint array = c.array; | 2942 GLuint array = c.array; |
| 2922 typedef IsVertexArrayOES::Result Result; | 2943 typedef cmds::IsVertexArrayOES::Result Result; |
| 2923 Result* result_dst = GetSharedMemoryAs<Result*>( | 2944 Result* result_dst = GetSharedMemoryAs<Result*>( |
| 2924 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); | 2945 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); |
| 2925 if (!result_dst) { | 2946 if (!result_dst) { |
| 2926 return error::kOutOfBounds; | 2947 return error::kOutOfBounds; |
| 2927 } | 2948 } |
| 2928 *result_dst = DoIsVertexArrayOES(array); | 2949 *result_dst = DoIsVertexArrayOES(array); |
| 2929 return error::kNoError; | 2950 return error::kNoError; |
| 2930 } | 2951 } |
| 2931 | 2952 |
| 2932 error::Error GLES2DecoderImpl::HandleBindVertexArrayOES( | 2953 error::Error GLES2DecoderImpl::HandleBindVertexArrayOES( |
| 2933 uint32 immediate_data_size, const gles2::BindVertexArrayOES& c) { | 2954 uint32 immediate_data_size, const gles2::cmds::BindVertexArrayOES& c) { |
| 2934 GLuint array = c.array; | 2955 GLuint array = c.array; |
| 2935 DoBindVertexArrayOES(array); | 2956 DoBindVertexArrayOES(array); |
| 2936 return error::kNoError; | 2957 return error::kNoError; |
| 2937 } | 2958 } |
| 2938 | 2959 |
| 2939 error::Error GLES2DecoderImpl::HandleGetMaxValueInBufferCHROMIUM( | 2960 error::Error GLES2DecoderImpl::HandleGetMaxValueInBufferCHROMIUM( |
| 2940 uint32 immediate_data_size, const gles2::GetMaxValueInBufferCHROMIUM& c) { | 2961 uint32 immediate_data_size, |
| 2962 const gles2::cmds::GetMaxValueInBufferCHROMIUM& c) { |
| 2941 GLuint buffer_id = c.buffer_id; | 2963 GLuint buffer_id = c.buffer_id; |
| 2942 GLsizei count = static_cast<GLsizei>(c.count); | 2964 GLsizei count = static_cast<GLsizei>(c.count); |
| 2943 GLenum type = static_cast<GLenum>(c.type); | 2965 GLenum type = static_cast<GLenum>(c.type); |
| 2944 GLuint offset = static_cast<GLuint>(c.offset); | 2966 GLuint offset = static_cast<GLuint>(c.offset); |
| 2945 typedef GetMaxValueInBufferCHROMIUM::Result Result; | 2967 typedef cmds::GetMaxValueInBufferCHROMIUM::Result Result; |
| 2946 Result* result_dst = GetSharedMemoryAs<Result*>( | 2968 Result* result_dst = GetSharedMemoryAs<Result*>( |
| 2947 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); | 2969 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); |
| 2948 if (!result_dst) { | 2970 if (!result_dst) { |
| 2949 return error::kOutOfBounds; | 2971 return error::kOutOfBounds; |
| 2950 } | 2972 } |
| 2951 if (count < 0) { | 2973 if (count < 0) { |
| 2952 SetGLError(GL_INVALID_VALUE, "glGetMaxValueInBufferCHROMIUM", "count < 0"); | 2974 SetGLError(GL_INVALID_VALUE, "glGetMaxValueInBufferCHROMIUM", "count < 0"); |
| 2953 return error::kNoError; | 2975 return error::kNoError; |
| 2954 } | 2976 } |
| 2955 if (!validators_->get_max_index_type.IsValid(type)) { | 2977 if (!validators_->get_max_index_type.IsValid(type)) { |
| 2956 SetGLErrorInvalidEnum("glGetMaxValueInBufferCHROMIUM", type, "type"); | 2978 SetGLErrorInvalidEnum("glGetMaxValueInBufferCHROMIUM", type, "type"); |
| 2957 return error::kNoError; | 2979 return error::kNoError; |
| 2958 } | 2980 } |
| 2959 *result_dst = DoGetMaxValueInBufferCHROMIUM(buffer_id, count, type, offset); | 2981 *result_dst = DoGetMaxValueInBufferCHROMIUM(buffer_id, count, type, offset); |
| 2960 return error::kNoError; | 2982 return error::kNoError; |
| 2961 } | 2983 } |
| 2962 | 2984 |
| 2963 error::Error GLES2DecoderImpl::HandleTexImageIOSurface2DCHROMIUM( | 2985 error::Error GLES2DecoderImpl::HandleTexImageIOSurface2DCHROMIUM( |
| 2964 uint32 immediate_data_size, const gles2::TexImageIOSurface2DCHROMIUM& c) { | 2986 uint32 immediate_data_size, |
| 2987 const gles2::cmds::TexImageIOSurface2DCHROMIUM& c) { |
| 2965 GLenum target = static_cast<GLenum>(c.target); | 2988 GLenum target = static_cast<GLenum>(c.target); |
| 2966 GLsizei width = static_cast<GLsizei>(c.width); | 2989 GLsizei width = static_cast<GLsizei>(c.width); |
| 2967 GLsizei height = static_cast<GLsizei>(c.height); | 2990 GLsizei height = static_cast<GLsizei>(c.height); |
| 2968 GLuint ioSurfaceId = static_cast<GLuint>(c.ioSurfaceId); | 2991 GLuint ioSurfaceId = static_cast<GLuint>(c.ioSurfaceId); |
| 2969 GLuint plane = static_cast<GLuint>(c.plane); | 2992 GLuint plane = static_cast<GLuint>(c.plane); |
| 2970 if (!validators_->texture_bind_target.IsValid(target)) { | 2993 if (!validators_->texture_bind_target.IsValid(target)) { |
| 2971 SetGLErrorInvalidEnum("glTexImageIOSurface2DCHROMIUM", target, "target"); | 2994 SetGLErrorInvalidEnum("glTexImageIOSurface2DCHROMIUM", target, "target"); |
| 2972 return error::kNoError; | 2995 return error::kNoError; |
| 2973 } | 2996 } |
| 2974 if (width < 0) { | 2997 if (width < 0) { |
| 2975 SetGLError(GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "width < 0"); | 2998 SetGLError(GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "width < 0"); |
| 2976 return error::kNoError; | 2999 return error::kNoError; |
| 2977 } | 3000 } |
| 2978 if (height < 0) { | 3001 if (height < 0) { |
| 2979 SetGLError( | 3002 SetGLError( |
| 2980 GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "height < 0"); | 3003 GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "height < 0"); |
| 2981 return error::kNoError; | 3004 return error::kNoError; |
| 2982 } | 3005 } |
| 2983 DoTexImageIOSurface2DCHROMIUM(target, width, height, ioSurfaceId, plane); | 3006 DoTexImageIOSurface2DCHROMIUM(target, width, height, ioSurfaceId, plane); |
| 2984 return error::kNoError; | 3007 return error::kNoError; |
| 2985 } | 3008 } |
| 2986 | 3009 |
| 2987 error::Error GLES2DecoderImpl::HandleCopyTextureCHROMIUM( | 3010 error::Error GLES2DecoderImpl::HandleCopyTextureCHROMIUM( |
| 2988 uint32 immediate_data_size, const gles2::CopyTextureCHROMIUM& c) { | 3011 uint32 immediate_data_size, const gles2::cmds::CopyTextureCHROMIUM& c) { |
| 2989 GLenum target = static_cast<GLenum>(c.target); | 3012 GLenum target = static_cast<GLenum>(c.target); |
| 2990 GLenum source_id = static_cast<GLenum>(c.source_id); | 3013 GLenum source_id = static_cast<GLenum>(c.source_id); |
| 2991 GLenum dest_id = static_cast<GLenum>(c.dest_id); | 3014 GLenum dest_id = static_cast<GLenum>(c.dest_id); |
| 2992 GLint level = static_cast<GLint>(c.level); | 3015 GLint level = static_cast<GLint>(c.level); |
| 2993 GLint internalformat = static_cast<GLint>(c.internalformat); | 3016 GLint internalformat = static_cast<GLint>(c.internalformat); |
| 2994 if (!validators_->texture_internal_format.IsValid(internalformat)) { | 3017 if (!validators_->texture_internal_format.IsValid(internalformat)) { |
| 2995 SetGLError( | 3018 SetGLError( |
| 2996 GL_INVALID_VALUE, "glCopyTextureCHROMIUM", "internalformat GL_INVALID_VA
LUE"); // NOLINT | 3019 GL_INVALID_VALUE, "glCopyTextureCHROMIUM", "internalformat GL_INVALID_VA
LUE"); // NOLINT |
| 2997 return error::kNoError; | 3020 return error::kNoError; |
| 2998 } | 3021 } |
| 2999 DoCopyTextureCHROMIUM(target, source_id, dest_id, level, internalformat); | 3022 DoCopyTextureCHROMIUM(target, source_id, dest_id, level, internalformat); |
| 3000 return error::kNoError; | 3023 return error::kNoError; |
| 3001 } | 3024 } |
| 3002 | 3025 |
| 3003 error::Error GLES2DecoderImpl::HandleProduceTextureCHROMIUM( | 3026 error::Error GLES2DecoderImpl::HandleProduceTextureCHROMIUM( |
| 3004 uint32 immediate_data_size, const gles2::ProduceTextureCHROMIUM& c) { | 3027 uint32 immediate_data_size, const gles2::cmds::ProduceTextureCHROMIUM& c) { |
| 3005 GLenum target = static_cast<GLenum>(c.target); | 3028 GLenum target = static_cast<GLenum>(c.target); |
| 3006 uint32 data_size; | 3029 uint32 data_size; |
| 3007 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { | 3030 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { |
| 3008 return error::kOutOfBounds; | 3031 return error::kOutOfBounds; |
| 3009 } | 3032 } |
| 3010 const GLbyte* mailbox = GetSharedMemoryAs<const GLbyte*>( | 3033 const GLbyte* mailbox = GetSharedMemoryAs<const GLbyte*>( |
| 3011 c.mailbox_shm_id, c.mailbox_shm_offset, data_size); | 3034 c.mailbox_shm_id, c.mailbox_shm_offset, data_size); |
| 3012 if (!validators_->texture_target.IsValid(target)) { | 3035 if (!validators_->texture_target.IsValid(target)) { |
| 3013 SetGLErrorInvalidEnum("glProduceTextureCHROMIUM", target, "target"); | 3036 SetGLErrorInvalidEnum("glProduceTextureCHROMIUM", target, "target"); |
| 3014 return error::kNoError; | 3037 return error::kNoError; |
| 3015 } | 3038 } |
| 3016 if (mailbox == NULL) { | 3039 if (mailbox == NULL) { |
| 3017 return error::kOutOfBounds; | 3040 return error::kOutOfBounds; |
| 3018 } | 3041 } |
| 3019 DoProduceTextureCHROMIUM(target, mailbox); | 3042 DoProduceTextureCHROMIUM(target, mailbox); |
| 3020 return error::kNoError; | 3043 return error::kNoError; |
| 3021 } | 3044 } |
| 3022 | 3045 |
| 3023 error::Error GLES2DecoderImpl::HandleProduceTextureCHROMIUMImmediate( | 3046 error::Error GLES2DecoderImpl::HandleProduceTextureCHROMIUMImmediate( |
| 3024 uint32 immediate_data_size, | 3047 uint32 immediate_data_size, |
| 3025 const gles2::ProduceTextureCHROMIUMImmediate& c) { | 3048 const gles2::cmds::ProduceTextureCHROMIUMImmediate& c) { |
| 3026 GLenum target = static_cast<GLenum>(c.target); | 3049 GLenum target = static_cast<GLenum>(c.target); |
| 3027 uint32 data_size; | 3050 uint32 data_size; |
| 3028 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { | 3051 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { |
| 3029 return error::kOutOfBounds; | 3052 return error::kOutOfBounds; |
| 3030 } | 3053 } |
| 3031 if (data_size > immediate_data_size) { | 3054 if (data_size > immediate_data_size) { |
| 3032 return error::kOutOfBounds; | 3055 return error::kOutOfBounds; |
| 3033 } | 3056 } |
| 3034 const GLbyte* mailbox = GetImmediateDataAs<const GLbyte*>( | 3057 const GLbyte* mailbox = GetImmediateDataAs<const GLbyte*>( |
| 3035 c, data_size, immediate_data_size); | 3058 c, data_size, immediate_data_size); |
| 3036 if (!validators_->texture_target.IsValid(target)) { | 3059 if (!validators_->texture_target.IsValid(target)) { |
| 3037 SetGLErrorInvalidEnum("glProduceTextureCHROMIUM", target, "target"); | 3060 SetGLErrorInvalidEnum("glProduceTextureCHROMIUM", target, "target"); |
| 3038 return error::kNoError; | 3061 return error::kNoError; |
| 3039 } | 3062 } |
| 3040 if (mailbox == NULL) { | 3063 if (mailbox == NULL) { |
| 3041 return error::kOutOfBounds; | 3064 return error::kOutOfBounds; |
| 3042 } | 3065 } |
| 3043 DoProduceTextureCHROMIUM(target, mailbox); | 3066 DoProduceTextureCHROMIUM(target, mailbox); |
| 3044 return error::kNoError; | 3067 return error::kNoError; |
| 3045 } | 3068 } |
| 3046 | 3069 |
| 3047 error::Error GLES2DecoderImpl::HandleConsumeTextureCHROMIUM( | 3070 error::Error GLES2DecoderImpl::HandleConsumeTextureCHROMIUM( |
| 3048 uint32 immediate_data_size, const gles2::ConsumeTextureCHROMIUM& c) { | 3071 uint32 immediate_data_size, const gles2::cmds::ConsumeTextureCHROMIUM& c) { |
| 3049 GLenum target = static_cast<GLenum>(c.target); | 3072 GLenum target = static_cast<GLenum>(c.target); |
| 3050 uint32 data_size; | 3073 uint32 data_size; |
| 3051 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { | 3074 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { |
| 3052 return error::kOutOfBounds; | 3075 return error::kOutOfBounds; |
| 3053 } | 3076 } |
| 3054 const GLbyte* mailbox = GetSharedMemoryAs<const GLbyte*>( | 3077 const GLbyte* mailbox = GetSharedMemoryAs<const GLbyte*>( |
| 3055 c.mailbox_shm_id, c.mailbox_shm_offset, data_size); | 3078 c.mailbox_shm_id, c.mailbox_shm_offset, data_size); |
| 3056 if (!validators_->texture_target.IsValid(target)) { | 3079 if (!validators_->texture_target.IsValid(target)) { |
| 3057 SetGLErrorInvalidEnum("glConsumeTextureCHROMIUM", target, "target"); | 3080 SetGLErrorInvalidEnum("glConsumeTextureCHROMIUM", target, "target"); |
| 3058 return error::kNoError; | 3081 return error::kNoError; |
| 3059 } | 3082 } |
| 3060 if (mailbox == NULL) { | 3083 if (mailbox == NULL) { |
| 3061 return error::kOutOfBounds; | 3084 return error::kOutOfBounds; |
| 3062 } | 3085 } |
| 3063 DoConsumeTextureCHROMIUM(target, mailbox); | 3086 DoConsumeTextureCHROMIUM(target, mailbox); |
| 3064 return error::kNoError; | 3087 return error::kNoError; |
| 3065 } | 3088 } |
| 3066 | 3089 |
| 3067 error::Error GLES2DecoderImpl::HandleConsumeTextureCHROMIUMImmediate( | 3090 error::Error GLES2DecoderImpl::HandleConsumeTextureCHROMIUMImmediate( |
| 3068 uint32 immediate_data_size, | 3091 uint32 immediate_data_size, |
| 3069 const gles2::ConsumeTextureCHROMIUMImmediate& c) { | 3092 const gles2::cmds::ConsumeTextureCHROMIUMImmediate& c) { |
| 3070 GLenum target = static_cast<GLenum>(c.target); | 3093 GLenum target = static_cast<GLenum>(c.target); |
| 3071 uint32 data_size; | 3094 uint32 data_size; |
| 3072 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { | 3095 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { |
| 3073 return error::kOutOfBounds; | 3096 return error::kOutOfBounds; |
| 3074 } | 3097 } |
| 3075 if (data_size > immediate_data_size) { | 3098 if (data_size > immediate_data_size) { |
| 3076 return error::kOutOfBounds; | 3099 return error::kOutOfBounds; |
| 3077 } | 3100 } |
| 3078 const GLbyte* mailbox = GetImmediateDataAs<const GLbyte*>( | 3101 const GLbyte* mailbox = GetImmediateDataAs<const GLbyte*>( |
| 3079 c, data_size, immediate_data_size); | 3102 c, data_size, immediate_data_size); |
| 3080 if (!validators_->texture_target.IsValid(target)) { | 3103 if (!validators_->texture_target.IsValid(target)) { |
| 3081 SetGLErrorInvalidEnum("glConsumeTextureCHROMIUM", target, "target"); | 3104 SetGLErrorInvalidEnum("glConsumeTextureCHROMIUM", target, "target"); |
| 3082 return error::kNoError; | 3105 return error::kNoError; |
| 3083 } | 3106 } |
| 3084 if (mailbox == NULL) { | 3107 if (mailbox == NULL) { |
| 3085 return error::kOutOfBounds; | 3108 return error::kOutOfBounds; |
| 3086 } | 3109 } |
| 3087 DoConsumeTextureCHROMIUM(target, mailbox); | 3110 DoConsumeTextureCHROMIUM(target, mailbox); |
| 3088 return error::kNoError; | 3111 return error::kNoError; |
| 3089 } | 3112 } |
| 3090 | 3113 |
| 3091 error::Error GLES2DecoderImpl::HandleBindTexImage2DCHROMIUM( | 3114 error::Error GLES2DecoderImpl::HandleBindTexImage2DCHROMIUM( |
| 3092 uint32 immediate_data_size, const gles2::BindTexImage2DCHROMIUM& c) { | 3115 uint32 immediate_data_size, const gles2::cmds::BindTexImage2DCHROMIUM& c) { |
| 3093 GLenum target = static_cast<GLenum>(c.target); | 3116 GLenum target = static_cast<GLenum>(c.target); |
| 3094 GLint imageId = static_cast<GLint>(c.imageId); | 3117 GLint imageId = static_cast<GLint>(c.imageId); |
| 3095 if (!validators_->texture_bind_target.IsValid(target)) { | 3118 if (!validators_->texture_bind_target.IsValid(target)) { |
| 3096 SetGLErrorInvalidEnum("glBindTexImage2DCHROMIUM", target, "target"); | 3119 SetGLErrorInvalidEnum("glBindTexImage2DCHROMIUM", target, "target"); |
| 3097 return error::kNoError; | 3120 return error::kNoError; |
| 3098 } | 3121 } |
| 3099 DoBindTexImage2DCHROMIUM(target, imageId); | 3122 DoBindTexImage2DCHROMIUM(target, imageId); |
| 3100 return error::kNoError; | 3123 return error::kNoError; |
| 3101 } | 3124 } |
| 3102 | 3125 |
| 3103 error::Error GLES2DecoderImpl::HandleReleaseTexImage2DCHROMIUM( | 3126 error::Error GLES2DecoderImpl::HandleReleaseTexImage2DCHROMIUM( |
| 3104 uint32 immediate_data_size, const gles2::ReleaseTexImage2DCHROMIUM& c) { | 3127 uint32 immediate_data_size, |
| 3128 const gles2::cmds::ReleaseTexImage2DCHROMIUM& c) { |
| 3105 GLenum target = static_cast<GLenum>(c.target); | 3129 GLenum target = static_cast<GLenum>(c.target); |
| 3106 GLint imageId = static_cast<GLint>(c.imageId); | 3130 GLint imageId = static_cast<GLint>(c.imageId); |
| 3107 if (!validators_->texture_bind_target.IsValid(target)) { | 3131 if (!validators_->texture_bind_target.IsValid(target)) { |
| 3108 SetGLErrorInvalidEnum("glReleaseTexImage2DCHROMIUM", target, "target"); | 3132 SetGLErrorInvalidEnum("glReleaseTexImage2DCHROMIUM", target, "target"); |
| 3109 return error::kNoError; | 3133 return error::kNoError; |
| 3110 } | 3134 } |
| 3111 DoReleaseTexImage2DCHROMIUM(target, imageId); | 3135 DoReleaseTexImage2DCHROMIUM(target, imageId); |
| 3112 return error::kNoError; | 3136 return error::kNoError; |
| 3113 } | 3137 } |
| 3114 | 3138 |
| 3115 error::Error GLES2DecoderImpl::HandleTraceEndCHROMIUM( | 3139 error::Error GLES2DecoderImpl::HandleTraceEndCHROMIUM( |
| 3116 uint32 immediate_data_size, const gles2::TraceEndCHROMIUM& c) { | 3140 uint32 immediate_data_size, const gles2::cmds::TraceEndCHROMIUM& c) { |
| 3117 DoTraceEndCHROMIUM(); | 3141 DoTraceEndCHROMIUM(); |
| 3118 return error::kNoError; | 3142 return error::kNoError; |
| 3119 } | 3143 } |
| 3120 | 3144 |
| 3121 error::Error GLES2DecoderImpl::HandleDiscardFramebufferEXT( | 3145 error::Error GLES2DecoderImpl::HandleDiscardFramebufferEXT( |
| 3122 uint32 immediate_data_size, const gles2::DiscardFramebufferEXT& c) { | 3146 uint32 immediate_data_size, const gles2::cmds::DiscardFramebufferEXT& c) { |
| 3123 GLenum target = static_cast<GLenum>(c.target); | 3147 GLenum target = static_cast<GLenum>(c.target); |
| 3124 GLsizei count = static_cast<GLsizei>(c.count); | 3148 GLsizei count = static_cast<GLsizei>(c.count); |
| 3125 uint32 data_size; | 3149 uint32 data_size; |
| 3126 if (!ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { | 3150 if (!ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { |
| 3127 return error::kOutOfBounds; | 3151 return error::kOutOfBounds; |
| 3128 } | 3152 } |
| 3129 const GLenum* attachments = GetSharedMemoryAs<const GLenum*>( | 3153 const GLenum* attachments = GetSharedMemoryAs<const GLenum*>( |
| 3130 c.attachments_shm_id, c.attachments_shm_offset, data_size); | 3154 c.attachments_shm_id, c.attachments_shm_offset, data_size); |
| 3131 if (count < 0) { | 3155 if (count < 0) { |
| 3132 SetGLError(GL_INVALID_VALUE, "glDiscardFramebufferEXT", "count < 0"); | 3156 SetGLError(GL_INVALID_VALUE, "glDiscardFramebufferEXT", "count < 0"); |
| 3133 return error::kNoError; | 3157 return error::kNoError; |
| 3134 } | 3158 } |
| 3135 if (attachments == NULL) { | 3159 if (attachments == NULL) { |
| 3136 return error::kOutOfBounds; | 3160 return error::kOutOfBounds; |
| 3137 } | 3161 } |
| 3138 DoDiscardFramebufferEXT(target, count, attachments); | 3162 DoDiscardFramebufferEXT(target, count, attachments); |
| 3139 return error::kNoError; | 3163 return error::kNoError; |
| 3140 } | 3164 } |
| 3141 | 3165 |
| 3142 error::Error GLES2DecoderImpl::HandleDiscardFramebufferEXTImmediate( | 3166 error::Error GLES2DecoderImpl::HandleDiscardFramebufferEXTImmediate( |
| 3143 uint32 immediate_data_size, | 3167 uint32 immediate_data_size, |
| 3144 const gles2::DiscardFramebufferEXTImmediate& c) { | 3168 const gles2::cmds::DiscardFramebufferEXTImmediate& c) { |
| 3145 GLenum target = static_cast<GLenum>(c.target); | 3169 GLenum target = static_cast<GLenum>(c.target); |
| 3146 GLsizei count = static_cast<GLsizei>(c.count); | 3170 GLsizei count = static_cast<GLsizei>(c.count); |
| 3147 uint32 data_size; | 3171 uint32 data_size; |
| 3148 if (!ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { | 3172 if (!ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { |
| 3149 return error::kOutOfBounds; | 3173 return error::kOutOfBounds; |
| 3150 } | 3174 } |
| 3151 if (data_size > immediate_data_size) { | 3175 if (data_size > immediate_data_size) { |
| 3152 return error::kOutOfBounds; | 3176 return error::kOutOfBounds; |
| 3153 } | 3177 } |
| 3154 const GLenum* attachments = GetImmediateDataAs<const GLenum*>( | 3178 const GLenum* attachments = GetImmediateDataAs<const GLenum*>( |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3203 clear_state_dirty_ = true; | 3227 clear_state_dirty_ = true; |
| 3204 } | 3228 } |
| 3205 return false; | 3229 return false; |
| 3206 default: | 3230 default: |
| 3207 NOTREACHED(); | 3231 NOTREACHED(); |
| 3208 return false; | 3232 return false; |
| 3209 } | 3233 } |
| 3210 } | 3234 } |
| 3211 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ | 3235 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ |
| 3212 | 3236 |
| OLD | NEW |