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 |