Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(162)

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder_autogen.h

Issue 540053004: command_buffer: Table based command dispatch. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698