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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc

Issue 2275203002: Make command buffer commands and immediate data volatile (Closed)
Patch Set: std::copy->const_cast+memcpy Created 4 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 #include "gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h" 11 #include "gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h"
12 12
13 namespace gpu { 13 namespace gpu {
14 namespace gles2 { 14 namespace gles2 {
15 15
16 error::Error GLES2DecoderPassthroughImpl::HandleActiveTexture( 16 error::Error GLES2DecoderPassthroughImpl::HandleActiveTexture(
17 uint32_t immediate_data_size, 17 uint32_t immediate_data_size,
18 const void* cmd_data) { 18 const volatile void* cmd_data) {
19 const gles2::cmds::ActiveTexture& c = 19 const volatile gles2::cmds::ActiveTexture& c =
20 *static_cast<const gles2::cmds::ActiveTexture*>(cmd_data); 20 *static_cast<const volatile gles2::cmds::ActiveTexture*>(cmd_data);
21 (void)c;
22 GLenum texture = static_cast<GLenum>(c.texture); 21 GLenum texture = static_cast<GLenum>(c.texture);
23 error::Error error = DoActiveTexture(texture); 22 error::Error error = DoActiveTexture(texture);
24 if (error != error::kNoError) { 23 if (error != error::kNoError) {
25 return error; 24 return error;
26 } 25 }
27 return error::kNoError; 26 return error::kNoError;
28 } 27 }
29 28
30 error::Error GLES2DecoderPassthroughImpl::HandleAttachShader( 29 error::Error GLES2DecoderPassthroughImpl::HandleAttachShader(
31 uint32_t immediate_data_size, 30 uint32_t immediate_data_size,
32 const void* cmd_data) { 31 const volatile void* cmd_data) {
33 const gles2::cmds::AttachShader& c = 32 const volatile gles2::cmds::AttachShader& c =
34 *static_cast<const gles2::cmds::AttachShader*>(cmd_data); 33 *static_cast<const volatile gles2::cmds::AttachShader*>(cmd_data);
35 (void)c;
36 GLuint program = c.program; 34 GLuint program = c.program;
37 GLuint shader = c.shader; 35 GLuint shader = c.shader;
38 error::Error error = DoAttachShader(program, shader); 36 error::Error error = DoAttachShader(program, shader);
39 if (error != error::kNoError) { 37 if (error != error::kNoError) {
40 return error; 38 return error;
41 } 39 }
42 return error::kNoError; 40 return error::kNoError;
43 } 41 }
44 42
45 error::Error GLES2DecoderPassthroughImpl::HandleBindBuffer( 43 error::Error GLES2DecoderPassthroughImpl::HandleBindBuffer(
46 uint32_t immediate_data_size, 44 uint32_t immediate_data_size,
47 const void* cmd_data) { 45 const volatile void* cmd_data) {
48 const gles2::cmds::BindBuffer& c = 46 const volatile gles2::cmds::BindBuffer& c =
49 *static_cast<const gles2::cmds::BindBuffer*>(cmd_data); 47 *static_cast<const volatile gles2::cmds::BindBuffer*>(cmd_data);
50 (void)c;
51 GLenum target = static_cast<GLenum>(c.target); 48 GLenum target = static_cast<GLenum>(c.target);
52 GLuint buffer = c.buffer; 49 GLuint buffer = c.buffer;
53 error::Error error = DoBindBuffer(target, buffer); 50 error::Error error = DoBindBuffer(target, buffer);
54 if (error != error::kNoError) { 51 if (error != error::kNoError) {
55 return error; 52 return error;
56 } 53 }
57 return error::kNoError; 54 return error::kNoError;
58 } 55 }
59 56
60 error::Error GLES2DecoderPassthroughImpl::HandleBindBufferBase( 57 error::Error GLES2DecoderPassthroughImpl::HandleBindBufferBase(
61 uint32_t immediate_data_size, 58 uint32_t immediate_data_size,
62 const void* cmd_data) { 59 const volatile void* cmd_data) {
63 const gles2::cmds::BindBufferBase& c = 60 const volatile gles2::cmds::BindBufferBase& c =
64 *static_cast<const gles2::cmds::BindBufferBase*>(cmd_data); 61 *static_cast<const volatile gles2::cmds::BindBufferBase*>(cmd_data);
65 (void)c;
66 GLenum target = static_cast<GLenum>(c.target); 62 GLenum target = static_cast<GLenum>(c.target);
67 GLuint index = static_cast<GLuint>(c.index); 63 GLuint index = static_cast<GLuint>(c.index);
68 GLuint buffer = c.buffer; 64 GLuint buffer = c.buffer;
69 error::Error error = DoBindBufferBase(target, index, buffer); 65 error::Error error = DoBindBufferBase(target, index, buffer);
70 if (error != error::kNoError) { 66 if (error != error::kNoError) {
71 return error; 67 return error;
72 } 68 }
73 return error::kNoError; 69 return error::kNoError;
74 } 70 }
75 71
76 error::Error GLES2DecoderPassthroughImpl::HandleBindBufferRange( 72 error::Error GLES2DecoderPassthroughImpl::HandleBindBufferRange(
77 uint32_t immediate_data_size, 73 uint32_t immediate_data_size,
78 const void* cmd_data) { 74 const volatile void* cmd_data) {
79 const gles2::cmds::BindBufferRange& c = 75 const volatile gles2::cmds::BindBufferRange& c =
80 *static_cast<const gles2::cmds::BindBufferRange*>(cmd_data); 76 *static_cast<const volatile gles2::cmds::BindBufferRange*>(cmd_data);
81 (void)c;
82 GLenum target = static_cast<GLenum>(c.target); 77 GLenum target = static_cast<GLenum>(c.target);
83 GLuint index = static_cast<GLuint>(c.index); 78 GLuint index = static_cast<GLuint>(c.index);
84 GLuint buffer = c.buffer; 79 GLuint buffer = c.buffer;
85 GLintptr offset = static_cast<GLintptr>(c.offset); 80 GLintptr offset = static_cast<GLintptr>(c.offset);
86 GLsizeiptr size = static_cast<GLsizeiptr>(c.size); 81 GLsizeiptr size = static_cast<GLsizeiptr>(c.size);
87 error::Error error = DoBindBufferRange(target, index, buffer, offset, size); 82 error::Error error = DoBindBufferRange(target, index, buffer, offset, size);
88 if (error != error::kNoError) { 83 if (error != error::kNoError) {
89 return error; 84 return error;
90 } 85 }
91 return error::kNoError; 86 return error::kNoError;
92 } 87 }
93 88
94 error::Error GLES2DecoderPassthroughImpl::HandleBindFramebuffer( 89 error::Error GLES2DecoderPassthroughImpl::HandleBindFramebuffer(
95 uint32_t immediate_data_size, 90 uint32_t immediate_data_size,
96 const void* cmd_data) { 91 const volatile void* cmd_data) {
97 const gles2::cmds::BindFramebuffer& c = 92 const volatile gles2::cmds::BindFramebuffer& c =
98 *static_cast<const gles2::cmds::BindFramebuffer*>(cmd_data); 93 *static_cast<const volatile gles2::cmds::BindFramebuffer*>(cmd_data);
99 (void)c;
100 GLenum target = static_cast<GLenum>(c.target); 94 GLenum target = static_cast<GLenum>(c.target);
101 GLuint framebuffer = c.framebuffer; 95 GLuint framebuffer = c.framebuffer;
102 error::Error error = DoBindFramebuffer(target, framebuffer); 96 error::Error error = DoBindFramebuffer(target, framebuffer);
103 if (error != error::kNoError) { 97 if (error != error::kNoError) {
104 return error; 98 return error;
105 } 99 }
106 return error::kNoError; 100 return error::kNoError;
107 } 101 }
108 102
109 error::Error GLES2DecoderPassthroughImpl::HandleBindRenderbuffer( 103 error::Error GLES2DecoderPassthroughImpl::HandleBindRenderbuffer(
110 uint32_t immediate_data_size, 104 uint32_t immediate_data_size,
111 const void* cmd_data) { 105 const volatile void* cmd_data) {
112 const gles2::cmds::BindRenderbuffer& c = 106 const volatile gles2::cmds::BindRenderbuffer& c =
113 *static_cast<const gles2::cmds::BindRenderbuffer*>(cmd_data); 107 *static_cast<const volatile gles2::cmds::BindRenderbuffer*>(cmd_data);
114 (void)c;
115 GLenum target = static_cast<GLenum>(c.target); 108 GLenum target = static_cast<GLenum>(c.target);
116 GLuint renderbuffer = c.renderbuffer; 109 GLuint renderbuffer = c.renderbuffer;
117 error::Error error = DoBindRenderbuffer(target, renderbuffer); 110 error::Error error = DoBindRenderbuffer(target, renderbuffer);
118 if (error != error::kNoError) { 111 if (error != error::kNoError) {
119 return error; 112 return error;
120 } 113 }
121 return error::kNoError; 114 return error::kNoError;
122 } 115 }
123 116
124 error::Error GLES2DecoderPassthroughImpl::HandleBindSampler( 117 error::Error GLES2DecoderPassthroughImpl::HandleBindSampler(
125 uint32_t immediate_data_size, 118 uint32_t immediate_data_size,
126 const void* cmd_data) { 119 const volatile void* cmd_data) {
127 const gles2::cmds::BindSampler& c = 120 const volatile gles2::cmds::BindSampler& c =
128 *static_cast<const gles2::cmds::BindSampler*>(cmd_data); 121 *static_cast<const volatile gles2::cmds::BindSampler*>(cmd_data);
129 (void)c;
130 GLuint unit = static_cast<GLuint>(c.unit); 122 GLuint unit = static_cast<GLuint>(c.unit);
131 GLuint sampler = c.sampler; 123 GLuint sampler = c.sampler;
132 error::Error error = DoBindSampler(unit, sampler); 124 error::Error error = DoBindSampler(unit, sampler);
133 if (error != error::kNoError) { 125 if (error != error::kNoError) {
134 return error; 126 return error;
135 } 127 }
136 return error::kNoError; 128 return error::kNoError;
137 } 129 }
138 130
139 error::Error GLES2DecoderPassthroughImpl::HandleBindTexture( 131 error::Error GLES2DecoderPassthroughImpl::HandleBindTexture(
140 uint32_t immediate_data_size, 132 uint32_t immediate_data_size,
141 const void* cmd_data) { 133 const volatile void* cmd_data) {
142 const gles2::cmds::BindTexture& c = 134 const volatile gles2::cmds::BindTexture& c =
143 *static_cast<const gles2::cmds::BindTexture*>(cmd_data); 135 *static_cast<const volatile gles2::cmds::BindTexture*>(cmd_data);
144 (void)c;
145 GLenum target = static_cast<GLenum>(c.target); 136 GLenum target = static_cast<GLenum>(c.target);
146 GLuint texture = c.texture; 137 GLuint texture = c.texture;
147 error::Error error = DoBindTexture(target, texture); 138 error::Error error = DoBindTexture(target, texture);
148 if (error != error::kNoError) { 139 if (error != error::kNoError) {
149 return error; 140 return error;
150 } 141 }
151 return error::kNoError; 142 return error::kNoError;
152 } 143 }
153 144
154 error::Error GLES2DecoderPassthroughImpl::HandleBindTransformFeedback( 145 error::Error GLES2DecoderPassthroughImpl::HandleBindTransformFeedback(
155 uint32_t immediate_data_size, 146 uint32_t immediate_data_size,
156 const void* cmd_data) { 147 const volatile void* cmd_data) {
157 const gles2::cmds::BindTransformFeedback& c = 148 const volatile gles2::cmds::BindTransformFeedback& c =
158 *static_cast<const gles2::cmds::BindTransformFeedback*>(cmd_data); 149 *static_cast<const volatile gles2::cmds::BindTransformFeedback*>(
159 (void)c; 150 cmd_data);
160 GLenum target = static_cast<GLenum>(c.target); 151 GLenum target = static_cast<GLenum>(c.target);
161 GLuint transformfeedback = c.transformfeedback; 152 GLuint transformfeedback = c.transformfeedback;
162 error::Error error = DoBindTransformFeedback(target, transformfeedback); 153 error::Error error = DoBindTransformFeedback(target, transformfeedback);
163 if (error != error::kNoError) { 154 if (error != error::kNoError) {
164 return error; 155 return error;
165 } 156 }
166 return error::kNoError; 157 return error::kNoError;
167 } 158 }
168 159
169 error::Error GLES2DecoderPassthroughImpl::HandleBlendColor( 160 error::Error GLES2DecoderPassthroughImpl::HandleBlendColor(
170 uint32_t immediate_data_size, 161 uint32_t immediate_data_size,
171 const void* cmd_data) { 162 const volatile void* cmd_data) {
172 const gles2::cmds::BlendColor& c = 163 const volatile gles2::cmds::BlendColor& c =
173 *static_cast<const gles2::cmds::BlendColor*>(cmd_data); 164 *static_cast<const volatile gles2::cmds::BlendColor*>(cmd_data);
174 (void)c;
175 GLclampf red = static_cast<GLclampf>(c.red); 165 GLclampf red = static_cast<GLclampf>(c.red);
176 GLclampf green = static_cast<GLclampf>(c.green); 166 GLclampf green = static_cast<GLclampf>(c.green);
177 GLclampf blue = static_cast<GLclampf>(c.blue); 167 GLclampf blue = static_cast<GLclampf>(c.blue);
178 GLclampf alpha = static_cast<GLclampf>(c.alpha); 168 GLclampf alpha = static_cast<GLclampf>(c.alpha);
179 error::Error error = DoBlendColor(red, green, blue, alpha); 169 error::Error error = DoBlendColor(red, green, blue, alpha);
180 if (error != error::kNoError) { 170 if (error != error::kNoError) {
181 return error; 171 return error;
182 } 172 }
183 return error::kNoError; 173 return error::kNoError;
184 } 174 }
185 175
186 error::Error GLES2DecoderPassthroughImpl::HandleBlendEquation( 176 error::Error GLES2DecoderPassthroughImpl::HandleBlendEquation(
187 uint32_t immediate_data_size, 177 uint32_t immediate_data_size,
188 const void* cmd_data) { 178 const volatile void* cmd_data) {
189 const gles2::cmds::BlendEquation& c = 179 const volatile gles2::cmds::BlendEquation& c =
190 *static_cast<const gles2::cmds::BlendEquation*>(cmd_data); 180 *static_cast<const volatile gles2::cmds::BlendEquation*>(cmd_data);
191 (void)c;
192 GLenum mode = static_cast<GLenum>(c.mode); 181 GLenum mode = static_cast<GLenum>(c.mode);
193 error::Error error = DoBlendEquation(mode); 182 error::Error error = DoBlendEquation(mode);
194 if (error != error::kNoError) { 183 if (error != error::kNoError) {
195 return error; 184 return error;
196 } 185 }
197 return error::kNoError; 186 return error::kNoError;
198 } 187 }
199 188
200 error::Error GLES2DecoderPassthroughImpl::HandleBlendEquationSeparate( 189 error::Error GLES2DecoderPassthroughImpl::HandleBlendEquationSeparate(
201 uint32_t immediate_data_size, 190 uint32_t immediate_data_size,
202 const void* cmd_data) { 191 const volatile void* cmd_data) {
203 const gles2::cmds::BlendEquationSeparate& c = 192 const volatile gles2::cmds::BlendEquationSeparate& c =
204 *static_cast<const gles2::cmds::BlendEquationSeparate*>(cmd_data); 193 *static_cast<const volatile gles2::cmds::BlendEquationSeparate*>(
205 (void)c; 194 cmd_data);
206 GLenum modeRGB = static_cast<GLenum>(c.modeRGB); 195 GLenum modeRGB = static_cast<GLenum>(c.modeRGB);
207 GLenum modeAlpha = static_cast<GLenum>(c.modeAlpha); 196 GLenum modeAlpha = static_cast<GLenum>(c.modeAlpha);
208 error::Error error = DoBlendEquationSeparate(modeRGB, modeAlpha); 197 error::Error error = DoBlendEquationSeparate(modeRGB, modeAlpha);
209 if (error != error::kNoError) { 198 if (error != error::kNoError) {
210 return error; 199 return error;
211 } 200 }
212 return error::kNoError; 201 return error::kNoError;
213 } 202 }
214 203
215 error::Error GLES2DecoderPassthroughImpl::HandleBlendFunc( 204 error::Error GLES2DecoderPassthroughImpl::HandleBlendFunc(
216 uint32_t immediate_data_size, 205 uint32_t immediate_data_size,
217 const void* cmd_data) { 206 const volatile void* cmd_data) {
218 const gles2::cmds::BlendFunc& c = 207 const volatile gles2::cmds::BlendFunc& c =
219 *static_cast<const gles2::cmds::BlendFunc*>(cmd_data); 208 *static_cast<const volatile gles2::cmds::BlendFunc*>(cmd_data);
220 (void)c;
221 GLenum sfactor = static_cast<GLenum>(c.sfactor); 209 GLenum sfactor = static_cast<GLenum>(c.sfactor);
222 GLenum dfactor = static_cast<GLenum>(c.dfactor); 210 GLenum dfactor = static_cast<GLenum>(c.dfactor);
223 error::Error error = DoBlendFunc(sfactor, dfactor); 211 error::Error error = DoBlendFunc(sfactor, dfactor);
224 if (error != error::kNoError) { 212 if (error != error::kNoError) {
225 return error; 213 return error;
226 } 214 }
227 return error::kNoError; 215 return error::kNoError;
228 } 216 }
229 217
230 error::Error GLES2DecoderPassthroughImpl::HandleBlendFuncSeparate( 218 error::Error GLES2DecoderPassthroughImpl::HandleBlendFuncSeparate(
231 uint32_t immediate_data_size, 219 uint32_t immediate_data_size,
232 const void* cmd_data) { 220 const volatile void* cmd_data) {
233 const gles2::cmds::BlendFuncSeparate& c = 221 const volatile gles2::cmds::BlendFuncSeparate& c =
234 *static_cast<const gles2::cmds::BlendFuncSeparate*>(cmd_data); 222 *static_cast<const volatile gles2::cmds::BlendFuncSeparate*>(cmd_data);
235 (void)c;
236 GLenum srcRGB = static_cast<GLenum>(c.srcRGB); 223 GLenum srcRGB = static_cast<GLenum>(c.srcRGB);
237 GLenum dstRGB = static_cast<GLenum>(c.dstRGB); 224 GLenum dstRGB = static_cast<GLenum>(c.dstRGB);
238 GLenum srcAlpha = static_cast<GLenum>(c.srcAlpha); 225 GLenum srcAlpha = static_cast<GLenum>(c.srcAlpha);
239 GLenum dstAlpha = static_cast<GLenum>(c.dstAlpha); 226 GLenum dstAlpha = static_cast<GLenum>(c.dstAlpha);
240 error::Error error = DoBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); 227 error::Error error = DoBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
241 if (error != error::kNoError) { 228 if (error != error::kNoError) {
242 return error; 229 return error;
243 } 230 }
244 return error::kNoError; 231 return error::kNoError;
245 } 232 }
246 233
247 error::Error GLES2DecoderPassthroughImpl::HandleBufferSubData( 234 error::Error GLES2DecoderPassthroughImpl::HandleBufferSubData(
248 uint32_t immediate_data_size, 235 uint32_t immediate_data_size,
249 const void* cmd_data) { 236 const volatile void* cmd_data) {
250 const gles2::cmds::BufferSubData& c = 237 const volatile gles2::cmds::BufferSubData& c =
251 *static_cast<const gles2::cmds::BufferSubData*>(cmd_data); 238 *static_cast<const volatile gles2::cmds::BufferSubData*>(cmd_data);
252 (void)c;
253 GLenum target = static_cast<GLenum>(c.target); 239 GLenum target = static_cast<GLenum>(c.target);
254 GLintptr offset = static_cast<GLintptr>(c.offset); 240 GLintptr offset = static_cast<GLintptr>(c.offset);
255 GLsizeiptr size = static_cast<GLsizeiptr>(c.size); 241 GLsizeiptr size = static_cast<GLsizeiptr>(c.size);
256 uint32_t data_size = size; 242 uint32_t data_size = size;
257 const void* data = GetSharedMemoryAs<const void*>( 243 const void* data = GetSharedMemoryAs<const void*>(
258 c.data_shm_id, c.data_shm_offset, data_size); 244 c.data_shm_id, c.data_shm_offset, data_size);
259 error::Error error = DoBufferSubData(target, offset, size, data); 245 error::Error error = DoBufferSubData(target, offset, size, data);
260 if (error != error::kNoError) { 246 if (error != error::kNoError) {
261 return error; 247 return error;
262 } 248 }
263 return error::kNoError; 249 return error::kNoError;
264 } 250 }
265 251
266 error::Error GLES2DecoderPassthroughImpl::HandleCheckFramebufferStatus( 252 error::Error GLES2DecoderPassthroughImpl::HandleCheckFramebufferStatus(
267 uint32_t immediate_data_size, 253 uint32_t immediate_data_size,
268 const void* cmd_data) { 254 const volatile void* cmd_data) {
269 const gles2::cmds::CheckFramebufferStatus& c = 255 const volatile gles2::cmds::CheckFramebufferStatus& c =
270 *static_cast<const gles2::cmds::CheckFramebufferStatus*>(cmd_data); 256 *static_cast<const volatile gles2::cmds::CheckFramebufferStatus*>(
271 (void)c; 257 cmd_data);
272 GLenum target = static_cast<GLenum>(c.target); 258 GLenum target = static_cast<GLenum>(c.target);
273 typedef cmds::CheckFramebufferStatus::Result Result; 259 typedef cmds::CheckFramebufferStatus::Result Result;
274 Result* result = GetSharedMemoryAs<Result*>( 260 Result* result = GetSharedMemoryAs<Result*>(
275 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 261 c.result_shm_id, c.result_shm_offset, sizeof(*result));
276 if (!result) { 262 if (!result) {
277 return error::kOutOfBounds; 263 return error::kOutOfBounds;
278 } 264 }
279 error::Error error = DoCheckFramebufferStatus(target, result); 265 error::Error error = DoCheckFramebufferStatus(target, result);
280 if (error != error::kNoError) { 266 if (error != error::kNoError) {
281 return error; 267 return error;
282 } 268 }
283 return error::kNoError; 269 return error::kNoError;
284 } 270 }
285 271
286 error::Error GLES2DecoderPassthroughImpl::HandleClear( 272 error::Error GLES2DecoderPassthroughImpl::HandleClear(
287 uint32_t immediate_data_size, 273 uint32_t immediate_data_size,
288 const void* cmd_data) { 274 const volatile void* cmd_data) {
289 const gles2::cmds::Clear& c = 275 const volatile gles2::cmds::Clear& c =
290 *static_cast<const gles2::cmds::Clear*>(cmd_data); 276 *static_cast<const volatile gles2::cmds::Clear*>(cmd_data);
291 (void)c;
292 GLbitfield mask = static_cast<GLbitfield>(c.mask); 277 GLbitfield mask = static_cast<GLbitfield>(c.mask);
293 error::Error error = DoClear(mask); 278 error::Error error = DoClear(mask);
294 if (error != error::kNoError) { 279 if (error != error::kNoError) {
295 return error; 280 return error;
296 } 281 }
297 return error::kNoError; 282 return error::kNoError;
298 } 283 }
299 284
300 error::Error GLES2DecoderPassthroughImpl::HandleClearBufferfi( 285 error::Error GLES2DecoderPassthroughImpl::HandleClearBufferfi(
301 uint32_t immediate_data_size, 286 uint32_t immediate_data_size,
302 const void* cmd_data) { 287 const volatile void* cmd_data) {
303 const gles2::cmds::ClearBufferfi& c = 288 const volatile gles2::cmds::ClearBufferfi& c =
304 *static_cast<const gles2::cmds::ClearBufferfi*>(cmd_data); 289 *static_cast<const volatile gles2::cmds::ClearBufferfi*>(cmd_data);
305 (void)c;
306 GLenum buffer = static_cast<GLenum>(c.buffer); 290 GLenum buffer = static_cast<GLenum>(c.buffer);
307 GLint drawbuffers = static_cast<GLint>(c.drawbuffers); 291 GLint drawbuffers = static_cast<GLint>(c.drawbuffers);
308 GLfloat depth = static_cast<GLfloat>(c.depth); 292 GLfloat depth = static_cast<GLfloat>(c.depth);
309 GLint stencil = static_cast<GLint>(c.stencil); 293 GLint stencil = static_cast<GLint>(c.stencil);
310 error::Error error = DoClearBufferfi(buffer, drawbuffers, depth, stencil); 294 error::Error error = DoClearBufferfi(buffer, drawbuffers, depth, stencil);
311 if (error != error::kNoError) { 295 if (error != error::kNoError) {
312 return error; 296 return error;
313 } 297 }
314 return error::kNoError; 298 return error::kNoError;
315 } 299 }
316 300
317 error::Error GLES2DecoderPassthroughImpl::HandleClearBufferfvImmediate( 301 error::Error GLES2DecoderPassthroughImpl::HandleClearBufferfvImmediate(
318 uint32_t immediate_data_size, 302 uint32_t immediate_data_size,
319 const void* cmd_data) { 303 const volatile void* cmd_data) {
320 const gles2::cmds::ClearBufferfvImmediate& c = 304 const volatile gles2::cmds::ClearBufferfvImmediate& c =
321 *static_cast<const gles2::cmds::ClearBufferfvImmediate*>(cmd_data); 305 *static_cast<const volatile gles2::cmds::ClearBufferfvImmediate*>(
322 (void)c; 306 cmd_data);
323 GLenum buffer = static_cast<GLenum>(c.buffer); 307 GLenum buffer = static_cast<GLenum>(c.buffer);
324 GLint drawbuffers = static_cast<GLint>(c.drawbuffers); 308 GLint drawbuffers = static_cast<GLint>(c.drawbuffers);
325 uint32_t data_size; 309 uint32_t data_size;
326 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) { 310 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) {
327 return error::kOutOfBounds; 311 return error::kOutOfBounds;
328 } 312 }
329 if (data_size > immediate_data_size) { 313 if (data_size > immediate_data_size) {
330 return error::kOutOfBounds; 314 return error::kOutOfBounds;
331 } 315 }
332 const GLfloat* value = 316 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
333 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 317 c, data_size, immediate_data_size);
334 error::Error error = DoClearBufferfv(buffer, drawbuffers, value); 318 error::Error error = DoClearBufferfv(buffer, drawbuffers, value);
335 if (error != error::kNoError) { 319 if (error != error::kNoError) {
336 return error; 320 return error;
337 } 321 }
338 return error::kNoError; 322 return error::kNoError;
339 } 323 }
340 324
341 error::Error GLES2DecoderPassthroughImpl::HandleClearBufferivImmediate( 325 error::Error GLES2DecoderPassthroughImpl::HandleClearBufferivImmediate(
342 uint32_t immediate_data_size, 326 uint32_t immediate_data_size,
343 const void* cmd_data) { 327 const volatile void* cmd_data) {
344 const gles2::cmds::ClearBufferivImmediate& c = 328 const volatile gles2::cmds::ClearBufferivImmediate& c =
345 *static_cast<const gles2::cmds::ClearBufferivImmediate*>(cmd_data); 329 *static_cast<const volatile gles2::cmds::ClearBufferivImmediate*>(
346 (void)c; 330 cmd_data);
347 GLenum buffer = static_cast<GLenum>(c.buffer); 331 GLenum buffer = static_cast<GLenum>(c.buffer);
348 GLint drawbuffers = static_cast<GLint>(c.drawbuffers); 332 GLint drawbuffers = static_cast<GLint>(c.drawbuffers);
349 uint32_t data_size; 333 uint32_t data_size;
350 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 4, &data_size)) { 334 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 4, &data_size)) {
351 return error::kOutOfBounds; 335 return error::kOutOfBounds;
352 } 336 }
353 if (data_size > immediate_data_size) { 337 if (data_size > immediate_data_size) {
354 return error::kOutOfBounds; 338 return error::kOutOfBounds;
355 } 339 }
356 const GLint* value = 340 volatile const GLint* value = GetImmediateDataAs<volatile const GLint*>(
357 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); 341 c, data_size, immediate_data_size);
358 error::Error error = DoClearBufferiv(buffer, drawbuffers, value); 342 error::Error error = DoClearBufferiv(buffer, drawbuffers, value);
359 if (error != error::kNoError) { 343 if (error != error::kNoError) {
360 return error; 344 return error;
361 } 345 }
362 return error::kNoError; 346 return error::kNoError;
363 } 347 }
364 348
365 error::Error GLES2DecoderPassthroughImpl::HandleClearBufferuivImmediate( 349 error::Error GLES2DecoderPassthroughImpl::HandleClearBufferuivImmediate(
366 uint32_t immediate_data_size, 350 uint32_t immediate_data_size,
367 const void* cmd_data) { 351 const volatile void* cmd_data) {
368 const gles2::cmds::ClearBufferuivImmediate& c = 352 const volatile gles2::cmds::ClearBufferuivImmediate& c =
369 *static_cast<const gles2::cmds::ClearBufferuivImmediate*>(cmd_data); 353 *static_cast<const volatile gles2::cmds::ClearBufferuivImmediate*>(
370 (void)c; 354 cmd_data);
371 GLenum buffer = static_cast<GLenum>(c.buffer); 355 GLenum buffer = static_cast<GLenum>(c.buffer);
372 GLint drawbuffers = static_cast<GLint>(c.drawbuffers); 356 GLint drawbuffers = static_cast<GLint>(c.drawbuffers);
373 uint32_t data_size; 357 uint32_t data_size;
374 if (!GLES2Util::ComputeDataSize(1, sizeof(GLuint), 4, &data_size)) { 358 if (!GLES2Util::ComputeDataSize(1, sizeof(GLuint), 4, &data_size)) {
375 return error::kOutOfBounds; 359 return error::kOutOfBounds;
376 } 360 }
377 if (data_size > immediate_data_size) { 361 if (data_size > immediate_data_size) {
378 return error::kOutOfBounds; 362 return error::kOutOfBounds;
379 } 363 }
380 const GLuint* value = 364 volatile const GLuint* value = GetImmediateDataAs<volatile const GLuint*>(
381 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 365 c, data_size, immediate_data_size);
382 error::Error error = DoClearBufferuiv(buffer, drawbuffers, value); 366 error::Error error = DoClearBufferuiv(buffer, drawbuffers, value);
383 if (error != error::kNoError) { 367 if (error != error::kNoError) {
384 return error; 368 return error;
385 } 369 }
386 return error::kNoError; 370 return error::kNoError;
387 } 371 }
388 372
389 error::Error GLES2DecoderPassthroughImpl::HandleClearColor( 373 error::Error GLES2DecoderPassthroughImpl::HandleClearColor(
390 uint32_t immediate_data_size, 374 uint32_t immediate_data_size,
391 const void* cmd_data) { 375 const volatile void* cmd_data) {
392 const gles2::cmds::ClearColor& c = 376 const volatile gles2::cmds::ClearColor& c =
393 *static_cast<const gles2::cmds::ClearColor*>(cmd_data); 377 *static_cast<const volatile gles2::cmds::ClearColor*>(cmd_data);
394 (void)c;
395 GLclampf red = static_cast<GLclampf>(c.red); 378 GLclampf red = static_cast<GLclampf>(c.red);
396 GLclampf green = static_cast<GLclampf>(c.green); 379 GLclampf green = static_cast<GLclampf>(c.green);
397 GLclampf blue = static_cast<GLclampf>(c.blue); 380 GLclampf blue = static_cast<GLclampf>(c.blue);
398 GLclampf alpha = static_cast<GLclampf>(c.alpha); 381 GLclampf alpha = static_cast<GLclampf>(c.alpha);
399 error::Error error = DoClearColor(red, green, blue, alpha); 382 error::Error error = DoClearColor(red, green, blue, alpha);
400 if (error != error::kNoError) { 383 if (error != error::kNoError) {
401 return error; 384 return error;
402 } 385 }
403 return error::kNoError; 386 return error::kNoError;
404 } 387 }
405 388
406 error::Error GLES2DecoderPassthroughImpl::HandleClearDepthf( 389 error::Error GLES2DecoderPassthroughImpl::HandleClearDepthf(
407 uint32_t immediate_data_size, 390 uint32_t immediate_data_size,
408 const void* cmd_data) { 391 const volatile void* cmd_data) {
409 const gles2::cmds::ClearDepthf& c = 392 const volatile gles2::cmds::ClearDepthf& c =
410 *static_cast<const gles2::cmds::ClearDepthf*>(cmd_data); 393 *static_cast<const volatile gles2::cmds::ClearDepthf*>(cmd_data);
411 (void)c;
412 GLclampf depth = static_cast<GLclampf>(c.depth); 394 GLclampf depth = static_cast<GLclampf>(c.depth);
413 error::Error error = DoClearDepthf(depth); 395 error::Error error = DoClearDepthf(depth);
414 if (error != error::kNoError) { 396 if (error != error::kNoError) {
415 return error; 397 return error;
416 } 398 }
417 return error::kNoError; 399 return error::kNoError;
418 } 400 }
419 401
420 error::Error GLES2DecoderPassthroughImpl::HandleClearStencil( 402 error::Error GLES2DecoderPassthroughImpl::HandleClearStencil(
421 uint32_t immediate_data_size, 403 uint32_t immediate_data_size,
422 const void* cmd_data) { 404 const volatile void* cmd_data) {
423 const gles2::cmds::ClearStencil& c = 405 const volatile gles2::cmds::ClearStencil& c =
424 *static_cast<const gles2::cmds::ClearStencil*>(cmd_data); 406 *static_cast<const volatile gles2::cmds::ClearStencil*>(cmd_data);
425 (void)c;
426 GLint s = static_cast<GLint>(c.s); 407 GLint s = static_cast<GLint>(c.s);
427 error::Error error = DoClearStencil(s); 408 error::Error error = DoClearStencil(s);
428 if (error != error::kNoError) { 409 if (error != error::kNoError) {
429 return error; 410 return error;
430 } 411 }
431 return error::kNoError; 412 return error::kNoError;
432 } 413 }
433 414
434 error::Error GLES2DecoderPassthroughImpl::HandleColorMask( 415 error::Error GLES2DecoderPassthroughImpl::HandleColorMask(
435 uint32_t immediate_data_size, 416 uint32_t immediate_data_size,
436 const void* cmd_data) { 417 const volatile void* cmd_data) {
437 const gles2::cmds::ColorMask& c = 418 const volatile gles2::cmds::ColorMask& c =
438 *static_cast<const gles2::cmds::ColorMask*>(cmd_data); 419 *static_cast<const volatile gles2::cmds::ColorMask*>(cmd_data);
439 (void)c;
440 GLboolean red = static_cast<GLboolean>(c.red); 420 GLboolean red = static_cast<GLboolean>(c.red);
441 GLboolean green = static_cast<GLboolean>(c.green); 421 GLboolean green = static_cast<GLboolean>(c.green);
442 GLboolean blue = static_cast<GLboolean>(c.blue); 422 GLboolean blue = static_cast<GLboolean>(c.blue);
443 GLboolean alpha = static_cast<GLboolean>(c.alpha); 423 GLboolean alpha = static_cast<GLboolean>(c.alpha);
444 error::Error error = DoColorMask(red, green, blue, alpha); 424 error::Error error = DoColorMask(red, green, blue, alpha);
445 if (error != error::kNoError) { 425 if (error != error::kNoError) {
446 return error; 426 return error;
447 } 427 }
448 return error::kNoError; 428 return error::kNoError;
449 } 429 }
450 430
451 error::Error GLES2DecoderPassthroughImpl::HandleCompileShader( 431 error::Error GLES2DecoderPassthroughImpl::HandleCompileShader(
452 uint32_t immediate_data_size, 432 uint32_t immediate_data_size,
453 const void* cmd_data) { 433 const volatile void* cmd_data) {
454 const gles2::cmds::CompileShader& c = 434 const volatile gles2::cmds::CompileShader& c =
455 *static_cast<const gles2::cmds::CompileShader*>(cmd_data); 435 *static_cast<const volatile gles2::cmds::CompileShader*>(cmd_data);
456 (void)c;
457 GLuint shader = c.shader; 436 GLuint shader = c.shader;
458 error::Error error = DoCompileShader(shader); 437 error::Error error = DoCompileShader(shader);
459 if (error != error::kNoError) { 438 if (error != error::kNoError) {
460 return error; 439 return error;
461 } 440 }
462 return error::kNoError; 441 return error::kNoError;
463 } 442 }
464 443
465 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexImage2DBucket( 444 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexImage2DBucket(
466 uint32_t immediate_data_size, 445 uint32_t immediate_data_size,
467 const void* cmd_data) { 446 const volatile void* cmd_data) {
468 const gles2::cmds::CompressedTexImage2DBucket& c = 447 const volatile gles2::cmds::CompressedTexImage2DBucket& c =
469 *static_cast<const gles2::cmds::CompressedTexImage2DBucket*>(cmd_data); 448 *static_cast<const volatile gles2::cmds::CompressedTexImage2DBucket*>(
470 (void)c; 449 cmd_data);
471 GLenum target = static_cast<GLenum>(c.target); 450 GLenum target = static_cast<GLenum>(c.target);
472 GLint level = static_cast<GLint>(c.level); 451 GLint level = static_cast<GLint>(c.level);
473 GLenum internalformat = static_cast<GLenum>(c.internalformat); 452 GLenum internalformat = static_cast<GLenum>(c.internalformat);
474 GLsizei width = static_cast<GLsizei>(c.width); 453 GLsizei width = static_cast<GLsizei>(c.width);
475 GLsizei height = static_cast<GLsizei>(c.height); 454 GLsizei height = static_cast<GLsizei>(c.height);
476 GLuint bucket_id = static_cast<GLuint>(c.bucket_id); 455 GLuint bucket_id = static_cast<GLuint>(c.bucket_id);
477 GLint border = static_cast<GLint>(c.border); 456 GLint border = static_cast<GLint>(c.border);
478 Bucket* bucket = GetBucket(bucket_id); 457 Bucket* bucket = GetBucket(bucket_id);
479 if (!bucket) 458 if (!bucket)
480 return error::kInvalidArguments; 459 return error::kInvalidArguments;
481 uint32_t data_size = bucket->size(); 460 uint32_t data_size = bucket->size();
482 GLsizei imageSize = data_size; 461 GLsizei imageSize = data_size;
483 const void* data = bucket->GetData(0, data_size); 462 const void* data = bucket->GetData(0, data_size);
484 DCHECK(data || !imageSize); 463 DCHECK(data || !imageSize);
485 error::Error error = DoCompressedTexImage2D( 464 error::Error error = DoCompressedTexImage2D(
486 target, level, internalformat, width, height, border, imageSize, data); 465 target, level, internalformat, width, height, border, imageSize, data);
487 if (error != error::kNoError) { 466 if (error != error::kNoError) {
488 return error; 467 return error;
489 } 468 }
490 return error::kNoError; 469 return error::kNoError;
491 } 470 }
492 471
493 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexImage2D( 472 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexImage2D(
494 uint32_t immediate_data_size, 473 uint32_t immediate_data_size,
495 const void* cmd_data) { 474 const volatile void* cmd_data) {
496 const gles2::cmds::CompressedTexImage2D& c = 475 const volatile gles2::cmds::CompressedTexImage2D& c =
497 *static_cast<const gles2::cmds::CompressedTexImage2D*>(cmd_data); 476 *static_cast<const volatile gles2::cmds::CompressedTexImage2D*>(cmd_data);
498 (void)c;
499 GLenum target = static_cast<GLenum>(c.target); 477 GLenum target = static_cast<GLenum>(c.target);
500 GLint level = static_cast<GLint>(c.level); 478 GLint level = static_cast<GLint>(c.level);
501 GLenum internalformat = static_cast<GLenum>(c.internalformat); 479 GLenum internalformat = static_cast<GLenum>(c.internalformat);
502 GLsizei width = static_cast<GLsizei>(c.width); 480 GLsizei width = static_cast<GLsizei>(c.width);
503 GLsizei height = static_cast<GLsizei>(c.height); 481 GLsizei height = static_cast<GLsizei>(c.height);
504 GLint border = static_cast<GLint>(c.border); 482 GLint border = static_cast<GLint>(c.border);
505 GLsizei imageSize = static_cast<GLsizei>(c.imageSize); 483 GLsizei imageSize = static_cast<GLsizei>(c.imageSize);
506 uint32_t data_size = imageSize; 484 uint32_t data_size = imageSize;
507 const void* data = GetSharedMemoryAs<const void*>( 485 const void* data = GetSharedMemoryAs<const void*>(
508 c.data_shm_id, c.data_shm_offset, data_size); 486 c.data_shm_id, c.data_shm_offset, data_size);
509 error::Error error = DoCompressedTexImage2D( 487 error::Error error = DoCompressedTexImage2D(
510 target, level, internalformat, width, height, border, imageSize, data); 488 target, level, internalformat, width, height, border, imageSize, data);
511 if (error != error::kNoError) { 489 if (error != error::kNoError) {
512 return error; 490 return error;
513 } 491 }
514 return error::kNoError; 492 return error::kNoError;
515 } 493 }
516 494
517 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexSubImage2DBucket( 495 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexSubImage2DBucket(
518 uint32_t immediate_data_size, 496 uint32_t immediate_data_size,
519 const void* cmd_data) { 497 const volatile void* cmd_data) {
520 const gles2::cmds::CompressedTexSubImage2DBucket& c = 498 const volatile gles2::cmds::CompressedTexSubImage2DBucket& c =
521 *static_cast<const gles2::cmds::CompressedTexSubImage2DBucket*>(cmd_data); 499 *static_cast<const volatile gles2::cmds::CompressedTexSubImage2DBucket*>(
522 (void)c; 500 cmd_data);
523 GLenum target = static_cast<GLenum>(c.target); 501 GLenum target = static_cast<GLenum>(c.target);
524 GLint level = static_cast<GLint>(c.level); 502 GLint level = static_cast<GLint>(c.level);
525 GLint xoffset = static_cast<GLint>(c.xoffset); 503 GLint xoffset = static_cast<GLint>(c.xoffset);
526 GLint yoffset = static_cast<GLint>(c.yoffset); 504 GLint yoffset = static_cast<GLint>(c.yoffset);
527 GLsizei width = static_cast<GLsizei>(c.width); 505 GLsizei width = static_cast<GLsizei>(c.width);
528 GLsizei height = static_cast<GLsizei>(c.height); 506 GLsizei height = static_cast<GLsizei>(c.height);
529 GLenum format = static_cast<GLenum>(c.format); 507 GLenum format = static_cast<GLenum>(c.format);
530 GLuint bucket_id = static_cast<GLuint>(c.bucket_id); 508 GLuint bucket_id = static_cast<GLuint>(c.bucket_id);
531 Bucket* bucket = GetBucket(bucket_id); 509 Bucket* bucket = GetBucket(bucket_id);
532 if (!bucket) 510 if (!bucket)
533 return error::kInvalidArguments; 511 return error::kInvalidArguments;
534 uint32_t data_size = bucket->size(); 512 uint32_t data_size = bucket->size();
535 GLsizei imageSize = data_size; 513 GLsizei imageSize = data_size;
536 const void* data = bucket->GetData(0, data_size); 514 const void* data = bucket->GetData(0, data_size);
537 DCHECK(data || !imageSize); 515 DCHECK(data || !imageSize);
538 error::Error error = DoCompressedTexSubImage2D( 516 error::Error error = DoCompressedTexSubImage2D(
539 target, level, xoffset, yoffset, width, height, format, imageSize, data); 517 target, level, xoffset, yoffset, width, height, format, imageSize, data);
540 if (error != error::kNoError) { 518 if (error != error::kNoError) {
541 return error; 519 return error;
542 } 520 }
543 return error::kNoError; 521 return error::kNoError;
544 } 522 }
545 523
546 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexSubImage2D( 524 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexSubImage2D(
547 uint32_t immediate_data_size, 525 uint32_t immediate_data_size,
548 const void* cmd_data) { 526 const volatile void* cmd_data) {
549 const gles2::cmds::CompressedTexSubImage2D& c = 527 const volatile gles2::cmds::CompressedTexSubImage2D& c =
550 *static_cast<const gles2::cmds::CompressedTexSubImage2D*>(cmd_data); 528 *static_cast<const volatile gles2::cmds::CompressedTexSubImage2D*>(
551 (void)c; 529 cmd_data);
552 GLenum target = static_cast<GLenum>(c.target); 530 GLenum target = static_cast<GLenum>(c.target);
553 GLint level = static_cast<GLint>(c.level); 531 GLint level = static_cast<GLint>(c.level);
554 GLint xoffset = static_cast<GLint>(c.xoffset); 532 GLint xoffset = static_cast<GLint>(c.xoffset);
555 GLint yoffset = static_cast<GLint>(c.yoffset); 533 GLint yoffset = static_cast<GLint>(c.yoffset);
556 GLsizei width = static_cast<GLsizei>(c.width); 534 GLsizei width = static_cast<GLsizei>(c.width);
557 GLsizei height = static_cast<GLsizei>(c.height); 535 GLsizei height = static_cast<GLsizei>(c.height);
558 GLenum format = static_cast<GLenum>(c.format); 536 GLenum format = static_cast<GLenum>(c.format);
559 GLsizei imageSize = static_cast<GLsizei>(c.imageSize); 537 GLsizei imageSize = static_cast<GLsizei>(c.imageSize);
560 uint32_t data_size = imageSize; 538 uint32_t data_size = imageSize;
561 const void* data = GetSharedMemoryAs<const void*>( 539 const void* data = GetSharedMemoryAs<const void*>(
562 c.data_shm_id, c.data_shm_offset, data_size); 540 c.data_shm_id, c.data_shm_offset, data_size);
563 error::Error error = DoCompressedTexSubImage2D( 541 error::Error error = DoCompressedTexSubImage2D(
564 target, level, xoffset, yoffset, width, height, format, imageSize, data); 542 target, level, xoffset, yoffset, width, height, format, imageSize, data);
565 if (error != error::kNoError) { 543 if (error != error::kNoError) {
566 return error; 544 return error;
567 } 545 }
568 return error::kNoError; 546 return error::kNoError;
569 } 547 }
570 548
571 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexImage3DBucket( 549 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexImage3DBucket(
572 uint32_t immediate_data_size, 550 uint32_t immediate_data_size,
573 const void* cmd_data) { 551 const volatile void* cmd_data) {
574 const gles2::cmds::CompressedTexImage3DBucket& c = 552 const volatile gles2::cmds::CompressedTexImage3DBucket& c =
575 *static_cast<const gles2::cmds::CompressedTexImage3DBucket*>(cmd_data); 553 *static_cast<const volatile gles2::cmds::CompressedTexImage3DBucket*>(
576 (void)c; 554 cmd_data);
577 GLenum target = static_cast<GLenum>(c.target); 555 GLenum target = static_cast<GLenum>(c.target);
578 GLint level = static_cast<GLint>(c.level); 556 GLint level = static_cast<GLint>(c.level);
579 GLenum internalformat = static_cast<GLenum>(c.internalformat); 557 GLenum internalformat = static_cast<GLenum>(c.internalformat);
580 GLsizei width = static_cast<GLsizei>(c.width); 558 GLsizei width = static_cast<GLsizei>(c.width);
581 GLsizei height = static_cast<GLsizei>(c.height); 559 GLsizei height = static_cast<GLsizei>(c.height);
582 GLsizei depth = static_cast<GLsizei>(c.depth); 560 GLsizei depth = static_cast<GLsizei>(c.depth);
583 GLuint bucket_id = static_cast<GLuint>(c.bucket_id); 561 GLuint bucket_id = static_cast<GLuint>(c.bucket_id);
584 GLint border = static_cast<GLint>(c.border); 562 GLint border = static_cast<GLint>(c.border);
585 Bucket* bucket = GetBucket(bucket_id); 563 Bucket* bucket = GetBucket(bucket_id);
586 if (!bucket) 564 if (!bucket)
587 return error::kInvalidArguments; 565 return error::kInvalidArguments;
588 uint32_t data_size = bucket->size(); 566 uint32_t data_size = bucket->size();
589 GLsizei imageSize = data_size; 567 GLsizei imageSize = data_size;
590 const void* data = bucket->GetData(0, data_size); 568 const void* data = bucket->GetData(0, data_size);
591 DCHECK(data || !imageSize); 569 DCHECK(data || !imageSize);
592 error::Error error = 570 error::Error error =
593 DoCompressedTexImage3D(target, level, internalformat, width, height, 571 DoCompressedTexImage3D(target, level, internalformat, width, height,
594 depth, border, imageSize, data); 572 depth, border, imageSize, data);
595 if (error != error::kNoError) { 573 if (error != error::kNoError) {
596 return error; 574 return error;
597 } 575 }
598 return error::kNoError; 576 return error::kNoError;
599 } 577 }
600 578
601 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexImage3D( 579 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexImage3D(
602 uint32_t immediate_data_size, 580 uint32_t immediate_data_size,
603 const void* cmd_data) { 581 const volatile void* cmd_data) {
604 const gles2::cmds::CompressedTexImage3D& c = 582 const volatile gles2::cmds::CompressedTexImage3D& c =
605 *static_cast<const gles2::cmds::CompressedTexImage3D*>(cmd_data); 583 *static_cast<const volatile gles2::cmds::CompressedTexImage3D*>(cmd_data);
606 (void)c;
607 GLenum target = static_cast<GLenum>(c.target); 584 GLenum target = static_cast<GLenum>(c.target);
608 GLint level = static_cast<GLint>(c.level); 585 GLint level = static_cast<GLint>(c.level);
609 GLenum internalformat = static_cast<GLenum>(c.internalformat); 586 GLenum internalformat = static_cast<GLenum>(c.internalformat);
610 GLsizei width = static_cast<GLsizei>(c.width); 587 GLsizei width = static_cast<GLsizei>(c.width);
611 GLsizei height = static_cast<GLsizei>(c.height); 588 GLsizei height = static_cast<GLsizei>(c.height);
612 GLsizei depth = static_cast<GLsizei>(c.depth); 589 GLsizei depth = static_cast<GLsizei>(c.depth);
613 GLint border = static_cast<GLint>(c.border); 590 GLint border = static_cast<GLint>(c.border);
614 GLsizei imageSize = static_cast<GLsizei>(c.imageSize); 591 GLsizei imageSize = static_cast<GLsizei>(c.imageSize);
615 uint32_t data_size = imageSize; 592 uint32_t data_size = imageSize;
616 const void* data = GetSharedMemoryAs<const void*>( 593 const void* data = GetSharedMemoryAs<const void*>(
617 c.data_shm_id, c.data_shm_offset, data_size); 594 c.data_shm_id, c.data_shm_offset, data_size);
618 error::Error error = 595 error::Error error =
619 DoCompressedTexImage3D(target, level, internalformat, width, height, 596 DoCompressedTexImage3D(target, level, internalformat, width, height,
620 depth, border, imageSize, data); 597 depth, border, imageSize, data);
621 if (error != error::kNoError) { 598 if (error != error::kNoError) {
622 return error; 599 return error;
623 } 600 }
624 return error::kNoError; 601 return error::kNoError;
625 } 602 }
626 603
627 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexSubImage3DBucket( 604 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexSubImage3DBucket(
628 uint32_t immediate_data_size, 605 uint32_t immediate_data_size,
629 const void* cmd_data) { 606 const volatile void* cmd_data) {
630 const gles2::cmds::CompressedTexSubImage3DBucket& c = 607 const volatile gles2::cmds::CompressedTexSubImage3DBucket& c =
631 *static_cast<const gles2::cmds::CompressedTexSubImage3DBucket*>(cmd_data); 608 *static_cast<const volatile gles2::cmds::CompressedTexSubImage3DBucket*>(
632 (void)c; 609 cmd_data);
633 GLenum target = static_cast<GLenum>(c.target); 610 GLenum target = static_cast<GLenum>(c.target);
634 GLint level = static_cast<GLint>(c.level); 611 GLint level = static_cast<GLint>(c.level);
635 GLint xoffset = static_cast<GLint>(c.xoffset); 612 GLint xoffset = static_cast<GLint>(c.xoffset);
636 GLint yoffset = static_cast<GLint>(c.yoffset); 613 GLint yoffset = static_cast<GLint>(c.yoffset);
637 GLint zoffset = static_cast<GLint>(c.zoffset); 614 GLint zoffset = static_cast<GLint>(c.zoffset);
638 GLsizei width = static_cast<GLsizei>(c.width); 615 GLsizei width = static_cast<GLsizei>(c.width);
639 GLsizei height = static_cast<GLsizei>(c.height); 616 GLsizei height = static_cast<GLsizei>(c.height);
640 GLsizei depth = static_cast<GLsizei>(c.depth); 617 GLsizei depth = static_cast<GLsizei>(c.depth);
641 GLenum format = static_cast<GLenum>(c.format); 618 GLenum format = static_cast<GLenum>(c.format);
642 GLuint bucket_id = static_cast<GLuint>(c.bucket_id); 619 GLuint bucket_id = static_cast<GLuint>(c.bucket_id);
643 Bucket* bucket = GetBucket(bucket_id); 620 Bucket* bucket = GetBucket(bucket_id);
644 if (!bucket) 621 if (!bucket)
645 return error::kInvalidArguments; 622 return error::kInvalidArguments;
646 uint32_t data_size = bucket->size(); 623 uint32_t data_size = bucket->size();
647 GLsizei imageSize = data_size; 624 GLsizei imageSize = data_size;
648 const void* data = bucket->GetData(0, data_size); 625 const void* data = bucket->GetData(0, data_size);
649 DCHECK(data || !imageSize); 626 DCHECK(data || !imageSize);
650 error::Error error = 627 error::Error error =
651 DoCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, 628 DoCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width,
652 height, depth, format, imageSize, data); 629 height, depth, format, imageSize, data);
653 if (error != error::kNoError) { 630 if (error != error::kNoError) {
654 return error; 631 return error;
655 } 632 }
656 return error::kNoError; 633 return error::kNoError;
657 } 634 }
658 635
659 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexSubImage3D( 636 error::Error GLES2DecoderPassthroughImpl::HandleCompressedTexSubImage3D(
660 uint32_t immediate_data_size, 637 uint32_t immediate_data_size,
661 const void* cmd_data) { 638 const volatile void* cmd_data) {
662 const gles2::cmds::CompressedTexSubImage3D& c = 639 const volatile gles2::cmds::CompressedTexSubImage3D& c =
663 *static_cast<const gles2::cmds::CompressedTexSubImage3D*>(cmd_data); 640 *static_cast<const volatile gles2::cmds::CompressedTexSubImage3D*>(
664 (void)c; 641 cmd_data);
665 GLenum target = static_cast<GLenum>(c.target); 642 GLenum target = static_cast<GLenum>(c.target);
666 GLint level = static_cast<GLint>(c.level); 643 GLint level = static_cast<GLint>(c.level);
667 GLint xoffset = static_cast<GLint>(c.xoffset); 644 GLint xoffset = static_cast<GLint>(c.xoffset);
668 GLint yoffset = static_cast<GLint>(c.yoffset); 645 GLint yoffset = static_cast<GLint>(c.yoffset);
669 GLint zoffset = static_cast<GLint>(c.zoffset); 646 GLint zoffset = static_cast<GLint>(c.zoffset);
670 GLsizei width = static_cast<GLsizei>(c.width); 647 GLsizei width = static_cast<GLsizei>(c.width);
671 GLsizei height = static_cast<GLsizei>(c.height); 648 GLsizei height = static_cast<GLsizei>(c.height);
672 GLsizei depth = static_cast<GLsizei>(c.depth); 649 GLsizei depth = static_cast<GLsizei>(c.depth);
673 GLenum format = static_cast<GLenum>(c.format); 650 GLenum format = static_cast<GLenum>(c.format);
674 GLsizei imageSize = static_cast<GLsizei>(c.imageSize); 651 GLsizei imageSize = static_cast<GLsizei>(c.imageSize);
675 uint32_t data_size = imageSize; 652 uint32_t data_size = imageSize;
676 const void* data = GetSharedMemoryAs<const void*>( 653 const void* data = GetSharedMemoryAs<const void*>(
677 c.data_shm_id, c.data_shm_offset, data_size); 654 c.data_shm_id, c.data_shm_offset, data_size);
678 error::Error error = 655 error::Error error =
679 DoCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, 656 DoCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width,
680 height, depth, format, imageSize, data); 657 height, depth, format, imageSize, data);
681 if (error != error::kNoError) { 658 if (error != error::kNoError) {
682 return error; 659 return error;
683 } 660 }
684 return error::kNoError; 661 return error::kNoError;
685 } 662 }
686 663
687 error::Error GLES2DecoderPassthroughImpl::HandleCopyBufferSubData( 664 error::Error GLES2DecoderPassthroughImpl::HandleCopyBufferSubData(
688 uint32_t immediate_data_size, 665 uint32_t immediate_data_size,
689 const void* cmd_data) { 666 const volatile void* cmd_data) {
690 const gles2::cmds::CopyBufferSubData& c = 667 const volatile gles2::cmds::CopyBufferSubData& c =
691 *static_cast<const gles2::cmds::CopyBufferSubData*>(cmd_data); 668 *static_cast<const volatile gles2::cmds::CopyBufferSubData*>(cmd_data);
692 (void)c;
693 GLenum readtarget = static_cast<GLenum>(c.readtarget); 669 GLenum readtarget = static_cast<GLenum>(c.readtarget);
694 GLenum writetarget = static_cast<GLenum>(c.writetarget); 670 GLenum writetarget = static_cast<GLenum>(c.writetarget);
695 GLintptr readoffset = static_cast<GLintptr>(c.readoffset); 671 GLintptr readoffset = static_cast<GLintptr>(c.readoffset);
696 GLintptr writeoffset = static_cast<GLintptr>(c.writeoffset); 672 GLintptr writeoffset = static_cast<GLintptr>(c.writeoffset);
697 GLsizeiptr size = static_cast<GLsizeiptr>(c.size); 673 GLsizeiptr size = static_cast<GLsizeiptr>(c.size);
698 error::Error error = DoCopyBufferSubData(readtarget, writetarget, readoffset, 674 error::Error error = DoCopyBufferSubData(readtarget, writetarget, readoffset,
699 writeoffset, size); 675 writeoffset, size);
700 if (error != error::kNoError) { 676 if (error != error::kNoError) {
701 return error; 677 return error;
702 } 678 }
703 return error::kNoError; 679 return error::kNoError;
704 } 680 }
705 681
706 error::Error GLES2DecoderPassthroughImpl::HandleCopyTexImage2D( 682 error::Error GLES2DecoderPassthroughImpl::HandleCopyTexImage2D(
707 uint32_t immediate_data_size, 683 uint32_t immediate_data_size,
708 const void* cmd_data) { 684 const volatile void* cmd_data) {
709 const gles2::cmds::CopyTexImage2D& c = 685 const volatile gles2::cmds::CopyTexImage2D& c =
710 *static_cast<const gles2::cmds::CopyTexImage2D*>(cmd_data); 686 *static_cast<const volatile gles2::cmds::CopyTexImage2D*>(cmd_data);
711 (void)c;
712 GLenum target = static_cast<GLenum>(c.target); 687 GLenum target = static_cast<GLenum>(c.target);
713 GLint level = static_cast<GLint>(c.level); 688 GLint level = static_cast<GLint>(c.level);
714 GLenum internalformat = static_cast<GLenum>(c.internalformat); 689 GLenum internalformat = static_cast<GLenum>(c.internalformat);
715 GLint x = static_cast<GLint>(c.x); 690 GLint x = static_cast<GLint>(c.x);
716 GLint y = static_cast<GLint>(c.y); 691 GLint y = static_cast<GLint>(c.y);
717 GLsizei width = static_cast<GLsizei>(c.width); 692 GLsizei width = static_cast<GLsizei>(c.width);
718 GLsizei height = static_cast<GLsizei>(c.height); 693 GLsizei height = static_cast<GLsizei>(c.height);
719 GLint border = static_cast<GLint>(c.border); 694 GLint border = static_cast<GLint>(c.border);
720 error::Error error = DoCopyTexImage2D(target, level, internalformat, x, y, 695 error::Error error = DoCopyTexImage2D(target, level, internalformat, x, y,
721 width, height, border); 696 width, height, border);
722 if (error != error::kNoError) { 697 if (error != error::kNoError) {
723 return error; 698 return error;
724 } 699 }
725 return error::kNoError; 700 return error::kNoError;
726 } 701 }
727 702
728 error::Error GLES2DecoderPassthroughImpl::HandleCopyTexSubImage2D( 703 error::Error GLES2DecoderPassthroughImpl::HandleCopyTexSubImage2D(
729 uint32_t immediate_data_size, 704 uint32_t immediate_data_size,
730 const void* cmd_data) { 705 const volatile void* cmd_data) {
731 const gles2::cmds::CopyTexSubImage2D& c = 706 const volatile gles2::cmds::CopyTexSubImage2D& c =
732 *static_cast<const gles2::cmds::CopyTexSubImage2D*>(cmd_data); 707 *static_cast<const volatile gles2::cmds::CopyTexSubImage2D*>(cmd_data);
733 (void)c;
734 GLenum target = static_cast<GLenum>(c.target); 708 GLenum target = static_cast<GLenum>(c.target);
735 GLint level = static_cast<GLint>(c.level); 709 GLint level = static_cast<GLint>(c.level);
736 GLint xoffset = static_cast<GLint>(c.xoffset); 710 GLint xoffset = static_cast<GLint>(c.xoffset);
737 GLint yoffset = static_cast<GLint>(c.yoffset); 711 GLint yoffset = static_cast<GLint>(c.yoffset);
738 GLint x = static_cast<GLint>(c.x); 712 GLint x = static_cast<GLint>(c.x);
739 GLint y = static_cast<GLint>(c.y); 713 GLint y = static_cast<GLint>(c.y);
740 GLsizei width = static_cast<GLsizei>(c.width); 714 GLsizei width = static_cast<GLsizei>(c.width);
741 GLsizei height = static_cast<GLsizei>(c.height); 715 GLsizei height = static_cast<GLsizei>(c.height);
742 error::Error error = 716 error::Error error =
743 DoCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); 717 DoCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
744 if (error != error::kNoError) { 718 if (error != error::kNoError) {
745 return error; 719 return error;
746 } 720 }
747 return error::kNoError; 721 return error::kNoError;
748 } 722 }
749 723
750 error::Error GLES2DecoderPassthroughImpl::HandleCopyTexSubImage3D( 724 error::Error GLES2DecoderPassthroughImpl::HandleCopyTexSubImage3D(
751 uint32_t immediate_data_size, 725 uint32_t immediate_data_size,
752 const void* cmd_data) { 726 const volatile void* cmd_data) {
753 const gles2::cmds::CopyTexSubImage3D& c = 727 const volatile gles2::cmds::CopyTexSubImage3D& c =
754 *static_cast<const gles2::cmds::CopyTexSubImage3D*>(cmd_data); 728 *static_cast<const volatile gles2::cmds::CopyTexSubImage3D*>(cmd_data);
755 (void)c;
756 GLenum target = static_cast<GLenum>(c.target); 729 GLenum target = static_cast<GLenum>(c.target);
757 GLint level = static_cast<GLint>(c.level); 730 GLint level = static_cast<GLint>(c.level);
758 GLint xoffset = static_cast<GLint>(c.xoffset); 731 GLint xoffset = static_cast<GLint>(c.xoffset);
759 GLint yoffset = static_cast<GLint>(c.yoffset); 732 GLint yoffset = static_cast<GLint>(c.yoffset);
760 GLint zoffset = static_cast<GLint>(c.zoffset); 733 GLint zoffset = static_cast<GLint>(c.zoffset);
761 GLint x = static_cast<GLint>(c.x); 734 GLint x = static_cast<GLint>(c.x);
762 GLint y = static_cast<GLint>(c.y); 735 GLint y = static_cast<GLint>(c.y);
763 GLsizei width = static_cast<GLsizei>(c.width); 736 GLsizei width = static_cast<GLsizei>(c.width);
764 GLsizei height = static_cast<GLsizei>(c.height); 737 GLsizei height = static_cast<GLsizei>(c.height);
765 error::Error error = DoCopyTexSubImage3D(target, level, xoffset, yoffset, 738 error::Error error = DoCopyTexSubImage3D(target, level, xoffset, yoffset,
766 zoffset, x, y, width, height); 739 zoffset, x, y, width, height);
767 if (error != error::kNoError) { 740 if (error != error::kNoError) {
768 return error; 741 return error;
769 } 742 }
770 return error::kNoError; 743 return error::kNoError;
771 } 744 }
772 745
773 error::Error GLES2DecoderPassthroughImpl::HandleCullFace( 746 error::Error GLES2DecoderPassthroughImpl::HandleCullFace(
774 uint32_t immediate_data_size, 747 uint32_t immediate_data_size,
775 const void* cmd_data) { 748 const volatile void* cmd_data) {
776 const gles2::cmds::CullFace& c = 749 const volatile gles2::cmds::CullFace& c =
777 *static_cast<const gles2::cmds::CullFace*>(cmd_data); 750 *static_cast<const volatile gles2::cmds::CullFace*>(cmd_data);
778 (void)c;
779 GLenum mode = static_cast<GLenum>(c.mode); 751 GLenum mode = static_cast<GLenum>(c.mode);
780 error::Error error = DoCullFace(mode); 752 error::Error error = DoCullFace(mode);
781 if (error != error::kNoError) { 753 if (error != error::kNoError) {
782 return error; 754 return error;
783 } 755 }
784 return error::kNoError; 756 return error::kNoError;
785 } 757 }
786 758
787 error::Error GLES2DecoderPassthroughImpl::HandleDeleteBuffersImmediate( 759 error::Error GLES2DecoderPassthroughImpl::HandleDeleteBuffersImmediate(
788 uint32_t immediate_data_size, 760 uint32_t immediate_data_size,
789 const void* cmd_data) { 761 const volatile void* cmd_data) {
790 const gles2::cmds::DeleteBuffersImmediate& c = 762 const volatile gles2::cmds::DeleteBuffersImmediate& c =
791 *static_cast<const gles2::cmds::DeleteBuffersImmediate*>(cmd_data); 763 *static_cast<const volatile gles2::cmds::DeleteBuffersImmediate*>(
792 (void)c; 764 cmd_data);
793 GLsizei n = static_cast<GLsizei>(c.n); 765 GLsizei n = static_cast<GLsizei>(c.n);
794 uint32_t data_size; 766 uint32_t data_size;
795 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 767 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
796 return error::kOutOfBounds; 768 return error::kOutOfBounds;
797 } 769 }
798 const GLuint* buffers = 770 volatile const GLuint* buffers = GetImmediateDataAs<volatile const GLuint*>(
799 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 771 c, data_size, immediate_data_size);
800 error::Error error = DoDeleteBuffers(n, buffers); 772 error::Error error = DoDeleteBuffers(n, buffers);
801 if (error != error::kNoError) { 773 if (error != error::kNoError) {
802 return error; 774 return error;
803 } 775 }
804 return error::kNoError; 776 return error::kNoError;
805 } 777 }
806 778
807 error::Error GLES2DecoderPassthroughImpl::HandleDeleteFramebuffersImmediate( 779 error::Error GLES2DecoderPassthroughImpl::HandleDeleteFramebuffersImmediate(
808 uint32_t immediate_data_size, 780 uint32_t immediate_data_size,
809 const void* cmd_data) { 781 const volatile void* cmd_data) {
810 const gles2::cmds::DeleteFramebuffersImmediate& c = 782 const volatile gles2::cmds::DeleteFramebuffersImmediate& c =
811 *static_cast<const gles2::cmds::DeleteFramebuffersImmediate*>(cmd_data); 783 *static_cast<const volatile gles2::cmds::DeleteFramebuffersImmediate*>(
812 (void)c; 784 cmd_data);
813 GLsizei n = static_cast<GLsizei>(c.n); 785 GLsizei n = static_cast<GLsizei>(c.n);
814 uint32_t data_size; 786 uint32_t data_size;
815 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 787 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
816 return error::kOutOfBounds; 788 return error::kOutOfBounds;
817 } 789 }
818 const GLuint* framebuffers = 790 volatile const GLuint* framebuffers =
819 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 791 GetImmediateDataAs<volatile const GLuint*>(c, data_size,
792 immediate_data_size);
820 error::Error error = DoDeleteFramebuffers(n, framebuffers); 793 error::Error error = DoDeleteFramebuffers(n, framebuffers);
821 if (error != error::kNoError) { 794 if (error != error::kNoError) {
822 return error; 795 return error;
823 } 796 }
824 return error::kNoError; 797 return error::kNoError;
825 } 798 }
826 799
827 error::Error GLES2DecoderPassthroughImpl::HandleDeleteProgram( 800 error::Error GLES2DecoderPassthroughImpl::HandleDeleteProgram(
828 uint32_t immediate_data_size, 801 uint32_t immediate_data_size,
829 const void* cmd_data) { 802 const volatile void* cmd_data) {
830 const gles2::cmds::DeleteProgram& c = 803 const volatile gles2::cmds::DeleteProgram& c =
831 *static_cast<const gles2::cmds::DeleteProgram*>(cmd_data); 804 *static_cast<const volatile gles2::cmds::DeleteProgram*>(cmd_data);
832 (void)c;
833 GLuint program = c.program; 805 GLuint program = c.program;
834 error::Error error = DoDeleteProgram(program); 806 error::Error error = DoDeleteProgram(program);
835 if (error != error::kNoError) { 807 if (error != error::kNoError) {
836 return error; 808 return error;
837 } 809 }
838 return error::kNoError; 810 return error::kNoError;
839 } 811 }
840 812
841 error::Error GLES2DecoderPassthroughImpl::HandleDeleteRenderbuffersImmediate( 813 error::Error GLES2DecoderPassthroughImpl::HandleDeleteRenderbuffersImmediate(
842 uint32_t immediate_data_size, 814 uint32_t immediate_data_size,
843 const void* cmd_data) { 815 const volatile void* cmd_data) {
844 const gles2::cmds::DeleteRenderbuffersImmediate& c = 816 const volatile gles2::cmds::DeleteRenderbuffersImmediate& c =
845 *static_cast<const gles2::cmds::DeleteRenderbuffersImmediate*>(cmd_data); 817 *static_cast<const volatile gles2::cmds::DeleteRenderbuffersImmediate*>(
846 (void)c; 818 cmd_data);
847 GLsizei n = static_cast<GLsizei>(c.n); 819 GLsizei n = static_cast<GLsizei>(c.n);
848 uint32_t data_size; 820 uint32_t data_size;
849 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 821 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
850 return error::kOutOfBounds; 822 return error::kOutOfBounds;
851 } 823 }
852 const GLuint* renderbuffers = 824 volatile const GLuint* renderbuffers =
853 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 825 GetImmediateDataAs<volatile const GLuint*>(c, data_size,
826 immediate_data_size);
854 error::Error error = DoDeleteRenderbuffers(n, renderbuffers); 827 error::Error error = DoDeleteRenderbuffers(n, renderbuffers);
855 if (error != error::kNoError) { 828 if (error != error::kNoError) {
856 return error; 829 return error;
857 } 830 }
858 return error::kNoError; 831 return error::kNoError;
859 } 832 }
860 833
861 error::Error GLES2DecoderPassthroughImpl::HandleDeleteSamplersImmediate( 834 error::Error GLES2DecoderPassthroughImpl::HandleDeleteSamplersImmediate(
862 uint32_t immediate_data_size, 835 uint32_t immediate_data_size,
863 const void* cmd_data) { 836 const volatile void* cmd_data) {
864 const gles2::cmds::DeleteSamplersImmediate& c = 837 const volatile gles2::cmds::DeleteSamplersImmediate& c =
865 *static_cast<const gles2::cmds::DeleteSamplersImmediate*>(cmd_data); 838 *static_cast<const volatile gles2::cmds::DeleteSamplersImmediate*>(
866 (void)c; 839 cmd_data);
867 GLsizei n = static_cast<GLsizei>(c.n); 840 GLsizei n = static_cast<GLsizei>(c.n);
868 uint32_t data_size; 841 uint32_t data_size;
869 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 842 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
870 return error::kOutOfBounds; 843 return error::kOutOfBounds;
871 } 844 }
872 const GLuint* samplers = 845 volatile const GLuint* samplers = GetImmediateDataAs<volatile const GLuint*>(
873 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 846 c, data_size, immediate_data_size);
874 error::Error error = DoDeleteSamplers(n, samplers); 847 error::Error error = DoDeleteSamplers(n, samplers);
875 if (error != error::kNoError) { 848 if (error != error::kNoError) {
876 return error; 849 return error;
877 } 850 }
878 return error::kNoError; 851 return error::kNoError;
879 } 852 }
880 853
881 error::Error GLES2DecoderPassthroughImpl::HandleDeleteSync( 854 error::Error GLES2DecoderPassthroughImpl::HandleDeleteSync(
882 uint32_t immediate_data_size, 855 uint32_t immediate_data_size,
883 const void* cmd_data) { 856 const volatile void* cmd_data) {
884 const gles2::cmds::DeleteSync& c = 857 const volatile gles2::cmds::DeleteSync& c =
885 *static_cast<const gles2::cmds::DeleteSync*>(cmd_data); 858 *static_cast<const volatile gles2::cmds::DeleteSync*>(cmd_data);
886 (void)c;
887 GLuint sync = c.sync; 859 GLuint sync = c.sync;
888 error::Error error = DoDeleteSync(sync); 860 error::Error error = DoDeleteSync(sync);
889 if (error != error::kNoError) { 861 if (error != error::kNoError) {
890 return error; 862 return error;
891 } 863 }
892 return error::kNoError; 864 return error::kNoError;
893 } 865 }
894 866
895 error::Error GLES2DecoderPassthroughImpl::HandleDeleteShader( 867 error::Error GLES2DecoderPassthroughImpl::HandleDeleteShader(
896 uint32_t immediate_data_size, 868 uint32_t immediate_data_size,
897 const void* cmd_data) { 869 const volatile void* cmd_data) {
898 const gles2::cmds::DeleteShader& c = 870 const volatile gles2::cmds::DeleteShader& c =
899 *static_cast<const gles2::cmds::DeleteShader*>(cmd_data); 871 *static_cast<const volatile gles2::cmds::DeleteShader*>(cmd_data);
900 (void)c;
901 GLuint shader = c.shader; 872 GLuint shader = c.shader;
902 error::Error error = DoDeleteShader(shader); 873 error::Error error = DoDeleteShader(shader);
903 if (error != error::kNoError) { 874 if (error != error::kNoError) {
904 return error; 875 return error;
905 } 876 }
906 return error::kNoError; 877 return error::kNoError;
907 } 878 }
908 879
909 error::Error GLES2DecoderPassthroughImpl::HandleDeleteTexturesImmediate( 880 error::Error GLES2DecoderPassthroughImpl::HandleDeleteTexturesImmediate(
910 uint32_t immediate_data_size, 881 uint32_t immediate_data_size,
911 const void* cmd_data) { 882 const volatile void* cmd_data) {
912 const gles2::cmds::DeleteTexturesImmediate& c = 883 const volatile gles2::cmds::DeleteTexturesImmediate& c =
913 *static_cast<const gles2::cmds::DeleteTexturesImmediate*>(cmd_data); 884 *static_cast<const volatile gles2::cmds::DeleteTexturesImmediate*>(
914 (void)c; 885 cmd_data);
915 GLsizei n = static_cast<GLsizei>(c.n); 886 GLsizei n = static_cast<GLsizei>(c.n);
916 uint32_t data_size; 887 uint32_t data_size;
917 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 888 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
918 return error::kOutOfBounds; 889 return error::kOutOfBounds;
919 } 890 }
920 const GLuint* textures = 891 volatile const GLuint* textures = GetImmediateDataAs<volatile const GLuint*>(
921 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 892 c, data_size, immediate_data_size);
922 error::Error error = DoDeleteTextures(n, textures); 893 error::Error error = DoDeleteTextures(n, textures);
923 if (error != error::kNoError) { 894 if (error != error::kNoError) {
924 return error; 895 return error;
925 } 896 }
926 return error::kNoError; 897 return error::kNoError;
927 } 898 }
928 899
929 error::Error 900 error::Error
930 GLES2DecoderPassthroughImpl::HandleDeleteTransformFeedbacksImmediate( 901 GLES2DecoderPassthroughImpl::HandleDeleteTransformFeedbacksImmediate(
931 uint32_t immediate_data_size, 902 uint32_t immediate_data_size,
932 const void* cmd_data) { 903 const volatile void* cmd_data) {
933 const gles2::cmds::DeleteTransformFeedbacksImmediate& c = 904 const volatile gles2::cmds::DeleteTransformFeedbacksImmediate& c =
934 *static_cast<const gles2::cmds::DeleteTransformFeedbacksImmediate*>( 905 *static_cast<
906 const volatile gles2::cmds::DeleteTransformFeedbacksImmediate*>(
935 cmd_data); 907 cmd_data);
936 (void)c;
937 GLsizei n = static_cast<GLsizei>(c.n); 908 GLsizei n = static_cast<GLsizei>(c.n);
938 uint32_t data_size; 909 uint32_t data_size;
939 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 910 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
940 return error::kOutOfBounds; 911 return error::kOutOfBounds;
941 } 912 }
942 const GLuint* ids = 913 volatile const GLuint* ids = GetImmediateDataAs<volatile const GLuint*>(
943 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 914 c, data_size, immediate_data_size);
944 error::Error error = DoDeleteTransformFeedbacks(n, ids); 915 error::Error error = DoDeleteTransformFeedbacks(n, ids);
945 if (error != error::kNoError) { 916 if (error != error::kNoError) {
946 return error; 917 return error;
947 } 918 }
948 return error::kNoError; 919 return error::kNoError;
949 } 920 }
950 921
951 error::Error GLES2DecoderPassthroughImpl::HandleDepthFunc( 922 error::Error GLES2DecoderPassthroughImpl::HandleDepthFunc(
952 uint32_t immediate_data_size, 923 uint32_t immediate_data_size,
953 const void* cmd_data) { 924 const volatile void* cmd_data) {
954 const gles2::cmds::DepthFunc& c = 925 const volatile gles2::cmds::DepthFunc& c =
955 *static_cast<const gles2::cmds::DepthFunc*>(cmd_data); 926 *static_cast<const volatile gles2::cmds::DepthFunc*>(cmd_data);
956 (void)c;
957 GLenum func = static_cast<GLenum>(c.func); 927 GLenum func = static_cast<GLenum>(c.func);
958 error::Error error = DoDepthFunc(func); 928 error::Error error = DoDepthFunc(func);
959 if (error != error::kNoError) { 929 if (error != error::kNoError) {
960 return error; 930 return error;
961 } 931 }
962 return error::kNoError; 932 return error::kNoError;
963 } 933 }
964 934
965 error::Error GLES2DecoderPassthroughImpl::HandleDepthMask( 935 error::Error GLES2DecoderPassthroughImpl::HandleDepthMask(
966 uint32_t immediate_data_size, 936 uint32_t immediate_data_size,
967 const void* cmd_data) { 937 const volatile void* cmd_data) {
968 const gles2::cmds::DepthMask& c = 938 const volatile gles2::cmds::DepthMask& c =
969 *static_cast<const gles2::cmds::DepthMask*>(cmd_data); 939 *static_cast<const volatile gles2::cmds::DepthMask*>(cmd_data);
970 (void)c;
971 GLboolean flag = static_cast<GLboolean>(c.flag); 940 GLboolean flag = static_cast<GLboolean>(c.flag);
972 error::Error error = DoDepthMask(flag); 941 error::Error error = DoDepthMask(flag);
973 if (error != error::kNoError) { 942 if (error != error::kNoError) {
974 return error; 943 return error;
975 } 944 }
976 return error::kNoError; 945 return error::kNoError;
977 } 946 }
978 947
979 error::Error GLES2DecoderPassthroughImpl::HandleDepthRangef( 948 error::Error GLES2DecoderPassthroughImpl::HandleDepthRangef(
980 uint32_t immediate_data_size, 949 uint32_t immediate_data_size,
981 const void* cmd_data) { 950 const volatile void* cmd_data) {
982 const gles2::cmds::DepthRangef& c = 951 const volatile gles2::cmds::DepthRangef& c =
983 *static_cast<const gles2::cmds::DepthRangef*>(cmd_data); 952 *static_cast<const volatile gles2::cmds::DepthRangef*>(cmd_data);
984 (void)c;
985 GLclampf zNear = static_cast<GLclampf>(c.zNear); 953 GLclampf zNear = static_cast<GLclampf>(c.zNear);
986 GLclampf zFar = static_cast<GLclampf>(c.zFar); 954 GLclampf zFar = static_cast<GLclampf>(c.zFar);
987 error::Error error = DoDepthRangef(zNear, zFar); 955 error::Error error = DoDepthRangef(zNear, zFar);
988 if (error != error::kNoError) { 956 if (error != error::kNoError) {
989 return error; 957 return error;
990 } 958 }
991 return error::kNoError; 959 return error::kNoError;
992 } 960 }
993 961
994 error::Error GLES2DecoderPassthroughImpl::HandleDetachShader( 962 error::Error GLES2DecoderPassthroughImpl::HandleDetachShader(
995 uint32_t immediate_data_size, 963 uint32_t immediate_data_size,
996 const void* cmd_data) { 964 const volatile void* cmd_data) {
997 const gles2::cmds::DetachShader& c = 965 const volatile gles2::cmds::DetachShader& c =
998 *static_cast<const gles2::cmds::DetachShader*>(cmd_data); 966 *static_cast<const volatile gles2::cmds::DetachShader*>(cmd_data);
999 (void)c;
1000 GLuint program = c.program; 967 GLuint program = c.program;
1001 GLuint shader = c.shader; 968 GLuint shader = c.shader;
1002 error::Error error = DoDetachShader(program, shader); 969 error::Error error = DoDetachShader(program, shader);
1003 if (error != error::kNoError) { 970 if (error != error::kNoError) {
1004 return error; 971 return error;
1005 } 972 }
1006 return error::kNoError; 973 return error::kNoError;
1007 } 974 }
1008 975
1009 error::Error GLES2DecoderPassthroughImpl::HandleDisable( 976 error::Error GLES2DecoderPassthroughImpl::HandleDisable(
1010 uint32_t immediate_data_size, 977 uint32_t immediate_data_size,
1011 const void* cmd_data) { 978 const volatile void* cmd_data) {
1012 const gles2::cmds::Disable& c = 979 const volatile gles2::cmds::Disable& c =
1013 *static_cast<const gles2::cmds::Disable*>(cmd_data); 980 *static_cast<const volatile gles2::cmds::Disable*>(cmd_data);
1014 (void)c;
1015 GLenum cap = static_cast<GLenum>(c.cap); 981 GLenum cap = static_cast<GLenum>(c.cap);
1016 error::Error error = DoDisable(cap); 982 error::Error error = DoDisable(cap);
1017 if (error != error::kNoError) { 983 if (error != error::kNoError) {
1018 return error; 984 return error;
1019 } 985 }
1020 return error::kNoError; 986 return error::kNoError;
1021 } 987 }
1022 988
1023 error::Error GLES2DecoderPassthroughImpl::HandleDisableVertexAttribArray( 989 error::Error GLES2DecoderPassthroughImpl::HandleDisableVertexAttribArray(
1024 uint32_t immediate_data_size, 990 uint32_t immediate_data_size,
1025 const void* cmd_data) { 991 const volatile void* cmd_data) {
1026 const gles2::cmds::DisableVertexAttribArray& c = 992 const volatile gles2::cmds::DisableVertexAttribArray& c =
1027 *static_cast<const gles2::cmds::DisableVertexAttribArray*>(cmd_data); 993 *static_cast<const volatile gles2::cmds::DisableVertexAttribArray*>(
1028 (void)c; 994 cmd_data);
1029 GLuint index = static_cast<GLuint>(c.index); 995 GLuint index = static_cast<GLuint>(c.index);
1030 error::Error error = DoDisableVertexAttribArray(index); 996 error::Error error = DoDisableVertexAttribArray(index);
1031 if (error != error::kNoError) { 997 if (error != error::kNoError) {
1032 return error; 998 return error;
1033 } 999 }
1034 return error::kNoError; 1000 return error::kNoError;
1035 } 1001 }
1036 1002
1037 error::Error GLES2DecoderPassthroughImpl::HandleEnable( 1003 error::Error GLES2DecoderPassthroughImpl::HandleEnable(
1038 uint32_t immediate_data_size, 1004 uint32_t immediate_data_size,
1039 const void* cmd_data) { 1005 const volatile void* cmd_data) {
1040 const gles2::cmds::Enable& c = 1006 const volatile gles2::cmds::Enable& c =
1041 *static_cast<const gles2::cmds::Enable*>(cmd_data); 1007 *static_cast<const volatile gles2::cmds::Enable*>(cmd_data);
1042 (void)c;
1043 GLenum cap = static_cast<GLenum>(c.cap); 1008 GLenum cap = static_cast<GLenum>(c.cap);
1044 error::Error error = DoEnable(cap); 1009 error::Error error = DoEnable(cap);
1045 if (error != error::kNoError) { 1010 if (error != error::kNoError) {
1046 return error; 1011 return error;
1047 } 1012 }
1048 return error::kNoError; 1013 return error::kNoError;
1049 } 1014 }
1050 1015
1051 error::Error GLES2DecoderPassthroughImpl::HandleEnableVertexAttribArray( 1016 error::Error GLES2DecoderPassthroughImpl::HandleEnableVertexAttribArray(
1052 uint32_t immediate_data_size, 1017 uint32_t immediate_data_size,
1053 const void* cmd_data) { 1018 const volatile void* cmd_data) {
1054 const gles2::cmds::EnableVertexAttribArray& c = 1019 const volatile gles2::cmds::EnableVertexAttribArray& c =
1055 *static_cast<const gles2::cmds::EnableVertexAttribArray*>(cmd_data); 1020 *static_cast<const volatile gles2::cmds::EnableVertexAttribArray*>(
1056 (void)c; 1021 cmd_data);
1057 GLuint index = static_cast<GLuint>(c.index); 1022 GLuint index = static_cast<GLuint>(c.index);
1058 error::Error error = DoEnableVertexAttribArray(index); 1023 error::Error error = DoEnableVertexAttribArray(index);
1059 if (error != error::kNoError) { 1024 if (error != error::kNoError) {
1060 return error; 1025 return error;
1061 } 1026 }
1062 return error::kNoError; 1027 return error::kNoError;
1063 } 1028 }
1064 1029
1065 error::Error GLES2DecoderPassthroughImpl::HandleFinish( 1030 error::Error GLES2DecoderPassthroughImpl::HandleFinish(
1066 uint32_t immediate_data_size, 1031 uint32_t immediate_data_size,
1067 const void* cmd_data) { 1032 const volatile void* cmd_data) {
1068 const gles2::cmds::Finish& c =
1069 *static_cast<const gles2::cmds::Finish*>(cmd_data);
1070 (void)c;
1071 error::Error error = DoFinish(); 1033 error::Error error = DoFinish();
1072 if (error != error::kNoError) { 1034 if (error != error::kNoError) {
1073 return error; 1035 return error;
1074 } 1036 }
1075 return error::kNoError; 1037 return error::kNoError;
1076 } 1038 }
1077 1039
1078 error::Error GLES2DecoderPassthroughImpl::HandleFlush( 1040 error::Error GLES2DecoderPassthroughImpl::HandleFlush(
1079 uint32_t immediate_data_size, 1041 uint32_t immediate_data_size,
1080 const void* cmd_data) { 1042 const volatile void* cmd_data) {
1081 const gles2::cmds::Flush& c =
1082 *static_cast<const gles2::cmds::Flush*>(cmd_data);
1083 (void)c;
1084 error::Error error = DoFlush(); 1043 error::Error error = DoFlush();
1085 if (error != error::kNoError) { 1044 if (error != error::kNoError) {
1086 return error; 1045 return error;
1087 } 1046 }
1088 return error::kNoError; 1047 return error::kNoError;
1089 } 1048 }
1090 1049
1091 error::Error GLES2DecoderPassthroughImpl::HandleFramebufferRenderbuffer( 1050 error::Error GLES2DecoderPassthroughImpl::HandleFramebufferRenderbuffer(
1092 uint32_t immediate_data_size, 1051 uint32_t immediate_data_size,
1093 const void* cmd_data) { 1052 const volatile void* cmd_data) {
1094 const gles2::cmds::FramebufferRenderbuffer& c = 1053 const volatile gles2::cmds::FramebufferRenderbuffer& c =
1095 *static_cast<const gles2::cmds::FramebufferRenderbuffer*>(cmd_data); 1054 *static_cast<const volatile gles2::cmds::FramebufferRenderbuffer*>(
1096 (void)c; 1055 cmd_data);
1097 GLenum target = static_cast<GLenum>(c.target); 1056 GLenum target = static_cast<GLenum>(c.target);
1098 GLenum attachment = static_cast<GLenum>(c.attachment); 1057 GLenum attachment = static_cast<GLenum>(c.attachment);
1099 GLenum renderbuffertarget = static_cast<GLenum>(c.renderbuffertarget); 1058 GLenum renderbuffertarget = static_cast<GLenum>(c.renderbuffertarget);
1100 GLuint renderbuffer = c.renderbuffer; 1059 GLuint renderbuffer = c.renderbuffer;
1101 error::Error error = DoFramebufferRenderbuffer( 1060 error::Error error = DoFramebufferRenderbuffer(
1102 target, attachment, renderbuffertarget, renderbuffer); 1061 target, attachment, renderbuffertarget, renderbuffer);
1103 if (error != error::kNoError) { 1062 if (error != error::kNoError) {
1104 return error; 1063 return error;
1105 } 1064 }
1106 return error::kNoError; 1065 return error::kNoError;
1107 } 1066 }
1108 1067
1109 error::Error GLES2DecoderPassthroughImpl::HandleFramebufferTexture2D( 1068 error::Error GLES2DecoderPassthroughImpl::HandleFramebufferTexture2D(
1110 uint32_t immediate_data_size, 1069 uint32_t immediate_data_size,
1111 const void* cmd_data) { 1070 const volatile void* cmd_data) {
1112 const gles2::cmds::FramebufferTexture2D& c = 1071 const volatile gles2::cmds::FramebufferTexture2D& c =
1113 *static_cast<const gles2::cmds::FramebufferTexture2D*>(cmd_data); 1072 *static_cast<const volatile gles2::cmds::FramebufferTexture2D*>(cmd_data);
1114 (void)c;
1115 GLenum target = static_cast<GLenum>(c.target); 1073 GLenum target = static_cast<GLenum>(c.target);
1116 GLenum attachment = static_cast<GLenum>(c.attachment); 1074 GLenum attachment = static_cast<GLenum>(c.attachment);
1117 GLenum textarget = static_cast<GLenum>(c.textarget); 1075 GLenum textarget = static_cast<GLenum>(c.textarget);
1118 GLuint texture = c.texture; 1076 GLuint texture = c.texture;
1119 GLint level = static_cast<GLint>(c.level); 1077 GLint level = static_cast<GLint>(c.level);
1120 error::Error error = 1078 error::Error error =
1121 DoFramebufferTexture2D(target, attachment, textarget, texture, level); 1079 DoFramebufferTexture2D(target, attachment, textarget, texture, level);
1122 if (error != error::kNoError) { 1080 if (error != error::kNoError) {
1123 return error; 1081 return error;
1124 } 1082 }
1125 return error::kNoError; 1083 return error::kNoError;
1126 } 1084 }
1127 1085
1128 error::Error GLES2DecoderPassthroughImpl::HandleFramebufferTextureLayer( 1086 error::Error GLES2DecoderPassthroughImpl::HandleFramebufferTextureLayer(
1129 uint32_t immediate_data_size, 1087 uint32_t immediate_data_size,
1130 const void* cmd_data) { 1088 const volatile void* cmd_data) {
1131 const gles2::cmds::FramebufferTextureLayer& c = 1089 const volatile gles2::cmds::FramebufferTextureLayer& c =
1132 *static_cast<const gles2::cmds::FramebufferTextureLayer*>(cmd_data); 1090 *static_cast<const volatile gles2::cmds::FramebufferTextureLayer*>(
1133 (void)c; 1091 cmd_data);
1134 GLenum target = static_cast<GLenum>(c.target); 1092 GLenum target = static_cast<GLenum>(c.target);
1135 GLenum attachment = static_cast<GLenum>(c.attachment); 1093 GLenum attachment = static_cast<GLenum>(c.attachment);
1136 GLuint texture = c.texture; 1094 GLuint texture = c.texture;
1137 GLint level = static_cast<GLint>(c.level); 1095 GLint level = static_cast<GLint>(c.level);
1138 GLint layer = static_cast<GLint>(c.layer); 1096 GLint layer = static_cast<GLint>(c.layer);
1139 error::Error error = 1097 error::Error error =
1140 DoFramebufferTextureLayer(target, attachment, texture, level, layer); 1098 DoFramebufferTextureLayer(target, attachment, texture, level, layer);
1141 if (error != error::kNoError) { 1099 if (error != error::kNoError) {
1142 return error; 1100 return error;
1143 } 1101 }
1144 return error::kNoError; 1102 return error::kNoError;
1145 } 1103 }
1146 1104
1147 error::Error GLES2DecoderPassthroughImpl::HandleFrontFace( 1105 error::Error GLES2DecoderPassthroughImpl::HandleFrontFace(
1148 uint32_t immediate_data_size, 1106 uint32_t immediate_data_size,
1149 const void* cmd_data) { 1107 const volatile void* cmd_data) {
1150 const gles2::cmds::FrontFace& c = 1108 const volatile gles2::cmds::FrontFace& c =
1151 *static_cast<const gles2::cmds::FrontFace*>(cmd_data); 1109 *static_cast<const volatile gles2::cmds::FrontFace*>(cmd_data);
1152 (void)c;
1153 GLenum mode = static_cast<GLenum>(c.mode); 1110 GLenum mode = static_cast<GLenum>(c.mode);
1154 error::Error error = DoFrontFace(mode); 1111 error::Error error = DoFrontFace(mode);
1155 if (error != error::kNoError) { 1112 if (error != error::kNoError) {
1156 return error; 1113 return error;
1157 } 1114 }
1158 return error::kNoError; 1115 return error::kNoError;
1159 } 1116 }
1160 1117
1161 error::Error GLES2DecoderPassthroughImpl::HandleGenBuffersImmediate( 1118 error::Error GLES2DecoderPassthroughImpl::HandleGenBuffersImmediate(
1162 uint32_t immediate_data_size, 1119 uint32_t immediate_data_size,
1163 const void* cmd_data) { 1120 const volatile void* cmd_data) {
1164 const gles2::cmds::GenBuffersImmediate& c = 1121 const volatile gles2::cmds::GenBuffersImmediate& c =
1165 *static_cast<const gles2::cmds::GenBuffersImmediate*>(cmd_data); 1122 *static_cast<const volatile gles2::cmds::GenBuffersImmediate*>(cmd_data);
1166 (void)c;
1167 GLsizei n = static_cast<GLsizei>(c.n); 1123 GLsizei n = static_cast<GLsizei>(c.n);
1168 uint32_t data_size; 1124 uint32_t data_size;
1169 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 1125 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
1170 return error::kOutOfBounds; 1126 return error::kOutOfBounds;
1171 } 1127 }
1172 GLuint* buffers = 1128 volatile GLuint* buffers =
1173 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); 1129 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
1174 error::Error error = DoGenBuffers(n, buffers); 1130 error::Error error = DoGenBuffers(n, buffers);
1175 if (error != error::kNoError) { 1131 if (error != error::kNoError) {
1176 return error; 1132 return error;
1177 } 1133 }
1178 return error::kNoError; 1134 return error::kNoError;
1179 } 1135 }
1180 1136
1181 error::Error GLES2DecoderPassthroughImpl::HandleGenerateMipmap( 1137 error::Error GLES2DecoderPassthroughImpl::HandleGenerateMipmap(
1182 uint32_t immediate_data_size, 1138 uint32_t immediate_data_size,
1183 const void* cmd_data) { 1139 const volatile void* cmd_data) {
1184 const gles2::cmds::GenerateMipmap& c = 1140 const volatile gles2::cmds::GenerateMipmap& c =
1185 *static_cast<const gles2::cmds::GenerateMipmap*>(cmd_data); 1141 *static_cast<const volatile gles2::cmds::GenerateMipmap*>(cmd_data);
1186 (void)c;
1187 GLenum target = static_cast<GLenum>(c.target); 1142 GLenum target = static_cast<GLenum>(c.target);
1188 error::Error error = DoGenerateMipmap(target); 1143 error::Error error = DoGenerateMipmap(target);
1189 if (error != error::kNoError) { 1144 if (error != error::kNoError) {
1190 return error; 1145 return error;
1191 } 1146 }
1192 return error::kNoError; 1147 return error::kNoError;
1193 } 1148 }
1194 1149
1195 error::Error GLES2DecoderPassthroughImpl::HandleGenFramebuffersImmediate( 1150 error::Error GLES2DecoderPassthroughImpl::HandleGenFramebuffersImmediate(
1196 uint32_t immediate_data_size, 1151 uint32_t immediate_data_size,
1197 const void* cmd_data) { 1152 const volatile void* cmd_data) {
1198 const gles2::cmds::GenFramebuffersImmediate& c = 1153 const volatile gles2::cmds::GenFramebuffersImmediate& c =
1199 *static_cast<const gles2::cmds::GenFramebuffersImmediate*>(cmd_data); 1154 *static_cast<const volatile gles2::cmds::GenFramebuffersImmediate*>(
1200 (void)c; 1155 cmd_data);
1201 GLsizei n = static_cast<GLsizei>(c.n); 1156 GLsizei n = static_cast<GLsizei>(c.n);
1202 uint32_t data_size; 1157 uint32_t data_size;
1203 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 1158 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
1204 return error::kOutOfBounds; 1159 return error::kOutOfBounds;
1205 } 1160 }
1206 GLuint* framebuffers = 1161 volatile GLuint* framebuffers =
1207 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); 1162 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
1208 error::Error error = DoGenFramebuffers(n, framebuffers); 1163 error::Error error = DoGenFramebuffers(n, framebuffers);
1209 if (error != error::kNoError) { 1164 if (error != error::kNoError) {
1210 return error; 1165 return error;
1211 } 1166 }
1212 return error::kNoError; 1167 return error::kNoError;
1213 } 1168 }
1214 1169
1215 error::Error GLES2DecoderPassthroughImpl::HandleGenRenderbuffersImmediate( 1170 error::Error GLES2DecoderPassthroughImpl::HandleGenRenderbuffersImmediate(
1216 uint32_t immediate_data_size, 1171 uint32_t immediate_data_size,
1217 const void* cmd_data) { 1172 const volatile void* cmd_data) {
1218 const gles2::cmds::GenRenderbuffersImmediate& c = 1173 const volatile gles2::cmds::GenRenderbuffersImmediate& c =
1219 *static_cast<const gles2::cmds::GenRenderbuffersImmediate*>(cmd_data); 1174 *static_cast<const volatile gles2::cmds::GenRenderbuffersImmediate*>(
1220 (void)c; 1175 cmd_data);
1221 GLsizei n = static_cast<GLsizei>(c.n); 1176 GLsizei n = static_cast<GLsizei>(c.n);
1222 uint32_t data_size; 1177 uint32_t data_size;
1223 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 1178 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
1224 return error::kOutOfBounds; 1179 return error::kOutOfBounds;
1225 } 1180 }
1226 GLuint* renderbuffers = 1181 volatile GLuint* renderbuffers =
1227 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); 1182 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
1228 error::Error error = DoGenRenderbuffers(n, renderbuffers); 1183 error::Error error = DoGenRenderbuffers(n, renderbuffers);
1229 if (error != error::kNoError) { 1184 if (error != error::kNoError) {
1230 return error; 1185 return error;
1231 } 1186 }
1232 return error::kNoError; 1187 return error::kNoError;
1233 } 1188 }
1234 1189
1235 error::Error GLES2DecoderPassthroughImpl::HandleGenSamplersImmediate( 1190 error::Error GLES2DecoderPassthroughImpl::HandleGenSamplersImmediate(
1236 uint32_t immediate_data_size, 1191 uint32_t immediate_data_size,
1237 const void* cmd_data) { 1192 const volatile void* cmd_data) {
1238 const gles2::cmds::GenSamplersImmediate& c = 1193 const volatile gles2::cmds::GenSamplersImmediate& c =
1239 *static_cast<const gles2::cmds::GenSamplersImmediate*>(cmd_data); 1194 *static_cast<const volatile gles2::cmds::GenSamplersImmediate*>(cmd_data);
1240 (void)c;
1241 GLsizei n = static_cast<GLsizei>(c.n); 1195 GLsizei n = static_cast<GLsizei>(c.n);
1242 uint32_t data_size; 1196 uint32_t data_size;
1243 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 1197 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
1244 return error::kOutOfBounds; 1198 return error::kOutOfBounds;
1245 } 1199 }
1246 GLuint* samplers = 1200 volatile GLuint* samplers =
1247 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); 1201 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
1248 error::Error error = DoGenSamplers(n, samplers); 1202 error::Error error = DoGenSamplers(n, samplers);
1249 if (error != error::kNoError) { 1203 if (error != error::kNoError) {
1250 return error; 1204 return error;
1251 } 1205 }
1252 return error::kNoError; 1206 return error::kNoError;
1253 } 1207 }
1254 1208
1255 error::Error GLES2DecoderPassthroughImpl::HandleGenTexturesImmediate( 1209 error::Error GLES2DecoderPassthroughImpl::HandleGenTexturesImmediate(
1256 uint32_t immediate_data_size, 1210 uint32_t immediate_data_size,
1257 const void* cmd_data) { 1211 const volatile void* cmd_data) {
1258 const gles2::cmds::GenTexturesImmediate& c = 1212 const volatile gles2::cmds::GenTexturesImmediate& c =
1259 *static_cast<const gles2::cmds::GenTexturesImmediate*>(cmd_data); 1213 *static_cast<const volatile gles2::cmds::GenTexturesImmediate*>(cmd_data);
1260 (void)c;
1261 GLsizei n = static_cast<GLsizei>(c.n); 1214 GLsizei n = static_cast<GLsizei>(c.n);
1262 uint32_t data_size; 1215 uint32_t data_size;
1263 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 1216 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
1264 return error::kOutOfBounds; 1217 return error::kOutOfBounds;
1265 } 1218 }
1266 GLuint* textures = 1219 volatile GLuint* textures =
1267 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); 1220 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
1268 error::Error error = DoGenTextures(n, textures); 1221 error::Error error = DoGenTextures(n, textures);
1269 if (error != error::kNoError) { 1222 if (error != error::kNoError) {
1270 return error; 1223 return error;
1271 } 1224 }
1272 return error::kNoError; 1225 return error::kNoError;
1273 } 1226 }
1274 1227
1275 error::Error GLES2DecoderPassthroughImpl::HandleGenTransformFeedbacksImmediate( 1228 error::Error GLES2DecoderPassthroughImpl::HandleGenTransformFeedbacksImmediate(
1276 uint32_t immediate_data_size, 1229 uint32_t immediate_data_size,
1277 const void* cmd_data) { 1230 const volatile void* cmd_data) {
1278 const gles2::cmds::GenTransformFeedbacksImmediate& c = 1231 const volatile gles2::cmds::GenTransformFeedbacksImmediate& c =
1279 *static_cast<const gles2::cmds::GenTransformFeedbacksImmediate*>( 1232 *static_cast<const volatile gles2::cmds::GenTransformFeedbacksImmediate*>(
1280 cmd_data); 1233 cmd_data);
1281 (void)c;
1282 GLsizei n = static_cast<GLsizei>(c.n); 1234 GLsizei n = static_cast<GLsizei>(c.n);
1283 uint32_t data_size; 1235 uint32_t data_size;
1284 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 1236 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
1285 return error::kOutOfBounds; 1237 return error::kOutOfBounds;
1286 } 1238 }
1287 GLuint* ids = GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); 1239 volatile GLuint* ids =
1240 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
1288 error::Error error = DoGenTransformFeedbacks(n, ids); 1241 error::Error error = DoGenTransformFeedbacks(n, ids);
1289 if (error != error::kNoError) { 1242 if (error != error::kNoError) {
1290 return error; 1243 return error;
1291 } 1244 }
1292 return error::kNoError; 1245 return error::kNoError;
1293 } 1246 }
1294 1247
1295 error::Error GLES2DecoderPassthroughImpl::HandleGetBooleanv( 1248 error::Error GLES2DecoderPassthroughImpl::HandleGetBooleanv(
1296 uint32_t immediate_data_size, 1249 uint32_t immediate_data_size,
1297 const void* cmd_data) { 1250 const volatile void* cmd_data) {
1298 const gles2::cmds::GetBooleanv& c = 1251 const volatile gles2::cmds::GetBooleanv& c =
1299 *static_cast<const gles2::cmds::GetBooleanv*>(cmd_data); 1252 *static_cast<const volatile gles2::cmds::GetBooleanv*>(cmd_data);
1300 (void)c;
1301 GLenum pname = static_cast<GLenum>(c.pname); 1253 GLenum pname = static_cast<GLenum>(c.pname);
1302 unsigned int buffer_size = 0; 1254 unsigned int buffer_size = 0;
1303 typedef cmds::GetBooleanv::Result Result; 1255 typedef cmds::GetBooleanv::Result Result;
1304 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1256 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1305 c.params_shm_id, c.params_shm_offset, &buffer_size); 1257 c.params_shm_id, c.params_shm_offset, &buffer_size);
1306 GLboolean* params = result ? result->GetData() : NULL; 1258 GLboolean* params = result ? result->GetData() : NULL;
1307 if (params == NULL) { 1259 if (params == NULL) {
1308 return error::kOutOfBounds; 1260 return error::kOutOfBounds;
1309 } 1261 }
1310 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1262 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1311 GLsizei written_values = 0; 1263 GLsizei written_values = 0;
1312 GLsizei* length = &written_values; 1264 GLsizei* length = &written_values;
1313 error::Error error = DoGetBooleanv(pname, bufsize, length, params); 1265 error::Error error = DoGetBooleanv(pname, bufsize, length, params);
1314 if (error != error::kNoError) { 1266 if (error != error::kNoError) {
1315 return error; 1267 return error;
1316 } 1268 }
1317 if (written_values > bufsize) { 1269 if (written_values > bufsize) {
1318 return error::kOutOfBounds; 1270 return error::kOutOfBounds;
1319 } 1271 }
1320 result->SetNumResults(written_values); 1272 result->SetNumResults(written_values);
1321 return error::kNoError; 1273 return error::kNoError;
1322 } 1274 }
1323 1275
1324 error::Error GLES2DecoderPassthroughImpl::HandleGetBufferParameteri64v( 1276 error::Error GLES2DecoderPassthroughImpl::HandleGetBufferParameteri64v(
1325 uint32_t immediate_data_size, 1277 uint32_t immediate_data_size,
1326 const void* cmd_data) { 1278 const volatile void* cmd_data) {
1327 const gles2::cmds::GetBufferParameteri64v& c = 1279 const volatile gles2::cmds::GetBufferParameteri64v& c =
1328 *static_cast<const gles2::cmds::GetBufferParameteri64v*>(cmd_data); 1280 *static_cast<const volatile gles2::cmds::GetBufferParameteri64v*>(
1329 (void)c; 1281 cmd_data);
1330 GLenum target = static_cast<GLenum>(c.target); 1282 GLenum target = static_cast<GLenum>(c.target);
1331 GLenum pname = static_cast<GLenum>(c.pname); 1283 GLenum pname = static_cast<GLenum>(c.pname);
1332 unsigned int buffer_size = 0; 1284 unsigned int buffer_size = 0;
1333 typedef cmds::GetBufferParameteri64v::Result Result; 1285 typedef cmds::GetBufferParameteri64v::Result Result;
1334 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1286 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1335 c.params_shm_id, c.params_shm_offset, &buffer_size); 1287 c.params_shm_id, c.params_shm_offset, &buffer_size);
1336 GLint64* params = result ? result->GetData() : NULL; 1288 GLint64* params = result ? result->GetData() : NULL;
1337 if (params == NULL) { 1289 if (params == NULL) {
1338 return error::kOutOfBounds; 1290 return error::kOutOfBounds;
1339 } 1291 }
1340 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1292 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1341 GLsizei written_values = 0; 1293 GLsizei written_values = 0;
1342 GLsizei* length = &written_values; 1294 GLsizei* length = &written_values;
1343 error::Error error = 1295 error::Error error =
1344 DoGetBufferParameteri64v(target, pname, bufsize, length, params); 1296 DoGetBufferParameteri64v(target, pname, bufsize, length, params);
1345 if (error != error::kNoError) { 1297 if (error != error::kNoError) {
1346 return error; 1298 return error;
1347 } 1299 }
1348 if (written_values > bufsize) { 1300 if (written_values > bufsize) {
1349 return error::kOutOfBounds; 1301 return error::kOutOfBounds;
1350 } 1302 }
1351 result->SetNumResults(written_values); 1303 result->SetNumResults(written_values);
1352 return error::kNoError; 1304 return error::kNoError;
1353 } 1305 }
1354 1306
1355 error::Error GLES2DecoderPassthroughImpl::HandleGetBufferParameteriv( 1307 error::Error GLES2DecoderPassthroughImpl::HandleGetBufferParameteriv(
1356 uint32_t immediate_data_size, 1308 uint32_t immediate_data_size,
1357 const void* cmd_data) { 1309 const volatile void* cmd_data) {
1358 const gles2::cmds::GetBufferParameteriv& c = 1310 const volatile gles2::cmds::GetBufferParameteriv& c =
1359 *static_cast<const gles2::cmds::GetBufferParameteriv*>(cmd_data); 1311 *static_cast<const volatile gles2::cmds::GetBufferParameteriv*>(cmd_data);
1360 (void)c;
1361 GLenum target = static_cast<GLenum>(c.target); 1312 GLenum target = static_cast<GLenum>(c.target);
1362 GLenum pname = static_cast<GLenum>(c.pname); 1313 GLenum pname = static_cast<GLenum>(c.pname);
1363 unsigned int buffer_size = 0; 1314 unsigned int buffer_size = 0;
1364 typedef cmds::GetBufferParameteriv::Result Result; 1315 typedef cmds::GetBufferParameteriv::Result Result;
1365 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1316 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1366 c.params_shm_id, c.params_shm_offset, &buffer_size); 1317 c.params_shm_id, c.params_shm_offset, &buffer_size);
1367 GLint* params = result ? result->GetData() : NULL; 1318 GLint* params = result ? result->GetData() : NULL;
1368 if (params == NULL) { 1319 if (params == NULL) {
1369 return error::kOutOfBounds; 1320 return error::kOutOfBounds;
1370 } 1321 }
1371 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1322 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1372 GLsizei written_values = 0; 1323 GLsizei written_values = 0;
1373 GLsizei* length = &written_values; 1324 GLsizei* length = &written_values;
1374 error::Error error = 1325 error::Error error =
1375 DoGetBufferParameteriv(target, pname, bufsize, length, params); 1326 DoGetBufferParameteriv(target, pname, bufsize, length, params);
1376 if (error != error::kNoError) { 1327 if (error != error::kNoError) {
1377 return error; 1328 return error;
1378 } 1329 }
1379 if (written_values > bufsize) { 1330 if (written_values > bufsize) {
1380 return error::kOutOfBounds; 1331 return error::kOutOfBounds;
1381 } 1332 }
1382 result->SetNumResults(written_values); 1333 result->SetNumResults(written_values);
1383 return error::kNoError; 1334 return error::kNoError;
1384 } 1335 }
1385 1336
1386 error::Error GLES2DecoderPassthroughImpl::HandleGetError( 1337 error::Error GLES2DecoderPassthroughImpl::HandleGetError(
1387 uint32_t immediate_data_size, 1338 uint32_t immediate_data_size,
1388 const void* cmd_data) { 1339 const volatile void* cmd_data) {
1389 const gles2::cmds::GetError& c = 1340 const volatile gles2::cmds::GetError& c =
1390 *static_cast<const gles2::cmds::GetError*>(cmd_data); 1341 *static_cast<const volatile gles2::cmds::GetError*>(cmd_data);
1391 (void)c;
1392 typedef cmds::GetError::Result Result; 1342 typedef cmds::GetError::Result Result;
1393 Result* result = GetSharedMemoryAs<Result*>( 1343 Result* result = GetSharedMemoryAs<Result*>(
1394 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 1344 c.result_shm_id, c.result_shm_offset, sizeof(*result));
1395 if (!result) { 1345 if (!result) {
1396 return error::kOutOfBounds; 1346 return error::kOutOfBounds;
1397 } 1347 }
1398 error::Error error = DoGetError(result); 1348 error::Error error = DoGetError(result);
1399 if (error != error::kNoError) { 1349 if (error != error::kNoError) {
1400 return error; 1350 return error;
1401 } 1351 }
1402 return error::kNoError; 1352 return error::kNoError;
1403 } 1353 }
1404 1354
1405 error::Error GLES2DecoderPassthroughImpl::HandleGetFloatv( 1355 error::Error GLES2DecoderPassthroughImpl::HandleGetFloatv(
1406 uint32_t immediate_data_size, 1356 uint32_t immediate_data_size,
1407 const void* cmd_data) { 1357 const volatile void* cmd_data) {
1408 const gles2::cmds::GetFloatv& c = 1358 const volatile gles2::cmds::GetFloatv& c =
1409 *static_cast<const gles2::cmds::GetFloatv*>(cmd_data); 1359 *static_cast<const volatile gles2::cmds::GetFloatv*>(cmd_data);
1410 (void)c;
1411 GLenum pname = static_cast<GLenum>(c.pname); 1360 GLenum pname = static_cast<GLenum>(c.pname);
1412 unsigned int buffer_size = 0; 1361 unsigned int buffer_size = 0;
1413 typedef cmds::GetFloatv::Result Result; 1362 typedef cmds::GetFloatv::Result Result;
1414 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1363 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1415 c.params_shm_id, c.params_shm_offset, &buffer_size); 1364 c.params_shm_id, c.params_shm_offset, &buffer_size);
1416 GLfloat* params = result ? result->GetData() : NULL; 1365 GLfloat* params = result ? result->GetData() : NULL;
1417 if (params == NULL) { 1366 if (params == NULL) {
1418 return error::kOutOfBounds; 1367 return error::kOutOfBounds;
1419 } 1368 }
1420 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1369 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1421 GLsizei written_values = 0; 1370 GLsizei written_values = 0;
1422 GLsizei* length = &written_values; 1371 GLsizei* length = &written_values;
1423 error::Error error = DoGetFloatv(pname, bufsize, length, params); 1372 error::Error error = DoGetFloatv(pname, bufsize, length, params);
1424 if (error != error::kNoError) { 1373 if (error != error::kNoError) {
1425 return error; 1374 return error;
1426 } 1375 }
1427 if (written_values > bufsize) { 1376 if (written_values > bufsize) {
1428 return error::kOutOfBounds; 1377 return error::kOutOfBounds;
1429 } 1378 }
1430 result->SetNumResults(written_values); 1379 result->SetNumResults(written_values);
1431 return error::kNoError; 1380 return error::kNoError;
1432 } 1381 }
1433 1382
1434 error::Error 1383 error::Error
1435 GLES2DecoderPassthroughImpl::HandleGetFramebufferAttachmentParameteriv( 1384 GLES2DecoderPassthroughImpl::HandleGetFramebufferAttachmentParameteriv(
1436 uint32_t immediate_data_size, 1385 uint32_t immediate_data_size,
1437 const void* cmd_data) { 1386 const volatile void* cmd_data) {
1438 const gles2::cmds::GetFramebufferAttachmentParameteriv& c = 1387 const volatile gles2::cmds::GetFramebufferAttachmentParameteriv& c =
1439 *static_cast<const gles2::cmds::GetFramebufferAttachmentParameteriv*>( 1388 *static_cast<
1389 const volatile gles2::cmds::GetFramebufferAttachmentParameteriv*>(
1440 cmd_data); 1390 cmd_data);
1441 (void)c;
1442 GLenum target = static_cast<GLenum>(c.target); 1391 GLenum target = static_cast<GLenum>(c.target);
1443 GLenum attachment = static_cast<GLenum>(c.attachment); 1392 GLenum attachment = static_cast<GLenum>(c.attachment);
1444 GLenum pname = static_cast<GLenum>(c.pname); 1393 GLenum pname = static_cast<GLenum>(c.pname);
1445 unsigned int buffer_size = 0; 1394 unsigned int buffer_size = 0;
1446 typedef cmds::GetFramebufferAttachmentParameteriv::Result Result; 1395 typedef cmds::GetFramebufferAttachmentParameteriv::Result Result;
1447 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1396 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1448 c.params_shm_id, c.params_shm_offset, &buffer_size); 1397 c.params_shm_id, c.params_shm_offset, &buffer_size);
1449 GLint* params = result ? result->GetData() : NULL; 1398 GLint* params = result ? result->GetData() : NULL;
1450 if (params == NULL) { 1399 if (params == NULL) {
1451 return error::kOutOfBounds; 1400 return error::kOutOfBounds;
1452 } 1401 }
1453 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1402 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1454 GLsizei written_values = 0; 1403 GLsizei written_values = 0;
1455 GLsizei* length = &written_values; 1404 GLsizei* length = &written_values;
1456 error::Error error = DoGetFramebufferAttachmentParameteriv( 1405 error::Error error = DoGetFramebufferAttachmentParameteriv(
1457 target, attachment, pname, bufsize, length, params); 1406 target, attachment, pname, bufsize, length, params);
1458 if (error != error::kNoError) { 1407 if (error != error::kNoError) {
1459 return error; 1408 return error;
1460 } 1409 }
1461 if (written_values > bufsize) { 1410 if (written_values > bufsize) {
1462 return error::kOutOfBounds; 1411 return error::kOutOfBounds;
1463 } 1412 }
1464 result->SetNumResults(written_values); 1413 result->SetNumResults(written_values);
1465 return error::kNoError; 1414 return error::kNoError;
1466 } 1415 }
1467 1416
1468 error::Error GLES2DecoderPassthroughImpl::HandleGetInteger64v( 1417 error::Error GLES2DecoderPassthroughImpl::HandleGetInteger64v(
1469 uint32_t immediate_data_size, 1418 uint32_t immediate_data_size,
1470 const void* cmd_data) { 1419 const volatile void* cmd_data) {
1471 const gles2::cmds::GetInteger64v& c = 1420 const volatile gles2::cmds::GetInteger64v& c =
1472 *static_cast<const gles2::cmds::GetInteger64v*>(cmd_data); 1421 *static_cast<const volatile gles2::cmds::GetInteger64v*>(cmd_data);
1473 (void)c;
1474 GLenum pname = static_cast<GLenum>(c.pname); 1422 GLenum pname = static_cast<GLenum>(c.pname);
1475 unsigned int buffer_size = 0; 1423 unsigned int buffer_size = 0;
1476 typedef cmds::GetInteger64v::Result Result; 1424 typedef cmds::GetInteger64v::Result Result;
1477 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1425 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1478 c.params_shm_id, c.params_shm_offset, &buffer_size); 1426 c.params_shm_id, c.params_shm_offset, &buffer_size);
1479 GLint64* params = result ? result->GetData() : NULL; 1427 GLint64* params = result ? result->GetData() : NULL;
1480 if (params == NULL) { 1428 if (params == NULL) {
1481 return error::kOutOfBounds; 1429 return error::kOutOfBounds;
1482 } 1430 }
1483 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1431 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1484 GLsizei written_values = 0; 1432 GLsizei written_values = 0;
1485 GLsizei* length = &written_values; 1433 GLsizei* length = &written_values;
1486 error::Error error = DoGetInteger64v(pname, bufsize, length, params); 1434 error::Error error = DoGetInteger64v(pname, bufsize, length, params);
1487 if (error != error::kNoError) { 1435 if (error != error::kNoError) {
1488 return error; 1436 return error;
1489 } 1437 }
1490 if (written_values > bufsize) { 1438 if (written_values > bufsize) {
1491 return error::kOutOfBounds; 1439 return error::kOutOfBounds;
1492 } 1440 }
1493 result->SetNumResults(written_values); 1441 result->SetNumResults(written_values);
1494 return error::kNoError; 1442 return error::kNoError;
1495 } 1443 }
1496 1444
1497 error::Error GLES2DecoderPassthroughImpl::HandleGetIntegeri_v( 1445 error::Error GLES2DecoderPassthroughImpl::HandleGetIntegeri_v(
1498 uint32_t immediate_data_size, 1446 uint32_t immediate_data_size,
1499 const void* cmd_data) { 1447 const volatile void* cmd_data) {
1500 const gles2::cmds::GetIntegeri_v& c = 1448 const volatile gles2::cmds::GetIntegeri_v& c =
1501 *static_cast<const gles2::cmds::GetIntegeri_v*>(cmd_data); 1449 *static_cast<const volatile gles2::cmds::GetIntegeri_v*>(cmd_data);
1502 (void)c;
1503 GLenum pname = static_cast<GLenum>(c.pname); 1450 GLenum pname = static_cast<GLenum>(c.pname);
1504 GLuint index = static_cast<GLuint>(c.index); 1451 GLuint index = static_cast<GLuint>(c.index);
1505 unsigned int buffer_size = 0; 1452 unsigned int buffer_size = 0;
1506 typedef cmds::GetIntegeri_v::Result Result; 1453 typedef cmds::GetIntegeri_v::Result Result;
1507 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1454 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1508 c.data_shm_id, c.data_shm_offset, &buffer_size); 1455 c.data_shm_id, c.data_shm_offset, &buffer_size);
1509 GLint* data = result ? result->GetData() : NULL; 1456 GLint* data = result ? result->GetData() : NULL;
1510 if (data == NULL) { 1457 if (data == NULL) {
1511 return error::kOutOfBounds; 1458 return error::kOutOfBounds;
1512 } 1459 }
1513 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1460 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1514 GLsizei written_values = 0; 1461 GLsizei written_values = 0;
1515 GLsizei* length = &written_values; 1462 GLsizei* length = &written_values;
1516 error::Error error = DoGetIntegeri_v(pname, index, bufsize, length, data); 1463 error::Error error = DoGetIntegeri_v(pname, index, bufsize, length, data);
1517 if (error != error::kNoError) { 1464 if (error != error::kNoError) {
1518 return error; 1465 return error;
1519 } 1466 }
1520 if (written_values > bufsize) { 1467 if (written_values > bufsize) {
1521 return error::kOutOfBounds; 1468 return error::kOutOfBounds;
1522 } 1469 }
1523 result->SetNumResults(written_values); 1470 result->SetNumResults(written_values);
1524 return error::kNoError; 1471 return error::kNoError;
1525 } 1472 }
1526 1473
1527 error::Error GLES2DecoderPassthroughImpl::HandleGetInteger64i_v( 1474 error::Error GLES2DecoderPassthroughImpl::HandleGetInteger64i_v(
1528 uint32_t immediate_data_size, 1475 uint32_t immediate_data_size,
1529 const void* cmd_data) { 1476 const volatile void* cmd_data) {
1530 const gles2::cmds::GetInteger64i_v& c = 1477 const volatile gles2::cmds::GetInteger64i_v& c =
1531 *static_cast<const gles2::cmds::GetInteger64i_v*>(cmd_data); 1478 *static_cast<const volatile gles2::cmds::GetInteger64i_v*>(cmd_data);
1532 (void)c;
1533 GLenum pname = static_cast<GLenum>(c.pname); 1479 GLenum pname = static_cast<GLenum>(c.pname);
1534 GLuint index = static_cast<GLuint>(c.index); 1480 GLuint index = static_cast<GLuint>(c.index);
1535 unsigned int buffer_size = 0; 1481 unsigned int buffer_size = 0;
1536 typedef cmds::GetInteger64i_v::Result Result; 1482 typedef cmds::GetInteger64i_v::Result Result;
1537 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1483 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1538 c.data_shm_id, c.data_shm_offset, &buffer_size); 1484 c.data_shm_id, c.data_shm_offset, &buffer_size);
1539 GLint64* data = result ? result->GetData() : NULL; 1485 GLint64* data = result ? result->GetData() : NULL;
1540 if (data == NULL) { 1486 if (data == NULL) {
1541 return error::kOutOfBounds; 1487 return error::kOutOfBounds;
1542 } 1488 }
1543 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1489 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1544 GLsizei written_values = 0; 1490 GLsizei written_values = 0;
1545 GLsizei* length = &written_values; 1491 GLsizei* length = &written_values;
1546 error::Error error = DoGetInteger64i_v(pname, index, bufsize, length, data); 1492 error::Error error = DoGetInteger64i_v(pname, index, bufsize, length, data);
1547 if (error != error::kNoError) { 1493 if (error != error::kNoError) {
1548 return error; 1494 return error;
1549 } 1495 }
1550 if (written_values > bufsize) { 1496 if (written_values > bufsize) {
1551 return error::kOutOfBounds; 1497 return error::kOutOfBounds;
1552 } 1498 }
1553 result->SetNumResults(written_values); 1499 result->SetNumResults(written_values);
1554 return error::kNoError; 1500 return error::kNoError;
1555 } 1501 }
1556 1502
1557 error::Error GLES2DecoderPassthroughImpl::HandleGetIntegerv( 1503 error::Error GLES2DecoderPassthroughImpl::HandleGetIntegerv(
1558 uint32_t immediate_data_size, 1504 uint32_t immediate_data_size,
1559 const void* cmd_data) { 1505 const volatile void* cmd_data) {
1560 const gles2::cmds::GetIntegerv& c = 1506 const volatile gles2::cmds::GetIntegerv& c =
1561 *static_cast<const gles2::cmds::GetIntegerv*>(cmd_data); 1507 *static_cast<const volatile gles2::cmds::GetIntegerv*>(cmd_data);
1562 (void)c;
1563 GLenum pname = static_cast<GLenum>(c.pname); 1508 GLenum pname = static_cast<GLenum>(c.pname);
1564 unsigned int buffer_size = 0; 1509 unsigned int buffer_size = 0;
1565 typedef cmds::GetIntegerv::Result Result; 1510 typedef cmds::GetIntegerv::Result Result;
1566 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1511 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1567 c.params_shm_id, c.params_shm_offset, &buffer_size); 1512 c.params_shm_id, c.params_shm_offset, &buffer_size);
1568 GLint* params = result ? result->GetData() : NULL; 1513 GLint* params = result ? result->GetData() : NULL;
1569 if (params == NULL) { 1514 if (params == NULL) {
1570 return error::kOutOfBounds; 1515 return error::kOutOfBounds;
1571 } 1516 }
1572 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1517 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1573 GLsizei written_values = 0; 1518 GLsizei written_values = 0;
1574 GLsizei* length = &written_values; 1519 GLsizei* length = &written_values;
1575 error::Error error = DoGetIntegerv(pname, bufsize, length, params); 1520 error::Error error = DoGetIntegerv(pname, bufsize, length, params);
1576 if (error != error::kNoError) { 1521 if (error != error::kNoError) {
1577 return error; 1522 return error;
1578 } 1523 }
1579 if (written_values > bufsize) { 1524 if (written_values > bufsize) {
1580 return error::kOutOfBounds; 1525 return error::kOutOfBounds;
1581 } 1526 }
1582 result->SetNumResults(written_values); 1527 result->SetNumResults(written_values);
1583 return error::kNoError; 1528 return error::kNoError;
1584 } 1529 }
1585 1530
1586 error::Error GLES2DecoderPassthroughImpl::HandleGetProgramiv( 1531 error::Error GLES2DecoderPassthroughImpl::HandleGetProgramiv(
1587 uint32_t immediate_data_size, 1532 uint32_t immediate_data_size,
1588 const void* cmd_data) { 1533 const volatile void* cmd_data) {
1589 const gles2::cmds::GetProgramiv& c = 1534 const volatile gles2::cmds::GetProgramiv& c =
1590 *static_cast<const gles2::cmds::GetProgramiv*>(cmd_data); 1535 *static_cast<const volatile gles2::cmds::GetProgramiv*>(cmd_data);
1591 (void)c;
1592 GLuint program = c.program; 1536 GLuint program = c.program;
1593 GLenum pname = static_cast<GLenum>(c.pname); 1537 GLenum pname = static_cast<GLenum>(c.pname);
1594 unsigned int buffer_size = 0; 1538 unsigned int buffer_size = 0;
1595 typedef cmds::GetProgramiv::Result Result; 1539 typedef cmds::GetProgramiv::Result Result;
1596 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1540 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1597 c.params_shm_id, c.params_shm_offset, &buffer_size); 1541 c.params_shm_id, c.params_shm_offset, &buffer_size);
1598 GLint* params = result ? result->GetData() : NULL; 1542 GLint* params = result ? result->GetData() : NULL;
1599 if (params == NULL) { 1543 if (params == NULL) {
1600 return error::kOutOfBounds; 1544 return error::kOutOfBounds;
1601 } 1545 }
1602 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1546 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1603 GLsizei written_values = 0; 1547 GLsizei written_values = 0;
1604 GLsizei* length = &written_values; 1548 GLsizei* length = &written_values;
1605 error::Error error = DoGetProgramiv(program, pname, bufsize, length, params); 1549 error::Error error = DoGetProgramiv(program, pname, bufsize, length, params);
1606 if (error != error::kNoError) { 1550 if (error != error::kNoError) {
1607 return error; 1551 return error;
1608 } 1552 }
1609 if (written_values > bufsize) { 1553 if (written_values > bufsize) {
1610 return error::kOutOfBounds; 1554 return error::kOutOfBounds;
1611 } 1555 }
1612 result->SetNumResults(written_values); 1556 result->SetNumResults(written_values);
1613 return error::kNoError; 1557 return error::kNoError;
1614 } 1558 }
1615 1559
1616 error::Error GLES2DecoderPassthroughImpl::HandleGetRenderbufferParameteriv( 1560 error::Error GLES2DecoderPassthroughImpl::HandleGetRenderbufferParameteriv(
1617 uint32_t immediate_data_size, 1561 uint32_t immediate_data_size,
1618 const void* cmd_data) { 1562 const volatile void* cmd_data) {
1619 const gles2::cmds::GetRenderbufferParameteriv& c = 1563 const volatile gles2::cmds::GetRenderbufferParameteriv& c =
1620 *static_cast<const gles2::cmds::GetRenderbufferParameteriv*>(cmd_data); 1564 *static_cast<const volatile gles2::cmds::GetRenderbufferParameteriv*>(
1621 (void)c; 1565 cmd_data);
1622 GLenum target = static_cast<GLenum>(c.target); 1566 GLenum target = static_cast<GLenum>(c.target);
1623 GLenum pname = static_cast<GLenum>(c.pname); 1567 GLenum pname = static_cast<GLenum>(c.pname);
1624 unsigned int buffer_size = 0; 1568 unsigned int buffer_size = 0;
1625 typedef cmds::GetRenderbufferParameteriv::Result Result; 1569 typedef cmds::GetRenderbufferParameteriv::Result Result;
1626 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1570 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1627 c.params_shm_id, c.params_shm_offset, &buffer_size); 1571 c.params_shm_id, c.params_shm_offset, &buffer_size);
1628 GLint* params = result ? result->GetData() : NULL; 1572 GLint* params = result ? result->GetData() : NULL;
1629 if (params == NULL) { 1573 if (params == NULL) {
1630 return error::kOutOfBounds; 1574 return error::kOutOfBounds;
1631 } 1575 }
1632 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1576 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1633 GLsizei written_values = 0; 1577 GLsizei written_values = 0;
1634 GLsizei* length = &written_values; 1578 GLsizei* length = &written_values;
1635 error::Error error = 1579 error::Error error =
1636 DoGetRenderbufferParameteriv(target, pname, bufsize, length, params); 1580 DoGetRenderbufferParameteriv(target, pname, bufsize, length, params);
1637 if (error != error::kNoError) { 1581 if (error != error::kNoError) {
1638 return error; 1582 return error;
1639 } 1583 }
1640 if (written_values > bufsize) { 1584 if (written_values > bufsize) {
1641 return error::kOutOfBounds; 1585 return error::kOutOfBounds;
1642 } 1586 }
1643 result->SetNumResults(written_values); 1587 result->SetNumResults(written_values);
1644 return error::kNoError; 1588 return error::kNoError;
1645 } 1589 }
1646 1590
1647 error::Error GLES2DecoderPassthroughImpl::HandleGetSamplerParameterfv( 1591 error::Error GLES2DecoderPassthroughImpl::HandleGetSamplerParameterfv(
1648 uint32_t immediate_data_size, 1592 uint32_t immediate_data_size,
1649 const void* cmd_data) { 1593 const volatile void* cmd_data) {
1650 const gles2::cmds::GetSamplerParameterfv& c = 1594 const volatile gles2::cmds::GetSamplerParameterfv& c =
1651 *static_cast<const gles2::cmds::GetSamplerParameterfv*>(cmd_data); 1595 *static_cast<const volatile gles2::cmds::GetSamplerParameterfv*>(
1652 (void)c; 1596 cmd_data);
1653 GLuint sampler = c.sampler; 1597 GLuint sampler = c.sampler;
1654 GLenum pname = static_cast<GLenum>(c.pname); 1598 GLenum pname = static_cast<GLenum>(c.pname);
1655 unsigned int buffer_size = 0; 1599 unsigned int buffer_size = 0;
1656 typedef cmds::GetSamplerParameterfv::Result Result; 1600 typedef cmds::GetSamplerParameterfv::Result Result;
1657 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1601 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1658 c.params_shm_id, c.params_shm_offset, &buffer_size); 1602 c.params_shm_id, c.params_shm_offset, &buffer_size);
1659 GLfloat* params = result ? result->GetData() : NULL; 1603 GLfloat* params = result ? result->GetData() : NULL;
1660 if (params == NULL) { 1604 if (params == NULL) {
1661 return error::kOutOfBounds; 1605 return error::kOutOfBounds;
1662 } 1606 }
1663 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1607 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1664 GLsizei written_values = 0; 1608 GLsizei written_values = 0;
1665 GLsizei* length = &written_values; 1609 GLsizei* length = &written_values;
1666 error::Error error = 1610 error::Error error =
1667 DoGetSamplerParameterfv(sampler, pname, bufsize, length, params); 1611 DoGetSamplerParameterfv(sampler, pname, bufsize, length, params);
1668 if (error != error::kNoError) { 1612 if (error != error::kNoError) {
1669 return error; 1613 return error;
1670 } 1614 }
1671 if (written_values > bufsize) { 1615 if (written_values > bufsize) {
1672 return error::kOutOfBounds; 1616 return error::kOutOfBounds;
1673 } 1617 }
1674 result->SetNumResults(written_values); 1618 result->SetNumResults(written_values);
1675 return error::kNoError; 1619 return error::kNoError;
1676 } 1620 }
1677 1621
1678 error::Error GLES2DecoderPassthroughImpl::HandleGetSamplerParameteriv( 1622 error::Error GLES2DecoderPassthroughImpl::HandleGetSamplerParameteriv(
1679 uint32_t immediate_data_size, 1623 uint32_t immediate_data_size,
1680 const void* cmd_data) { 1624 const volatile void* cmd_data) {
1681 const gles2::cmds::GetSamplerParameteriv& c = 1625 const volatile gles2::cmds::GetSamplerParameteriv& c =
1682 *static_cast<const gles2::cmds::GetSamplerParameteriv*>(cmd_data); 1626 *static_cast<const volatile gles2::cmds::GetSamplerParameteriv*>(
1683 (void)c; 1627 cmd_data);
1684 GLuint sampler = c.sampler; 1628 GLuint sampler = c.sampler;
1685 GLenum pname = static_cast<GLenum>(c.pname); 1629 GLenum pname = static_cast<GLenum>(c.pname);
1686 unsigned int buffer_size = 0; 1630 unsigned int buffer_size = 0;
1687 typedef cmds::GetSamplerParameteriv::Result Result; 1631 typedef cmds::GetSamplerParameteriv::Result Result;
1688 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1632 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1689 c.params_shm_id, c.params_shm_offset, &buffer_size); 1633 c.params_shm_id, c.params_shm_offset, &buffer_size);
1690 GLint* params = result ? result->GetData() : NULL; 1634 GLint* params = result ? result->GetData() : NULL;
1691 if (params == NULL) { 1635 if (params == NULL) {
1692 return error::kOutOfBounds; 1636 return error::kOutOfBounds;
1693 } 1637 }
1694 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1638 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1695 GLsizei written_values = 0; 1639 GLsizei written_values = 0;
1696 GLsizei* length = &written_values; 1640 GLsizei* length = &written_values;
1697 error::Error error = 1641 error::Error error =
1698 DoGetSamplerParameteriv(sampler, pname, bufsize, length, params); 1642 DoGetSamplerParameteriv(sampler, pname, bufsize, length, params);
1699 if (error != error::kNoError) { 1643 if (error != error::kNoError) {
1700 return error; 1644 return error;
1701 } 1645 }
1702 if (written_values > bufsize) { 1646 if (written_values > bufsize) {
1703 return error::kOutOfBounds; 1647 return error::kOutOfBounds;
1704 } 1648 }
1705 result->SetNumResults(written_values); 1649 result->SetNumResults(written_values);
1706 return error::kNoError; 1650 return error::kNoError;
1707 } 1651 }
1708 1652
1709 error::Error GLES2DecoderPassthroughImpl::HandleGetShaderiv( 1653 error::Error GLES2DecoderPassthroughImpl::HandleGetShaderiv(
1710 uint32_t immediate_data_size, 1654 uint32_t immediate_data_size,
1711 const void* cmd_data) { 1655 const volatile void* cmd_data) {
1712 const gles2::cmds::GetShaderiv& c = 1656 const volatile gles2::cmds::GetShaderiv& c =
1713 *static_cast<const gles2::cmds::GetShaderiv*>(cmd_data); 1657 *static_cast<const volatile gles2::cmds::GetShaderiv*>(cmd_data);
1714 (void)c;
1715 GLuint shader = c.shader; 1658 GLuint shader = c.shader;
1716 GLenum pname = static_cast<GLenum>(c.pname); 1659 GLenum pname = static_cast<GLenum>(c.pname);
1717 unsigned int buffer_size = 0; 1660 unsigned int buffer_size = 0;
1718 typedef cmds::GetShaderiv::Result Result; 1661 typedef cmds::GetShaderiv::Result Result;
1719 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1662 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1720 c.params_shm_id, c.params_shm_offset, &buffer_size); 1663 c.params_shm_id, c.params_shm_offset, &buffer_size);
1721 GLint* params = result ? result->GetData() : NULL; 1664 GLint* params = result ? result->GetData() : NULL;
1722 if (params == NULL) { 1665 if (params == NULL) {
1723 return error::kOutOfBounds; 1666 return error::kOutOfBounds;
1724 } 1667 }
1725 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1668 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1726 GLsizei written_values = 0; 1669 GLsizei written_values = 0;
1727 GLsizei* length = &written_values; 1670 GLsizei* length = &written_values;
1728 error::Error error = DoGetShaderiv(shader, pname, bufsize, length, params); 1671 error::Error error = DoGetShaderiv(shader, pname, bufsize, length, params);
1729 if (error != error::kNoError) { 1672 if (error != error::kNoError) {
1730 return error; 1673 return error;
1731 } 1674 }
1732 if (written_values > bufsize) { 1675 if (written_values > bufsize) {
1733 return error::kOutOfBounds; 1676 return error::kOutOfBounds;
1734 } 1677 }
1735 result->SetNumResults(written_values); 1678 result->SetNumResults(written_values);
1736 return error::kNoError; 1679 return error::kNoError;
1737 } 1680 }
1738 1681
1739 error::Error GLES2DecoderPassthroughImpl::HandleGetSynciv( 1682 error::Error GLES2DecoderPassthroughImpl::HandleGetSynciv(
1740 uint32_t immediate_data_size, 1683 uint32_t immediate_data_size,
1741 const void* cmd_data) { 1684 const volatile void* cmd_data) {
1742 const gles2::cmds::GetSynciv& c = 1685 const volatile gles2::cmds::GetSynciv& c =
1743 *static_cast<const gles2::cmds::GetSynciv*>(cmd_data); 1686 *static_cast<const volatile gles2::cmds::GetSynciv*>(cmd_data);
1744 (void)c;
1745 GLuint sync = static_cast<GLuint>(c.sync); 1687 GLuint sync = static_cast<GLuint>(c.sync);
1746 GLenum pname = static_cast<GLenum>(c.pname); 1688 GLenum pname = static_cast<GLenum>(c.pname);
1747 unsigned int buffer_size = 0; 1689 unsigned int buffer_size = 0;
1748 typedef cmds::GetSynciv::Result Result; 1690 typedef cmds::GetSynciv::Result Result;
1749 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1691 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1750 c.values_shm_id, c.values_shm_offset, &buffer_size); 1692 c.values_shm_id, c.values_shm_offset, &buffer_size);
1751 GLint* values = result ? result->GetData() : NULL; 1693 GLint* values = result ? result->GetData() : NULL;
1752 if (values == NULL) { 1694 if (values == NULL) {
1753 return error::kOutOfBounds; 1695 return error::kOutOfBounds;
1754 } 1696 }
1755 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1697 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1756 GLsizei written_values = 0; 1698 GLsizei written_values = 0;
1757 GLsizei* length = &written_values; 1699 GLsizei* length = &written_values;
1758 error::Error error = DoGetSynciv(sync, pname, bufsize, length, values); 1700 error::Error error = DoGetSynciv(sync, pname, bufsize, length, values);
1759 if (error != error::kNoError) { 1701 if (error != error::kNoError) {
1760 return error; 1702 return error;
1761 } 1703 }
1762 if (written_values > bufsize) { 1704 if (written_values > bufsize) {
1763 return error::kOutOfBounds; 1705 return error::kOutOfBounds;
1764 } 1706 }
1765 result->SetNumResults(written_values); 1707 result->SetNumResults(written_values);
1766 return error::kNoError; 1708 return error::kNoError;
1767 } 1709 }
1768 1710
1769 error::Error GLES2DecoderPassthroughImpl::HandleGetTexParameterfv( 1711 error::Error GLES2DecoderPassthroughImpl::HandleGetTexParameterfv(
1770 uint32_t immediate_data_size, 1712 uint32_t immediate_data_size,
1771 const void* cmd_data) { 1713 const volatile void* cmd_data) {
1772 const gles2::cmds::GetTexParameterfv& c = 1714 const volatile gles2::cmds::GetTexParameterfv& c =
1773 *static_cast<const gles2::cmds::GetTexParameterfv*>(cmd_data); 1715 *static_cast<const volatile gles2::cmds::GetTexParameterfv*>(cmd_data);
1774 (void)c;
1775 GLenum target = static_cast<GLenum>(c.target); 1716 GLenum target = static_cast<GLenum>(c.target);
1776 GLenum pname = static_cast<GLenum>(c.pname); 1717 GLenum pname = static_cast<GLenum>(c.pname);
1777 unsigned int buffer_size = 0; 1718 unsigned int buffer_size = 0;
1778 typedef cmds::GetTexParameterfv::Result Result; 1719 typedef cmds::GetTexParameterfv::Result Result;
1779 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1720 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1780 c.params_shm_id, c.params_shm_offset, &buffer_size); 1721 c.params_shm_id, c.params_shm_offset, &buffer_size);
1781 GLfloat* params = result ? result->GetData() : NULL; 1722 GLfloat* params = result ? result->GetData() : NULL;
1782 if (params == NULL) { 1723 if (params == NULL) {
1783 return error::kOutOfBounds; 1724 return error::kOutOfBounds;
1784 } 1725 }
1785 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1726 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1786 GLsizei written_values = 0; 1727 GLsizei written_values = 0;
1787 GLsizei* length = &written_values; 1728 GLsizei* length = &written_values;
1788 error::Error error = 1729 error::Error error =
1789 DoGetTexParameterfv(target, pname, bufsize, length, params); 1730 DoGetTexParameterfv(target, pname, bufsize, length, params);
1790 if (error != error::kNoError) { 1731 if (error != error::kNoError) {
1791 return error; 1732 return error;
1792 } 1733 }
1793 if (written_values > bufsize) { 1734 if (written_values > bufsize) {
1794 return error::kOutOfBounds; 1735 return error::kOutOfBounds;
1795 } 1736 }
1796 result->SetNumResults(written_values); 1737 result->SetNumResults(written_values);
1797 return error::kNoError; 1738 return error::kNoError;
1798 } 1739 }
1799 1740
1800 error::Error GLES2DecoderPassthroughImpl::HandleGetTexParameteriv( 1741 error::Error GLES2DecoderPassthroughImpl::HandleGetTexParameteriv(
1801 uint32_t immediate_data_size, 1742 uint32_t immediate_data_size,
1802 const void* cmd_data) { 1743 const volatile void* cmd_data) {
1803 const gles2::cmds::GetTexParameteriv& c = 1744 const volatile gles2::cmds::GetTexParameteriv& c =
1804 *static_cast<const gles2::cmds::GetTexParameteriv*>(cmd_data); 1745 *static_cast<const volatile gles2::cmds::GetTexParameteriv*>(cmd_data);
1805 (void)c;
1806 GLenum target = static_cast<GLenum>(c.target); 1746 GLenum target = static_cast<GLenum>(c.target);
1807 GLenum pname = static_cast<GLenum>(c.pname); 1747 GLenum pname = static_cast<GLenum>(c.pname);
1808 unsigned int buffer_size = 0; 1748 unsigned int buffer_size = 0;
1809 typedef cmds::GetTexParameteriv::Result Result; 1749 typedef cmds::GetTexParameteriv::Result Result;
1810 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1750 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1811 c.params_shm_id, c.params_shm_offset, &buffer_size); 1751 c.params_shm_id, c.params_shm_offset, &buffer_size);
1812 GLint* params = result ? result->GetData() : NULL; 1752 GLint* params = result ? result->GetData() : NULL;
1813 if (params == NULL) { 1753 if (params == NULL) {
1814 return error::kOutOfBounds; 1754 return error::kOutOfBounds;
1815 } 1755 }
1816 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1756 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1817 GLsizei written_values = 0; 1757 GLsizei written_values = 0;
1818 GLsizei* length = &written_values; 1758 GLsizei* length = &written_values;
1819 error::Error error = 1759 error::Error error =
1820 DoGetTexParameteriv(target, pname, bufsize, length, params); 1760 DoGetTexParameteriv(target, pname, bufsize, length, params);
1821 if (error != error::kNoError) { 1761 if (error != error::kNoError) {
1822 return error; 1762 return error;
1823 } 1763 }
1824 if (written_values > bufsize) { 1764 if (written_values > bufsize) {
1825 return error::kOutOfBounds; 1765 return error::kOutOfBounds;
1826 } 1766 }
1827 result->SetNumResults(written_values); 1767 result->SetNumResults(written_values);
1828 return error::kNoError; 1768 return error::kNoError;
1829 } 1769 }
1830 1770
1831 error::Error GLES2DecoderPassthroughImpl::HandleGetVertexAttribfv( 1771 error::Error GLES2DecoderPassthroughImpl::HandleGetVertexAttribfv(
1832 uint32_t immediate_data_size, 1772 uint32_t immediate_data_size,
1833 const void* cmd_data) { 1773 const volatile void* cmd_data) {
1834 const gles2::cmds::GetVertexAttribfv& c = 1774 const volatile gles2::cmds::GetVertexAttribfv& c =
1835 *static_cast<const gles2::cmds::GetVertexAttribfv*>(cmd_data); 1775 *static_cast<const volatile gles2::cmds::GetVertexAttribfv*>(cmd_data);
1836 (void)c;
1837 GLuint index = static_cast<GLuint>(c.index); 1776 GLuint index = static_cast<GLuint>(c.index);
1838 GLenum pname = static_cast<GLenum>(c.pname); 1777 GLenum pname = static_cast<GLenum>(c.pname);
1839 unsigned int buffer_size = 0; 1778 unsigned int buffer_size = 0;
1840 typedef cmds::GetVertexAttribfv::Result Result; 1779 typedef cmds::GetVertexAttribfv::Result Result;
1841 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1780 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1842 c.params_shm_id, c.params_shm_offset, &buffer_size); 1781 c.params_shm_id, c.params_shm_offset, &buffer_size);
1843 GLfloat* params = result ? result->GetData() : NULL; 1782 GLfloat* params = result ? result->GetData() : NULL;
1844 if (params == NULL) { 1783 if (params == NULL) {
1845 return error::kOutOfBounds; 1784 return error::kOutOfBounds;
1846 } 1785 }
1847 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1786 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1848 GLsizei written_values = 0; 1787 GLsizei written_values = 0;
1849 GLsizei* length = &written_values; 1788 GLsizei* length = &written_values;
1850 error::Error error = 1789 error::Error error =
1851 DoGetVertexAttribfv(index, pname, bufsize, length, params); 1790 DoGetVertexAttribfv(index, pname, bufsize, length, params);
1852 if (error != error::kNoError) { 1791 if (error != error::kNoError) {
1853 return error; 1792 return error;
1854 } 1793 }
1855 if (written_values > bufsize) { 1794 if (written_values > bufsize) {
1856 return error::kOutOfBounds; 1795 return error::kOutOfBounds;
1857 } 1796 }
1858 result->SetNumResults(written_values); 1797 result->SetNumResults(written_values);
1859 return error::kNoError; 1798 return error::kNoError;
1860 } 1799 }
1861 1800
1862 error::Error GLES2DecoderPassthroughImpl::HandleGetVertexAttribiv( 1801 error::Error GLES2DecoderPassthroughImpl::HandleGetVertexAttribiv(
1863 uint32_t immediate_data_size, 1802 uint32_t immediate_data_size,
1864 const void* cmd_data) { 1803 const volatile void* cmd_data) {
1865 const gles2::cmds::GetVertexAttribiv& c = 1804 const volatile gles2::cmds::GetVertexAttribiv& c =
1866 *static_cast<const gles2::cmds::GetVertexAttribiv*>(cmd_data); 1805 *static_cast<const volatile gles2::cmds::GetVertexAttribiv*>(cmd_data);
1867 (void)c;
1868 GLuint index = static_cast<GLuint>(c.index); 1806 GLuint index = static_cast<GLuint>(c.index);
1869 GLenum pname = static_cast<GLenum>(c.pname); 1807 GLenum pname = static_cast<GLenum>(c.pname);
1870 unsigned int buffer_size = 0; 1808 unsigned int buffer_size = 0;
1871 typedef cmds::GetVertexAttribiv::Result Result; 1809 typedef cmds::GetVertexAttribiv::Result Result;
1872 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1810 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1873 c.params_shm_id, c.params_shm_offset, &buffer_size); 1811 c.params_shm_id, c.params_shm_offset, &buffer_size);
1874 GLint* params = result ? result->GetData() : NULL; 1812 GLint* params = result ? result->GetData() : NULL;
1875 if (params == NULL) { 1813 if (params == NULL) {
1876 return error::kOutOfBounds; 1814 return error::kOutOfBounds;
1877 } 1815 }
1878 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1816 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1879 GLsizei written_values = 0; 1817 GLsizei written_values = 0;
1880 GLsizei* length = &written_values; 1818 GLsizei* length = &written_values;
1881 error::Error error = 1819 error::Error error =
1882 DoGetVertexAttribiv(index, pname, bufsize, length, params); 1820 DoGetVertexAttribiv(index, pname, bufsize, length, params);
1883 if (error != error::kNoError) { 1821 if (error != error::kNoError) {
1884 return error; 1822 return error;
1885 } 1823 }
1886 if (written_values > bufsize) { 1824 if (written_values > bufsize) {
1887 return error::kOutOfBounds; 1825 return error::kOutOfBounds;
1888 } 1826 }
1889 result->SetNumResults(written_values); 1827 result->SetNumResults(written_values);
1890 return error::kNoError; 1828 return error::kNoError;
1891 } 1829 }
1892 1830
1893 error::Error GLES2DecoderPassthroughImpl::HandleGetVertexAttribIiv( 1831 error::Error GLES2DecoderPassthroughImpl::HandleGetVertexAttribIiv(
1894 uint32_t immediate_data_size, 1832 uint32_t immediate_data_size,
1895 const void* cmd_data) { 1833 const volatile void* cmd_data) {
1896 const gles2::cmds::GetVertexAttribIiv& c = 1834 const volatile gles2::cmds::GetVertexAttribIiv& c =
1897 *static_cast<const gles2::cmds::GetVertexAttribIiv*>(cmd_data); 1835 *static_cast<const volatile gles2::cmds::GetVertexAttribIiv*>(cmd_data);
1898 (void)c;
1899 GLuint index = static_cast<GLuint>(c.index); 1836 GLuint index = static_cast<GLuint>(c.index);
1900 GLenum pname = static_cast<GLenum>(c.pname); 1837 GLenum pname = static_cast<GLenum>(c.pname);
1901 unsigned int buffer_size = 0; 1838 unsigned int buffer_size = 0;
1902 typedef cmds::GetVertexAttribIiv::Result Result; 1839 typedef cmds::GetVertexAttribIiv::Result Result;
1903 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1840 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1904 c.params_shm_id, c.params_shm_offset, &buffer_size); 1841 c.params_shm_id, c.params_shm_offset, &buffer_size);
1905 GLint* params = result ? result->GetData() : NULL; 1842 GLint* params = result ? result->GetData() : NULL;
1906 if (params == NULL) { 1843 if (params == NULL) {
1907 return error::kOutOfBounds; 1844 return error::kOutOfBounds;
1908 } 1845 }
1909 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1846 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1910 GLsizei written_values = 0; 1847 GLsizei written_values = 0;
1911 GLsizei* length = &written_values; 1848 GLsizei* length = &written_values;
1912 error::Error error = 1849 error::Error error =
1913 DoGetVertexAttribIiv(index, pname, bufsize, length, params); 1850 DoGetVertexAttribIiv(index, pname, bufsize, length, params);
1914 if (error != error::kNoError) { 1851 if (error != error::kNoError) {
1915 return error; 1852 return error;
1916 } 1853 }
1917 if (written_values > bufsize) { 1854 if (written_values > bufsize) {
1918 return error::kOutOfBounds; 1855 return error::kOutOfBounds;
1919 } 1856 }
1920 result->SetNumResults(written_values); 1857 result->SetNumResults(written_values);
1921 return error::kNoError; 1858 return error::kNoError;
1922 } 1859 }
1923 1860
1924 error::Error GLES2DecoderPassthroughImpl::HandleGetVertexAttribIuiv( 1861 error::Error GLES2DecoderPassthroughImpl::HandleGetVertexAttribIuiv(
1925 uint32_t immediate_data_size, 1862 uint32_t immediate_data_size,
1926 const void* cmd_data) { 1863 const volatile void* cmd_data) {
1927 const gles2::cmds::GetVertexAttribIuiv& c = 1864 const volatile gles2::cmds::GetVertexAttribIuiv& c =
1928 *static_cast<const gles2::cmds::GetVertexAttribIuiv*>(cmd_data); 1865 *static_cast<const volatile gles2::cmds::GetVertexAttribIuiv*>(cmd_data);
1929 (void)c;
1930 GLuint index = static_cast<GLuint>(c.index); 1866 GLuint index = static_cast<GLuint>(c.index);
1931 GLenum pname = static_cast<GLenum>(c.pname); 1867 GLenum pname = static_cast<GLenum>(c.pname);
1932 unsigned int buffer_size = 0; 1868 unsigned int buffer_size = 0;
1933 typedef cmds::GetVertexAttribIuiv::Result Result; 1869 typedef cmds::GetVertexAttribIuiv::Result Result;
1934 Result* result = GetSharedMemoryAndSizeAs<Result*>( 1870 Result* result = GetSharedMemoryAndSizeAs<Result*>(
1935 c.params_shm_id, c.params_shm_offset, &buffer_size); 1871 c.params_shm_id, c.params_shm_offset, &buffer_size);
1936 GLuint* params = result ? result->GetData() : NULL; 1872 GLuint* params = result ? result->GetData() : NULL;
1937 if (params == NULL) { 1873 if (params == NULL) {
1938 return error::kOutOfBounds; 1874 return error::kOutOfBounds;
1939 } 1875 }
1940 GLsizei bufsize = Result::ComputeMaxResults(buffer_size); 1876 GLsizei bufsize = Result::ComputeMaxResults(buffer_size);
1941 GLsizei written_values = 0; 1877 GLsizei written_values = 0;
1942 GLsizei* length = &written_values; 1878 GLsizei* length = &written_values;
1943 error::Error error = 1879 error::Error error =
1944 DoGetVertexAttribIuiv(index, pname, bufsize, length, params); 1880 DoGetVertexAttribIuiv(index, pname, bufsize, length, params);
1945 if (error != error::kNoError) { 1881 if (error != error::kNoError) {
1946 return error; 1882 return error;
1947 } 1883 }
1948 if (written_values > bufsize) { 1884 if (written_values > bufsize) {
1949 return error::kOutOfBounds; 1885 return error::kOutOfBounds;
1950 } 1886 }
1951 result->SetNumResults(written_values); 1887 result->SetNumResults(written_values);
1952 return error::kNoError; 1888 return error::kNoError;
1953 } 1889 }
1954 1890
1955 error::Error GLES2DecoderPassthroughImpl::HandleHint( 1891 error::Error GLES2DecoderPassthroughImpl::HandleHint(
1956 uint32_t immediate_data_size, 1892 uint32_t immediate_data_size,
1957 const void* cmd_data) { 1893 const volatile void* cmd_data) {
1958 const gles2::cmds::Hint& c = *static_cast<const gles2::cmds::Hint*>(cmd_data); 1894 const volatile gles2::cmds::Hint& c =
1959 (void)c; 1895 *static_cast<const volatile gles2::cmds::Hint*>(cmd_data);
1960 GLenum target = static_cast<GLenum>(c.target); 1896 GLenum target = static_cast<GLenum>(c.target);
1961 GLenum mode = static_cast<GLenum>(c.mode); 1897 GLenum mode = static_cast<GLenum>(c.mode);
1962 error::Error error = DoHint(target, mode); 1898 error::Error error = DoHint(target, mode);
1963 if (error != error::kNoError) { 1899 if (error != error::kNoError) {
1964 return error; 1900 return error;
1965 } 1901 }
1966 return error::kNoError; 1902 return error::kNoError;
1967 } 1903 }
1968 1904
1969 error::Error GLES2DecoderPassthroughImpl::HandleInvalidateFramebufferImmediate( 1905 error::Error GLES2DecoderPassthroughImpl::HandleInvalidateFramebufferImmediate(
1970 uint32_t immediate_data_size, 1906 uint32_t immediate_data_size,
1971 const void* cmd_data) { 1907 const volatile void* cmd_data) {
1972 const gles2::cmds::InvalidateFramebufferImmediate& c = 1908 const volatile gles2::cmds::InvalidateFramebufferImmediate& c =
1973 *static_cast<const gles2::cmds::InvalidateFramebufferImmediate*>( 1909 *static_cast<const volatile gles2::cmds::InvalidateFramebufferImmediate*>(
1974 cmd_data); 1910 cmd_data);
1975 (void)c;
1976 GLenum target = static_cast<GLenum>(c.target); 1911 GLenum target = static_cast<GLenum>(c.target);
1977 GLsizei count = static_cast<GLsizei>(c.count); 1912 GLsizei count = static_cast<GLsizei>(c.count);
1978 uint32_t data_size = 0; 1913 uint32_t data_size = 0;
1979 if (count >= 0 && 1914 if (count >= 0 &&
1980 !GLES2Util::ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { 1915 !GLES2Util::ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) {
1981 return error::kOutOfBounds; 1916 return error::kOutOfBounds;
1982 } 1917 }
1983 if (data_size > immediate_data_size) { 1918 if (data_size > immediate_data_size) {
1984 return error::kOutOfBounds; 1919 return error::kOutOfBounds;
1985 } 1920 }
1986 const GLenum* attachments = 1921 volatile const GLenum* attachments =
1987 GetImmediateDataAs<const GLenum*>(c, data_size, immediate_data_size); 1922 GetImmediateDataAs<volatile const GLenum*>(c, data_size,
1923 immediate_data_size);
1988 error::Error error = DoInvalidateFramebuffer(target, count, attachments); 1924 error::Error error = DoInvalidateFramebuffer(target, count, attachments);
1989 if (error != error::kNoError) { 1925 if (error != error::kNoError) {
1990 return error; 1926 return error;
1991 } 1927 }
1992 return error::kNoError; 1928 return error::kNoError;
1993 } 1929 }
1994 1930
1995 error::Error 1931 error::Error
1996 GLES2DecoderPassthroughImpl::HandleInvalidateSubFramebufferImmediate( 1932 GLES2DecoderPassthroughImpl::HandleInvalidateSubFramebufferImmediate(
1997 uint32_t immediate_data_size, 1933 uint32_t immediate_data_size,
1998 const void* cmd_data) { 1934 const volatile void* cmd_data) {
1999 const gles2::cmds::InvalidateSubFramebufferImmediate& c = 1935 const volatile gles2::cmds::InvalidateSubFramebufferImmediate& c =
2000 *static_cast<const gles2::cmds::InvalidateSubFramebufferImmediate*>( 1936 *static_cast<
1937 const volatile gles2::cmds::InvalidateSubFramebufferImmediate*>(
2001 cmd_data); 1938 cmd_data);
2002 (void)c;
2003 GLenum target = static_cast<GLenum>(c.target); 1939 GLenum target = static_cast<GLenum>(c.target);
2004 GLsizei count = static_cast<GLsizei>(c.count); 1940 GLsizei count = static_cast<GLsizei>(c.count);
2005 uint32_t data_size = 0; 1941 uint32_t data_size = 0;
2006 if (count >= 0 && 1942 if (count >= 0 &&
2007 !GLES2Util::ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { 1943 !GLES2Util::ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) {
2008 return error::kOutOfBounds; 1944 return error::kOutOfBounds;
2009 } 1945 }
2010 if (data_size > immediate_data_size) { 1946 if (data_size > immediate_data_size) {
2011 return error::kOutOfBounds; 1947 return error::kOutOfBounds;
2012 } 1948 }
2013 const GLenum* attachments = 1949 volatile const GLenum* attachments =
2014 GetImmediateDataAs<const GLenum*>(c, data_size, immediate_data_size); 1950 GetImmediateDataAs<volatile const GLenum*>(c, data_size,
1951 immediate_data_size);
2015 GLint x = static_cast<GLint>(c.x); 1952 GLint x = static_cast<GLint>(c.x);
2016 GLint y = static_cast<GLint>(c.y); 1953 GLint y = static_cast<GLint>(c.y);
2017 GLsizei width = static_cast<GLsizei>(c.width); 1954 GLsizei width = static_cast<GLsizei>(c.width);
2018 GLsizei height = static_cast<GLsizei>(c.height); 1955 GLsizei height = static_cast<GLsizei>(c.height);
2019 error::Error error = DoInvalidateSubFramebuffer(target, count, attachments, x, 1956 error::Error error = DoInvalidateSubFramebuffer(target, count, attachments, x,
2020 y, width, height); 1957 y, width, height);
2021 if (error != error::kNoError) { 1958 if (error != error::kNoError) {
2022 return error; 1959 return error;
2023 } 1960 }
2024 return error::kNoError; 1961 return error::kNoError;
2025 } 1962 }
2026 1963
2027 error::Error GLES2DecoderPassthroughImpl::HandleIsBuffer( 1964 error::Error GLES2DecoderPassthroughImpl::HandleIsBuffer(
2028 uint32_t immediate_data_size, 1965 uint32_t immediate_data_size,
2029 const void* cmd_data) { 1966 const volatile void* cmd_data) {
2030 const gles2::cmds::IsBuffer& c = 1967 const volatile gles2::cmds::IsBuffer& c =
2031 *static_cast<const gles2::cmds::IsBuffer*>(cmd_data); 1968 *static_cast<const volatile gles2::cmds::IsBuffer*>(cmd_data);
2032 (void)c;
2033 GLuint buffer = c.buffer; 1969 GLuint buffer = c.buffer;
2034 typedef cmds::IsBuffer::Result Result; 1970 typedef cmds::IsBuffer::Result Result;
2035 Result* result = GetSharedMemoryAs<Result*>( 1971 Result* result = GetSharedMemoryAs<Result*>(
2036 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 1972 c.result_shm_id, c.result_shm_offset, sizeof(*result));
2037 if (!result) { 1973 if (!result) {
2038 return error::kOutOfBounds; 1974 return error::kOutOfBounds;
2039 } 1975 }
2040 error::Error error = DoIsBuffer(buffer, result); 1976 error::Error error = DoIsBuffer(buffer, result);
2041 if (error != error::kNoError) { 1977 if (error != error::kNoError) {
2042 return error; 1978 return error;
2043 } 1979 }
2044 return error::kNoError; 1980 return error::kNoError;
2045 } 1981 }
2046 1982
2047 error::Error GLES2DecoderPassthroughImpl::HandleIsEnabled( 1983 error::Error GLES2DecoderPassthroughImpl::HandleIsEnabled(
2048 uint32_t immediate_data_size, 1984 uint32_t immediate_data_size,
2049 const void* cmd_data) { 1985 const volatile void* cmd_data) {
2050 const gles2::cmds::IsEnabled& c = 1986 const volatile gles2::cmds::IsEnabled& c =
2051 *static_cast<const gles2::cmds::IsEnabled*>(cmd_data); 1987 *static_cast<const volatile gles2::cmds::IsEnabled*>(cmd_data);
2052 (void)c;
2053 GLenum cap = static_cast<GLenum>(c.cap); 1988 GLenum cap = static_cast<GLenum>(c.cap);
2054 typedef cmds::IsEnabled::Result Result; 1989 typedef cmds::IsEnabled::Result Result;
2055 Result* result = GetSharedMemoryAs<Result*>( 1990 Result* result = GetSharedMemoryAs<Result*>(
2056 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 1991 c.result_shm_id, c.result_shm_offset, sizeof(*result));
2057 if (!result) { 1992 if (!result) {
2058 return error::kOutOfBounds; 1993 return error::kOutOfBounds;
2059 } 1994 }
2060 error::Error error = DoIsEnabled(cap, result); 1995 error::Error error = DoIsEnabled(cap, result);
2061 if (error != error::kNoError) { 1996 if (error != error::kNoError) {
2062 return error; 1997 return error;
2063 } 1998 }
2064 return error::kNoError; 1999 return error::kNoError;
2065 } 2000 }
2066 2001
2067 error::Error GLES2DecoderPassthroughImpl::HandleIsFramebuffer( 2002 error::Error GLES2DecoderPassthroughImpl::HandleIsFramebuffer(
2068 uint32_t immediate_data_size, 2003 uint32_t immediate_data_size,
2069 const void* cmd_data) { 2004 const volatile void* cmd_data) {
2070 const gles2::cmds::IsFramebuffer& c = 2005 const volatile gles2::cmds::IsFramebuffer& c =
2071 *static_cast<const gles2::cmds::IsFramebuffer*>(cmd_data); 2006 *static_cast<const volatile gles2::cmds::IsFramebuffer*>(cmd_data);
2072 (void)c;
2073 GLuint framebuffer = c.framebuffer; 2007 GLuint framebuffer = c.framebuffer;
2074 typedef cmds::IsFramebuffer::Result Result; 2008 typedef cmds::IsFramebuffer::Result Result;
2075 Result* result = GetSharedMemoryAs<Result*>( 2009 Result* result = GetSharedMemoryAs<Result*>(
2076 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 2010 c.result_shm_id, c.result_shm_offset, sizeof(*result));
2077 if (!result) { 2011 if (!result) {
2078 return error::kOutOfBounds; 2012 return error::kOutOfBounds;
2079 } 2013 }
2080 error::Error error = DoIsFramebuffer(framebuffer, result); 2014 error::Error error = DoIsFramebuffer(framebuffer, result);
2081 if (error != error::kNoError) { 2015 if (error != error::kNoError) {
2082 return error; 2016 return error;
2083 } 2017 }
2084 return error::kNoError; 2018 return error::kNoError;
2085 } 2019 }
2086 2020
2087 error::Error GLES2DecoderPassthroughImpl::HandleIsProgram( 2021 error::Error GLES2DecoderPassthroughImpl::HandleIsProgram(
2088 uint32_t immediate_data_size, 2022 uint32_t immediate_data_size,
2089 const void* cmd_data) { 2023 const volatile void* cmd_data) {
2090 const gles2::cmds::IsProgram& c = 2024 const volatile gles2::cmds::IsProgram& c =
2091 *static_cast<const gles2::cmds::IsProgram*>(cmd_data); 2025 *static_cast<const volatile gles2::cmds::IsProgram*>(cmd_data);
2092 (void)c;
2093 GLuint program = c.program; 2026 GLuint program = c.program;
2094 typedef cmds::IsProgram::Result Result; 2027 typedef cmds::IsProgram::Result Result;
2095 Result* result = GetSharedMemoryAs<Result*>( 2028 Result* result = GetSharedMemoryAs<Result*>(
2096 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 2029 c.result_shm_id, c.result_shm_offset, sizeof(*result));
2097 if (!result) { 2030 if (!result) {
2098 return error::kOutOfBounds; 2031 return error::kOutOfBounds;
2099 } 2032 }
2100 error::Error error = DoIsProgram(program, result); 2033 error::Error error = DoIsProgram(program, result);
2101 if (error != error::kNoError) { 2034 if (error != error::kNoError) {
2102 return error; 2035 return error;
2103 } 2036 }
2104 return error::kNoError; 2037 return error::kNoError;
2105 } 2038 }
2106 2039
2107 error::Error GLES2DecoderPassthroughImpl::HandleIsRenderbuffer( 2040 error::Error GLES2DecoderPassthroughImpl::HandleIsRenderbuffer(
2108 uint32_t immediate_data_size, 2041 uint32_t immediate_data_size,
2109 const void* cmd_data) { 2042 const volatile void* cmd_data) {
2110 const gles2::cmds::IsRenderbuffer& c = 2043 const volatile gles2::cmds::IsRenderbuffer& c =
2111 *static_cast<const gles2::cmds::IsRenderbuffer*>(cmd_data); 2044 *static_cast<const volatile gles2::cmds::IsRenderbuffer*>(cmd_data);
2112 (void)c;
2113 GLuint renderbuffer = c.renderbuffer; 2045 GLuint renderbuffer = c.renderbuffer;
2114 typedef cmds::IsRenderbuffer::Result Result; 2046 typedef cmds::IsRenderbuffer::Result Result;
2115 Result* result = GetSharedMemoryAs<Result*>( 2047 Result* result = GetSharedMemoryAs<Result*>(
2116 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 2048 c.result_shm_id, c.result_shm_offset, sizeof(*result));
2117 if (!result) { 2049 if (!result) {
2118 return error::kOutOfBounds; 2050 return error::kOutOfBounds;
2119 } 2051 }
2120 error::Error error = DoIsRenderbuffer(renderbuffer, result); 2052 error::Error error = DoIsRenderbuffer(renderbuffer, result);
2121 if (error != error::kNoError) { 2053 if (error != error::kNoError) {
2122 return error; 2054 return error;
2123 } 2055 }
2124 return error::kNoError; 2056 return error::kNoError;
2125 } 2057 }
2126 2058
2127 error::Error GLES2DecoderPassthroughImpl::HandleIsSampler( 2059 error::Error GLES2DecoderPassthroughImpl::HandleIsSampler(
2128 uint32_t immediate_data_size, 2060 uint32_t immediate_data_size,
2129 const void* cmd_data) { 2061 const volatile void* cmd_data) {
2130 const gles2::cmds::IsSampler& c = 2062 const volatile gles2::cmds::IsSampler& c =
2131 *static_cast<const gles2::cmds::IsSampler*>(cmd_data); 2063 *static_cast<const volatile gles2::cmds::IsSampler*>(cmd_data);
2132 (void)c;
2133 GLuint sampler = c.sampler; 2064 GLuint sampler = c.sampler;
2134 typedef cmds::IsSampler::Result Result; 2065 typedef cmds::IsSampler::Result Result;
2135 Result* result = GetSharedMemoryAs<Result*>( 2066 Result* result = GetSharedMemoryAs<Result*>(
2136 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 2067 c.result_shm_id, c.result_shm_offset, sizeof(*result));
2137 if (!result) { 2068 if (!result) {
2138 return error::kOutOfBounds; 2069 return error::kOutOfBounds;
2139 } 2070 }
2140 error::Error error = DoIsSampler(sampler, result); 2071 error::Error error = DoIsSampler(sampler, result);
2141 if (error != error::kNoError) { 2072 if (error != error::kNoError) {
2142 return error; 2073 return error;
2143 } 2074 }
2144 return error::kNoError; 2075 return error::kNoError;
2145 } 2076 }
2146 2077
2147 error::Error GLES2DecoderPassthroughImpl::HandleIsShader( 2078 error::Error GLES2DecoderPassthroughImpl::HandleIsShader(
2148 uint32_t immediate_data_size, 2079 uint32_t immediate_data_size,
2149 const void* cmd_data) { 2080 const volatile void* cmd_data) {
2150 const gles2::cmds::IsShader& c = 2081 const volatile gles2::cmds::IsShader& c =
2151 *static_cast<const gles2::cmds::IsShader*>(cmd_data); 2082 *static_cast<const volatile gles2::cmds::IsShader*>(cmd_data);
2152 (void)c;
2153 GLuint shader = c.shader; 2083 GLuint shader = c.shader;
2154 typedef cmds::IsShader::Result Result; 2084 typedef cmds::IsShader::Result Result;
2155 Result* result = GetSharedMemoryAs<Result*>( 2085 Result* result = GetSharedMemoryAs<Result*>(
2156 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 2086 c.result_shm_id, c.result_shm_offset, sizeof(*result));
2157 if (!result) { 2087 if (!result) {
2158 return error::kOutOfBounds; 2088 return error::kOutOfBounds;
2159 } 2089 }
2160 error::Error error = DoIsShader(shader, result); 2090 error::Error error = DoIsShader(shader, result);
2161 if (error != error::kNoError) { 2091 if (error != error::kNoError) {
2162 return error; 2092 return error;
2163 } 2093 }
2164 return error::kNoError; 2094 return error::kNoError;
2165 } 2095 }
2166 2096
2167 error::Error GLES2DecoderPassthroughImpl::HandleIsSync( 2097 error::Error GLES2DecoderPassthroughImpl::HandleIsSync(
2168 uint32_t immediate_data_size, 2098 uint32_t immediate_data_size,
2169 const void* cmd_data) { 2099 const volatile void* cmd_data) {
2170 const gles2::cmds::IsSync& c = 2100 const volatile gles2::cmds::IsSync& c =
2171 *static_cast<const gles2::cmds::IsSync*>(cmd_data); 2101 *static_cast<const volatile gles2::cmds::IsSync*>(cmd_data);
2172 (void)c;
2173 GLuint sync = c.sync; 2102 GLuint sync = c.sync;
2174 typedef cmds::IsSync::Result Result; 2103 typedef cmds::IsSync::Result Result;
2175 Result* result = GetSharedMemoryAs<Result*>( 2104 Result* result = GetSharedMemoryAs<Result*>(
2176 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 2105 c.result_shm_id, c.result_shm_offset, sizeof(*result));
2177 if (!result) { 2106 if (!result) {
2178 return error::kOutOfBounds; 2107 return error::kOutOfBounds;
2179 } 2108 }
2180 error::Error error = DoIsSync(sync, result); 2109 error::Error error = DoIsSync(sync, result);
2181 if (error != error::kNoError) { 2110 if (error != error::kNoError) {
2182 return error; 2111 return error;
2183 } 2112 }
2184 return error::kNoError; 2113 return error::kNoError;
2185 } 2114 }
2186 2115
2187 error::Error GLES2DecoderPassthroughImpl::HandleIsTexture( 2116 error::Error GLES2DecoderPassthroughImpl::HandleIsTexture(
2188 uint32_t immediate_data_size, 2117 uint32_t immediate_data_size,
2189 const void* cmd_data) { 2118 const volatile void* cmd_data) {
2190 const gles2::cmds::IsTexture& c = 2119 const volatile gles2::cmds::IsTexture& c =
2191 *static_cast<const gles2::cmds::IsTexture*>(cmd_data); 2120 *static_cast<const volatile gles2::cmds::IsTexture*>(cmd_data);
2192 (void)c;
2193 GLuint texture = c.texture; 2121 GLuint texture = c.texture;
2194 typedef cmds::IsTexture::Result Result; 2122 typedef cmds::IsTexture::Result Result;
2195 Result* result = GetSharedMemoryAs<Result*>( 2123 Result* result = GetSharedMemoryAs<Result*>(
2196 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 2124 c.result_shm_id, c.result_shm_offset, sizeof(*result));
2197 if (!result) { 2125 if (!result) {
2198 return error::kOutOfBounds; 2126 return error::kOutOfBounds;
2199 } 2127 }
2200 error::Error error = DoIsTexture(texture, result); 2128 error::Error error = DoIsTexture(texture, result);
2201 if (error != error::kNoError) { 2129 if (error != error::kNoError) {
2202 return error; 2130 return error;
2203 } 2131 }
2204 return error::kNoError; 2132 return error::kNoError;
2205 } 2133 }
2206 2134
2207 error::Error GLES2DecoderPassthroughImpl::HandleIsTransformFeedback( 2135 error::Error GLES2DecoderPassthroughImpl::HandleIsTransformFeedback(
2208 uint32_t immediate_data_size, 2136 uint32_t immediate_data_size,
2209 const void* cmd_data) { 2137 const volatile void* cmd_data) {
2210 const gles2::cmds::IsTransformFeedback& c = 2138 const volatile gles2::cmds::IsTransformFeedback& c =
2211 *static_cast<const gles2::cmds::IsTransformFeedback*>(cmd_data); 2139 *static_cast<const volatile gles2::cmds::IsTransformFeedback*>(cmd_data);
2212 (void)c;
2213 GLuint transformfeedback = c.transformfeedback; 2140 GLuint transformfeedback = c.transformfeedback;
2214 typedef cmds::IsTransformFeedback::Result Result; 2141 typedef cmds::IsTransformFeedback::Result Result;
2215 Result* result = GetSharedMemoryAs<Result*>( 2142 Result* result = GetSharedMemoryAs<Result*>(
2216 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 2143 c.result_shm_id, c.result_shm_offset, sizeof(*result));
2217 if (!result) { 2144 if (!result) {
2218 return error::kOutOfBounds; 2145 return error::kOutOfBounds;
2219 } 2146 }
2220 error::Error error = DoIsTransformFeedback(transformfeedback, result); 2147 error::Error error = DoIsTransformFeedback(transformfeedback, result);
2221 if (error != error::kNoError) { 2148 if (error != error::kNoError) {
2222 return error; 2149 return error;
2223 } 2150 }
2224 return error::kNoError; 2151 return error::kNoError;
2225 } 2152 }
2226 2153
2227 error::Error GLES2DecoderPassthroughImpl::HandleLineWidth( 2154 error::Error GLES2DecoderPassthroughImpl::HandleLineWidth(
2228 uint32_t immediate_data_size, 2155 uint32_t immediate_data_size,
2229 const void* cmd_data) { 2156 const volatile void* cmd_data) {
2230 const gles2::cmds::LineWidth& c = 2157 const volatile gles2::cmds::LineWidth& c =
2231 *static_cast<const gles2::cmds::LineWidth*>(cmd_data); 2158 *static_cast<const volatile gles2::cmds::LineWidth*>(cmd_data);
2232 (void)c;
2233 GLfloat width = static_cast<GLfloat>(c.width); 2159 GLfloat width = static_cast<GLfloat>(c.width);
2234 error::Error error = DoLineWidth(width); 2160 error::Error error = DoLineWidth(width);
2235 if (error != error::kNoError) { 2161 if (error != error::kNoError) {
2236 return error; 2162 return error;
2237 } 2163 }
2238 return error::kNoError; 2164 return error::kNoError;
2239 } 2165 }
2240 2166
2241 error::Error GLES2DecoderPassthroughImpl::HandleLinkProgram( 2167 error::Error GLES2DecoderPassthroughImpl::HandleLinkProgram(
2242 uint32_t immediate_data_size, 2168 uint32_t immediate_data_size,
2243 const void* cmd_data) { 2169 const volatile void* cmd_data) {
2244 const gles2::cmds::LinkProgram& c = 2170 const volatile gles2::cmds::LinkProgram& c =
2245 *static_cast<const gles2::cmds::LinkProgram*>(cmd_data); 2171 *static_cast<const volatile gles2::cmds::LinkProgram*>(cmd_data);
2246 (void)c;
2247 GLuint program = c.program; 2172 GLuint program = c.program;
2248 error::Error error = DoLinkProgram(program); 2173 error::Error error = DoLinkProgram(program);
2249 if (error != error::kNoError) { 2174 if (error != error::kNoError) {
2250 return error; 2175 return error;
2251 } 2176 }
2252 return error::kNoError; 2177 return error::kNoError;
2253 } 2178 }
2254 2179
2255 error::Error GLES2DecoderPassthroughImpl::HandlePauseTransformFeedback( 2180 error::Error GLES2DecoderPassthroughImpl::HandlePauseTransformFeedback(
2256 uint32_t immediate_data_size, 2181 uint32_t immediate_data_size,
2257 const void* cmd_data) { 2182 const volatile void* cmd_data) {
2258 const gles2::cmds::PauseTransformFeedback& c =
2259 *static_cast<const gles2::cmds::PauseTransformFeedback*>(cmd_data);
2260 (void)c;
2261 error::Error error = DoPauseTransformFeedback(); 2183 error::Error error = DoPauseTransformFeedback();
2262 if (error != error::kNoError) { 2184 if (error != error::kNoError) {
2263 return error; 2185 return error;
2264 } 2186 }
2265 return error::kNoError; 2187 return error::kNoError;
2266 } 2188 }
2267 2189
2268 error::Error GLES2DecoderPassthroughImpl::HandlePolygonOffset( 2190 error::Error GLES2DecoderPassthroughImpl::HandlePolygonOffset(
2269 uint32_t immediate_data_size, 2191 uint32_t immediate_data_size,
2270 const void* cmd_data) { 2192 const volatile void* cmd_data) {
2271 const gles2::cmds::PolygonOffset& c = 2193 const volatile gles2::cmds::PolygonOffset& c =
2272 *static_cast<const gles2::cmds::PolygonOffset*>(cmd_data); 2194 *static_cast<const volatile gles2::cmds::PolygonOffset*>(cmd_data);
2273 (void)c;
2274 GLfloat factor = static_cast<GLfloat>(c.factor); 2195 GLfloat factor = static_cast<GLfloat>(c.factor);
2275 GLfloat units = static_cast<GLfloat>(c.units); 2196 GLfloat units = static_cast<GLfloat>(c.units);
2276 error::Error error = DoPolygonOffset(factor, units); 2197 error::Error error = DoPolygonOffset(factor, units);
2277 if (error != error::kNoError) { 2198 if (error != error::kNoError) {
2278 return error; 2199 return error;
2279 } 2200 }
2280 return error::kNoError; 2201 return error::kNoError;
2281 } 2202 }
2282 2203
2283 error::Error GLES2DecoderPassthroughImpl::HandleReadBuffer( 2204 error::Error GLES2DecoderPassthroughImpl::HandleReadBuffer(
2284 uint32_t immediate_data_size, 2205 uint32_t immediate_data_size,
2285 const void* cmd_data) { 2206 const volatile void* cmd_data) {
2286 const gles2::cmds::ReadBuffer& c = 2207 const volatile gles2::cmds::ReadBuffer& c =
2287 *static_cast<const gles2::cmds::ReadBuffer*>(cmd_data); 2208 *static_cast<const volatile gles2::cmds::ReadBuffer*>(cmd_data);
2288 (void)c;
2289 GLenum src = static_cast<GLenum>(c.src); 2209 GLenum src = static_cast<GLenum>(c.src);
2290 error::Error error = DoReadBuffer(src); 2210 error::Error error = DoReadBuffer(src);
2291 if (error != error::kNoError) { 2211 if (error != error::kNoError) {
2292 return error; 2212 return error;
2293 } 2213 }
2294 return error::kNoError; 2214 return error::kNoError;
2295 } 2215 }
2296 2216
2297 error::Error GLES2DecoderPassthroughImpl::HandleReleaseShaderCompiler( 2217 error::Error GLES2DecoderPassthroughImpl::HandleReleaseShaderCompiler(
2298 uint32_t immediate_data_size, 2218 uint32_t immediate_data_size,
2299 const void* cmd_data) { 2219 const volatile void* cmd_data) {
2300 const gles2::cmds::ReleaseShaderCompiler& c =
2301 *static_cast<const gles2::cmds::ReleaseShaderCompiler*>(cmd_data);
2302 (void)c;
2303 error::Error error = DoReleaseShaderCompiler(); 2220 error::Error error = DoReleaseShaderCompiler();
2304 if (error != error::kNoError) { 2221 if (error != error::kNoError) {
2305 return error; 2222 return error;
2306 } 2223 }
2307 return error::kNoError; 2224 return error::kNoError;
2308 } 2225 }
2309 2226
2310 error::Error GLES2DecoderPassthroughImpl::HandleRenderbufferStorage( 2227 error::Error GLES2DecoderPassthroughImpl::HandleRenderbufferStorage(
2311 uint32_t immediate_data_size, 2228 uint32_t immediate_data_size,
2312 const void* cmd_data) { 2229 const volatile void* cmd_data) {
2313 const gles2::cmds::RenderbufferStorage& c = 2230 const volatile gles2::cmds::RenderbufferStorage& c =
2314 *static_cast<const gles2::cmds::RenderbufferStorage*>(cmd_data); 2231 *static_cast<const volatile gles2::cmds::RenderbufferStorage*>(cmd_data);
2315 (void)c;
2316 GLenum target = static_cast<GLenum>(c.target); 2232 GLenum target = static_cast<GLenum>(c.target);
2317 GLenum internalformat = static_cast<GLenum>(c.internalformat); 2233 GLenum internalformat = static_cast<GLenum>(c.internalformat);
2318 GLsizei width = static_cast<GLsizei>(c.width); 2234 GLsizei width = static_cast<GLsizei>(c.width);
2319 GLsizei height = static_cast<GLsizei>(c.height); 2235 GLsizei height = static_cast<GLsizei>(c.height);
2320 error::Error error = 2236 error::Error error =
2321 DoRenderbufferStorage(target, internalformat, width, height); 2237 DoRenderbufferStorage(target, internalformat, width, height);
2322 if (error != error::kNoError) { 2238 if (error != error::kNoError) {
2323 return error; 2239 return error;
2324 } 2240 }
2325 return error::kNoError; 2241 return error::kNoError;
2326 } 2242 }
2327 2243
2328 error::Error GLES2DecoderPassthroughImpl::HandleResumeTransformFeedback( 2244 error::Error GLES2DecoderPassthroughImpl::HandleResumeTransformFeedback(
2329 uint32_t immediate_data_size, 2245 uint32_t immediate_data_size,
2330 const void* cmd_data) { 2246 const volatile void* cmd_data) {
2331 const gles2::cmds::ResumeTransformFeedback& c =
2332 *static_cast<const gles2::cmds::ResumeTransformFeedback*>(cmd_data);
2333 (void)c;
2334 error::Error error = DoResumeTransformFeedback(); 2247 error::Error error = DoResumeTransformFeedback();
2335 if (error != error::kNoError) { 2248 if (error != error::kNoError) {
2336 return error; 2249 return error;
2337 } 2250 }
2338 return error::kNoError; 2251 return error::kNoError;
2339 } 2252 }
2340 2253
2341 error::Error GLES2DecoderPassthroughImpl::HandleSampleCoverage( 2254 error::Error GLES2DecoderPassthroughImpl::HandleSampleCoverage(
2342 uint32_t immediate_data_size, 2255 uint32_t immediate_data_size,
2343 const void* cmd_data) { 2256 const volatile void* cmd_data) {
2344 const gles2::cmds::SampleCoverage& c = 2257 const volatile gles2::cmds::SampleCoverage& c =
2345 *static_cast<const gles2::cmds::SampleCoverage*>(cmd_data); 2258 *static_cast<const volatile gles2::cmds::SampleCoverage*>(cmd_data);
2346 (void)c;
2347 GLclampf value = static_cast<GLclampf>(c.value); 2259 GLclampf value = static_cast<GLclampf>(c.value);
2348 GLboolean invert = static_cast<GLboolean>(c.invert); 2260 GLboolean invert = static_cast<GLboolean>(c.invert);
2349 error::Error error = DoSampleCoverage(value, invert); 2261 error::Error error = DoSampleCoverage(value, invert);
2350 if (error != error::kNoError) { 2262 if (error != error::kNoError) {
2351 return error; 2263 return error;
2352 } 2264 }
2353 return error::kNoError; 2265 return error::kNoError;
2354 } 2266 }
2355 2267
2356 error::Error GLES2DecoderPassthroughImpl::HandleSamplerParameterf( 2268 error::Error GLES2DecoderPassthroughImpl::HandleSamplerParameterf(
2357 uint32_t immediate_data_size, 2269 uint32_t immediate_data_size,
2358 const void* cmd_data) { 2270 const volatile void* cmd_data) {
2359 const gles2::cmds::SamplerParameterf& c = 2271 const volatile gles2::cmds::SamplerParameterf& c =
2360 *static_cast<const gles2::cmds::SamplerParameterf*>(cmd_data); 2272 *static_cast<const volatile gles2::cmds::SamplerParameterf*>(cmd_data);
2361 (void)c;
2362 GLuint sampler = c.sampler; 2273 GLuint sampler = c.sampler;
2363 GLenum pname = static_cast<GLenum>(c.pname); 2274 GLenum pname = static_cast<GLenum>(c.pname);
2364 GLfloat param = static_cast<GLfloat>(c.param); 2275 GLfloat param = static_cast<GLfloat>(c.param);
2365 error::Error error = DoSamplerParameterf(sampler, pname, param); 2276 error::Error error = DoSamplerParameterf(sampler, pname, param);
2366 if (error != error::kNoError) { 2277 if (error != error::kNoError) {
2367 return error; 2278 return error;
2368 } 2279 }
2369 return error::kNoError; 2280 return error::kNoError;
2370 } 2281 }
2371 2282
2372 error::Error GLES2DecoderPassthroughImpl::HandleSamplerParameterfvImmediate( 2283 error::Error GLES2DecoderPassthroughImpl::HandleSamplerParameterfvImmediate(
2373 uint32_t immediate_data_size, 2284 uint32_t immediate_data_size,
2374 const void* cmd_data) { 2285 const volatile void* cmd_data) {
2375 const gles2::cmds::SamplerParameterfvImmediate& c = 2286 const volatile gles2::cmds::SamplerParameterfvImmediate& c =
2376 *static_cast<const gles2::cmds::SamplerParameterfvImmediate*>(cmd_data); 2287 *static_cast<const volatile gles2::cmds::SamplerParameterfvImmediate*>(
2377 (void)c; 2288 cmd_data);
2378 GLuint sampler = c.sampler; 2289 GLuint sampler = c.sampler;
2379 GLenum pname = static_cast<GLenum>(c.pname); 2290 GLenum pname = static_cast<GLenum>(c.pname);
2380 uint32_t data_size; 2291 uint32_t data_size;
2381 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { 2292 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) {
2382 return error::kOutOfBounds; 2293 return error::kOutOfBounds;
2383 } 2294 }
2384 if (data_size > immediate_data_size) { 2295 if (data_size > immediate_data_size) {
2385 return error::kOutOfBounds; 2296 return error::kOutOfBounds;
2386 } 2297 }
2387 const GLfloat* params = 2298 volatile const GLfloat* params = GetImmediateDataAs<volatile const GLfloat*>(
2388 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 2299 c, data_size, immediate_data_size);
2389 error::Error error = DoSamplerParameterfv(sampler, pname, params); 2300 error::Error error = DoSamplerParameterfv(sampler, pname, params);
2390 if (error != error::kNoError) { 2301 if (error != error::kNoError) {
2391 return error; 2302 return error;
2392 } 2303 }
2393 return error::kNoError; 2304 return error::kNoError;
2394 } 2305 }
2395 2306
2396 error::Error GLES2DecoderPassthroughImpl::HandleSamplerParameteri( 2307 error::Error GLES2DecoderPassthroughImpl::HandleSamplerParameteri(
2397 uint32_t immediate_data_size, 2308 uint32_t immediate_data_size,
2398 const void* cmd_data) { 2309 const volatile void* cmd_data) {
2399 const gles2::cmds::SamplerParameteri& c = 2310 const volatile gles2::cmds::SamplerParameteri& c =
2400 *static_cast<const gles2::cmds::SamplerParameteri*>(cmd_data); 2311 *static_cast<const volatile gles2::cmds::SamplerParameteri*>(cmd_data);
2401 (void)c;
2402 GLuint sampler = c.sampler; 2312 GLuint sampler = c.sampler;
2403 GLenum pname = static_cast<GLenum>(c.pname); 2313 GLenum pname = static_cast<GLenum>(c.pname);
2404 GLint param = static_cast<GLint>(c.param); 2314 GLint param = static_cast<GLint>(c.param);
2405 error::Error error = DoSamplerParameteri(sampler, pname, param); 2315 error::Error error = DoSamplerParameteri(sampler, pname, param);
2406 if (error != error::kNoError) { 2316 if (error != error::kNoError) {
2407 return error; 2317 return error;
2408 } 2318 }
2409 return error::kNoError; 2319 return error::kNoError;
2410 } 2320 }
2411 2321
2412 error::Error GLES2DecoderPassthroughImpl::HandleSamplerParameterivImmediate( 2322 error::Error GLES2DecoderPassthroughImpl::HandleSamplerParameterivImmediate(
2413 uint32_t immediate_data_size, 2323 uint32_t immediate_data_size,
2414 const void* cmd_data) { 2324 const volatile void* cmd_data) {
2415 const gles2::cmds::SamplerParameterivImmediate& c = 2325 const volatile gles2::cmds::SamplerParameterivImmediate& c =
2416 *static_cast<const gles2::cmds::SamplerParameterivImmediate*>(cmd_data); 2326 *static_cast<const volatile gles2::cmds::SamplerParameterivImmediate*>(
2417 (void)c; 2327 cmd_data);
2418 GLuint sampler = c.sampler; 2328 GLuint sampler = c.sampler;
2419 GLenum pname = static_cast<GLenum>(c.pname); 2329 GLenum pname = static_cast<GLenum>(c.pname);
2420 uint32_t data_size; 2330 uint32_t data_size;
2421 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 1, &data_size)) { 2331 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 1, &data_size)) {
2422 return error::kOutOfBounds; 2332 return error::kOutOfBounds;
2423 } 2333 }
2424 if (data_size > immediate_data_size) { 2334 if (data_size > immediate_data_size) {
2425 return error::kOutOfBounds; 2335 return error::kOutOfBounds;
2426 } 2336 }
2427 const GLint* params = 2337 volatile const GLint* params = GetImmediateDataAs<volatile const GLint*>(
2428 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); 2338 c, data_size, immediate_data_size);
2429 error::Error error = DoSamplerParameteriv(sampler, pname, params); 2339 error::Error error = DoSamplerParameteriv(sampler, pname, params);
2430 if (error != error::kNoError) { 2340 if (error != error::kNoError) {
2431 return error; 2341 return error;
2432 } 2342 }
2433 return error::kNoError; 2343 return error::kNoError;
2434 } 2344 }
2435 2345
2436 error::Error GLES2DecoderPassthroughImpl::HandleScissor( 2346 error::Error GLES2DecoderPassthroughImpl::HandleScissor(
2437 uint32_t immediate_data_size, 2347 uint32_t immediate_data_size,
2438 const void* cmd_data) { 2348 const volatile void* cmd_data) {
2439 const gles2::cmds::Scissor& c = 2349 const volatile gles2::cmds::Scissor& c =
2440 *static_cast<const gles2::cmds::Scissor*>(cmd_data); 2350 *static_cast<const volatile gles2::cmds::Scissor*>(cmd_data);
2441 (void)c;
2442 GLint x = static_cast<GLint>(c.x); 2351 GLint x = static_cast<GLint>(c.x);
2443 GLint y = static_cast<GLint>(c.y); 2352 GLint y = static_cast<GLint>(c.y);
2444 GLsizei width = static_cast<GLsizei>(c.width); 2353 GLsizei width = static_cast<GLsizei>(c.width);
2445 GLsizei height = static_cast<GLsizei>(c.height); 2354 GLsizei height = static_cast<GLsizei>(c.height);
2446 error::Error error = DoScissor(x, y, width, height); 2355 error::Error error = DoScissor(x, y, width, height);
2447 if (error != error::kNoError) { 2356 if (error != error::kNoError) {
2448 return error; 2357 return error;
2449 } 2358 }
2450 return error::kNoError; 2359 return error::kNoError;
2451 } 2360 }
2452 2361
2453 error::Error GLES2DecoderPassthroughImpl::HandleShaderSourceBucket( 2362 error::Error GLES2DecoderPassthroughImpl::HandleShaderSourceBucket(
2454 uint32_t immediate_data_size, 2363 uint32_t immediate_data_size,
2455 const void* cmd_data) { 2364 const volatile void* cmd_data) {
2456 const gles2::cmds::ShaderSourceBucket& c = 2365 const volatile gles2::cmds::ShaderSourceBucket& c =
2457 *static_cast<const gles2::cmds::ShaderSourceBucket*>(cmd_data); 2366 *static_cast<const volatile gles2::cmds::ShaderSourceBucket*>(cmd_data);
2458 (void)c;
2459 GLuint shader = static_cast<GLuint>(c.shader); 2367 GLuint shader = static_cast<GLuint>(c.shader);
2460 2368
2461 Bucket* bucket = GetBucket(c.str_bucket_id); 2369 Bucket* bucket = GetBucket(c.str_bucket_id);
2462 if (!bucket) { 2370 if (!bucket) {
2463 return error::kInvalidArguments; 2371 return error::kInvalidArguments;
2464 } 2372 }
2465 GLsizei count = 0; 2373 GLsizei count = 0;
2466 std::vector<char*> strs; 2374 std::vector<char*> strs;
2467 std::vector<GLint> len; 2375 std::vector<GLint> len;
2468 if (!bucket->GetAsStrings(&count, &strs, &len)) { 2376 if (!bucket->GetAsStrings(&count, &strs, &len)) {
2469 return error::kInvalidArguments; 2377 return error::kInvalidArguments;
2470 } 2378 }
2471 const char** str = 2379 const char** str =
2472 strs.size() > 0 ? const_cast<const char**>(&strs[0]) : NULL; 2380 strs.size() > 0 ? const_cast<const char**>(&strs[0]) : NULL;
2473 const GLint* length = 2381 const GLint* length =
2474 len.size() > 0 ? const_cast<const GLint*>(&len[0]) : NULL; 2382 len.size() > 0 ? const_cast<const GLint*>(&len[0]) : NULL;
2475 (void)length; 2383 (void)length;
2476 error::Error error = DoShaderSource(shader, count, str, length); 2384 error::Error error = DoShaderSource(shader, count, str, length);
2477 if (error != error::kNoError) { 2385 if (error != error::kNoError) {
2478 return error; 2386 return error;
2479 } 2387 }
2480 return error::kNoError; 2388 return error::kNoError;
2481 } 2389 }
2482 2390
2483 error::Error GLES2DecoderPassthroughImpl::HandleStencilFunc( 2391 error::Error GLES2DecoderPassthroughImpl::HandleStencilFunc(
2484 uint32_t immediate_data_size, 2392 uint32_t immediate_data_size,
2485 const void* cmd_data) { 2393 const volatile void* cmd_data) {
2486 const gles2::cmds::StencilFunc& c = 2394 const volatile gles2::cmds::StencilFunc& c =
2487 *static_cast<const gles2::cmds::StencilFunc*>(cmd_data); 2395 *static_cast<const volatile gles2::cmds::StencilFunc*>(cmd_data);
2488 (void)c;
2489 GLenum func = static_cast<GLenum>(c.func); 2396 GLenum func = static_cast<GLenum>(c.func);
2490 GLint ref = static_cast<GLint>(c.ref); 2397 GLint ref = static_cast<GLint>(c.ref);
2491 GLuint mask = static_cast<GLuint>(c.mask); 2398 GLuint mask = static_cast<GLuint>(c.mask);
2492 error::Error error = DoStencilFunc(func, ref, mask); 2399 error::Error error = DoStencilFunc(func, ref, mask);
2493 if (error != error::kNoError) { 2400 if (error != error::kNoError) {
2494 return error; 2401 return error;
2495 } 2402 }
2496 return error::kNoError; 2403 return error::kNoError;
2497 } 2404 }
2498 2405
2499 error::Error GLES2DecoderPassthroughImpl::HandleStencilFuncSeparate( 2406 error::Error GLES2DecoderPassthroughImpl::HandleStencilFuncSeparate(
2500 uint32_t immediate_data_size, 2407 uint32_t immediate_data_size,
2501 const void* cmd_data) { 2408 const volatile void* cmd_data) {
2502 const gles2::cmds::StencilFuncSeparate& c = 2409 const volatile gles2::cmds::StencilFuncSeparate& c =
2503 *static_cast<const gles2::cmds::StencilFuncSeparate*>(cmd_data); 2410 *static_cast<const volatile gles2::cmds::StencilFuncSeparate*>(cmd_data);
2504 (void)c;
2505 GLenum face = static_cast<GLenum>(c.face); 2411 GLenum face = static_cast<GLenum>(c.face);
2506 GLenum func = static_cast<GLenum>(c.func); 2412 GLenum func = static_cast<GLenum>(c.func);
2507 GLint ref = static_cast<GLint>(c.ref); 2413 GLint ref = static_cast<GLint>(c.ref);
2508 GLuint mask = static_cast<GLuint>(c.mask); 2414 GLuint mask = static_cast<GLuint>(c.mask);
2509 error::Error error = DoStencilFuncSeparate(face, func, ref, mask); 2415 error::Error error = DoStencilFuncSeparate(face, func, ref, mask);
2510 if (error != error::kNoError) { 2416 if (error != error::kNoError) {
2511 return error; 2417 return error;
2512 } 2418 }
2513 return error::kNoError; 2419 return error::kNoError;
2514 } 2420 }
2515 2421
2516 error::Error GLES2DecoderPassthroughImpl::HandleStencilMask( 2422 error::Error GLES2DecoderPassthroughImpl::HandleStencilMask(
2517 uint32_t immediate_data_size, 2423 uint32_t immediate_data_size,
2518 const void* cmd_data) { 2424 const volatile void* cmd_data) {
2519 const gles2::cmds::StencilMask& c = 2425 const volatile gles2::cmds::StencilMask& c =
2520 *static_cast<const gles2::cmds::StencilMask*>(cmd_data); 2426 *static_cast<const volatile gles2::cmds::StencilMask*>(cmd_data);
2521 (void)c;
2522 GLuint mask = static_cast<GLuint>(c.mask); 2427 GLuint mask = static_cast<GLuint>(c.mask);
2523 error::Error error = DoStencilMask(mask); 2428 error::Error error = DoStencilMask(mask);
2524 if (error != error::kNoError) { 2429 if (error != error::kNoError) {
2525 return error; 2430 return error;
2526 } 2431 }
2527 return error::kNoError; 2432 return error::kNoError;
2528 } 2433 }
2529 2434
2530 error::Error GLES2DecoderPassthroughImpl::HandleStencilMaskSeparate( 2435 error::Error GLES2DecoderPassthroughImpl::HandleStencilMaskSeparate(
2531 uint32_t immediate_data_size, 2436 uint32_t immediate_data_size,
2532 const void* cmd_data) { 2437 const volatile void* cmd_data) {
2533 const gles2::cmds::StencilMaskSeparate& c = 2438 const volatile gles2::cmds::StencilMaskSeparate& c =
2534 *static_cast<const gles2::cmds::StencilMaskSeparate*>(cmd_data); 2439 *static_cast<const volatile gles2::cmds::StencilMaskSeparate*>(cmd_data);
2535 (void)c;
2536 GLenum face = static_cast<GLenum>(c.face); 2440 GLenum face = static_cast<GLenum>(c.face);
2537 GLuint mask = static_cast<GLuint>(c.mask); 2441 GLuint mask = static_cast<GLuint>(c.mask);
2538 error::Error error = DoStencilMaskSeparate(face, mask); 2442 error::Error error = DoStencilMaskSeparate(face, mask);
2539 if (error != error::kNoError) { 2443 if (error != error::kNoError) {
2540 return error; 2444 return error;
2541 } 2445 }
2542 return error::kNoError; 2446 return error::kNoError;
2543 } 2447 }
2544 2448
2545 error::Error GLES2DecoderPassthroughImpl::HandleStencilOp( 2449 error::Error GLES2DecoderPassthroughImpl::HandleStencilOp(
2546 uint32_t immediate_data_size, 2450 uint32_t immediate_data_size,
2547 const void* cmd_data) { 2451 const volatile void* cmd_data) {
2548 const gles2::cmds::StencilOp& c = 2452 const volatile gles2::cmds::StencilOp& c =
2549 *static_cast<const gles2::cmds::StencilOp*>(cmd_data); 2453 *static_cast<const volatile gles2::cmds::StencilOp*>(cmd_data);
2550 (void)c;
2551 GLenum fail = static_cast<GLenum>(c.fail); 2454 GLenum fail = static_cast<GLenum>(c.fail);
2552 GLenum zfail = static_cast<GLenum>(c.zfail); 2455 GLenum zfail = static_cast<GLenum>(c.zfail);
2553 GLenum zpass = static_cast<GLenum>(c.zpass); 2456 GLenum zpass = static_cast<GLenum>(c.zpass);
2554 error::Error error = DoStencilOp(fail, zfail, zpass); 2457 error::Error error = DoStencilOp(fail, zfail, zpass);
2555 if (error != error::kNoError) { 2458 if (error != error::kNoError) {
2556 return error; 2459 return error;
2557 } 2460 }
2558 return error::kNoError; 2461 return error::kNoError;
2559 } 2462 }
2560 2463
2561 error::Error GLES2DecoderPassthroughImpl::HandleStencilOpSeparate( 2464 error::Error GLES2DecoderPassthroughImpl::HandleStencilOpSeparate(
2562 uint32_t immediate_data_size, 2465 uint32_t immediate_data_size,
2563 const void* cmd_data) { 2466 const volatile void* cmd_data) {
2564 const gles2::cmds::StencilOpSeparate& c = 2467 const volatile gles2::cmds::StencilOpSeparate& c =
2565 *static_cast<const gles2::cmds::StencilOpSeparate*>(cmd_data); 2468 *static_cast<const volatile gles2::cmds::StencilOpSeparate*>(cmd_data);
2566 (void)c;
2567 GLenum face = static_cast<GLenum>(c.face); 2469 GLenum face = static_cast<GLenum>(c.face);
2568 GLenum fail = static_cast<GLenum>(c.fail); 2470 GLenum fail = static_cast<GLenum>(c.fail);
2569 GLenum zfail = static_cast<GLenum>(c.zfail); 2471 GLenum zfail = static_cast<GLenum>(c.zfail);
2570 GLenum zpass = static_cast<GLenum>(c.zpass); 2472 GLenum zpass = static_cast<GLenum>(c.zpass);
2571 error::Error error = DoStencilOpSeparate(face, fail, zfail, zpass); 2473 error::Error error = DoStencilOpSeparate(face, fail, zfail, zpass);
2572 if (error != error::kNoError) { 2474 if (error != error::kNoError) {
2573 return error; 2475 return error;
2574 } 2476 }
2575 return error::kNoError; 2477 return error::kNoError;
2576 } 2478 }
2577 2479
2578 error::Error GLES2DecoderPassthroughImpl::HandleTexParameterf( 2480 error::Error GLES2DecoderPassthroughImpl::HandleTexParameterf(
2579 uint32_t immediate_data_size, 2481 uint32_t immediate_data_size,
2580 const void* cmd_data) { 2482 const volatile void* cmd_data) {
2581 const gles2::cmds::TexParameterf& c = 2483 const volatile gles2::cmds::TexParameterf& c =
2582 *static_cast<const gles2::cmds::TexParameterf*>(cmd_data); 2484 *static_cast<const volatile gles2::cmds::TexParameterf*>(cmd_data);
2583 (void)c;
2584 GLenum target = static_cast<GLenum>(c.target); 2485 GLenum target = static_cast<GLenum>(c.target);
2585 GLenum pname = static_cast<GLenum>(c.pname); 2486 GLenum pname = static_cast<GLenum>(c.pname);
2586 GLfloat param = static_cast<GLfloat>(c.param); 2487 GLfloat param = static_cast<GLfloat>(c.param);
2587 error::Error error = DoTexParameterf(target, pname, param); 2488 error::Error error = DoTexParameterf(target, pname, param);
2588 if (error != error::kNoError) { 2489 if (error != error::kNoError) {
2589 return error; 2490 return error;
2590 } 2491 }
2591 return error::kNoError; 2492 return error::kNoError;
2592 } 2493 }
2593 2494
2594 error::Error GLES2DecoderPassthroughImpl::HandleTexParameterfvImmediate( 2495 error::Error GLES2DecoderPassthroughImpl::HandleTexParameterfvImmediate(
2595 uint32_t immediate_data_size, 2496 uint32_t immediate_data_size,
2596 const void* cmd_data) { 2497 const volatile void* cmd_data) {
2597 const gles2::cmds::TexParameterfvImmediate& c = 2498 const volatile gles2::cmds::TexParameterfvImmediate& c =
2598 *static_cast<const gles2::cmds::TexParameterfvImmediate*>(cmd_data); 2499 *static_cast<const volatile gles2::cmds::TexParameterfvImmediate*>(
2599 (void)c; 2500 cmd_data);
2600 GLenum target = static_cast<GLenum>(c.target); 2501 GLenum target = static_cast<GLenum>(c.target);
2601 GLenum pname = static_cast<GLenum>(c.pname); 2502 GLenum pname = static_cast<GLenum>(c.pname);
2602 uint32_t data_size; 2503 uint32_t data_size;
2603 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { 2504 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) {
2604 return error::kOutOfBounds; 2505 return error::kOutOfBounds;
2605 } 2506 }
2606 if (data_size > immediate_data_size) { 2507 if (data_size > immediate_data_size) {
2607 return error::kOutOfBounds; 2508 return error::kOutOfBounds;
2608 } 2509 }
2609 const GLfloat* params = 2510 volatile const GLfloat* params = GetImmediateDataAs<volatile const GLfloat*>(
2610 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 2511 c, data_size, immediate_data_size);
2611 error::Error error = DoTexParameterfv(target, pname, params); 2512 error::Error error = DoTexParameterfv(target, pname, params);
2612 if (error != error::kNoError) { 2513 if (error != error::kNoError) {
2613 return error; 2514 return error;
2614 } 2515 }
2615 return error::kNoError; 2516 return error::kNoError;
2616 } 2517 }
2617 2518
2618 error::Error GLES2DecoderPassthroughImpl::HandleTexParameteri( 2519 error::Error GLES2DecoderPassthroughImpl::HandleTexParameteri(
2619 uint32_t immediate_data_size, 2520 uint32_t immediate_data_size,
2620 const void* cmd_data) { 2521 const volatile void* cmd_data) {
2621 const gles2::cmds::TexParameteri& c = 2522 const volatile gles2::cmds::TexParameteri& c =
2622 *static_cast<const gles2::cmds::TexParameteri*>(cmd_data); 2523 *static_cast<const volatile gles2::cmds::TexParameteri*>(cmd_data);
2623 (void)c;
2624 GLenum target = static_cast<GLenum>(c.target); 2524 GLenum target = static_cast<GLenum>(c.target);
2625 GLenum pname = static_cast<GLenum>(c.pname); 2525 GLenum pname = static_cast<GLenum>(c.pname);
2626 GLint param = static_cast<GLint>(c.param); 2526 GLint param = static_cast<GLint>(c.param);
2627 error::Error error = DoTexParameteri(target, pname, param); 2527 error::Error error = DoTexParameteri(target, pname, param);
2628 if (error != error::kNoError) { 2528 if (error != error::kNoError) {
2629 return error; 2529 return error;
2630 } 2530 }
2631 return error::kNoError; 2531 return error::kNoError;
2632 } 2532 }
2633 2533
2634 error::Error GLES2DecoderPassthroughImpl::HandleTexParameterivImmediate( 2534 error::Error GLES2DecoderPassthroughImpl::HandleTexParameterivImmediate(
2635 uint32_t immediate_data_size, 2535 uint32_t immediate_data_size,
2636 const void* cmd_data) { 2536 const volatile void* cmd_data) {
2637 const gles2::cmds::TexParameterivImmediate& c = 2537 const volatile gles2::cmds::TexParameterivImmediate& c =
2638 *static_cast<const gles2::cmds::TexParameterivImmediate*>(cmd_data); 2538 *static_cast<const volatile gles2::cmds::TexParameterivImmediate*>(
2639 (void)c; 2539 cmd_data);
2640 GLenum target = static_cast<GLenum>(c.target); 2540 GLenum target = static_cast<GLenum>(c.target);
2641 GLenum pname = static_cast<GLenum>(c.pname); 2541 GLenum pname = static_cast<GLenum>(c.pname);
2642 uint32_t data_size; 2542 uint32_t data_size;
2643 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 1, &data_size)) { 2543 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 1, &data_size)) {
2644 return error::kOutOfBounds; 2544 return error::kOutOfBounds;
2645 } 2545 }
2646 if (data_size > immediate_data_size) { 2546 if (data_size > immediate_data_size) {
2647 return error::kOutOfBounds; 2547 return error::kOutOfBounds;
2648 } 2548 }
2649 const GLint* params = 2549 volatile const GLint* params = GetImmediateDataAs<volatile const GLint*>(
2650 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); 2550 c, data_size, immediate_data_size);
2651 error::Error error = DoTexParameteriv(target, pname, params); 2551 error::Error error = DoTexParameteriv(target, pname, params);
2652 if (error != error::kNoError) { 2552 if (error != error::kNoError) {
2653 return error; 2553 return error;
2654 } 2554 }
2655 return error::kNoError; 2555 return error::kNoError;
2656 } 2556 }
2657 2557
2658 error::Error GLES2DecoderPassthroughImpl::HandleTexStorage3D( 2558 error::Error GLES2DecoderPassthroughImpl::HandleTexStorage3D(
2659 uint32_t immediate_data_size, 2559 uint32_t immediate_data_size,
2660 const void* cmd_data) { 2560 const volatile void* cmd_data) {
2661 const gles2::cmds::TexStorage3D& c = 2561 const volatile gles2::cmds::TexStorage3D& c =
2662 *static_cast<const gles2::cmds::TexStorage3D*>(cmd_data); 2562 *static_cast<const volatile gles2::cmds::TexStorage3D*>(cmd_data);
2663 (void)c;
2664 GLenum target = static_cast<GLenum>(c.target); 2563 GLenum target = static_cast<GLenum>(c.target);
2665 GLsizei levels = static_cast<GLsizei>(c.levels); 2564 GLsizei levels = static_cast<GLsizei>(c.levels);
2666 GLenum internalFormat = static_cast<GLenum>(c.internalFormat); 2565 GLenum internalFormat = static_cast<GLenum>(c.internalFormat);
2667 GLsizei width = static_cast<GLsizei>(c.width); 2566 GLsizei width = static_cast<GLsizei>(c.width);
2668 GLsizei height = static_cast<GLsizei>(c.height); 2567 GLsizei height = static_cast<GLsizei>(c.height);
2669 GLsizei depth = static_cast<GLsizei>(c.depth); 2568 GLsizei depth = static_cast<GLsizei>(c.depth);
2670 error::Error error = 2569 error::Error error =
2671 DoTexStorage3D(target, levels, internalFormat, width, height, depth); 2570 DoTexStorage3D(target, levels, internalFormat, width, height, depth);
2672 if (error != error::kNoError) { 2571 if (error != error::kNoError) {
2673 return error; 2572 return error;
2674 } 2573 }
2675 return error::kNoError; 2574 return error::kNoError;
2676 } 2575 }
2677 2576
2678 error::Error GLES2DecoderPassthroughImpl::HandleTransformFeedbackVaryingsBucket( 2577 error::Error GLES2DecoderPassthroughImpl::HandleTransformFeedbackVaryingsBucket(
2679 uint32_t immediate_data_size, 2578 uint32_t immediate_data_size,
2680 const void* cmd_data) { 2579 const volatile void* cmd_data) {
2681 const gles2::cmds::TransformFeedbackVaryingsBucket& c = 2580 const volatile gles2::cmds::TransformFeedbackVaryingsBucket& c = *static_cast<
2682 *static_cast<const gles2::cmds::TransformFeedbackVaryingsBucket*>( 2581 const volatile gles2::cmds::TransformFeedbackVaryingsBucket*>(cmd_data);
2683 cmd_data);
2684 (void)c;
2685 GLuint program = static_cast<GLuint>(c.program); 2582 GLuint program = static_cast<GLuint>(c.program);
2686 2583
2687 Bucket* bucket = GetBucket(c.varyings_bucket_id); 2584 Bucket* bucket = GetBucket(c.varyings_bucket_id);
2688 if (!bucket) { 2585 if (!bucket) {
2689 return error::kInvalidArguments; 2586 return error::kInvalidArguments;
2690 } 2587 }
2691 GLsizei count = 0; 2588 GLsizei count = 0;
2692 std::vector<char*> strs; 2589 std::vector<char*> strs;
2693 std::vector<GLint> len; 2590 std::vector<GLint> len;
2694 if (!bucket->GetAsStrings(&count, &strs, &len)) { 2591 if (!bucket->GetAsStrings(&count, &strs, &len)) {
2695 return error::kInvalidArguments; 2592 return error::kInvalidArguments;
2696 } 2593 }
2697 const char** varyings = 2594 const char** varyings =
2698 strs.size() > 0 ? const_cast<const char**>(&strs[0]) : NULL; 2595 strs.size() > 0 ? const_cast<const char**>(&strs[0]) : NULL;
2699 const GLint* length = 2596 const GLint* length =
2700 len.size() > 0 ? const_cast<const GLint*>(&len[0]) : NULL; 2597 len.size() > 0 ? const_cast<const GLint*>(&len[0]) : NULL;
2701 (void)length; 2598 (void)length;
2702 GLenum buffermode = static_cast<GLenum>(c.buffermode); 2599 GLenum buffermode = static_cast<GLenum>(c.buffermode);
2703 error::Error error = 2600 error::Error error =
2704 DoTransformFeedbackVaryings(program, count, varyings, buffermode); 2601 DoTransformFeedbackVaryings(program, count, varyings, buffermode);
2705 if (error != error::kNoError) { 2602 if (error != error::kNoError) {
2706 return error; 2603 return error;
2707 } 2604 }
2708 return error::kNoError; 2605 return error::kNoError;
2709 } 2606 }
2710 2607
2711 error::Error GLES2DecoderPassthroughImpl::HandleUniform1f( 2608 error::Error GLES2DecoderPassthroughImpl::HandleUniform1f(
2712 uint32_t immediate_data_size, 2609 uint32_t immediate_data_size,
2713 const void* cmd_data) { 2610 const volatile void* cmd_data) {
2714 const gles2::cmds::Uniform1f& c = 2611 const volatile gles2::cmds::Uniform1f& c =
2715 *static_cast<const gles2::cmds::Uniform1f*>(cmd_data); 2612 *static_cast<const volatile gles2::cmds::Uniform1f*>(cmd_data);
2716 (void)c;
2717 GLint location = static_cast<GLint>(c.location); 2613 GLint location = static_cast<GLint>(c.location);
2718 GLfloat x = static_cast<GLfloat>(c.x); 2614 GLfloat x = static_cast<GLfloat>(c.x);
2719 error::Error error = DoUniform1f(location, x); 2615 error::Error error = DoUniform1f(location, x);
2720 if (error != error::kNoError) { 2616 if (error != error::kNoError) {
2721 return error; 2617 return error;
2722 } 2618 }
2723 return error::kNoError; 2619 return error::kNoError;
2724 } 2620 }
2725 2621
2726 error::Error GLES2DecoderPassthroughImpl::HandleUniform1fvImmediate( 2622 error::Error GLES2DecoderPassthroughImpl::HandleUniform1fvImmediate(
2727 uint32_t immediate_data_size, 2623 uint32_t immediate_data_size,
2728 const void* cmd_data) { 2624 const volatile void* cmd_data) {
2729 const gles2::cmds::Uniform1fvImmediate& c = 2625 const volatile gles2::cmds::Uniform1fvImmediate& c =
2730 *static_cast<const gles2::cmds::Uniform1fvImmediate*>(cmd_data); 2626 *static_cast<const volatile gles2::cmds::Uniform1fvImmediate*>(cmd_data);
2731 (void)c;
2732 GLint location = static_cast<GLint>(c.location); 2627 GLint location = static_cast<GLint>(c.location);
2733 GLsizei count = static_cast<GLsizei>(c.count); 2628 GLsizei count = static_cast<GLsizei>(c.count);
2734 uint32_t data_size = 0; 2629 uint32_t data_size = 0;
2735 if (count >= 0 && 2630 if (count >= 0 &&
2736 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 1, &data_size)) { 2631 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 1, &data_size)) {
2737 return error::kOutOfBounds; 2632 return error::kOutOfBounds;
2738 } 2633 }
2739 if (data_size > immediate_data_size) { 2634 if (data_size > immediate_data_size) {
2740 return error::kOutOfBounds; 2635 return error::kOutOfBounds;
2741 } 2636 }
2742 const GLfloat* v = 2637 volatile const GLfloat* v = GetImmediateDataAs<volatile const GLfloat*>(
2743 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 2638 c, data_size, immediate_data_size);
2744 error::Error error = DoUniform1fv(location, count, v); 2639 error::Error error = DoUniform1fv(location, count, v);
2745 if (error != error::kNoError) { 2640 if (error != error::kNoError) {
2746 return error; 2641 return error;
2747 } 2642 }
2748 return error::kNoError; 2643 return error::kNoError;
2749 } 2644 }
2750 2645
2751 error::Error GLES2DecoderPassthroughImpl::HandleUniform1i( 2646 error::Error GLES2DecoderPassthroughImpl::HandleUniform1i(
2752 uint32_t immediate_data_size, 2647 uint32_t immediate_data_size,
2753 const void* cmd_data) { 2648 const volatile void* cmd_data) {
2754 const gles2::cmds::Uniform1i& c = 2649 const volatile gles2::cmds::Uniform1i& c =
2755 *static_cast<const gles2::cmds::Uniform1i*>(cmd_data); 2650 *static_cast<const volatile gles2::cmds::Uniform1i*>(cmd_data);
2756 (void)c;
2757 GLint location = static_cast<GLint>(c.location); 2651 GLint location = static_cast<GLint>(c.location);
2758 GLint x = static_cast<GLint>(c.x); 2652 GLint x = static_cast<GLint>(c.x);
2759 error::Error error = DoUniform1i(location, x); 2653 error::Error error = DoUniform1i(location, x);
2760 if (error != error::kNoError) { 2654 if (error != error::kNoError) {
2761 return error; 2655 return error;
2762 } 2656 }
2763 return error::kNoError; 2657 return error::kNoError;
2764 } 2658 }
2765 2659
2766 error::Error GLES2DecoderPassthroughImpl::HandleUniform1ivImmediate( 2660 error::Error GLES2DecoderPassthroughImpl::HandleUniform1ivImmediate(
2767 uint32_t immediate_data_size, 2661 uint32_t immediate_data_size,
2768 const void* cmd_data) { 2662 const volatile void* cmd_data) {
2769 const gles2::cmds::Uniform1ivImmediate& c = 2663 const volatile gles2::cmds::Uniform1ivImmediate& c =
2770 *static_cast<const gles2::cmds::Uniform1ivImmediate*>(cmd_data); 2664 *static_cast<const volatile gles2::cmds::Uniform1ivImmediate*>(cmd_data);
2771 (void)c;
2772 GLint location = static_cast<GLint>(c.location); 2665 GLint location = static_cast<GLint>(c.location);
2773 GLsizei count = static_cast<GLsizei>(c.count); 2666 GLsizei count = static_cast<GLsizei>(c.count);
2774 uint32_t data_size = 0; 2667 uint32_t data_size = 0;
2775 if (count >= 0 && 2668 if (count >= 0 &&
2776 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 1, &data_size)) { 2669 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 1, &data_size)) {
2777 return error::kOutOfBounds; 2670 return error::kOutOfBounds;
2778 } 2671 }
2779 if (data_size > immediate_data_size) { 2672 if (data_size > immediate_data_size) {
2780 return error::kOutOfBounds; 2673 return error::kOutOfBounds;
2781 } 2674 }
2782 const GLint* v = 2675 volatile const GLint* v = GetImmediateDataAs<volatile const GLint*>(
2783 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); 2676 c, data_size, immediate_data_size);
2784 error::Error error = DoUniform1iv(location, count, v); 2677 error::Error error = DoUniform1iv(location, count, v);
2785 if (error != error::kNoError) { 2678 if (error != error::kNoError) {
2786 return error; 2679 return error;
2787 } 2680 }
2788 return error::kNoError; 2681 return error::kNoError;
2789 } 2682 }
2790 2683
2791 error::Error GLES2DecoderPassthroughImpl::HandleUniform1ui( 2684 error::Error GLES2DecoderPassthroughImpl::HandleUniform1ui(
2792 uint32_t immediate_data_size, 2685 uint32_t immediate_data_size,
2793 const void* cmd_data) { 2686 const volatile void* cmd_data) {
2794 const gles2::cmds::Uniform1ui& c = 2687 const volatile gles2::cmds::Uniform1ui& c =
2795 *static_cast<const gles2::cmds::Uniform1ui*>(cmd_data); 2688 *static_cast<const volatile gles2::cmds::Uniform1ui*>(cmd_data);
2796 (void)c;
2797 GLint location = static_cast<GLint>(c.location); 2689 GLint location = static_cast<GLint>(c.location);
2798 GLuint x = static_cast<GLuint>(c.x); 2690 GLuint x = static_cast<GLuint>(c.x);
2799 error::Error error = DoUniform1ui(location, x); 2691 error::Error error = DoUniform1ui(location, x);
2800 if (error != error::kNoError) { 2692 if (error != error::kNoError) {
2801 return error; 2693 return error;
2802 } 2694 }
2803 return error::kNoError; 2695 return error::kNoError;
2804 } 2696 }
2805 2697
2806 error::Error GLES2DecoderPassthroughImpl::HandleUniform1uivImmediate( 2698 error::Error GLES2DecoderPassthroughImpl::HandleUniform1uivImmediate(
2807 uint32_t immediate_data_size, 2699 uint32_t immediate_data_size,
2808 const void* cmd_data) { 2700 const volatile void* cmd_data) {
2809 const gles2::cmds::Uniform1uivImmediate& c = 2701 const volatile gles2::cmds::Uniform1uivImmediate& c =
2810 *static_cast<const gles2::cmds::Uniform1uivImmediate*>(cmd_data); 2702 *static_cast<const volatile gles2::cmds::Uniform1uivImmediate*>(cmd_data);
2811 (void)c;
2812 GLint location = static_cast<GLint>(c.location); 2703 GLint location = static_cast<GLint>(c.location);
2813 GLsizei count = static_cast<GLsizei>(c.count); 2704 GLsizei count = static_cast<GLsizei>(c.count);
2814 uint32_t data_size = 0; 2705 uint32_t data_size = 0;
2815 if (count >= 0 && 2706 if (count >= 0 &&
2816 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 1, &data_size)) { 2707 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 1, &data_size)) {
2817 return error::kOutOfBounds; 2708 return error::kOutOfBounds;
2818 } 2709 }
2819 if (data_size > immediate_data_size) { 2710 if (data_size > immediate_data_size) {
2820 return error::kOutOfBounds; 2711 return error::kOutOfBounds;
2821 } 2712 }
2822 const GLuint* v = 2713 volatile const GLuint* v = GetImmediateDataAs<volatile const GLuint*>(
2823 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 2714 c, data_size, immediate_data_size);
2824 error::Error error = DoUniform1uiv(location, count, v); 2715 error::Error error = DoUniform1uiv(location, count, v);
2825 if (error != error::kNoError) { 2716 if (error != error::kNoError) {
2826 return error; 2717 return error;
2827 } 2718 }
2828 return error::kNoError; 2719 return error::kNoError;
2829 } 2720 }
2830 2721
2831 error::Error GLES2DecoderPassthroughImpl::HandleUniform2f( 2722 error::Error GLES2DecoderPassthroughImpl::HandleUniform2f(
2832 uint32_t immediate_data_size, 2723 uint32_t immediate_data_size,
2833 const void* cmd_data) { 2724 const volatile void* cmd_data) {
2834 const gles2::cmds::Uniform2f& c = 2725 const volatile gles2::cmds::Uniform2f& c =
2835 *static_cast<const gles2::cmds::Uniform2f*>(cmd_data); 2726 *static_cast<const volatile gles2::cmds::Uniform2f*>(cmd_data);
2836 (void)c;
2837 GLint location = static_cast<GLint>(c.location); 2727 GLint location = static_cast<GLint>(c.location);
2838 GLfloat x = static_cast<GLfloat>(c.x); 2728 GLfloat x = static_cast<GLfloat>(c.x);
2839 GLfloat y = static_cast<GLfloat>(c.y); 2729 GLfloat y = static_cast<GLfloat>(c.y);
2840 error::Error error = DoUniform2f(location, x, y); 2730 error::Error error = DoUniform2f(location, x, y);
2841 if (error != error::kNoError) { 2731 if (error != error::kNoError) {
2842 return error; 2732 return error;
2843 } 2733 }
2844 return error::kNoError; 2734 return error::kNoError;
2845 } 2735 }
2846 2736
2847 error::Error GLES2DecoderPassthroughImpl::HandleUniform2fvImmediate( 2737 error::Error GLES2DecoderPassthroughImpl::HandleUniform2fvImmediate(
2848 uint32_t immediate_data_size, 2738 uint32_t immediate_data_size,
2849 const void* cmd_data) { 2739 const volatile void* cmd_data) {
2850 const gles2::cmds::Uniform2fvImmediate& c = 2740 const volatile gles2::cmds::Uniform2fvImmediate& c =
2851 *static_cast<const gles2::cmds::Uniform2fvImmediate*>(cmd_data); 2741 *static_cast<const volatile gles2::cmds::Uniform2fvImmediate*>(cmd_data);
2852 (void)c;
2853 GLint location = static_cast<GLint>(c.location); 2742 GLint location = static_cast<GLint>(c.location);
2854 GLsizei count = static_cast<GLsizei>(c.count); 2743 GLsizei count = static_cast<GLsizei>(c.count);
2855 uint32_t data_size = 0; 2744 uint32_t data_size = 0;
2856 if (count >= 0 && 2745 if (count >= 0 &&
2857 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 2, &data_size)) { 2746 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 2, &data_size)) {
2858 return error::kOutOfBounds; 2747 return error::kOutOfBounds;
2859 } 2748 }
2860 if (data_size > immediate_data_size) { 2749 if (data_size > immediate_data_size) {
2861 return error::kOutOfBounds; 2750 return error::kOutOfBounds;
2862 } 2751 }
2863 const GLfloat* v = 2752 volatile const GLfloat* v = GetImmediateDataAs<volatile const GLfloat*>(
2864 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 2753 c, data_size, immediate_data_size);
2865 error::Error error = DoUniform2fv(location, count, v); 2754 error::Error error = DoUniform2fv(location, count, v);
2866 if (error != error::kNoError) { 2755 if (error != error::kNoError) {
2867 return error; 2756 return error;
2868 } 2757 }
2869 return error::kNoError; 2758 return error::kNoError;
2870 } 2759 }
2871 2760
2872 error::Error GLES2DecoderPassthroughImpl::HandleUniform2i( 2761 error::Error GLES2DecoderPassthroughImpl::HandleUniform2i(
2873 uint32_t immediate_data_size, 2762 uint32_t immediate_data_size,
2874 const void* cmd_data) { 2763 const volatile void* cmd_data) {
2875 const gles2::cmds::Uniform2i& c = 2764 const volatile gles2::cmds::Uniform2i& c =
2876 *static_cast<const gles2::cmds::Uniform2i*>(cmd_data); 2765 *static_cast<const volatile gles2::cmds::Uniform2i*>(cmd_data);
2877 (void)c;
2878 GLint location = static_cast<GLint>(c.location); 2766 GLint location = static_cast<GLint>(c.location);
2879 GLint x = static_cast<GLint>(c.x); 2767 GLint x = static_cast<GLint>(c.x);
2880 GLint y = static_cast<GLint>(c.y); 2768 GLint y = static_cast<GLint>(c.y);
2881 error::Error error = DoUniform2i(location, x, y); 2769 error::Error error = DoUniform2i(location, x, y);
2882 if (error != error::kNoError) { 2770 if (error != error::kNoError) {
2883 return error; 2771 return error;
2884 } 2772 }
2885 return error::kNoError; 2773 return error::kNoError;
2886 } 2774 }
2887 2775
2888 error::Error GLES2DecoderPassthroughImpl::HandleUniform2ivImmediate( 2776 error::Error GLES2DecoderPassthroughImpl::HandleUniform2ivImmediate(
2889 uint32_t immediate_data_size, 2777 uint32_t immediate_data_size,
2890 const void* cmd_data) { 2778 const volatile void* cmd_data) {
2891 const gles2::cmds::Uniform2ivImmediate& c = 2779 const volatile gles2::cmds::Uniform2ivImmediate& c =
2892 *static_cast<const gles2::cmds::Uniform2ivImmediate*>(cmd_data); 2780 *static_cast<const volatile gles2::cmds::Uniform2ivImmediate*>(cmd_data);
2893 (void)c;
2894 GLint location = static_cast<GLint>(c.location); 2781 GLint location = static_cast<GLint>(c.location);
2895 GLsizei count = static_cast<GLsizei>(c.count); 2782 GLsizei count = static_cast<GLsizei>(c.count);
2896 uint32_t data_size = 0; 2783 uint32_t data_size = 0;
2897 if (count >= 0 && 2784 if (count >= 0 &&
2898 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 2, &data_size)) { 2785 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 2, &data_size)) {
2899 return error::kOutOfBounds; 2786 return error::kOutOfBounds;
2900 } 2787 }
2901 if (data_size > immediate_data_size) { 2788 if (data_size > immediate_data_size) {
2902 return error::kOutOfBounds; 2789 return error::kOutOfBounds;
2903 } 2790 }
2904 const GLint* v = 2791 volatile const GLint* v = GetImmediateDataAs<volatile const GLint*>(
2905 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); 2792 c, data_size, immediate_data_size);
2906 error::Error error = DoUniform2iv(location, count, v); 2793 error::Error error = DoUniform2iv(location, count, v);
2907 if (error != error::kNoError) { 2794 if (error != error::kNoError) {
2908 return error; 2795 return error;
2909 } 2796 }
2910 return error::kNoError; 2797 return error::kNoError;
2911 } 2798 }
2912 2799
2913 error::Error GLES2DecoderPassthroughImpl::HandleUniform2ui( 2800 error::Error GLES2DecoderPassthroughImpl::HandleUniform2ui(
2914 uint32_t immediate_data_size, 2801 uint32_t immediate_data_size,
2915 const void* cmd_data) { 2802 const volatile void* cmd_data) {
2916 const gles2::cmds::Uniform2ui& c = 2803 const volatile gles2::cmds::Uniform2ui& c =
2917 *static_cast<const gles2::cmds::Uniform2ui*>(cmd_data); 2804 *static_cast<const volatile gles2::cmds::Uniform2ui*>(cmd_data);
2918 (void)c;
2919 GLint location = static_cast<GLint>(c.location); 2805 GLint location = static_cast<GLint>(c.location);
2920 GLuint x = static_cast<GLuint>(c.x); 2806 GLuint x = static_cast<GLuint>(c.x);
2921 GLuint y = static_cast<GLuint>(c.y); 2807 GLuint y = static_cast<GLuint>(c.y);
2922 error::Error error = DoUniform2ui(location, x, y); 2808 error::Error error = DoUniform2ui(location, x, y);
2923 if (error != error::kNoError) { 2809 if (error != error::kNoError) {
2924 return error; 2810 return error;
2925 } 2811 }
2926 return error::kNoError; 2812 return error::kNoError;
2927 } 2813 }
2928 2814
2929 error::Error GLES2DecoderPassthroughImpl::HandleUniform2uivImmediate( 2815 error::Error GLES2DecoderPassthroughImpl::HandleUniform2uivImmediate(
2930 uint32_t immediate_data_size, 2816 uint32_t immediate_data_size,
2931 const void* cmd_data) { 2817 const volatile void* cmd_data) {
2932 const gles2::cmds::Uniform2uivImmediate& c = 2818 const volatile gles2::cmds::Uniform2uivImmediate& c =
2933 *static_cast<const gles2::cmds::Uniform2uivImmediate*>(cmd_data); 2819 *static_cast<const volatile gles2::cmds::Uniform2uivImmediate*>(cmd_data);
2934 (void)c;
2935 GLint location = static_cast<GLint>(c.location); 2820 GLint location = static_cast<GLint>(c.location);
2936 GLsizei count = static_cast<GLsizei>(c.count); 2821 GLsizei count = static_cast<GLsizei>(c.count);
2937 uint32_t data_size = 0; 2822 uint32_t data_size = 0;
2938 if (count >= 0 && 2823 if (count >= 0 &&
2939 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 2, &data_size)) { 2824 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 2, &data_size)) {
2940 return error::kOutOfBounds; 2825 return error::kOutOfBounds;
2941 } 2826 }
2942 if (data_size > immediate_data_size) { 2827 if (data_size > immediate_data_size) {
2943 return error::kOutOfBounds; 2828 return error::kOutOfBounds;
2944 } 2829 }
2945 const GLuint* v = 2830 volatile const GLuint* v = GetImmediateDataAs<volatile const GLuint*>(
2946 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 2831 c, data_size, immediate_data_size);
2947 error::Error error = DoUniform2uiv(location, count, v); 2832 error::Error error = DoUniform2uiv(location, count, v);
2948 if (error != error::kNoError) { 2833 if (error != error::kNoError) {
2949 return error; 2834 return error;
2950 } 2835 }
2951 return error::kNoError; 2836 return error::kNoError;
2952 } 2837 }
2953 2838
2954 error::Error GLES2DecoderPassthroughImpl::HandleUniform3f( 2839 error::Error GLES2DecoderPassthroughImpl::HandleUniform3f(
2955 uint32_t immediate_data_size, 2840 uint32_t immediate_data_size,
2956 const void* cmd_data) { 2841 const volatile void* cmd_data) {
2957 const gles2::cmds::Uniform3f& c = 2842 const volatile gles2::cmds::Uniform3f& c =
2958 *static_cast<const gles2::cmds::Uniform3f*>(cmd_data); 2843 *static_cast<const volatile gles2::cmds::Uniform3f*>(cmd_data);
2959 (void)c;
2960 GLint location = static_cast<GLint>(c.location); 2844 GLint location = static_cast<GLint>(c.location);
2961 GLfloat x = static_cast<GLfloat>(c.x); 2845 GLfloat x = static_cast<GLfloat>(c.x);
2962 GLfloat y = static_cast<GLfloat>(c.y); 2846 GLfloat y = static_cast<GLfloat>(c.y);
2963 GLfloat z = static_cast<GLfloat>(c.z); 2847 GLfloat z = static_cast<GLfloat>(c.z);
2964 error::Error error = DoUniform3f(location, x, y, z); 2848 error::Error error = DoUniform3f(location, x, y, z);
2965 if (error != error::kNoError) { 2849 if (error != error::kNoError) {
2966 return error; 2850 return error;
2967 } 2851 }
2968 return error::kNoError; 2852 return error::kNoError;
2969 } 2853 }
2970 2854
2971 error::Error GLES2DecoderPassthroughImpl::HandleUniform3fvImmediate( 2855 error::Error GLES2DecoderPassthroughImpl::HandleUniform3fvImmediate(
2972 uint32_t immediate_data_size, 2856 uint32_t immediate_data_size,
2973 const void* cmd_data) { 2857 const volatile void* cmd_data) {
2974 const gles2::cmds::Uniform3fvImmediate& c = 2858 const volatile gles2::cmds::Uniform3fvImmediate& c =
2975 *static_cast<const gles2::cmds::Uniform3fvImmediate*>(cmd_data); 2859 *static_cast<const volatile gles2::cmds::Uniform3fvImmediate*>(cmd_data);
2976 (void)c;
2977 GLint location = static_cast<GLint>(c.location); 2860 GLint location = static_cast<GLint>(c.location);
2978 GLsizei count = static_cast<GLsizei>(c.count); 2861 GLsizei count = static_cast<GLsizei>(c.count);
2979 uint32_t data_size = 0; 2862 uint32_t data_size = 0;
2980 if (count >= 0 && 2863 if (count >= 0 &&
2981 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 3, &data_size)) { 2864 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 3, &data_size)) {
2982 return error::kOutOfBounds; 2865 return error::kOutOfBounds;
2983 } 2866 }
2984 if (data_size > immediate_data_size) { 2867 if (data_size > immediate_data_size) {
2985 return error::kOutOfBounds; 2868 return error::kOutOfBounds;
2986 } 2869 }
2987 const GLfloat* v = 2870 volatile const GLfloat* v = GetImmediateDataAs<volatile const GLfloat*>(
2988 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 2871 c, data_size, immediate_data_size);
2989 error::Error error = DoUniform3fv(location, count, v); 2872 error::Error error = DoUniform3fv(location, count, v);
2990 if (error != error::kNoError) { 2873 if (error != error::kNoError) {
2991 return error; 2874 return error;
2992 } 2875 }
2993 return error::kNoError; 2876 return error::kNoError;
2994 } 2877 }
2995 2878
2996 error::Error GLES2DecoderPassthroughImpl::HandleUniform3i( 2879 error::Error GLES2DecoderPassthroughImpl::HandleUniform3i(
2997 uint32_t immediate_data_size, 2880 uint32_t immediate_data_size,
2998 const void* cmd_data) { 2881 const volatile void* cmd_data) {
2999 const gles2::cmds::Uniform3i& c = 2882 const volatile gles2::cmds::Uniform3i& c =
3000 *static_cast<const gles2::cmds::Uniform3i*>(cmd_data); 2883 *static_cast<const volatile gles2::cmds::Uniform3i*>(cmd_data);
3001 (void)c;
3002 GLint location = static_cast<GLint>(c.location); 2884 GLint location = static_cast<GLint>(c.location);
3003 GLint x = static_cast<GLint>(c.x); 2885 GLint x = static_cast<GLint>(c.x);
3004 GLint y = static_cast<GLint>(c.y); 2886 GLint y = static_cast<GLint>(c.y);
3005 GLint z = static_cast<GLint>(c.z); 2887 GLint z = static_cast<GLint>(c.z);
3006 error::Error error = DoUniform3i(location, x, y, z); 2888 error::Error error = DoUniform3i(location, x, y, z);
3007 if (error != error::kNoError) { 2889 if (error != error::kNoError) {
3008 return error; 2890 return error;
3009 } 2891 }
3010 return error::kNoError; 2892 return error::kNoError;
3011 } 2893 }
3012 2894
3013 error::Error GLES2DecoderPassthroughImpl::HandleUniform3ivImmediate( 2895 error::Error GLES2DecoderPassthroughImpl::HandleUniform3ivImmediate(
3014 uint32_t immediate_data_size, 2896 uint32_t immediate_data_size,
3015 const void* cmd_data) { 2897 const volatile void* cmd_data) {
3016 const gles2::cmds::Uniform3ivImmediate& c = 2898 const volatile gles2::cmds::Uniform3ivImmediate& c =
3017 *static_cast<const gles2::cmds::Uniform3ivImmediate*>(cmd_data); 2899 *static_cast<const volatile gles2::cmds::Uniform3ivImmediate*>(cmd_data);
3018 (void)c;
3019 GLint location = static_cast<GLint>(c.location); 2900 GLint location = static_cast<GLint>(c.location);
3020 GLsizei count = static_cast<GLsizei>(c.count); 2901 GLsizei count = static_cast<GLsizei>(c.count);
3021 uint32_t data_size = 0; 2902 uint32_t data_size = 0;
3022 if (count >= 0 && 2903 if (count >= 0 &&
3023 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 3, &data_size)) { 2904 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 3, &data_size)) {
3024 return error::kOutOfBounds; 2905 return error::kOutOfBounds;
3025 } 2906 }
3026 if (data_size > immediate_data_size) { 2907 if (data_size > immediate_data_size) {
3027 return error::kOutOfBounds; 2908 return error::kOutOfBounds;
3028 } 2909 }
3029 const GLint* v = 2910 volatile const GLint* v = GetImmediateDataAs<volatile const GLint*>(
3030 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); 2911 c, data_size, immediate_data_size);
3031 error::Error error = DoUniform3iv(location, count, v); 2912 error::Error error = DoUniform3iv(location, count, v);
3032 if (error != error::kNoError) { 2913 if (error != error::kNoError) {
3033 return error; 2914 return error;
3034 } 2915 }
3035 return error::kNoError; 2916 return error::kNoError;
3036 } 2917 }
3037 2918
3038 error::Error GLES2DecoderPassthroughImpl::HandleUniform3ui( 2919 error::Error GLES2DecoderPassthroughImpl::HandleUniform3ui(
3039 uint32_t immediate_data_size, 2920 uint32_t immediate_data_size,
3040 const void* cmd_data) { 2921 const volatile void* cmd_data) {
3041 const gles2::cmds::Uniform3ui& c = 2922 const volatile gles2::cmds::Uniform3ui& c =
3042 *static_cast<const gles2::cmds::Uniform3ui*>(cmd_data); 2923 *static_cast<const volatile gles2::cmds::Uniform3ui*>(cmd_data);
3043 (void)c;
3044 GLint location = static_cast<GLint>(c.location); 2924 GLint location = static_cast<GLint>(c.location);
3045 GLuint x = static_cast<GLuint>(c.x); 2925 GLuint x = static_cast<GLuint>(c.x);
3046 GLuint y = static_cast<GLuint>(c.y); 2926 GLuint y = static_cast<GLuint>(c.y);
3047 GLuint z = static_cast<GLuint>(c.z); 2927 GLuint z = static_cast<GLuint>(c.z);
3048 error::Error error = DoUniform3ui(location, x, y, z); 2928 error::Error error = DoUniform3ui(location, x, y, z);
3049 if (error != error::kNoError) { 2929 if (error != error::kNoError) {
3050 return error; 2930 return error;
3051 } 2931 }
3052 return error::kNoError; 2932 return error::kNoError;
3053 } 2933 }
3054 2934
3055 error::Error GLES2DecoderPassthroughImpl::HandleUniform3uivImmediate( 2935 error::Error GLES2DecoderPassthroughImpl::HandleUniform3uivImmediate(
3056 uint32_t immediate_data_size, 2936 uint32_t immediate_data_size,
3057 const void* cmd_data) { 2937 const volatile void* cmd_data) {
3058 const gles2::cmds::Uniform3uivImmediate& c = 2938 const volatile gles2::cmds::Uniform3uivImmediate& c =
3059 *static_cast<const gles2::cmds::Uniform3uivImmediate*>(cmd_data); 2939 *static_cast<const volatile gles2::cmds::Uniform3uivImmediate*>(cmd_data);
3060 (void)c;
3061 GLint location = static_cast<GLint>(c.location); 2940 GLint location = static_cast<GLint>(c.location);
3062 GLsizei count = static_cast<GLsizei>(c.count); 2941 GLsizei count = static_cast<GLsizei>(c.count);
3063 uint32_t data_size = 0; 2942 uint32_t data_size = 0;
3064 if (count >= 0 && 2943 if (count >= 0 &&
3065 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 3, &data_size)) { 2944 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 3, &data_size)) {
3066 return error::kOutOfBounds; 2945 return error::kOutOfBounds;
3067 } 2946 }
3068 if (data_size > immediate_data_size) { 2947 if (data_size > immediate_data_size) {
3069 return error::kOutOfBounds; 2948 return error::kOutOfBounds;
3070 } 2949 }
3071 const GLuint* v = 2950 volatile const GLuint* v = GetImmediateDataAs<volatile const GLuint*>(
3072 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 2951 c, data_size, immediate_data_size);
3073 error::Error error = DoUniform3uiv(location, count, v); 2952 error::Error error = DoUniform3uiv(location, count, v);
3074 if (error != error::kNoError) { 2953 if (error != error::kNoError) {
3075 return error; 2954 return error;
3076 } 2955 }
3077 return error::kNoError; 2956 return error::kNoError;
3078 } 2957 }
3079 2958
3080 error::Error GLES2DecoderPassthroughImpl::HandleUniform4f( 2959 error::Error GLES2DecoderPassthroughImpl::HandleUniform4f(
3081 uint32_t immediate_data_size, 2960 uint32_t immediate_data_size,
3082 const void* cmd_data) { 2961 const volatile void* cmd_data) {
3083 const gles2::cmds::Uniform4f& c = 2962 const volatile gles2::cmds::Uniform4f& c =
3084 *static_cast<const gles2::cmds::Uniform4f*>(cmd_data); 2963 *static_cast<const volatile gles2::cmds::Uniform4f*>(cmd_data);
3085 (void)c;
3086 GLint location = static_cast<GLint>(c.location); 2964 GLint location = static_cast<GLint>(c.location);
3087 GLfloat x = static_cast<GLfloat>(c.x); 2965 GLfloat x = static_cast<GLfloat>(c.x);
3088 GLfloat y = static_cast<GLfloat>(c.y); 2966 GLfloat y = static_cast<GLfloat>(c.y);
3089 GLfloat z = static_cast<GLfloat>(c.z); 2967 GLfloat z = static_cast<GLfloat>(c.z);
3090 GLfloat w = static_cast<GLfloat>(c.w); 2968 GLfloat w = static_cast<GLfloat>(c.w);
3091 error::Error error = DoUniform4f(location, x, y, z, w); 2969 error::Error error = DoUniform4f(location, x, y, z, w);
3092 if (error != error::kNoError) { 2970 if (error != error::kNoError) {
3093 return error; 2971 return error;
3094 } 2972 }
3095 return error::kNoError; 2973 return error::kNoError;
3096 } 2974 }
3097 2975
3098 error::Error GLES2DecoderPassthroughImpl::HandleUniform4fvImmediate( 2976 error::Error GLES2DecoderPassthroughImpl::HandleUniform4fvImmediate(
3099 uint32_t immediate_data_size, 2977 uint32_t immediate_data_size,
3100 const void* cmd_data) { 2978 const volatile void* cmd_data) {
3101 const gles2::cmds::Uniform4fvImmediate& c = 2979 const volatile gles2::cmds::Uniform4fvImmediate& c =
3102 *static_cast<const gles2::cmds::Uniform4fvImmediate*>(cmd_data); 2980 *static_cast<const volatile gles2::cmds::Uniform4fvImmediate*>(cmd_data);
3103 (void)c;
3104 GLint location = static_cast<GLint>(c.location); 2981 GLint location = static_cast<GLint>(c.location);
3105 GLsizei count = static_cast<GLsizei>(c.count); 2982 GLsizei count = static_cast<GLsizei>(c.count);
3106 uint32_t data_size = 0; 2983 uint32_t data_size = 0;
3107 if (count >= 0 && 2984 if (count >= 0 &&
3108 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { 2985 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) {
3109 return error::kOutOfBounds; 2986 return error::kOutOfBounds;
3110 } 2987 }
3111 if (data_size > immediate_data_size) { 2988 if (data_size > immediate_data_size) {
3112 return error::kOutOfBounds; 2989 return error::kOutOfBounds;
3113 } 2990 }
3114 const GLfloat* v = 2991 volatile const GLfloat* v = GetImmediateDataAs<volatile const GLfloat*>(
3115 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 2992 c, data_size, immediate_data_size);
3116 error::Error error = DoUniform4fv(location, count, v); 2993 error::Error error = DoUniform4fv(location, count, v);
3117 if (error != error::kNoError) { 2994 if (error != error::kNoError) {
3118 return error; 2995 return error;
3119 } 2996 }
3120 return error::kNoError; 2997 return error::kNoError;
3121 } 2998 }
3122 2999
3123 error::Error GLES2DecoderPassthroughImpl::HandleUniform4i( 3000 error::Error GLES2DecoderPassthroughImpl::HandleUniform4i(
3124 uint32_t immediate_data_size, 3001 uint32_t immediate_data_size,
3125 const void* cmd_data) { 3002 const volatile void* cmd_data) {
3126 const gles2::cmds::Uniform4i& c = 3003 const volatile gles2::cmds::Uniform4i& c =
3127 *static_cast<const gles2::cmds::Uniform4i*>(cmd_data); 3004 *static_cast<const volatile gles2::cmds::Uniform4i*>(cmd_data);
3128 (void)c;
3129 GLint location = static_cast<GLint>(c.location); 3005 GLint location = static_cast<GLint>(c.location);
3130 GLint x = static_cast<GLint>(c.x); 3006 GLint x = static_cast<GLint>(c.x);
3131 GLint y = static_cast<GLint>(c.y); 3007 GLint y = static_cast<GLint>(c.y);
3132 GLint z = static_cast<GLint>(c.z); 3008 GLint z = static_cast<GLint>(c.z);
3133 GLint w = static_cast<GLint>(c.w); 3009 GLint w = static_cast<GLint>(c.w);
3134 error::Error error = DoUniform4i(location, x, y, z, w); 3010 error::Error error = DoUniform4i(location, x, y, z, w);
3135 if (error != error::kNoError) { 3011 if (error != error::kNoError) {
3136 return error; 3012 return error;
3137 } 3013 }
3138 return error::kNoError; 3014 return error::kNoError;
3139 } 3015 }
3140 3016
3141 error::Error GLES2DecoderPassthroughImpl::HandleUniform4ivImmediate( 3017 error::Error GLES2DecoderPassthroughImpl::HandleUniform4ivImmediate(
3142 uint32_t immediate_data_size, 3018 uint32_t immediate_data_size,
3143 const void* cmd_data) { 3019 const volatile void* cmd_data) {
3144 const gles2::cmds::Uniform4ivImmediate& c = 3020 const volatile gles2::cmds::Uniform4ivImmediate& c =
3145 *static_cast<const gles2::cmds::Uniform4ivImmediate*>(cmd_data); 3021 *static_cast<const volatile gles2::cmds::Uniform4ivImmediate*>(cmd_data);
3146 (void)c;
3147 GLint location = static_cast<GLint>(c.location); 3022 GLint location = static_cast<GLint>(c.location);
3148 GLsizei count = static_cast<GLsizei>(c.count); 3023 GLsizei count = static_cast<GLsizei>(c.count);
3149 uint32_t data_size = 0; 3024 uint32_t data_size = 0;
3150 if (count >= 0 && 3025 if (count >= 0 &&
3151 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 4, &data_size)) { 3026 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 4, &data_size)) {
3152 return error::kOutOfBounds; 3027 return error::kOutOfBounds;
3153 } 3028 }
3154 if (data_size > immediate_data_size) { 3029 if (data_size > immediate_data_size) {
3155 return error::kOutOfBounds; 3030 return error::kOutOfBounds;
3156 } 3031 }
3157 const GLint* v = 3032 volatile const GLint* v = GetImmediateDataAs<volatile const GLint*>(
3158 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); 3033 c, data_size, immediate_data_size);
3159 error::Error error = DoUniform4iv(location, count, v); 3034 error::Error error = DoUniform4iv(location, count, v);
3160 if (error != error::kNoError) { 3035 if (error != error::kNoError) {
3161 return error; 3036 return error;
3162 } 3037 }
3163 return error::kNoError; 3038 return error::kNoError;
3164 } 3039 }
3165 3040
3166 error::Error GLES2DecoderPassthroughImpl::HandleUniform4ui( 3041 error::Error GLES2DecoderPassthroughImpl::HandleUniform4ui(
3167 uint32_t immediate_data_size, 3042 uint32_t immediate_data_size,
3168 const void* cmd_data) { 3043 const volatile void* cmd_data) {
3169 const gles2::cmds::Uniform4ui& c = 3044 const volatile gles2::cmds::Uniform4ui& c =
3170 *static_cast<const gles2::cmds::Uniform4ui*>(cmd_data); 3045 *static_cast<const volatile gles2::cmds::Uniform4ui*>(cmd_data);
3171 (void)c;
3172 GLint location = static_cast<GLint>(c.location); 3046 GLint location = static_cast<GLint>(c.location);
3173 GLuint x = static_cast<GLuint>(c.x); 3047 GLuint x = static_cast<GLuint>(c.x);
3174 GLuint y = static_cast<GLuint>(c.y); 3048 GLuint y = static_cast<GLuint>(c.y);
3175 GLuint z = static_cast<GLuint>(c.z); 3049 GLuint z = static_cast<GLuint>(c.z);
3176 GLuint w = static_cast<GLuint>(c.w); 3050 GLuint w = static_cast<GLuint>(c.w);
3177 error::Error error = DoUniform4ui(location, x, y, z, w); 3051 error::Error error = DoUniform4ui(location, x, y, z, w);
3178 if (error != error::kNoError) { 3052 if (error != error::kNoError) {
3179 return error; 3053 return error;
3180 } 3054 }
3181 return error::kNoError; 3055 return error::kNoError;
3182 } 3056 }
3183 3057
3184 error::Error GLES2DecoderPassthroughImpl::HandleUniform4uivImmediate( 3058 error::Error GLES2DecoderPassthroughImpl::HandleUniform4uivImmediate(
3185 uint32_t immediate_data_size, 3059 uint32_t immediate_data_size,
3186 const void* cmd_data) { 3060 const volatile void* cmd_data) {
3187 const gles2::cmds::Uniform4uivImmediate& c = 3061 const volatile gles2::cmds::Uniform4uivImmediate& c =
3188 *static_cast<const gles2::cmds::Uniform4uivImmediate*>(cmd_data); 3062 *static_cast<const volatile gles2::cmds::Uniform4uivImmediate*>(cmd_data);
3189 (void)c;
3190 GLint location = static_cast<GLint>(c.location); 3063 GLint location = static_cast<GLint>(c.location);
3191 GLsizei count = static_cast<GLsizei>(c.count); 3064 GLsizei count = static_cast<GLsizei>(c.count);
3192 uint32_t data_size = 0; 3065 uint32_t data_size = 0;
3193 if (count >= 0 && 3066 if (count >= 0 &&
3194 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 4, &data_size)) { 3067 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 4, &data_size)) {
3195 return error::kOutOfBounds; 3068 return error::kOutOfBounds;
3196 } 3069 }
3197 if (data_size > immediate_data_size) { 3070 if (data_size > immediate_data_size) {
3198 return error::kOutOfBounds; 3071 return error::kOutOfBounds;
3199 } 3072 }
3200 const GLuint* v = 3073 volatile const GLuint* v = GetImmediateDataAs<volatile const GLuint*>(
3201 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 3074 c, data_size, immediate_data_size);
3202 error::Error error = DoUniform4uiv(location, count, v); 3075 error::Error error = DoUniform4uiv(location, count, v);
3203 if (error != error::kNoError) { 3076 if (error != error::kNoError) {
3204 return error; 3077 return error;
3205 } 3078 }
3206 return error::kNoError; 3079 return error::kNoError;
3207 } 3080 }
3208 3081
3209 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix2fvImmediate( 3082 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix2fvImmediate(
3210 uint32_t immediate_data_size, 3083 uint32_t immediate_data_size,
3211 const void* cmd_data) { 3084 const volatile void* cmd_data) {
3212 const gles2::cmds::UniformMatrix2fvImmediate& c = 3085 const volatile gles2::cmds::UniformMatrix2fvImmediate& c =
3213 *static_cast<const gles2::cmds::UniformMatrix2fvImmediate*>(cmd_data); 3086 *static_cast<const volatile gles2::cmds::UniformMatrix2fvImmediate*>(
3214 (void)c; 3087 cmd_data);
3215 GLint location = static_cast<GLint>(c.location); 3088 GLint location = static_cast<GLint>(c.location);
3216 GLsizei count = static_cast<GLsizei>(c.count); 3089 GLsizei count = static_cast<GLsizei>(c.count);
3217 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3090 GLboolean transpose = static_cast<GLboolean>(c.transpose);
3218 uint32_t data_size = 0; 3091 uint32_t data_size = 0;
3219 if (count >= 0 && 3092 if (count >= 0 &&
3220 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { 3093 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) {
3221 return error::kOutOfBounds; 3094 return error::kOutOfBounds;
3222 } 3095 }
3223 if (data_size > immediate_data_size) { 3096 if (data_size > immediate_data_size) {
3224 return error::kOutOfBounds; 3097 return error::kOutOfBounds;
3225 } 3098 }
3226 const GLfloat* value = 3099 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
3227 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 3100 c, data_size, immediate_data_size);
3228 error::Error error = DoUniformMatrix2fv(location, count, transpose, value); 3101 error::Error error = DoUniformMatrix2fv(location, count, transpose, value);
3229 if (error != error::kNoError) { 3102 if (error != error::kNoError) {
3230 return error; 3103 return error;
3231 } 3104 }
3232 return error::kNoError; 3105 return error::kNoError;
3233 } 3106 }
3234 3107
3235 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix2x3fvImmediate( 3108 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix2x3fvImmediate(
3236 uint32_t immediate_data_size, 3109 uint32_t immediate_data_size,
3237 const void* cmd_data) { 3110 const volatile void* cmd_data) {
3238 const gles2::cmds::UniformMatrix2x3fvImmediate& c = 3111 const volatile gles2::cmds::UniformMatrix2x3fvImmediate& c =
3239 *static_cast<const gles2::cmds::UniformMatrix2x3fvImmediate*>(cmd_data); 3112 *static_cast<const volatile gles2::cmds::UniformMatrix2x3fvImmediate*>(
3240 (void)c; 3113 cmd_data);
3241 GLint location = static_cast<GLint>(c.location); 3114 GLint location = static_cast<GLint>(c.location);
3242 GLsizei count = static_cast<GLsizei>(c.count); 3115 GLsizei count = static_cast<GLsizei>(c.count);
3243 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3116 GLboolean transpose = static_cast<GLboolean>(c.transpose);
3244 uint32_t data_size = 0; 3117 uint32_t data_size = 0;
3245 if (count >= 0 && 3118 if (count >= 0 &&
3246 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 6, &data_size)) { 3119 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 6, &data_size)) {
3247 return error::kOutOfBounds; 3120 return error::kOutOfBounds;
3248 } 3121 }
3249 if (data_size > immediate_data_size) { 3122 if (data_size > immediate_data_size) {
3250 return error::kOutOfBounds; 3123 return error::kOutOfBounds;
3251 } 3124 }
3252 const GLfloat* value = 3125 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
3253 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 3126 c, data_size, immediate_data_size);
3254 error::Error error = DoUniformMatrix2x3fv(location, count, transpose, value); 3127 error::Error error = DoUniformMatrix2x3fv(location, count, transpose, value);
3255 if (error != error::kNoError) { 3128 if (error != error::kNoError) {
3256 return error; 3129 return error;
3257 } 3130 }
3258 return error::kNoError; 3131 return error::kNoError;
3259 } 3132 }
3260 3133
3261 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix2x4fvImmediate( 3134 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix2x4fvImmediate(
3262 uint32_t immediate_data_size, 3135 uint32_t immediate_data_size,
3263 const void* cmd_data) { 3136 const volatile void* cmd_data) {
3264 const gles2::cmds::UniformMatrix2x4fvImmediate& c = 3137 const volatile gles2::cmds::UniformMatrix2x4fvImmediate& c =
3265 *static_cast<const gles2::cmds::UniformMatrix2x4fvImmediate*>(cmd_data); 3138 *static_cast<const volatile gles2::cmds::UniformMatrix2x4fvImmediate*>(
3266 (void)c; 3139 cmd_data);
3267 GLint location = static_cast<GLint>(c.location); 3140 GLint location = static_cast<GLint>(c.location);
3268 GLsizei count = static_cast<GLsizei>(c.count); 3141 GLsizei count = static_cast<GLsizei>(c.count);
3269 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3142 GLboolean transpose = static_cast<GLboolean>(c.transpose);
3270 uint32_t data_size = 0; 3143 uint32_t data_size = 0;
3271 if (count >= 0 && 3144 if (count >= 0 &&
3272 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 8, &data_size)) { 3145 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 8, &data_size)) {
3273 return error::kOutOfBounds; 3146 return error::kOutOfBounds;
3274 } 3147 }
3275 if (data_size > immediate_data_size) { 3148 if (data_size > immediate_data_size) {
3276 return error::kOutOfBounds; 3149 return error::kOutOfBounds;
3277 } 3150 }
3278 const GLfloat* value = 3151 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
3279 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 3152 c, data_size, immediate_data_size);
3280 error::Error error = DoUniformMatrix2x4fv(location, count, transpose, value); 3153 error::Error error = DoUniformMatrix2x4fv(location, count, transpose, value);
3281 if (error != error::kNoError) { 3154 if (error != error::kNoError) {
3282 return error; 3155 return error;
3283 } 3156 }
3284 return error::kNoError; 3157 return error::kNoError;
3285 } 3158 }
3286 3159
3287 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix3fvImmediate( 3160 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix3fvImmediate(
3288 uint32_t immediate_data_size, 3161 uint32_t immediate_data_size,
3289 const void* cmd_data) { 3162 const volatile void* cmd_data) {
3290 const gles2::cmds::UniformMatrix3fvImmediate& c = 3163 const volatile gles2::cmds::UniformMatrix3fvImmediate& c =
3291 *static_cast<const gles2::cmds::UniformMatrix3fvImmediate*>(cmd_data); 3164 *static_cast<const volatile gles2::cmds::UniformMatrix3fvImmediate*>(
3292 (void)c; 3165 cmd_data);
3293 GLint location = static_cast<GLint>(c.location); 3166 GLint location = static_cast<GLint>(c.location);
3294 GLsizei count = static_cast<GLsizei>(c.count); 3167 GLsizei count = static_cast<GLsizei>(c.count);
3295 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3168 GLboolean transpose = static_cast<GLboolean>(c.transpose);
3296 uint32_t data_size = 0; 3169 uint32_t data_size = 0;
3297 if (count >= 0 && 3170 if (count >= 0 &&
3298 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) { 3171 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) {
3299 return error::kOutOfBounds; 3172 return error::kOutOfBounds;
3300 } 3173 }
3301 if (data_size > immediate_data_size) { 3174 if (data_size > immediate_data_size) {
3302 return error::kOutOfBounds; 3175 return error::kOutOfBounds;
3303 } 3176 }
3304 const GLfloat* value = 3177 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
3305 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 3178 c, data_size, immediate_data_size);
3306 error::Error error = DoUniformMatrix3fv(location, count, transpose, value); 3179 error::Error error = DoUniformMatrix3fv(location, count, transpose, value);
3307 if (error != error::kNoError) { 3180 if (error != error::kNoError) {
3308 return error; 3181 return error;
3309 } 3182 }
3310 return error::kNoError; 3183 return error::kNoError;
3311 } 3184 }
3312 3185
3313 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix3x2fvImmediate( 3186 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix3x2fvImmediate(
3314 uint32_t immediate_data_size, 3187 uint32_t immediate_data_size,
3315 const void* cmd_data) { 3188 const volatile void* cmd_data) {
3316 const gles2::cmds::UniformMatrix3x2fvImmediate& c = 3189 const volatile gles2::cmds::UniformMatrix3x2fvImmediate& c =
3317 *static_cast<const gles2::cmds::UniformMatrix3x2fvImmediate*>(cmd_data); 3190 *static_cast<const volatile gles2::cmds::UniformMatrix3x2fvImmediate*>(
3318 (void)c; 3191 cmd_data);
3319 GLint location = static_cast<GLint>(c.location); 3192 GLint location = static_cast<GLint>(c.location);
3320 GLsizei count = static_cast<GLsizei>(c.count); 3193 GLsizei count = static_cast<GLsizei>(c.count);
3321 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3194 GLboolean transpose = static_cast<GLboolean>(c.transpose);
3322 uint32_t data_size = 0; 3195 uint32_t data_size = 0;
3323 if (count >= 0 && 3196 if (count >= 0 &&
3324 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 6, &data_size)) { 3197 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 6, &data_size)) {
3325 return error::kOutOfBounds; 3198 return error::kOutOfBounds;
3326 } 3199 }
3327 if (data_size > immediate_data_size) { 3200 if (data_size > immediate_data_size) {
3328 return error::kOutOfBounds; 3201 return error::kOutOfBounds;
3329 } 3202 }
3330 const GLfloat* value = 3203 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
3331 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 3204 c, data_size, immediate_data_size);
3332 error::Error error = DoUniformMatrix3x2fv(location, count, transpose, value); 3205 error::Error error = DoUniformMatrix3x2fv(location, count, transpose, value);
3333 if (error != error::kNoError) { 3206 if (error != error::kNoError) {
3334 return error; 3207 return error;
3335 } 3208 }
3336 return error::kNoError; 3209 return error::kNoError;
3337 } 3210 }
3338 3211
3339 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix3x4fvImmediate( 3212 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix3x4fvImmediate(
3340 uint32_t immediate_data_size, 3213 uint32_t immediate_data_size,
3341 const void* cmd_data) { 3214 const volatile void* cmd_data) {
3342 const gles2::cmds::UniformMatrix3x4fvImmediate& c = 3215 const volatile gles2::cmds::UniformMatrix3x4fvImmediate& c =
3343 *static_cast<const gles2::cmds::UniformMatrix3x4fvImmediate*>(cmd_data); 3216 *static_cast<const volatile gles2::cmds::UniformMatrix3x4fvImmediate*>(
3344 (void)c; 3217 cmd_data);
3345 GLint location = static_cast<GLint>(c.location); 3218 GLint location = static_cast<GLint>(c.location);
3346 GLsizei count = static_cast<GLsizei>(c.count); 3219 GLsizei count = static_cast<GLsizei>(c.count);
3347 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3220 GLboolean transpose = static_cast<GLboolean>(c.transpose);
3348 uint32_t data_size = 0; 3221 uint32_t data_size = 0;
3349 if (count >= 0 && 3222 if (count >= 0 &&
3350 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 12, &data_size)) { 3223 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 12, &data_size)) {
3351 return error::kOutOfBounds; 3224 return error::kOutOfBounds;
3352 } 3225 }
3353 if (data_size > immediate_data_size) { 3226 if (data_size > immediate_data_size) {
3354 return error::kOutOfBounds; 3227 return error::kOutOfBounds;
3355 } 3228 }
3356 const GLfloat* value = 3229 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
3357 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 3230 c, data_size, immediate_data_size);
3358 error::Error error = DoUniformMatrix3x4fv(location, count, transpose, value); 3231 error::Error error = DoUniformMatrix3x4fv(location, count, transpose, value);
3359 if (error != error::kNoError) { 3232 if (error != error::kNoError) {
3360 return error; 3233 return error;
3361 } 3234 }
3362 return error::kNoError; 3235 return error::kNoError;
3363 } 3236 }
3364 3237
3365 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix4fvImmediate( 3238 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix4fvImmediate(
3366 uint32_t immediate_data_size, 3239 uint32_t immediate_data_size,
3367 const void* cmd_data) { 3240 const volatile void* cmd_data) {
3368 const gles2::cmds::UniformMatrix4fvImmediate& c = 3241 const volatile gles2::cmds::UniformMatrix4fvImmediate& c =
3369 *static_cast<const gles2::cmds::UniformMatrix4fvImmediate*>(cmd_data); 3242 *static_cast<const volatile gles2::cmds::UniformMatrix4fvImmediate*>(
3370 (void)c; 3243 cmd_data);
3371 GLint location = static_cast<GLint>(c.location); 3244 GLint location = static_cast<GLint>(c.location);
3372 GLsizei count = static_cast<GLsizei>(c.count); 3245 GLsizei count = static_cast<GLsizei>(c.count);
3373 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3246 GLboolean transpose = static_cast<GLboolean>(c.transpose);
3374 uint32_t data_size = 0; 3247 uint32_t data_size = 0;
3375 if (count >= 0 && 3248 if (count >= 0 &&
3376 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) { 3249 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) {
3377 return error::kOutOfBounds; 3250 return error::kOutOfBounds;
3378 } 3251 }
3379 if (data_size > immediate_data_size) { 3252 if (data_size > immediate_data_size) {
3380 return error::kOutOfBounds; 3253 return error::kOutOfBounds;
3381 } 3254 }
3382 const GLfloat* value = 3255 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
3383 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 3256 c, data_size, immediate_data_size);
3384 error::Error error = DoUniformMatrix4fv(location, count, transpose, value); 3257 error::Error error = DoUniformMatrix4fv(location, count, transpose, value);
3385 if (error != error::kNoError) { 3258 if (error != error::kNoError) {
3386 return error; 3259 return error;
3387 } 3260 }
3388 return error::kNoError; 3261 return error::kNoError;
3389 } 3262 }
3390 3263
3391 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix4x2fvImmediate( 3264 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix4x2fvImmediate(
3392 uint32_t immediate_data_size, 3265 uint32_t immediate_data_size,
3393 const void* cmd_data) { 3266 const volatile void* cmd_data) {
3394 const gles2::cmds::UniformMatrix4x2fvImmediate& c = 3267 const volatile gles2::cmds::UniformMatrix4x2fvImmediate& c =
3395 *static_cast<const gles2::cmds::UniformMatrix4x2fvImmediate*>(cmd_data); 3268 *static_cast<const volatile gles2::cmds::UniformMatrix4x2fvImmediate*>(
3396 (void)c; 3269 cmd_data);
3397 GLint location = static_cast<GLint>(c.location); 3270 GLint location = static_cast<GLint>(c.location);
3398 GLsizei count = static_cast<GLsizei>(c.count); 3271 GLsizei count = static_cast<GLsizei>(c.count);
3399 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3272 GLboolean transpose = static_cast<GLboolean>(c.transpose);
3400 uint32_t data_size = 0; 3273 uint32_t data_size = 0;
3401 if (count >= 0 && 3274 if (count >= 0 &&
3402 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 8, &data_size)) { 3275 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 8, &data_size)) {
3403 return error::kOutOfBounds; 3276 return error::kOutOfBounds;
3404 } 3277 }
3405 if (data_size > immediate_data_size) { 3278 if (data_size > immediate_data_size) {
3406 return error::kOutOfBounds; 3279 return error::kOutOfBounds;
3407 } 3280 }
3408 const GLfloat* value = 3281 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
3409 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 3282 c, data_size, immediate_data_size);
3410 error::Error error = DoUniformMatrix4x2fv(location, count, transpose, value); 3283 error::Error error = DoUniformMatrix4x2fv(location, count, transpose, value);
3411 if (error != error::kNoError) { 3284 if (error != error::kNoError) {
3412 return error; 3285 return error;
3413 } 3286 }
3414 return error::kNoError; 3287 return error::kNoError;
3415 } 3288 }
3416 3289
3417 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix4x3fvImmediate( 3290 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix4x3fvImmediate(
3418 uint32_t immediate_data_size, 3291 uint32_t immediate_data_size,
3419 const void* cmd_data) { 3292 const volatile void* cmd_data) {
3420 const gles2::cmds::UniformMatrix4x3fvImmediate& c = 3293 const volatile gles2::cmds::UniformMatrix4x3fvImmediate& c =
3421 *static_cast<const gles2::cmds::UniformMatrix4x3fvImmediate*>(cmd_data); 3294 *static_cast<const volatile gles2::cmds::UniformMatrix4x3fvImmediate*>(
3422 (void)c; 3295 cmd_data);
3423 GLint location = static_cast<GLint>(c.location); 3296 GLint location = static_cast<GLint>(c.location);
3424 GLsizei count = static_cast<GLsizei>(c.count); 3297 GLsizei count = static_cast<GLsizei>(c.count);
3425 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3298 GLboolean transpose = static_cast<GLboolean>(c.transpose);
3426 uint32_t data_size = 0; 3299 uint32_t data_size = 0;
3427 if (count >= 0 && 3300 if (count >= 0 &&
3428 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 12, &data_size)) { 3301 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 12, &data_size)) {
3429 return error::kOutOfBounds; 3302 return error::kOutOfBounds;
3430 } 3303 }
3431 if (data_size > immediate_data_size) { 3304 if (data_size > immediate_data_size) {
3432 return error::kOutOfBounds; 3305 return error::kOutOfBounds;
3433 } 3306 }
3434 const GLfloat* value = 3307 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
3435 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 3308 c, data_size, immediate_data_size);
3436 error::Error error = DoUniformMatrix4x3fv(location, count, transpose, value); 3309 error::Error error = DoUniformMatrix4x3fv(location, count, transpose, value);
3437 if (error != error::kNoError) { 3310 if (error != error::kNoError) {
3438 return error; 3311 return error;
3439 } 3312 }
3440 return error::kNoError; 3313 return error::kNoError;
3441 } 3314 }
3442 3315
3443 error::Error GLES2DecoderPassthroughImpl::HandleUseProgram( 3316 error::Error GLES2DecoderPassthroughImpl::HandleUseProgram(
3444 uint32_t immediate_data_size, 3317 uint32_t immediate_data_size,
3445 const void* cmd_data) { 3318 const volatile void* cmd_data) {
3446 const gles2::cmds::UseProgram& c = 3319 const volatile gles2::cmds::UseProgram& c =
3447 *static_cast<const gles2::cmds::UseProgram*>(cmd_data); 3320 *static_cast<const volatile gles2::cmds::UseProgram*>(cmd_data);
3448 (void)c;
3449 GLuint program = c.program; 3321 GLuint program = c.program;
3450 error::Error error = DoUseProgram(program); 3322 error::Error error = DoUseProgram(program);
3451 if (error != error::kNoError) { 3323 if (error != error::kNoError) {
3452 return error; 3324 return error;
3453 } 3325 }
3454 return error::kNoError; 3326 return error::kNoError;
3455 } 3327 }
3456 3328
3457 error::Error GLES2DecoderPassthroughImpl::HandleValidateProgram( 3329 error::Error GLES2DecoderPassthroughImpl::HandleValidateProgram(
3458 uint32_t immediate_data_size, 3330 uint32_t immediate_data_size,
3459 const void* cmd_data) { 3331 const volatile void* cmd_data) {
3460 const gles2::cmds::ValidateProgram& c = 3332 const volatile gles2::cmds::ValidateProgram& c =
3461 *static_cast<const gles2::cmds::ValidateProgram*>(cmd_data); 3333 *static_cast<const volatile gles2::cmds::ValidateProgram*>(cmd_data);
3462 (void)c;
3463 GLuint program = c.program; 3334 GLuint program = c.program;
3464 error::Error error = DoValidateProgram(program); 3335 error::Error error = DoValidateProgram(program);
3465 if (error != error::kNoError) { 3336 if (error != error::kNoError) {
3466 return error; 3337 return error;
3467 } 3338 }
3468 return error::kNoError; 3339 return error::kNoError;
3469 } 3340 }
3470 3341
3471 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib1f( 3342 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib1f(
3472 uint32_t immediate_data_size, 3343 uint32_t immediate_data_size,
3473 const void* cmd_data) { 3344 const volatile void* cmd_data) {
3474 const gles2::cmds::VertexAttrib1f& c = 3345 const volatile gles2::cmds::VertexAttrib1f& c =
3475 *static_cast<const gles2::cmds::VertexAttrib1f*>(cmd_data); 3346 *static_cast<const volatile gles2::cmds::VertexAttrib1f*>(cmd_data);
3476 (void)c;
3477 GLuint indx = static_cast<GLuint>(c.indx); 3347 GLuint indx = static_cast<GLuint>(c.indx);
3478 GLfloat x = static_cast<GLfloat>(c.x); 3348 GLfloat x = static_cast<GLfloat>(c.x);
3479 error::Error error = DoVertexAttrib1f(indx, x); 3349 error::Error error = DoVertexAttrib1f(indx, x);
3480 if (error != error::kNoError) { 3350 if (error != error::kNoError) {
3481 return error; 3351 return error;
3482 } 3352 }
3483 return error::kNoError; 3353 return error::kNoError;
3484 } 3354 }
3485 3355
3486 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib1fvImmediate( 3356 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib1fvImmediate(
3487 uint32_t immediate_data_size, 3357 uint32_t immediate_data_size,
3488 const void* cmd_data) { 3358 const volatile void* cmd_data) {
3489 const gles2::cmds::VertexAttrib1fvImmediate& c = 3359 const volatile gles2::cmds::VertexAttrib1fvImmediate& c =
3490 *static_cast<const gles2::cmds::VertexAttrib1fvImmediate*>(cmd_data); 3360 *static_cast<const volatile gles2::cmds::VertexAttrib1fvImmediate*>(
3491 (void)c; 3361 cmd_data);
3492 GLuint indx = static_cast<GLuint>(c.indx); 3362 GLuint indx = static_cast<GLuint>(c.indx);
3493 uint32_t data_size; 3363 uint32_t data_size;
3494 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { 3364 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) {
3495 return error::kOutOfBounds; 3365 return error::kOutOfBounds;
3496 } 3366 }
3497 if (data_size > immediate_data_size) { 3367 if (data_size > immediate_data_size) {
3498 return error::kOutOfBounds; 3368 return error::kOutOfBounds;
3499 } 3369 }
3500 const GLfloat* values = 3370 volatile const GLfloat* values = GetImmediateDataAs<volatile const GLfloat*>(
3501 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 3371 c, data_size, immediate_data_size);
3502 error::Error error = DoVertexAttrib1fv(indx, values); 3372 error::Error error = DoVertexAttrib1fv(indx, values);
3503 if (error != error::kNoError) { 3373 if (error != error::kNoError) {
3504 return error; 3374 return error;
3505 } 3375 }
3506 return error::kNoError; 3376 return error::kNoError;
3507 } 3377 }
3508 3378
3509 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib2f( 3379 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib2f(
3510 uint32_t immediate_data_size, 3380 uint32_t immediate_data_size,
3511 const void* cmd_data) { 3381 const volatile void* cmd_data) {
3512 const gles2::cmds::VertexAttrib2f& c = 3382 const volatile gles2::cmds::VertexAttrib2f& c =
3513 *static_cast<const gles2::cmds::VertexAttrib2f*>(cmd_data); 3383 *static_cast<const volatile gles2::cmds::VertexAttrib2f*>(cmd_data);
3514 (void)c;
3515 GLuint indx = static_cast<GLuint>(c.indx); 3384 GLuint indx = static_cast<GLuint>(c.indx);
3516 GLfloat x = static_cast<GLfloat>(c.x); 3385 GLfloat x = static_cast<GLfloat>(c.x);
3517 GLfloat y = static_cast<GLfloat>(c.y); 3386 GLfloat y = static_cast<GLfloat>(c.y);
3518 error::Error error = DoVertexAttrib2f(indx, x, y); 3387 error::Error error = DoVertexAttrib2f(indx, x, y);
3519 if (error != error::kNoError) { 3388 if (error != error::kNoError) {
3520 return error; 3389 return error;
3521 } 3390 }
3522 return error::kNoError; 3391 return error::kNoError;
3523 } 3392 }
3524 3393
3525 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib2fvImmediate( 3394 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib2fvImmediate(
3526 uint32_t immediate_data_size, 3395 uint32_t immediate_data_size,
3527 const void* cmd_data) { 3396 const volatile void* cmd_data) {
3528 const gles2::cmds::VertexAttrib2fvImmediate& c = 3397 const volatile gles2::cmds::VertexAttrib2fvImmediate& c =
3529 *static_cast<const gles2::cmds::VertexAttrib2fvImmediate*>(cmd_data); 3398 *static_cast<const volatile gles2::cmds::VertexAttrib2fvImmediate*>(
3530 (void)c; 3399 cmd_data);
3531 GLuint indx = static_cast<GLuint>(c.indx); 3400 GLuint indx = static_cast<GLuint>(c.indx);
3532 uint32_t data_size; 3401 uint32_t data_size;
3533 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 2, &data_size)) { 3402 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 2, &data_size)) {
3534 return error::kOutOfBounds; 3403 return error::kOutOfBounds;
3535 } 3404 }
3536 if (data_size > immediate_data_size) { 3405 if (data_size > immediate_data_size) {
3537 return error::kOutOfBounds; 3406 return error::kOutOfBounds;
3538 } 3407 }
3539 const GLfloat* values = 3408 volatile const GLfloat* values = GetImmediateDataAs<volatile const GLfloat*>(
3540 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 3409 c, data_size, immediate_data_size);
3541 error::Error error = DoVertexAttrib2fv(indx, values); 3410 error::Error error = DoVertexAttrib2fv(indx, values);
3542 if (error != error::kNoError) { 3411 if (error != error::kNoError) {
3543 return error; 3412 return error;
3544 } 3413 }
3545 return error::kNoError; 3414 return error::kNoError;
3546 } 3415 }
3547 3416
3548 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib3f( 3417 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib3f(
3549 uint32_t immediate_data_size, 3418 uint32_t immediate_data_size,
3550 const void* cmd_data) { 3419 const volatile void* cmd_data) {
3551 const gles2::cmds::VertexAttrib3f& c = 3420 const volatile gles2::cmds::VertexAttrib3f& c =
3552 *static_cast<const gles2::cmds::VertexAttrib3f*>(cmd_data); 3421 *static_cast<const volatile gles2::cmds::VertexAttrib3f*>(cmd_data);
3553 (void)c;
3554 GLuint indx = static_cast<GLuint>(c.indx); 3422 GLuint indx = static_cast<GLuint>(c.indx);
3555 GLfloat x = static_cast<GLfloat>(c.x); 3423 GLfloat x = static_cast<GLfloat>(c.x);
3556 GLfloat y = static_cast<GLfloat>(c.y); 3424 GLfloat y = static_cast<GLfloat>(c.y);
3557 GLfloat z = static_cast<GLfloat>(c.z); 3425 GLfloat z = static_cast<GLfloat>(c.z);
3558 error::Error error = DoVertexAttrib3f(indx, x, y, z); 3426 error::Error error = DoVertexAttrib3f(indx, x, y, z);
3559 if (error != error::kNoError) { 3427 if (error != error::kNoError) {
3560 return error; 3428 return error;
3561 } 3429 }
3562 return error::kNoError; 3430 return error::kNoError;
3563 } 3431 }
3564 3432
3565 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib3fvImmediate( 3433 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib3fvImmediate(
3566 uint32_t immediate_data_size, 3434 uint32_t immediate_data_size,
3567 const void* cmd_data) { 3435 const volatile void* cmd_data) {
3568 const gles2::cmds::VertexAttrib3fvImmediate& c = 3436 const volatile gles2::cmds::VertexAttrib3fvImmediate& c =
3569 *static_cast<const gles2::cmds::VertexAttrib3fvImmediate*>(cmd_data); 3437 *static_cast<const volatile gles2::cmds::VertexAttrib3fvImmediate*>(
3570 (void)c; 3438 cmd_data);
3571 GLuint indx = static_cast<GLuint>(c.indx); 3439 GLuint indx = static_cast<GLuint>(c.indx);
3572 uint32_t data_size; 3440 uint32_t data_size;
3573 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 3, &data_size)) { 3441 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 3, &data_size)) {
3574 return error::kOutOfBounds; 3442 return error::kOutOfBounds;
3575 } 3443 }
3576 if (data_size > immediate_data_size) { 3444 if (data_size > immediate_data_size) {
3577 return error::kOutOfBounds; 3445 return error::kOutOfBounds;
3578 } 3446 }
3579 const GLfloat* values = 3447 volatile const GLfloat* values = GetImmediateDataAs<volatile const GLfloat*>(
3580 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 3448 c, data_size, immediate_data_size);
3581 error::Error error = DoVertexAttrib3fv(indx, values); 3449 error::Error error = DoVertexAttrib3fv(indx, values);
3582 if (error != error::kNoError) { 3450 if (error != error::kNoError) {
3583 return error; 3451 return error;
3584 } 3452 }
3585 return error::kNoError; 3453 return error::kNoError;
3586 } 3454 }
3587 3455
3588 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib4f( 3456 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib4f(
3589 uint32_t immediate_data_size, 3457 uint32_t immediate_data_size,
3590 const void* cmd_data) { 3458 const volatile void* cmd_data) {
3591 const gles2::cmds::VertexAttrib4f& c = 3459 const volatile gles2::cmds::VertexAttrib4f& c =
3592 *static_cast<const gles2::cmds::VertexAttrib4f*>(cmd_data); 3460 *static_cast<const volatile gles2::cmds::VertexAttrib4f*>(cmd_data);
3593 (void)c;
3594 GLuint indx = static_cast<GLuint>(c.indx); 3461 GLuint indx = static_cast<GLuint>(c.indx);
3595 GLfloat x = static_cast<GLfloat>(c.x); 3462 GLfloat x = static_cast<GLfloat>(c.x);
3596 GLfloat y = static_cast<GLfloat>(c.y); 3463 GLfloat y = static_cast<GLfloat>(c.y);
3597 GLfloat z = static_cast<GLfloat>(c.z); 3464 GLfloat z = static_cast<GLfloat>(c.z);
3598 GLfloat w = static_cast<GLfloat>(c.w); 3465 GLfloat w = static_cast<GLfloat>(c.w);
3599 error::Error error = DoVertexAttrib4f(indx, x, y, z, w); 3466 error::Error error = DoVertexAttrib4f(indx, x, y, z, w);
3600 if (error != error::kNoError) { 3467 if (error != error::kNoError) {
3601 return error; 3468 return error;
3602 } 3469 }
3603 return error::kNoError; 3470 return error::kNoError;
3604 } 3471 }
3605 3472
3606 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib4fvImmediate( 3473 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib4fvImmediate(
3607 uint32_t immediate_data_size, 3474 uint32_t immediate_data_size,
3608 const void* cmd_data) { 3475 const volatile void* cmd_data) {
3609 const gles2::cmds::VertexAttrib4fvImmediate& c = 3476 const volatile gles2::cmds::VertexAttrib4fvImmediate& c =
3610 *static_cast<const gles2::cmds::VertexAttrib4fvImmediate*>(cmd_data); 3477 *static_cast<const volatile gles2::cmds::VertexAttrib4fvImmediate*>(
3611 (void)c; 3478 cmd_data);
3612 GLuint indx = static_cast<GLuint>(c.indx); 3479 GLuint indx = static_cast<GLuint>(c.indx);
3613 uint32_t data_size; 3480 uint32_t data_size;
3614 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) { 3481 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) {
3615 return error::kOutOfBounds; 3482 return error::kOutOfBounds;
3616 } 3483 }
3617 if (data_size > immediate_data_size) { 3484 if (data_size > immediate_data_size) {
3618 return error::kOutOfBounds; 3485 return error::kOutOfBounds;
3619 } 3486 }
3620 const GLfloat* values = 3487 volatile const GLfloat* values = GetImmediateDataAs<volatile const GLfloat*>(
3621 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 3488 c, data_size, immediate_data_size);
3622 error::Error error = DoVertexAttrib4fv(indx, values); 3489 error::Error error = DoVertexAttrib4fv(indx, values);
3623 if (error != error::kNoError) { 3490 if (error != error::kNoError) {
3624 return error; 3491 return error;
3625 } 3492 }
3626 return error::kNoError; 3493 return error::kNoError;
3627 } 3494 }
3628 3495
3629 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttribI4i( 3496 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttribI4i(
3630 uint32_t immediate_data_size, 3497 uint32_t immediate_data_size,
3631 const void* cmd_data) { 3498 const volatile void* cmd_data) {
3632 const gles2::cmds::VertexAttribI4i& c = 3499 const volatile gles2::cmds::VertexAttribI4i& c =
3633 *static_cast<const gles2::cmds::VertexAttribI4i*>(cmd_data); 3500 *static_cast<const volatile gles2::cmds::VertexAttribI4i*>(cmd_data);
3634 (void)c;
3635 GLuint indx = static_cast<GLuint>(c.indx); 3501 GLuint indx = static_cast<GLuint>(c.indx);
3636 GLint x = static_cast<GLint>(c.x); 3502 GLint x = static_cast<GLint>(c.x);
3637 GLint y = static_cast<GLint>(c.y); 3503 GLint y = static_cast<GLint>(c.y);
3638 GLint z = static_cast<GLint>(c.z); 3504 GLint z = static_cast<GLint>(c.z);
3639 GLint w = static_cast<GLint>(c.w); 3505 GLint w = static_cast<GLint>(c.w);
3640 error::Error error = DoVertexAttribI4i(indx, x, y, z, w); 3506 error::Error error = DoVertexAttribI4i(indx, x, y, z, w);
3641 if (error != error::kNoError) { 3507 if (error != error::kNoError) {
3642 return error; 3508 return error;
3643 } 3509 }
3644 return error::kNoError; 3510 return error::kNoError;
3645 } 3511 }
3646 3512
3647 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttribI4ivImmediate( 3513 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttribI4ivImmediate(
3648 uint32_t immediate_data_size, 3514 uint32_t immediate_data_size,
3649 const void* cmd_data) { 3515 const volatile void* cmd_data) {
3650 const gles2::cmds::VertexAttribI4ivImmediate& c = 3516 const volatile gles2::cmds::VertexAttribI4ivImmediate& c =
3651 *static_cast<const gles2::cmds::VertexAttribI4ivImmediate*>(cmd_data); 3517 *static_cast<const volatile gles2::cmds::VertexAttribI4ivImmediate*>(
3652 (void)c; 3518 cmd_data);
3653 GLuint indx = static_cast<GLuint>(c.indx); 3519 GLuint indx = static_cast<GLuint>(c.indx);
3654 uint32_t data_size; 3520 uint32_t data_size;
3655 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 4, &data_size)) { 3521 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 4, &data_size)) {
3656 return error::kOutOfBounds; 3522 return error::kOutOfBounds;
3657 } 3523 }
3658 if (data_size > immediate_data_size) { 3524 if (data_size > immediate_data_size) {
3659 return error::kOutOfBounds; 3525 return error::kOutOfBounds;
3660 } 3526 }
3661 const GLint* values = 3527 volatile const GLint* values = GetImmediateDataAs<volatile const GLint*>(
3662 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); 3528 c, data_size, immediate_data_size);
3663 error::Error error = DoVertexAttribI4iv(indx, values); 3529 error::Error error = DoVertexAttribI4iv(indx, values);
3664 if (error != error::kNoError) { 3530 if (error != error::kNoError) {
3665 return error; 3531 return error;
3666 } 3532 }
3667 return error::kNoError; 3533 return error::kNoError;
3668 } 3534 }
3669 3535
3670 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttribI4ui( 3536 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttribI4ui(
3671 uint32_t immediate_data_size, 3537 uint32_t immediate_data_size,
3672 const void* cmd_data) { 3538 const volatile void* cmd_data) {
3673 const gles2::cmds::VertexAttribI4ui& c = 3539 const volatile gles2::cmds::VertexAttribI4ui& c =
3674 *static_cast<const gles2::cmds::VertexAttribI4ui*>(cmd_data); 3540 *static_cast<const volatile gles2::cmds::VertexAttribI4ui*>(cmd_data);
3675 (void)c;
3676 GLuint indx = static_cast<GLuint>(c.indx); 3541 GLuint indx = static_cast<GLuint>(c.indx);
3677 GLuint x = static_cast<GLuint>(c.x); 3542 GLuint x = static_cast<GLuint>(c.x);
3678 GLuint y = static_cast<GLuint>(c.y); 3543 GLuint y = static_cast<GLuint>(c.y);
3679 GLuint z = static_cast<GLuint>(c.z); 3544 GLuint z = static_cast<GLuint>(c.z);
3680 GLuint w = static_cast<GLuint>(c.w); 3545 GLuint w = static_cast<GLuint>(c.w);
3681 error::Error error = DoVertexAttribI4ui(indx, x, y, z, w); 3546 error::Error error = DoVertexAttribI4ui(indx, x, y, z, w);
3682 if (error != error::kNoError) { 3547 if (error != error::kNoError) {
3683 return error; 3548 return error;
3684 } 3549 }
3685 return error::kNoError; 3550 return error::kNoError;
3686 } 3551 }
3687 3552
3688 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttribI4uivImmediate( 3553 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttribI4uivImmediate(
3689 uint32_t immediate_data_size, 3554 uint32_t immediate_data_size,
3690 const void* cmd_data) { 3555 const volatile void* cmd_data) {
3691 const gles2::cmds::VertexAttribI4uivImmediate& c = 3556 const volatile gles2::cmds::VertexAttribI4uivImmediate& c =
3692 *static_cast<const gles2::cmds::VertexAttribI4uivImmediate*>(cmd_data); 3557 *static_cast<const volatile gles2::cmds::VertexAttribI4uivImmediate*>(
3693 (void)c; 3558 cmd_data);
3694 GLuint indx = static_cast<GLuint>(c.indx); 3559 GLuint indx = static_cast<GLuint>(c.indx);
3695 uint32_t data_size; 3560 uint32_t data_size;
3696 if (!GLES2Util::ComputeDataSize(1, sizeof(GLuint), 4, &data_size)) { 3561 if (!GLES2Util::ComputeDataSize(1, sizeof(GLuint), 4, &data_size)) {
3697 return error::kOutOfBounds; 3562 return error::kOutOfBounds;
3698 } 3563 }
3699 if (data_size > immediate_data_size) { 3564 if (data_size > immediate_data_size) {
3700 return error::kOutOfBounds; 3565 return error::kOutOfBounds;
3701 } 3566 }
3702 const GLuint* values = 3567 volatile const GLuint* values = GetImmediateDataAs<volatile const GLuint*>(
3703 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 3568 c, data_size, immediate_data_size);
3704 error::Error error = DoVertexAttribI4uiv(indx, values); 3569 error::Error error = DoVertexAttribI4uiv(indx, values);
3705 if (error != error::kNoError) { 3570 if (error != error::kNoError) {
3706 return error; 3571 return error;
3707 } 3572 }
3708 return error::kNoError; 3573 return error::kNoError;
3709 } 3574 }
3710 3575
3711 error::Error GLES2DecoderPassthroughImpl::HandleViewport( 3576 error::Error GLES2DecoderPassthroughImpl::HandleViewport(
3712 uint32_t immediate_data_size, 3577 uint32_t immediate_data_size,
3713 const void* cmd_data) { 3578 const volatile void* cmd_data) {
3714 const gles2::cmds::Viewport& c = 3579 const volatile gles2::cmds::Viewport& c =
3715 *static_cast<const gles2::cmds::Viewport*>(cmd_data); 3580 *static_cast<const volatile gles2::cmds::Viewport*>(cmd_data);
3716 (void)c;
3717 GLint x = static_cast<GLint>(c.x); 3581 GLint x = static_cast<GLint>(c.x);
3718 GLint y = static_cast<GLint>(c.y); 3582 GLint y = static_cast<GLint>(c.y);
3719 GLsizei width = static_cast<GLsizei>(c.width); 3583 GLsizei width = static_cast<GLsizei>(c.width);
3720 GLsizei height = static_cast<GLsizei>(c.height); 3584 GLsizei height = static_cast<GLsizei>(c.height);
3721 error::Error error = DoViewport(x, y, width, height); 3585 error::Error error = DoViewport(x, y, width, height);
3722 if (error != error::kNoError) { 3586 if (error != error::kNoError) {
3723 return error; 3587 return error;
3724 } 3588 }
3725 return error::kNoError; 3589 return error::kNoError;
3726 } 3590 }
3727 3591
3728 error::Error GLES2DecoderPassthroughImpl::HandleBlitFramebufferCHROMIUM( 3592 error::Error GLES2DecoderPassthroughImpl::HandleBlitFramebufferCHROMIUM(
3729 uint32_t immediate_data_size, 3593 uint32_t immediate_data_size,
3730 const void* cmd_data) { 3594 const volatile void* cmd_data) {
3731 const gles2::cmds::BlitFramebufferCHROMIUM& c = 3595 const volatile gles2::cmds::BlitFramebufferCHROMIUM& c =
3732 *static_cast<const gles2::cmds::BlitFramebufferCHROMIUM*>(cmd_data); 3596 *static_cast<const volatile gles2::cmds::BlitFramebufferCHROMIUM*>(
3733 (void)c; 3597 cmd_data);
3734 GLint srcX0 = static_cast<GLint>(c.srcX0); 3598 GLint srcX0 = static_cast<GLint>(c.srcX0);
3735 GLint srcY0 = static_cast<GLint>(c.srcY0); 3599 GLint srcY0 = static_cast<GLint>(c.srcY0);
3736 GLint srcX1 = static_cast<GLint>(c.srcX1); 3600 GLint srcX1 = static_cast<GLint>(c.srcX1);
3737 GLint srcY1 = static_cast<GLint>(c.srcY1); 3601 GLint srcY1 = static_cast<GLint>(c.srcY1);
3738 GLint dstX0 = static_cast<GLint>(c.dstX0); 3602 GLint dstX0 = static_cast<GLint>(c.dstX0);
3739 GLint dstY0 = static_cast<GLint>(c.dstY0); 3603 GLint dstY0 = static_cast<GLint>(c.dstY0);
3740 GLint dstX1 = static_cast<GLint>(c.dstX1); 3604 GLint dstX1 = static_cast<GLint>(c.dstX1);
3741 GLint dstY1 = static_cast<GLint>(c.dstY1); 3605 GLint dstY1 = static_cast<GLint>(c.dstY1);
3742 GLbitfield mask = static_cast<GLbitfield>(c.mask); 3606 GLbitfield mask = static_cast<GLbitfield>(c.mask);
3743 GLenum filter = static_cast<GLenum>(c.filter); 3607 GLenum filter = static_cast<GLenum>(c.filter);
3744 error::Error error = DoBlitFramebufferCHROMIUM( 3608 error::Error error = DoBlitFramebufferCHROMIUM(
3745 srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); 3609 srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
3746 if (error != error::kNoError) { 3610 if (error != error::kNoError) {
3747 return error; 3611 return error;
3748 } 3612 }
3749 return error::kNoError; 3613 return error::kNoError;
3750 } 3614 }
3751 3615
3752 error::Error 3616 error::Error
3753 GLES2DecoderPassthroughImpl::HandleRenderbufferStorageMultisampleCHROMIUM( 3617 GLES2DecoderPassthroughImpl::HandleRenderbufferStorageMultisampleCHROMIUM(
3754 uint32_t immediate_data_size, 3618 uint32_t immediate_data_size,
3755 const void* cmd_data) { 3619 const volatile void* cmd_data) {
3756 const gles2::cmds::RenderbufferStorageMultisampleCHROMIUM& c = 3620 const volatile gles2::cmds::RenderbufferStorageMultisampleCHROMIUM& c =
3757 *static_cast<const gles2::cmds::RenderbufferStorageMultisampleCHROMIUM*>( 3621 *static_cast<
3622 const volatile gles2::cmds::RenderbufferStorageMultisampleCHROMIUM*>(
3758 cmd_data); 3623 cmd_data);
3759 (void)c;
3760 GLenum target = static_cast<GLenum>(c.target); 3624 GLenum target = static_cast<GLenum>(c.target);
3761 GLsizei samples = static_cast<GLsizei>(c.samples); 3625 GLsizei samples = static_cast<GLsizei>(c.samples);
3762 GLenum internalformat = static_cast<GLenum>(c.internalformat); 3626 GLenum internalformat = static_cast<GLenum>(c.internalformat);
3763 GLsizei width = static_cast<GLsizei>(c.width); 3627 GLsizei width = static_cast<GLsizei>(c.width);
3764 GLsizei height = static_cast<GLsizei>(c.height); 3628 GLsizei height = static_cast<GLsizei>(c.height);
3765 error::Error error = DoRenderbufferStorageMultisampleCHROMIUM( 3629 error::Error error = DoRenderbufferStorageMultisampleCHROMIUM(
3766 target, samples, internalformat, width, height); 3630 target, samples, internalformat, width, height);
3767 if (error != error::kNoError) { 3631 if (error != error::kNoError) {
3768 return error; 3632 return error;
3769 } 3633 }
3770 return error::kNoError; 3634 return error::kNoError;
3771 } 3635 }
3772 3636
3773 error::Error 3637 error::Error
3774 GLES2DecoderPassthroughImpl::HandleRenderbufferStorageMultisampleEXT( 3638 GLES2DecoderPassthroughImpl::HandleRenderbufferStorageMultisampleEXT(
3775 uint32_t immediate_data_size, 3639 uint32_t immediate_data_size,
3776 const void* cmd_data) { 3640 const volatile void* cmd_data) {
3777 const gles2::cmds::RenderbufferStorageMultisampleEXT& c = 3641 const volatile gles2::cmds::RenderbufferStorageMultisampleEXT& c =
3778 *static_cast<const gles2::cmds::RenderbufferStorageMultisampleEXT*>( 3642 *static_cast<
3643 const volatile gles2::cmds::RenderbufferStorageMultisampleEXT*>(
3779 cmd_data); 3644 cmd_data);
3780 (void)c;
3781 GLenum target = static_cast<GLenum>(c.target); 3645 GLenum target = static_cast<GLenum>(c.target);
3782 GLsizei samples = static_cast<GLsizei>(c.samples); 3646 GLsizei samples = static_cast<GLsizei>(c.samples);
3783 GLenum internalformat = static_cast<GLenum>(c.internalformat); 3647 GLenum internalformat = static_cast<GLenum>(c.internalformat);
3784 GLsizei width = static_cast<GLsizei>(c.width); 3648 GLsizei width = static_cast<GLsizei>(c.width);
3785 GLsizei height = static_cast<GLsizei>(c.height); 3649 GLsizei height = static_cast<GLsizei>(c.height);
3786 error::Error error = DoRenderbufferStorageMultisampleEXT( 3650 error::Error error = DoRenderbufferStorageMultisampleEXT(
3787 target, samples, internalformat, width, height); 3651 target, samples, internalformat, width, height);
3788 if (error != error::kNoError) { 3652 if (error != error::kNoError) {
3789 return error; 3653 return error;
3790 } 3654 }
3791 return error::kNoError; 3655 return error::kNoError;
3792 } 3656 }
3793 3657
3794 error::Error 3658 error::Error
3795 GLES2DecoderPassthroughImpl::HandleFramebufferTexture2DMultisampleEXT( 3659 GLES2DecoderPassthroughImpl::HandleFramebufferTexture2DMultisampleEXT(
3796 uint32_t immediate_data_size, 3660 uint32_t immediate_data_size,
3797 const void* cmd_data) { 3661 const volatile void* cmd_data) {
3798 const gles2::cmds::FramebufferTexture2DMultisampleEXT& c = 3662 const volatile gles2::cmds::FramebufferTexture2DMultisampleEXT& c =
3799 *static_cast<const gles2::cmds::FramebufferTexture2DMultisampleEXT*>( 3663 *static_cast<
3664 const volatile gles2::cmds::FramebufferTexture2DMultisampleEXT*>(
3800 cmd_data); 3665 cmd_data);
3801 (void)c;
3802 GLenum target = static_cast<GLenum>(c.target); 3666 GLenum target = static_cast<GLenum>(c.target);
3803 GLenum attachment = static_cast<GLenum>(c.attachment); 3667 GLenum attachment = static_cast<GLenum>(c.attachment);
3804 GLenum textarget = static_cast<GLenum>(c.textarget); 3668 GLenum textarget = static_cast<GLenum>(c.textarget);
3805 GLuint texture = c.texture; 3669 GLuint texture = c.texture;
3806 GLint level = static_cast<GLint>(c.level); 3670 GLint level = static_cast<GLint>(c.level);
3807 GLsizei samples = static_cast<GLsizei>(c.samples); 3671 GLsizei samples = static_cast<GLsizei>(c.samples);
3808 error::Error error = DoFramebufferTexture2DMultisampleEXT( 3672 error::Error error = DoFramebufferTexture2DMultisampleEXT(
3809 target, attachment, textarget, texture, level, samples); 3673 target, attachment, textarget, texture, level, samples);
3810 if (error != error::kNoError) { 3674 if (error != error::kNoError) {
3811 return error; 3675 return error;
3812 } 3676 }
3813 return error::kNoError; 3677 return error::kNoError;
3814 } 3678 }
3815 3679
3816 error::Error GLES2DecoderPassthroughImpl::HandleTexStorage2DEXT( 3680 error::Error GLES2DecoderPassthroughImpl::HandleTexStorage2DEXT(
3817 uint32_t immediate_data_size, 3681 uint32_t immediate_data_size,
3818 const void* cmd_data) { 3682 const volatile void* cmd_data) {
3819 const gles2::cmds::TexStorage2DEXT& c = 3683 const volatile gles2::cmds::TexStorage2DEXT& c =
3820 *static_cast<const gles2::cmds::TexStorage2DEXT*>(cmd_data); 3684 *static_cast<const volatile gles2::cmds::TexStorage2DEXT*>(cmd_data);
3821 (void)c;
3822 GLenum target = static_cast<GLenum>(c.target); 3685 GLenum target = static_cast<GLenum>(c.target);
3823 GLsizei levels = static_cast<GLsizei>(c.levels); 3686 GLsizei levels = static_cast<GLsizei>(c.levels);
3824 GLenum internalFormat = static_cast<GLenum>(c.internalFormat); 3687 GLenum internalFormat = static_cast<GLenum>(c.internalFormat);
3825 GLsizei width = static_cast<GLsizei>(c.width); 3688 GLsizei width = static_cast<GLsizei>(c.width);
3826 GLsizei height = static_cast<GLsizei>(c.height); 3689 GLsizei height = static_cast<GLsizei>(c.height);
3827 error::Error error = 3690 error::Error error =
3828 DoTexStorage2DEXT(target, levels, internalFormat, width, height); 3691 DoTexStorage2DEXT(target, levels, internalFormat, width, height);
3829 if (error != error::kNoError) { 3692 if (error != error::kNoError) {
3830 return error; 3693 return error;
3831 } 3694 }
3832 return error::kNoError; 3695 return error::kNoError;
3833 } 3696 }
3834 3697
3835 error::Error GLES2DecoderPassthroughImpl::HandleGenQueriesEXTImmediate( 3698 error::Error GLES2DecoderPassthroughImpl::HandleGenQueriesEXTImmediate(
3836 uint32_t immediate_data_size, 3699 uint32_t immediate_data_size,
3837 const void* cmd_data) { 3700 const volatile void* cmd_data) {
3838 const gles2::cmds::GenQueriesEXTImmediate& c = 3701 const volatile gles2::cmds::GenQueriesEXTImmediate& c =
3839 *static_cast<const gles2::cmds::GenQueriesEXTImmediate*>(cmd_data); 3702 *static_cast<const volatile gles2::cmds::GenQueriesEXTImmediate*>(
3840 (void)c; 3703 cmd_data);
3841 GLsizei n = static_cast<GLsizei>(c.n); 3704 GLsizei n = static_cast<GLsizei>(c.n);
3842 uint32_t data_size; 3705 uint32_t data_size;
3843 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 3706 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
3844 return error::kOutOfBounds; 3707 return error::kOutOfBounds;
3845 } 3708 }
3846 GLuint* queries = 3709 volatile GLuint* queries =
3847 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); 3710 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
3848 error::Error error = DoGenQueriesEXT(n, queries); 3711 error::Error error = DoGenQueriesEXT(n, queries);
3849 if (error != error::kNoError) { 3712 if (error != error::kNoError) {
3850 return error; 3713 return error;
3851 } 3714 }
3852 return error::kNoError; 3715 return error::kNoError;
3853 } 3716 }
3854 3717
3855 error::Error GLES2DecoderPassthroughImpl::HandleDeleteQueriesEXTImmediate( 3718 error::Error GLES2DecoderPassthroughImpl::HandleDeleteQueriesEXTImmediate(
3856 uint32_t immediate_data_size, 3719 uint32_t immediate_data_size,
3857 const void* cmd_data) { 3720 const volatile void* cmd_data) {
3858 const gles2::cmds::DeleteQueriesEXTImmediate& c = 3721 const volatile gles2::cmds::DeleteQueriesEXTImmediate& c =
3859 *static_cast<const gles2::cmds::DeleteQueriesEXTImmediate*>(cmd_data); 3722 *static_cast<const volatile gles2::cmds::DeleteQueriesEXTImmediate*>(
3860 (void)c; 3723 cmd_data);
3861 GLsizei n = static_cast<GLsizei>(c.n); 3724 GLsizei n = static_cast<GLsizei>(c.n);
3862 uint32_t data_size; 3725 uint32_t data_size;
3863 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 3726 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
3864 return error::kOutOfBounds; 3727 return error::kOutOfBounds;
3865 } 3728 }
3866 const GLuint* queries = 3729 volatile const GLuint* queries = GetImmediateDataAs<volatile const GLuint*>(
3867 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 3730 c, data_size, immediate_data_size);
3868 error::Error error = DoDeleteQueriesEXT(n, queries); 3731 error::Error error = DoDeleteQueriesEXT(n, queries);
3869 if (error != error::kNoError) { 3732 if (error != error::kNoError) {
3870 return error; 3733 return error;
3871 } 3734 }
3872 return error::kNoError; 3735 return error::kNoError;
3873 } 3736 }
3874 3737
3875 error::Error GLES2DecoderPassthroughImpl::HandleBeginTransformFeedback( 3738 error::Error GLES2DecoderPassthroughImpl::HandleBeginTransformFeedback(
3876 uint32_t immediate_data_size, 3739 uint32_t immediate_data_size,
3877 const void* cmd_data) { 3740 const volatile void* cmd_data) {
3878 const gles2::cmds::BeginTransformFeedback& c = 3741 const volatile gles2::cmds::BeginTransformFeedback& c =
3879 *static_cast<const gles2::cmds::BeginTransformFeedback*>(cmd_data); 3742 *static_cast<const volatile gles2::cmds::BeginTransformFeedback*>(
3880 (void)c; 3743 cmd_data);
3881 GLenum primitivemode = static_cast<GLenum>(c.primitivemode); 3744 GLenum primitivemode = static_cast<GLenum>(c.primitivemode);
3882 error::Error error = DoBeginTransformFeedback(primitivemode); 3745 error::Error error = DoBeginTransformFeedback(primitivemode);
3883 if (error != error::kNoError) { 3746 if (error != error::kNoError) {
3884 return error; 3747 return error;
3885 } 3748 }
3886 return error::kNoError; 3749 return error::kNoError;
3887 } 3750 }
3888 3751
3889 error::Error GLES2DecoderPassthroughImpl::HandleEndTransformFeedback( 3752 error::Error GLES2DecoderPassthroughImpl::HandleEndTransformFeedback(
3890 uint32_t immediate_data_size, 3753 uint32_t immediate_data_size,
3891 const void* cmd_data) { 3754 const volatile void* cmd_data) {
3892 const gles2::cmds::EndTransformFeedback& c =
3893 *static_cast<const gles2::cmds::EndTransformFeedback*>(cmd_data);
3894 (void)c;
3895 error::Error error = DoEndTransformFeedback(); 3755 error::Error error = DoEndTransformFeedback();
3896 if (error != error::kNoError) { 3756 if (error != error::kNoError) {
3897 return error; 3757 return error;
3898 } 3758 }
3899 return error::kNoError; 3759 return error::kNoError;
3900 } 3760 }
3901 3761
3902 error::Error GLES2DecoderPassthroughImpl::HandlePopGroupMarkerEXT( 3762 error::Error GLES2DecoderPassthroughImpl::HandlePopGroupMarkerEXT(
3903 uint32_t immediate_data_size, 3763 uint32_t immediate_data_size,
3904 const void* cmd_data) { 3764 const volatile void* cmd_data) {
3905 const gles2::cmds::PopGroupMarkerEXT& c =
3906 *static_cast<const gles2::cmds::PopGroupMarkerEXT*>(cmd_data);
3907 (void)c;
3908 error::Error error = DoPopGroupMarkerEXT(); 3765 error::Error error = DoPopGroupMarkerEXT();
3909 if (error != error::kNoError) { 3766 if (error != error::kNoError) {
3910 return error; 3767 return error;
3911 } 3768 }
3912 return error::kNoError; 3769 return error::kNoError;
3913 } 3770 }
3914 3771
3915 error::Error GLES2DecoderPassthroughImpl::HandleGenVertexArraysOESImmediate( 3772 error::Error GLES2DecoderPassthroughImpl::HandleGenVertexArraysOESImmediate(
3916 uint32_t immediate_data_size, 3773 uint32_t immediate_data_size,
3917 const void* cmd_data) { 3774 const volatile void* cmd_data) {
3918 const gles2::cmds::GenVertexArraysOESImmediate& c = 3775 const volatile gles2::cmds::GenVertexArraysOESImmediate& c =
3919 *static_cast<const gles2::cmds::GenVertexArraysOESImmediate*>(cmd_data); 3776 *static_cast<const volatile gles2::cmds::GenVertexArraysOESImmediate*>(
3920 (void)c; 3777 cmd_data);
3921 GLsizei n = static_cast<GLsizei>(c.n); 3778 GLsizei n = static_cast<GLsizei>(c.n);
3922 uint32_t data_size; 3779 uint32_t data_size;
3923 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 3780 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
3924 return error::kOutOfBounds; 3781 return error::kOutOfBounds;
3925 } 3782 }
3926 GLuint* arrays = 3783 volatile GLuint* arrays =
3927 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); 3784 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
3928 error::Error error = DoGenVertexArraysOES(n, arrays); 3785 error::Error error = DoGenVertexArraysOES(n, arrays);
3929 if (error != error::kNoError) { 3786 if (error != error::kNoError) {
3930 return error; 3787 return error;
3931 } 3788 }
3932 return error::kNoError; 3789 return error::kNoError;
3933 } 3790 }
3934 3791
3935 error::Error GLES2DecoderPassthroughImpl::HandleDeleteVertexArraysOESImmediate( 3792 error::Error GLES2DecoderPassthroughImpl::HandleDeleteVertexArraysOESImmediate(
3936 uint32_t immediate_data_size, 3793 uint32_t immediate_data_size,
3937 const void* cmd_data) { 3794 const volatile void* cmd_data) {
3938 const gles2::cmds::DeleteVertexArraysOESImmediate& c = 3795 const volatile gles2::cmds::DeleteVertexArraysOESImmediate& c =
3939 *static_cast<const gles2::cmds::DeleteVertexArraysOESImmediate*>( 3796 *static_cast<const volatile gles2::cmds::DeleteVertexArraysOESImmediate*>(
3940 cmd_data); 3797 cmd_data);
3941 (void)c;
3942 GLsizei n = static_cast<GLsizei>(c.n); 3798 GLsizei n = static_cast<GLsizei>(c.n);
3943 uint32_t data_size; 3799 uint32_t data_size;
3944 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 3800 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
3945 return error::kOutOfBounds; 3801 return error::kOutOfBounds;
3946 } 3802 }
3947 const GLuint* arrays = 3803 volatile const GLuint* arrays = GetImmediateDataAs<volatile const GLuint*>(
3948 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 3804 c, data_size, immediate_data_size);
3949 error::Error error = DoDeleteVertexArraysOES(n, arrays); 3805 error::Error error = DoDeleteVertexArraysOES(n, arrays);
3950 if (error != error::kNoError) { 3806 if (error != error::kNoError) {
3951 return error; 3807 return error;
3952 } 3808 }
3953 return error::kNoError; 3809 return error::kNoError;
3954 } 3810 }
3955 3811
3956 error::Error GLES2DecoderPassthroughImpl::HandleIsVertexArrayOES( 3812 error::Error GLES2DecoderPassthroughImpl::HandleIsVertexArrayOES(
3957 uint32_t immediate_data_size, 3813 uint32_t immediate_data_size,
3958 const void* cmd_data) { 3814 const volatile void* cmd_data) {
3959 const gles2::cmds::IsVertexArrayOES& c = 3815 const volatile gles2::cmds::IsVertexArrayOES& c =
3960 *static_cast<const gles2::cmds::IsVertexArrayOES*>(cmd_data); 3816 *static_cast<const volatile gles2::cmds::IsVertexArrayOES*>(cmd_data);
3961 (void)c;
3962 GLuint array = c.array; 3817 GLuint array = c.array;
3963 typedef cmds::IsVertexArrayOES::Result Result; 3818 typedef cmds::IsVertexArrayOES::Result Result;
3964 Result* result = GetSharedMemoryAs<Result*>( 3819 Result* result = GetSharedMemoryAs<Result*>(
3965 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 3820 c.result_shm_id, c.result_shm_offset, sizeof(*result));
3966 if (!result) { 3821 if (!result) {
3967 return error::kOutOfBounds; 3822 return error::kOutOfBounds;
3968 } 3823 }
3969 error::Error error = DoIsVertexArrayOES(array, result); 3824 error::Error error = DoIsVertexArrayOES(array, result);
3970 if (error != error::kNoError) { 3825 if (error != error::kNoError) {
3971 return error; 3826 return error;
3972 } 3827 }
3973 return error::kNoError; 3828 return error::kNoError;
3974 } 3829 }
3975 3830
3976 error::Error GLES2DecoderPassthroughImpl::HandleBindVertexArrayOES( 3831 error::Error GLES2DecoderPassthroughImpl::HandleBindVertexArrayOES(
3977 uint32_t immediate_data_size, 3832 uint32_t immediate_data_size,
3978 const void* cmd_data) { 3833 const volatile void* cmd_data) {
3979 const gles2::cmds::BindVertexArrayOES& c = 3834 const volatile gles2::cmds::BindVertexArrayOES& c =
3980 *static_cast<const gles2::cmds::BindVertexArrayOES*>(cmd_data); 3835 *static_cast<const volatile gles2::cmds::BindVertexArrayOES*>(cmd_data);
3981 (void)c;
3982 GLuint array = c.array; 3836 GLuint array = c.array;
3983 error::Error error = DoBindVertexArrayOES(array); 3837 error::Error error = DoBindVertexArrayOES(array);
3984 if (error != error::kNoError) { 3838 if (error != error::kNoError) {
3985 return error; 3839 return error;
3986 } 3840 }
3987 return error::kNoError; 3841 return error::kNoError;
3988 } 3842 }
3989 3843
3990 error::Error GLES2DecoderPassthroughImpl::HandleSwapBuffers( 3844 error::Error GLES2DecoderPassthroughImpl::HandleSwapBuffers(
3991 uint32_t immediate_data_size, 3845 uint32_t immediate_data_size,
3992 const void* cmd_data) { 3846 const volatile void* cmd_data) {
3993 const gles2::cmds::SwapBuffers& c =
3994 *static_cast<const gles2::cmds::SwapBuffers*>(cmd_data);
3995 (void)c;
3996 error::Error error = DoSwapBuffers(); 3847 error::Error error = DoSwapBuffers();
3997 if (error != error::kNoError) { 3848 if (error != error::kNoError) {
3998 return error; 3849 return error;
3999 } 3850 }
4000 return error::kNoError; 3851 return error::kNoError;
4001 } 3852 }
4002 3853
4003 error::Error GLES2DecoderPassthroughImpl::HandleGetMaxValueInBufferCHROMIUM( 3854 error::Error GLES2DecoderPassthroughImpl::HandleGetMaxValueInBufferCHROMIUM(
4004 uint32_t immediate_data_size, 3855 uint32_t immediate_data_size,
4005 const void* cmd_data) { 3856 const volatile void* cmd_data) {
4006 const gles2::cmds::GetMaxValueInBufferCHROMIUM& c = 3857 const volatile gles2::cmds::GetMaxValueInBufferCHROMIUM& c =
4007 *static_cast<const gles2::cmds::GetMaxValueInBufferCHROMIUM*>(cmd_data); 3858 *static_cast<const volatile gles2::cmds::GetMaxValueInBufferCHROMIUM*>(
4008 (void)c; 3859 cmd_data);
4009 GLuint buffer_id = c.buffer_id; 3860 GLuint buffer_id = c.buffer_id;
4010 GLsizei count = static_cast<GLsizei>(c.count); 3861 GLsizei count = static_cast<GLsizei>(c.count);
4011 GLenum type = static_cast<GLenum>(c.type); 3862 GLenum type = static_cast<GLenum>(c.type);
4012 GLuint offset = static_cast<GLuint>(c.offset); 3863 GLuint offset = static_cast<GLuint>(c.offset);
4013 typedef cmds::GetMaxValueInBufferCHROMIUM::Result Result; 3864 typedef cmds::GetMaxValueInBufferCHROMIUM::Result Result;
4014 Result* result = GetSharedMemoryAs<Result*>( 3865 Result* result = GetSharedMemoryAs<Result*>(
4015 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 3866 c.result_shm_id, c.result_shm_offset, sizeof(*result));
4016 if (!result) { 3867 if (!result) {
4017 return error::kOutOfBounds; 3868 return error::kOutOfBounds;
4018 } 3869 }
4019 error::Error error = 3870 error::Error error =
4020 DoGetMaxValueInBufferCHROMIUM(buffer_id, count, type, offset, result); 3871 DoGetMaxValueInBufferCHROMIUM(buffer_id, count, type, offset, result);
4021 if (error != error::kNoError) { 3872 if (error != error::kNoError) {
4022 return error; 3873 return error;
4023 } 3874 }
4024 return error::kNoError; 3875 return error::kNoError;
4025 } 3876 }
4026 3877
4027 error::Error GLES2DecoderPassthroughImpl::HandleCopyTextureCHROMIUM( 3878 error::Error GLES2DecoderPassthroughImpl::HandleCopyTextureCHROMIUM(
4028 uint32_t immediate_data_size, 3879 uint32_t immediate_data_size,
4029 const void* cmd_data) { 3880 const volatile void* cmd_data) {
4030 const gles2::cmds::CopyTextureCHROMIUM& c = 3881 const volatile gles2::cmds::CopyTextureCHROMIUM& c =
4031 *static_cast<const gles2::cmds::CopyTextureCHROMIUM*>(cmd_data); 3882 *static_cast<const volatile gles2::cmds::CopyTextureCHROMIUM*>(cmd_data);
4032 (void)c;
4033 GLenum source_id = static_cast<GLenum>(c.source_id); 3883 GLenum source_id = static_cast<GLenum>(c.source_id);
4034 GLenum dest_id = static_cast<GLenum>(c.dest_id); 3884 GLenum dest_id = static_cast<GLenum>(c.dest_id);
4035 GLint internalformat = static_cast<GLint>(c.internalformat); 3885 GLint internalformat = static_cast<GLint>(c.internalformat);
4036 GLenum dest_type = static_cast<GLenum>(c.dest_type); 3886 GLenum dest_type = static_cast<GLenum>(c.dest_type);
4037 GLboolean unpack_flip_y = static_cast<GLboolean>(c.unpack_flip_y); 3887 GLboolean unpack_flip_y = static_cast<GLboolean>(c.unpack_flip_y);
4038 GLboolean unpack_premultiply_alpha = 3888 GLboolean unpack_premultiply_alpha =
4039 static_cast<GLboolean>(c.unpack_premultiply_alpha); 3889 static_cast<GLboolean>(c.unpack_premultiply_alpha);
4040 GLboolean unpack_unmultiply_alpha = 3890 GLboolean unpack_unmultiply_alpha =
4041 static_cast<GLboolean>(c.unpack_unmultiply_alpha); 3891 static_cast<GLboolean>(c.unpack_unmultiply_alpha);
4042 error::Error error = DoCopyTextureCHROMIUM( 3892 error::Error error = DoCopyTextureCHROMIUM(
4043 source_id, dest_id, internalformat, dest_type, unpack_flip_y, 3893 source_id, dest_id, internalformat, dest_type, unpack_flip_y,
4044 unpack_premultiply_alpha, unpack_unmultiply_alpha); 3894 unpack_premultiply_alpha, unpack_unmultiply_alpha);
4045 if (error != error::kNoError) { 3895 if (error != error::kNoError) {
4046 return error; 3896 return error;
4047 } 3897 }
4048 return error::kNoError; 3898 return error::kNoError;
4049 } 3899 }
4050 3900
4051 error::Error GLES2DecoderPassthroughImpl::HandleCopySubTextureCHROMIUM( 3901 error::Error GLES2DecoderPassthroughImpl::HandleCopySubTextureCHROMIUM(
4052 uint32_t immediate_data_size, 3902 uint32_t immediate_data_size,
4053 const void* cmd_data) { 3903 const volatile void* cmd_data) {
4054 const gles2::cmds::CopySubTextureCHROMIUM& c = 3904 const volatile gles2::cmds::CopySubTextureCHROMIUM& c =
4055 *static_cast<const gles2::cmds::CopySubTextureCHROMIUM*>(cmd_data); 3905 *static_cast<const volatile gles2::cmds::CopySubTextureCHROMIUM*>(
4056 (void)c; 3906 cmd_data);
4057 GLenum source_id = static_cast<GLenum>(c.source_id); 3907 GLenum source_id = static_cast<GLenum>(c.source_id);
4058 GLenum dest_id = static_cast<GLenum>(c.dest_id); 3908 GLenum dest_id = static_cast<GLenum>(c.dest_id);
4059 GLint xoffset = static_cast<GLint>(c.xoffset); 3909 GLint xoffset = static_cast<GLint>(c.xoffset);
4060 GLint yoffset = static_cast<GLint>(c.yoffset); 3910 GLint yoffset = static_cast<GLint>(c.yoffset);
4061 GLint x = static_cast<GLint>(c.x); 3911 GLint x = static_cast<GLint>(c.x);
4062 GLint y = static_cast<GLint>(c.y); 3912 GLint y = static_cast<GLint>(c.y);
4063 GLsizei width = static_cast<GLsizei>(c.width); 3913 GLsizei width = static_cast<GLsizei>(c.width);
4064 GLsizei height = static_cast<GLsizei>(c.height); 3914 GLsizei height = static_cast<GLsizei>(c.height);
4065 GLboolean unpack_flip_y = static_cast<GLboolean>(c.unpack_flip_y); 3915 GLboolean unpack_flip_y = static_cast<GLboolean>(c.unpack_flip_y);
4066 GLboolean unpack_premultiply_alpha = 3916 GLboolean unpack_premultiply_alpha =
4067 static_cast<GLboolean>(c.unpack_premultiply_alpha); 3917 static_cast<GLboolean>(c.unpack_premultiply_alpha);
4068 GLboolean unpack_unmultiply_alpha = 3918 GLboolean unpack_unmultiply_alpha =
4069 static_cast<GLboolean>(c.unpack_unmultiply_alpha); 3919 static_cast<GLboolean>(c.unpack_unmultiply_alpha);
4070 error::Error error = DoCopySubTextureCHROMIUM( 3920 error::Error error = DoCopySubTextureCHROMIUM(
4071 source_id, dest_id, xoffset, yoffset, x, y, width, height, unpack_flip_y, 3921 source_id, dest_id, xoffset, yoffset, x, y, width, height, unpack_flip_y,
4072 unpack_premultiply_alpha, unpack_unmultiply_alpha); 3922 unpack_premultiply_alpha, unpack_unmultiply_alpha);
4073 if (error != error::kNoError) { 3923 if (error != error::kNoError) {
4074 return error; 3924 return error;
4075 } 3925 }
4076 return error::kNoError; 3926 return error::kNoError;
4077 } 3927 }
4078 3928
4079 error::Error GLES2DecoderPassthroughImpl::HandleCompressedCopyTextureCHROMIUM( 3929 error::Error GLES2DecoderPassthroughImpl::HandleCompressedCopyTextureCHROMIUM(
4080 uint32_t immediate_data_size, 3930 uint32_t immediate_data_size,
4081 const void* cmd_data) { 3931 const volatile void* cmd_data) {
4082 const gles2::cmds::CompressedCopyTextureCHROMIUM& c = 3932 const volatile gles2::cmds::CompressedCopyTextureCHROMIUM& c =
4083 *static_cast<const gles2::cmds::CompressedCopyTextureCHROMIUM*>(cmd_data); 3933 *static_cast<const volatile gles2::cmds::CompressedCopyTextureCHROMIUM*>(
4084 (void)c; 3934 cmd_data);
4085 GLenum source_id = static_cast<GLenum>(c.source_id); 3935 GLenum source_id = static_cast<GLenum>(c.source_id);
4086 GLenum dest_id = static_cast<GLenum>(c.dest_id); 3936 GLenum dest_id = static_cast<GLenum>(c.dest_id);
4087 error::Error error = DoCompressedCopyTextureCHROMIUM(source_id, dest_id); 3937 error::Error error = DoCompressedCopyTextureCHROMIUM(source_id, dest_id);
4088 if (error != error::kNoError) { 3938 if (error != error::kNoError) {
4089 return error; 3939 return error;
4090 } 3940 }
4091 return error::kNoError; 3941 return error::kNoError;
4092 } 3942 }
4093 3943
4094 error::Error GLES2DecoderPassthroughImpl::HandleProduceTextureCHROMIUMImmediate( 3944 error::Error GLES2DecoderPassthroughImpl::HandleProduceTextureCHROMIUMImmediate(
4095 uint32_t immediate_data_size, 3945 uint32_t immediate_data_size,
4096 const void* cmd_data) { 3946 const volatile void* cmd_data) {
4097 const gles2::cmds::ProduceTextureCHROMIUMImmediate& c = 3947 const volatile gles2::cmds::ProduceTextureCHROMIUMImmediate& c = *static_cast<
4098 *static_cast<const gles2::cmds::ProduceTextureCHROMIUMImmediate*>( 3948 const volatile gles2::cmds::ProduceTextureCHROMIUMImmediate*>(cmd_data);
4099 cmd_data);
4100 (void)c;
4101 GLenum target = static_cast<GLenum>(c.target); 3949 GLenum target = static_cast<GLenum>(c.target);
4102 uint32_t data_size; 3950 uint32_t data_size;
4103 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { 3951 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) {
4104 return error::kOutOfBounds; 3952 return error::kOutOfBounds;
4105 } 3953 }
4106 if (data_size > immediate_data_size) { 3954 if (data_size > immediate_data_size) {
4107 return error::kOutOfBounds; 3955 return error::kOutOfBounds;
4108 } 3956 }
4109 const GLbyte* mailbox = 3957 volatile const GLbyte* mailbox = GetImmediateDataAs<volatile const GLbyte*>(
4110 GetImmediateDataAs<const GLbyte*>(c, data_size, immediate_data_size); 3958 c, data_size, immediate_data_size);
4111 error::Error error = DoProduceTextureCHROMIUM(target, mailbox); 3959 error::Error error = DoProduceTextureCHROMIUM(target, mailbox);
4112 if (error != error::kNoError) { 3960 if (error != error::kNoError) {
4113 return error; 3961 return error;
4114 } 3962 }
4115 return error::kNoError; 3963 return error::kNoError;
4116 } 3964 }
4117 3965
4118 error::Error 3966 error::Error
4119 GLES2DecoderPassthroughImpl::HandleProduceTextureDirectCHROMIUMImmediate( 3967 GLES2DecoderPassthroughImpl::HandleProduceTextureDirectCHROMIUMImmediate(
4120 uint32_t immediate_data_size, 3968 uint32_t immediate_data_size,
4121 const void* cmd_data) { 3969 const volatile void* cmd_data) {
4122 const gles2::cmds::ProduceTextureDirectCHROMIUMImmediate& c = 3970 const volatile gles2::cmds::ProduceTextureDirectCHROMIUMImmediate& c =
4123 *static_cast<const gles2::cmds::ProduceTextureDirectCHROMIUMImmediate*>( 3971 *static_cast<
3972 const volatile gles2::cmds::ProduceTextureDirectCHROMIUMImmediate*>(
4124 cmd_data); 3973 cmd_data);
4125 (void)c;
4126 GLuint texture = c.texture; 3974 GLuint texture = c.texture;
4127 GLenum target = static_cast<GLenum>(c.target); 3975 GLenum target = static_cast<GLenum>(c.target);
4128 uint32_t data_size; 3976 uint32_t data_size;
4129 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { 3977 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) {
4130 return error::kOutOfBounds; 3978 return error::kOutOfBounds;
4131 } 3979 }
4132 if (data_size > immediate_data_size) { 3980 if (data_size > immediate_data_size) {
4133 return error::kOutOfBounds; 3981 return error::kOutOfBounds;
4134 } 3982 }
4135 const GLbyte* mailbox = 3983 volatile const GLbyte* mailbox = GetImmediateDataAs<volatile const GLbyte*>(
4136 GetImmediateDataAs<const GLbyte*>(c, data_size, immediate_data_size); 3984 c, data_size, immediate_data_size);
4137 error::Error error = DoProduceTextureDirectCHROMIUM(texture, target, mailbox); 3985 error::Error error = DoProduceTextureDirectCHROMIUM(texture, target, mailbox);
4138 if (error != error::kNoError) { 3986 if (error != error::kNoError) {
4139 return error; 3987 return error;
4140 } 3988 }
4141 return error::kNoError; 3989 return error::kNoError;
4142 } 3990 }
4143 3991
4144 error::Error GLES2DecoderPassthroughImpl::HandleConsumeTextureCHROMIUMImmediate( 3992 error::Error GLES2DecoderPassthroughImpl::HandleConsumeTextureCHROMIUMImmediate(
4145 uint32_t immediate_data_size, 3993 uint32_t immediate_data_size,
4146 const void* cmd_data) { 3994 const volatile void* cmd_data) {
4147 const gles2::cmds::ConsumeTextureCHROMIUMImmediate& c = 3995 const volatile gles2::cmds::ConsumeTextureCHROMIUMImmediate& c = *static_cast<
4148 *static_cast<const gles2::cmds::ConsumeTextureCHROMIUMImmediate*>( 3996 const volatile gles2::cmds::ConsumeTextureCHROMIUMImmediate*>(cmd_data);
4149 cmd_data);
4150 (void)c;
4151 GLenum target = static_cast<GLenum>(c.target); 3997 GLenum target = static_cast<GLenum>(c.target);
4152 uint32_t data_size; 3998 uint32_t data_size;
4153 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { 3999 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) {
4154 return error::kOutOfBounds; 4000 return error::kOutOfBounds;
4155 } 4001 }
4156 if (data_size > immediate_data_size) { 4002 if (data_size > immediate_data_size) {
4157 return error::kOutOfBounds; 4003 return error::kOutOfBounds;
4158 } 4004 }
4159 const GLbyte* mailbox = 4005 volatile const GLbyte* mailbox = GetImmediateDataAs<volatile const GLbyte*>(
4160 GetImmediateDataAs<const GLbyte*>(c, data_size, immediate_data_size); 4006 c, data_size, immediate_data_size);
4161 error::Error error = DoConsumeTextureCHROMIUM(target, mailbox); 4007 error::Error error = DoConsumeTextureCHROMIUM(target, mailbox);
4162 if (error != error::kNoError) { 4008 if (error != error::kNoError) {
4163 return error; 4009 return error;
4164 } 4010 }
4165 return error::kNoError; 4011 return error::kNoError;
4166 } 4012 }
4167 4013
4168 error::Error 4014 error::Error
4169 GLES2DecoderPassthroughImpl::HandleCreateAndConsumeTextureINTERNALImmediate( 4015 GLES2DecoderPassthroughImpl::HandleCreateAndConsumeTextureINTERNALImmediate(
4170 uint32_t immediate_data_size, 4016 uint32_t immediate_data_size,
4171 const void* cmd_data) { 4017 const volatile void* cmd_data) {
4172 const gles2::cmds::CreateAndConsumeTextureINTERNALImmediate& c = *static_cast< 4018 const volatile gles2::cmds::CreateAndConsumeTextureINTERNALImmediate& c =
4173 const gles2::cmds::CreateAndConsumeTextureINTERNALImmediate*>(cmd_data); 4019 *static_cast<const volatile gles2::cmds::
4174 (void)c; 4020 CreateAndConsumeTextureINTERNALImmediate*>(cmd_data);
4175 GLenum target = static_cast<GLenum>(c.target); 4021 GLenum target = static_cast<GLenum>(c.target);
4176 GLuint texture = static_cast<GLuint>(c.texture); 4022 GLuint texture = static_cast<GLuint>(c.texture);
4177 uint32_t data_size; 4023 uint32_t data_size;
4178 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { 4024 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) {
4179 return error::kOutOfBounds; 4025 return error::kOutOfBounds;
4180 } 4026 }
4181 if (data_size > immediate_data_size) { 4027 if (data_size > immediate_data_size) {
4182 return error::kOutOfBounds; 4028 return error::kOutOfBounds;
4183 } 4029 }
4184 const GLbyte* mailbox = 4030 volatile const GLbyte* mailbox = GetImmediateDataAs<volatile const GLbyte*>(
4185 GetImmediateDataAs<const GLbyte*>(c, data_size, immediate_data_size); 4031 c, data_size, immediate_data_size);
4186 error::Error error = 4032 error::Error error =
4187 DoCreateAndConsumeTextureINTERNAL(target, texture, mailbox); 4033 DoCreateAndConsumeTextureINTERNAL(target, texture, mailbox);
4188 if (error != error::kNoError) { 4034 if (error != error::kNoError) {
4189 return error; 4035 return error;
4190 } 4036 }
4191 return error::kNoError; 4037 return error::kNoError;
4192 } 4038 }
4193 4039
4194 error::Error GLES2DecoderPassthroughImpl::HandleBindTexImage2DCHROMIUM( 4040 error::Error GLES2DecoderPassthroughImpl::HandleBindTexImage2DCHROMIUM(
4195 uint32_t immediate_data_size, 4041 uint32_t immediate_data_size,
4196 const void* cmd_data) { 4042 const volatile void* cmd_data) {
4197 const gles2::cmds::BindTexImage2DCHROMIUM& c = 4043 const volatile gles2::cmds::BindTexImage2DCHROMIUM& c =
4198 *static_cast<const gles2::cmds::BindTexImage2DCHROMIUM*>(cmd_data); 4044 *static_cast<const volatile gles2::cmds::BindTexImage2DCHROMIUM*>(
4199 (void)c; 4045 cmd_data);
4200 GLenum target = static_cast<GLenum>(c.target); 4046 GLenum target = static_cast<GLenum>(c.target);
4201 GLint imageId = static_cast<GLint>(c.imageId); 4047 GLint imageId = static_cast<GLint>(c.imageId);
4202 error::Error error = DoBindTexImage2DCHROMIUM(target, imageId); 4048 error::Error error = DoBindTexImage2DCHROMIUM(target, imageId);
4203 if (error != error::kNoError) { 4049 if (error != error::kNoError) {
4204 return error; 4050 return error;
4205 } 4051 }
4206 return error::kNoError; 4052 return error::kNoError;
4207 } 4053 }
4208 4054
4209 error::Error GLES2DecoderPassthroughImpl::HandleReleaseTexImage2DCHROMIUM( 4055 error::Error GLES2DecoderPassthroughImpl::HandleReleaseTexImage2DCHROMIUM(
4210 uint32_t immediate_data_size, 4056 uint32_t immediate_data_size,
4211 const void* cmd_data) { 4057 const volatile void* cmd_data) {
4212 const gles2::cmds::ReleaseTexImage2DCHROMIUM& c = 4058 const volatile gles2::cmds::ReleaseTexImage2DCHROMIUM& c =
4213 *static_cast<const gles2::cmds::ReleaseTexImage2DCHROMIUM*>(cmd_data); 4059 *static_cast<const volatile gles2::cmds::ReleaseTexImage2DCHROMIUM*>(
4214 (void)c; 4060 cmd_data);
4215 GLenum target = static_cast<GLenum>(c.target); 4061 GLenum target = static_cast<GLenum>(c.target);
4216 GLint imageId = static_cast<GLint>(c.imageId); 4062 GLint imageId = static_cast<GLint>(c.imageId);
4217 error::Error error = DoReleaseTexImage2DCHROMIUM(target, imageId); 4063 error::Error error = DoReleaseTexImage2DCHROMIUM(target, imageId);
4218 if (error != error::kNoError) { 4064 if (error != error::kNoError) {
4219 return error; 4065 return error;
4220 } 4066 }
4221 return error::kNoError; 4067 return error::kNoError;
4222 } 4068 }
4223 4069
4224 error::Error GLES2DecoderPassthroughImpl::HandleTraceEndCHROMIUM( 4070 error::Error GLES2DecoderPassthroughImpl::HandleTraceEndCHROMIUM(
4225 uint32_t immediate_data_size, 4071 uint32_t immediate_data_size,
4226 const void* cmd_data) { 4072 const volatile void* cmd_data) {
4227 const gles2::cmds::TraceEndCHROMIUM& c =
4228 *static_cast<const gles2::cmds::TraceEndCHROMIUM*>(cmd_data);
4229 (void)c;
4230 error::Error error = DoTraceEndCHROMIUM(); 4073 error::Error error = DoTraceEndCHROMIUM();
4231 if (error != error::kNoError) { 4074 if (error != error::kNoError) {
4232 return error; 4075 return error;
4233 } 4076 }
4234 return error::kNoError; 4077 return error::kNoError;
4235 } 4078 }
4236 4079
4237 error::Error GLES2DecoderPassthroughImpl::HandleDiscardFramebufferEXTImmediate( 4080 error::Error GLES2DecoderPassthroughImpl::HandleDiscardFramebufferEXTImmediate(
4238 uint32_t immediate_data_size, 4081 uint32_t immediate_data_size,
4239 const void* cmd_data) { 4082 const volatile void* cmd_data) {
4240 const gles2::cmds::DiscardFramebufferEXTImmediate& c = 4083 const volatile gles2::cmds::DiscardFramebufferEXTImmediate& c =
4241 *static_cast<const gles2::cmds::DiscardFramebufferEXTImmediate*>( 4084 *static_cast<const volatile gles2::cmds::DiscardFramebufferEXTImmediate*>(
4242 cmd_data); 4085 cmd_data);
4243 (void)c;
4244 GLenum target = static_cast<GLenum>(c.target); 4086 GLenum target = static_cast<GLenum>(c.target);
4245 GLsizei count = static_cast<GLsizei>(c.count); 4087 GLsizei count = static_cast<GLsizei>(c.count);
4246 uint32_t data_size = 0; 4088 uint32_t data_size = 0;
4247 if (count >= 0 && 4089 if (count >= 0 &&
4248 !GLES2Util::ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { 4090 !GLES2Util::ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) {
4249 return error::kOutOfBounds; 4091 return error::kOutOfBounds;
4250 } 4092 }
4251 if (data_size > immediate_data_size) { 4093 if (data_size > immediate_data_size) {
4252 return error::kOutOfBounds; 4094 return error::kOutOfBounds;
4253 } 4095 }
4254 const GLenum* attachments = 4096 volatile const GLenum* attachments =
4255 GetImmediateDataAs<const GLenum*>(c, data_size, immediate_data_size); 4097 GetImmediateDataAs<volatile const GLenum*>(c, data_size,
4098 immediate_data_size);
4256 error::Error error = DoDiscardFramebufferEXT(target, count, attachments); 4099 error::Error error = DoDiscardFramebufferEXT(target, count, attachments);
4257 if (error != error::kNoError) { 4100 if (error != error::kNoError) {
4258 return error; 4101 return error;
4259 } 4102 }
4260 return error::kNoError; 4103 return error::kNoError;
4261 } 4104 }
4262 4105
4263 error::Error GLES2DecoderPassthroughImpl::HandleLoseContextCHROMIUM( 4106 error::Error GLES2DecoderPassthroughImpl::HandleLoseContextCHROMIUM(
4264 uint32_t immediate_data_size, 4107 uint32_t immediate_data_size,
4265 const void* cmd_data) { 4108 const volatile void* cmd_data) {
4266 const gles2::cmds::LoseContextCHROMIUM& c = 4109 const volatile gles2::cmds::LoseContextCHROMIUM& c =
4267 *static_cast<const gles2::cmds::LoseContextCHROMIUM*>(cmd_data); 4110 *static_cast<const volatile gles2::cmds::LoseContextCHROMIUM*>(cmd_data);
4268 (void)c;
4269 GLenum current = static_cast<GLenum>(c.current); 4111 GLenum current = static_cast<GLenum>(c.current);
4270 GLenum other = static_cast<GLenum>(c.other); 4112 GLenum other = static_cast<GLenum>(c.other);
4271 error::Error error = DoLoseContextCHROMIUM(current, other); 4113 error::Error error = DoLoseContextCHROMIUM(current, other);
4272 if (error != error::kNoError) { 4114 if (error != error::kNoError) {
4273 return error; 4115 return error;
4274 } 4116 }
4275 return error::kNoError; 4117 return error::kNoError;
4276 } 4118 }
4277 4119
4278 error::Error GLES2DecoderPassthroughImpl::HandleDrawBuffersEXTImmediate( 4120 error::Error GLES2DecoderPassthroughImpl::HandleDrawBuffersEXTImmediate(
4279 uint32_t immediate_data_size, 4121 uint32_t immediate_data_size,
4280 const void* cmd_data) { 4122 const volatile void* cmd_data) {
4281 const gles2::cmds::DrawBuffersEXTImmediate& c = 4123 const volatile gles2::cmds::DrawBuffersEXTImmediate& c =
4282 *static_cast<const gles2::cmds::DrawBuffersEXTImmediate*>(cmd_data); 4124 *static_cast<const volatile gles2::cmds::DrawBuffersEXTImmediate*>(
4283 (void)c; 4125 cmd_data);
4284 GLsizei count = static_cast<GLsizei>(c.count); 4126 GLsizei count = static_cast<GLsizei>(c.count);
4285 uint32_t data_size = 0; 4127 uint32_t data_size = 0;
4286 if (count >= 0 && 4128 if (count >= 0 &&
4287 !GLES2Util::ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { 4129 !GLES2Util::ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) {
4288 return error::kOutOfBounds; 4130 return error::kOutOfBounds;
4289 } 4131 }
4290 if (data_size > immediate_data_size) { 4132 if (data_size > immediate_data_size) {
4291 return error::kOutOfBounds; 4133 return error::kOutOfBounds;
4292 } 4134 }
4293 const GLenum* bufs = 4135 volatile const GLenum* bufs = GetImmediateDataAs<volatile const GLenum*>(
4294 GetImmediateDataAs<const GLenum*>(c, data_size, immediate_data_size); 4136 c, data_size, immediate_data_size);
4295 error::Error error = DoDrawBuffersEXT(count, bufs); 4137 error::Error error = DoDrawBuffersEXT(count, bufs);
4296 if (error != error::kNoError) { 4138 if (error != error::kNoError) {
4297 return error; 4139 return error;
4298 } 4140 }
4299 return error::kNoError; 4141 return error::kNoError;
4300 } 4142 }
4301 4143
4302 error::Error 4144 error::Error
4303 GLES2DecoderPassthroughImpl::HandleScheduleCALayerInUseQueryCHROMIUMImmediate( 4145 GLES2DecoderPassthroughImpl::HandleScheduleCALayerInUseQueryCHROMIUMImmediate(
4304 uint32_t immediate_data_size, 4146 uint32_t immediate_data_size,
4305 const void* cmd_data) { 4147 const volatile void* cmd_data) {
4306 const gles2::cmds::ScheduleCALayerInUseQueryCHROMIUMImmediate& c = 4148 const volatile gles2::cmds::ScheduleCALayerInUseQueryCHROMIUMImmediate& c =
4307 *static_cast< 4149 *static_cast<const volatile gles2::cmds::
4308 const gles2::cmds::ScheduleCALayerInUseQueryCHROMIUMImmediate*>( 4150 ScheduleCALayerInUseQueryCHROMIUMImmediate*>(cmd_data);
4309 cmd_data);
4310 (void)c;
4311 GLsizei count = static_cast<GLsizei>(c.count); 4151 GLsizei count = static_cast<GLsizei>(c.count);
4312 uint32_t data_size = 0; 4152 uint32_t data_size = 0;
4313 if (count >= 0 && 4153 if (count >= 0 &&
4314 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 1, &data_size)) { 4154 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 1, &data_size)) {
4315 return error::kOutOfBounds; 4155 return error::kOutOfBounds;
4316 } 4156 }
4317 if (data_size > immediate_data_size) { 4157 if (data_size > immediate_data_size) {
4318 return error::kOutOfBounds; 4158 return error::kOutOfBounds;
4319 } 4159 }
4320 const GLuint* textures = 4160 volatile const GLuint* textures = GetImmediateDataAs<volatile const GLuint*>(
4321 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 4161 c, data_size, immediate_data_size);
4322 error::Error error = DoScheduleCALayerInUseQueryCHROMIUM(count, textures); 4162 error::Error error = DoScheduleCALayerInUseQueryCHROMIUM(count, textures);
4323 if (error != error::kNoError) { 4163 if (error != error::kNoError) {
4324 return error; 4164 return error;
4325 } 4165 }
4326 return error::kNoError; 4166 return error::kNoError;
4327 } 4167 }
4328 4168
4329 error::Error GLES2DecoderPassthroughImpl::HandleCommitOverlayPlanesCHROMIUM( 4169 error::Error GLES2DecoderPassthroughImpl::HandleCommitOverlayPlanesCHROMIUM(
4330 uint32_t immediate_data_size, 4170 uint32_t immediate_data_size,
4331 const void* cmd_data) { 4171 const volatile void* cmd_data) {
4332 const gles2::cmds::CommitOverlayPlanesCHROMIUM& c =
4333 *static_cast<const gles2::cmds::CommitOverlayPlanesCHROMIUM*>(cmd_data);
4334 (void)c;
4335 error::Error error = DoCommitOverlayPlanesCHROMIUM(); 4172 error::Error error = DoCommitOverlayPlanesCHROMIUM();
4336 if (error != error::kNoError) { 4173 if (error != error::kNoError) {
4337 return error; 4174 return error;
4338 } 4175 }
4339 return error::kNoError; 4176 return error::kNoError;
4340 } 4177 }
4341 4178
4342 error::Error GLES2DecoderPassthroughImpl::HandleSwapInterval( 4179 error::Error GLES2DecoderPassthroughImpl::HandleSwapInterval(
4343 uint32_t immediate_data_size, 4180 uint32_t immediate_data_size,
4344 const void* cmd_data) { 4181 const volatile void* cmd_data) {
4345 const gles2::cmds::SwapInterval& c = 4182 const volatile gles2::cmds::SwapInterval& c =
4346 *static_cast<const gles2::cmds::SwapInterval*>(cmd_data); 4183 *static_cast<const volatile gles2::cmds::SwapInterval*>(cmd_data);
4347 (void)c;
4348 GLint interval = static_cast<GLint>(c.interval); 4184 GLint interval = static_cast<GLint>(c.interval);
4349 error::Error error = DoSwapInterval(interval); 4185 error::Error error = DoSwapInterval(interval);
4350 if (error != error::kNoError) { 4186 if (error != error::kNoError) {
4351 return error; 4187 return error;
4352 } 4188 }
4353 return error::kNoError; 4189 return error::kNoError;
4354 } 4190 }
4355 4191
4356 error::Error GLES2DecoderPassthroughImpl::HandleFlushDriverCachesCHROMIUM( 4192 error::Error GLES2DecoderPassthroughImpl::HandleFlushDriverCachesCHROMIUM(
4357 uint32_t immediate_data_size, 4193 uint32_t immediate_data_size,
4358 const void* cmd_data) { 4194 const volatile void* cmd_data) {
4359 const gles2::cmds::FlushDriverCachesCHROMIUM& c =
4360 *static_cast<const gles2::cmds::FlushDriverCachesCHROMIUM*>(cmd_data);
4361 (void)c;
4362 error::Error error = DoFlushDriverCachesCHROMIUM(); 4195 error::Error error = DoFlushDriverCachesCHROMIUM();
4363 if (error != error::kNoError) { 4196 if (error != error::kNoError) {
4364 return error; 4197 return error;
4365 } 4198 }
4366 return error::kNoError; 4199 return error::kNoError;
4367 } 4200 }
4368 4201
4369 error::Error GLES2DecoderPassthroughImpl::HandleMatrixLoadfCHROMIUMImmediate( 4202 error::Error GLES2DecoderPassthroughImpl::HandleMatrixLoadfCHROMIUMImmediate(
4370 uint32_t immediate_data_size, 4203 uint32_t immediate_data_size,
4371 const void* cmd_data) { 4204 const volatile void* cmd_data) {
4372 const gles2::cmds::MatrixLoadfCHROMIUMImmediate& c = 4205 const volatile gles2::cmds::MatrixLoadfCHROMIUMImmediate& c =
4373 *static_cast<const gles2::cmds::MatrixLoadfCHROMIUMImmediate*>(cmd_data); 4206 *static_cast<const volatile gles2::cmds::MatrixLoadfCHROMIUMImmediate*>(
4374 (void)c; 4207 cmd_data);
4375 GLenum matrixMode = static_cast<GLenum>(c.matrixMode); 4208 GLenum matrixMode = static_cast<GLenum>(c.matrixMode);
4376 uint32_t data_size; 4209 uint32_t data_size;
4377 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 16, &data_size)) { 4210 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 16, &data_size)) {
4378 return error::kOutOfBounds; 4211 return error::kOutOfBounds;
4379 } 4212 }
4380 if (data_size > immediate_data_size) { 4213 if (data_size > immediate_data_size) {
4381 return error::kOutOfBounds; 4214 return error::kOutOfBounds;
4382 } 4215 }
4383 const GLfloat* m = 4216 volatile const GLfloat* m = GetImmediateDataAs<volatile const GLfloat*>(
4384 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 4217 c, data_size, immediate_data_size);
4385 error::Error error = DoMatrixLoadfCHROMIUM(matrixMode, m); 4218 error::Error error = DoMatrixLoadfCHROMIUM(matrixMode, m);
4386 if (error != error::kNoError) { 4219 if (error != error::kNoError) {
4387 return error; 4220 return error;
4388 } 4221 }
4389 return error::kNoError; 4222 return error::kNoError;
4390 } 4223 }
4391 4224
4392 error::Error GLES2DecoderPassthroughImpl::HandleMatrixLoadIdentityCHROMIUM( 4225 error::Error GLES2DecoderPassthroughImpl::HandleMatrixLoadIdentityCHROMIUM(
4393 uint32_t immediate_data_size, 4226 uint32_t immediate_data_size,
4394 const void* cmd_data) { 4227 const volatile void* cmd_data) {
4395 const gles2::cmds::MatrixLoadIdentityCHROMIUM& c = 4228 const volatile gles2::cmds::MatrixLoadIdentityCHROMIUM& c =
4396 *static_cast<const gles2::cmds::MatrixLoadIdentityCHROMIUM*>(cmd_data); 4229 *static_cast<const volatile gles2::cmds::MatrixLoadIdentityCHROMIUM*>(
4397 (void)c; 4230 cmd_data);
4398 GLenum matrixMode = static_cast<GLenum>(c.matrixMode); 4231 GLenum matrixMode = static_cast<GLenum>(c.matrixMode);
4399 error::Error error = DoMatrixLoadIdentityCHROMIUM(matrixMode); 4232 error::Error error = DoMatrixLoadIdentityCHROMIUM(matrixMode);
4400 if (error != error::kNoError) { 4233 if (error != error::kNoError) {
4401 return error; 4234 return error;
4402 } 4235 }
4403 return error::kNoError; 4236 return error::kNoError;
4404 } 4237 }
4405 4238
4406 error::Error GLES2DecoderPassthroughImpl::HandleIsPathCHROMIUM( 4239 error::Error GLES2DecoderPassthroughImpl::HandleIsPathCHROMIUM(
4407 uint32_t immediate_data_size, 4240 uint32_t immediate_data_size,
4408 const void* cmd_data) { 4241 const volatile void* cmd_data) {
4409 const gles2::cmds::IsPathCHROMIUM& c = 4242 const volatile gles2::cmds::IsPathCHROMIUM& c =
4410 *static_cast<const gles2::cmds::IsPathCHROMIUM*>(cmd_data); 4243 *static_cast<const volatile gles2::cmds::IsPathCHROMIUM*>(cmd_data);
4411 (void)c;
4412 GLuint path = c.path; 4244 GLuint path = c.path;
4413 typedef cmds::IsPathCHROMIUM::Result Result; 4245 typedef cmds::IsPathCHROMIUM::Result Result;
4414 Result* result = GetSharedMemoryAs<Result*>( 4246 Result* result = GetSharedMemoryAs<Result*>(
4415 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 4247 c.result_shm_id, c.result_shm_offset, sizeof(*result));
4416 if (!result) { 4248 if (!result) {
4417 return error::kOutOfBounds; 4249 return error::kOutOfBounds;
4418 } 4250 }
4419 error::Error error = DoIsPathCHROMIUM(path, result); 4251 error::Error error = DoIsPathCHROMIUM(path, result);
4420 if (error != error::kNoError) { 4252 if (error != error::kNoError) {
4421 return error; 4253 return error;
4422 } 4254 }
4423 return error::kNoError; 4255 return error::kNoError;
4424 } 4256 }
4425 4257
4426 error::Error GLES2DecoderPassthroughImpl::HandlePathStencilFuncCHROMIUM( 4258 error::Error GLES2DecoderPassthroughImpl::HandlePathStencilFuncCHROMIUM(
4427 uint32_t immediate_data_size, 4259 uint32_t immediate_data_size,
4428 const void* cmd_data) { 4260 const volatile void* cmd_data) {
4429 const gles2::cmds::PathStencilFuncCHROMIUM& c = 4261 const volatile gles2::cmds::PathStencilFuncCHROMIUM& c =
4430 *static_cast<const gles2::cmds::PathStencilFuncCHROMIUM*>(cmd_data); 4262 *static_cast<const volatile gles2::cmds::PathStencilFuncCHROMIUM*>(
4431 (void)c; 4263 cmd_data);
4432 GLenum func = static_cast<GLenum>(c.func); 4264 GLenum func = static_cast<GLenum>(c.func);
4433 GLint ref = static_cast<GLint>(c.ref); 4265 GLint ref = static_cast<GLint>(c.ref);
4434 GLuint mask = static_cast<GLuint>(c.mask); 4266 GLuint mask = static_cast<GLuint>(c.mask);
4435 error::Error error = DoPathStencilFuncCHROMIUM(func, ref, mask); 4267 error::Error error = DoPathStencilFuncCHROMIUM(func, ref, mask);
4436 if (error != error::kNoError) { 4268 if (error != error::kNoError) {
4437 return error; 4269 return error;
4438 } 4270 }
4439 return error::kNoError; 4271 return error::kNoError;
4440 } 4272 }
4441 4273
4442 error::Error GLES2DecoderPassthroughImpl::HandleCoverageModulationCHROMIUM( 4274 error::Error GLES2DecoderPassthroughImpl::HandleCoverageModulationCHROMIUM(
4443 uint32_t immediate_data_size, 4275 uint32_t immediate_data_size,
4444 const void* cmd_data) { 4276 const volatile void* cmd_data) {
4445 const gles2::cmds::CoverageModulationCHROMIUM& c = 4277 const volatile gles2::cmds::CoverageModulationCHROMIUM& c =
4446 *static_cast<const gles2::cmds::CoverageModulationCHROMIUM*>(cmd_data); 4278 *static_cast<const volatile gles2::cmds::CoverageModulationCHROMIUM*>(
4447 (void)c; 4279 cmd_data);
4448 GLenum components = static_cast<GLenum>(c.components); 4280 GLenum components = static_cast<GLenum>(c.components);
4449 error::Error error = DoCoverageModulationCHROMIUM(components); 4281 error::Error error = DoCoverageModulationCHROMIUM(components);
4450 if (error != error::kNoError) { 4282 if (error != error::kNoError) {
4451 return error; 4283 return error;
4452 } 4284 }
4453 return error::kNoError; 4285 return error::kNoError;
4454 } 4286 }
4455 4287
4456 error::Error GLES2DecoderPassthroughImpl::HandleBlendBarrierKHR( 4288 error::Error GLES2DecoderPassthroughImpl::HandleBlendBarrierKHR(
4457 uint32_t immediate_data_size, 4289 uint32_t immediate_data_size,
4458 const void* cmd_data) { 4290 const volatile void* cmd_data) {
4459 const gles2::cmds::BlendBarrierKHR& c =
4460 *static_cast<const gles2::cmds::BlendBarrierKHR*>(cmd_data);
4461 (void)c;
4462 error::Error error = DoBlendBarrierKHR(); 4291 error::Error error = DoBlendBarrierKHR();
4463 if (error != error::kNoError) { 4292 if (error != error::kNoError) {
4464 return error; 4293 return error;
4465 } 4294 }
4466 return error::kNoError; 4295 return error::kNoError;
4467 } 4296 }
4468 4297
4469 error::Error 4298 error::Error
4470 GLES2DecoderPassthroughImpl::HandleApplyScreenSpaceAntialiasingCHROMIUM( 4299 GLES2DecoderPassthroughImpl::HandleApplyScreenSpaceAntialiasingCHROMIUM(
4471 uint32_t immediate_data_size, 4300 uint32_t immediate_data_size,
4472 const void* cmd_data) { 4301 const volatile void* cmd_data) {
4473 const gles2::cmds::ApplyScreenSpaceAntialiasingCHROMIUM& c =
4474 *static_cast<const gles2::cmds::ApplyScreenSpaceAntialiasingCHROMIUM*>(
4475 cmd_data);
4476 (void)c;
4477 error::Error error = DoApplyScreenSpaceAntialiasingCHROMIUM(); 4302 error::Error error = DoApplyScreenSpaceAntialiasingCHROMIUM();
4478 if (error != error::kNoError) { 4303 if (error != error::kNoError) {
4479 return error; 4304 return error;
4480 } 4305 }
4481 return error::kNoError; 4306 return error::kNoError;
4482 } 4307 }
4483 4308
4484 error::Error GLES2DecoderPassthroughImpl:: 4309 error::Error GLES2DecoderPassthroughImpl::
4485 HandleUniformMatrix4fvStreamTextureMatrixCHROMIUMImmediate( 4310 HandleUniformMatrix4fvStreamTextureMatrixCHROMIUMImmediate(
4486 uint32_t immediate_data_size, 4311 uint32_t immediate_data_size,
4487 const void* cmd_data) { 4312 const volatile void* cmd_data) {
4488 const gles2::cmds::UniformMatrix4fvStreamTextureMatrixCHROMIUMImmediate& c = 4313 const volatile gles2::cmds::
4489 *static_cast<const gles2::cmds:: 4314 UniformMatrix4fvStreamTextureMatrixCHROMIUMImmediate& c = *static_cast<
4490 UniformMatrix4fvStreamTextureMatrixCHROMIUMImmediate*>( 4315 const volatile gles2::cmds::
4491 cmd_data); 4316 UniformMatrix4fvStreamTextureMatrixCHROMIUMImmediate*>(cmd_data);
4492 (void)c;
4493 GLint location = static_cast<GLint>(c.location); 4317 GLint location = static_cast<GLint>(c.location);
4494 GLboolean transpose = static_cast<GLboolean>(c.transpose); 4318 GLboolean transpose = static_cast<GLboolean>(c.transpose);
4495 uint32_t data_size; 4319 uint32_t data_size;
4496 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 16, &data_size)) { 4320 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 16, &data_size)) {
4497 return error::kOutOfBounds; 4321 return error::kOutOfBounds;
4498 } 4322 }
4499 if (data_size > immediate_data_size) { 4323 if (data_size > immediate_data_size) {
4500 return error::kOutOfBounds; 4324 return error::kOutOfBounds;
4501 } 4325 }
4502 const GLfloat* transform = 4326 volatile const GLfloat* transform =
4503 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 4327 GetImmediateDataAs<volatile const GLfloat*>(c, data_size,
4328 immediate_data_size);
4504 error::Error error = DoUniformMatrix4fvStreamTextureMatrixCHROMIUM( 4329 error::Error error = DoUniformMatrix4fvStreamTextureMatrixCHROMIUM(
4505 location, transpose, transform); 4330 location, transpose, transform);
4506 if (error != error::kNoError) { 4331 if (error != error::kNoError) {
4507 return error; 4332 return error;
4508 } 4333 }
4509 return error::kNoError; 4334 return error::kNoError;
4510 } 4335 }
4511 4336
4512 } // namespace gles2 4337 } // namespace gles2
4513 } // namespace gpu 4338 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers.cc ('k') | gpu/command_buffer/service/mocks.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698