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