1 // Generated Code - DO NOT EDIT !!
2 // generated by 'emugen'
3
4
5 #include <string.h>
6 #include "gles2_opcodes.h"
7
8 #include "gles2_dec.h"
9
10
11 #include "ProtocolUtils.h"
12
13 #include "ChecksumCalculatorThreadInfo.h"
14
15 #include "host-common/logging.h"
16
17 #include <stdio.h>
18
19 namespace gfxstream {
20
21 typedef unsigned int tsize_t; // Target "size_t", which is 32-bit for now. It may or may not be the same as host's size_t when emugen is compiled.
22
23 #ifdef CHECK_GL_ERRORS
24 # define SET_LASTCALL(name) sprintf(lastCall, #name)
25 #else
26 # define SET_LASTCALL(name)
27 #endif
decode(void * buf,size_t len,IOStream * stream,ChecksumCalculator * checksumCalc)28 size_t gles2_decoder_context_t::decode(void *buf, size_t len, IOStream *stream, ChecksumCalculator* checksumCalc) {
29 if (len < 8) return 0;
30 #ifdef CHECK_GL_ERRORS
31 char lastCall[256] = {0};
32 #endif
33 unsigned char *ptr = (unsigned char *)buf;
34 const unsigned char* const end = (const unsigned char*)buf + len;
35 const size_t checksumSize = checksumCalc->checksumByteSize();
36 const bool useChecksum = checksumSize > 0;
37 while (end - ptr >= 8) {
38 uint32_t opcode = *(uint32_t *)ptr;
39 uint32_t packetLen = *(uint32_t *)(ptr + 4);
40 if (end - ptr < packetLen) return ptr - (unsigned char*)buf;
41 switch(opcode) {
42 case OP_glActiveTexture: {
43 android::base::beginTrace("glActiveTexture decode");
44 GLenum var_texture = Unpack<GLenum,uint32_t>(ptr + 8);
45 if (useChecksum) {
46 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
47 "gles2_decoder_context_t::decode, OP_glActiveTexture: GL checksumCalculator failure\n");
48 }
49 #ifdef CHECK_GL_ERRORS
50 GLint err = this->glGetError();
51 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glActiveTexture\n", err);
52 #endif
53 DECODER_DEBUG_LOG("gles2(%p): glActiveTexture(texture:0x%08x )", stream, var_texture);
54 this->glActiveTexture(var_texture);
55 SET_LASTCALL("glActiveTexture");
56 android::base::endTrace();
57 break;
58 }
59 case OP_glAttachShader: {
60 android::base::beginTrace("glAttachShader decode");
61 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
62 GLuint var_shader = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
63 if (useChecksum) {
64 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
65 "gles2_decoder_context_t::decode, OP_glAttachShader: GL checksumCalculator failure\n");
66 }
67 #ifdef CHECK_GL_ERRORS
68 GLint err = this->glGetError();
69 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glAttachShader\n", err);
70 #endif
71 DECODER_DEBUG_LOG("gles2(%p): glAttachShader(program:%u shader:%u )", stream, var_program, var_shader);
72 this->glAttachShader_dec(this, var_program, var_shader);
73 SET_LASTCALL("glAttachShader");
74 android::base::endTrace();
75 break;
76 }
77 case OP_glBindAttribLocation: {
78 android::base::beginTrace("glBindAttribLocation decode");
79 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
80 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
81 uint32_t size_name __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
82 InputBuffer inptr_name(ptr + 8 + 4 + 4 + 4, size_name);
83 if (useChecksum) {
84 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_name, ptr + 8 + 4 + 4 + 4 + size_name, checksumSize,
85 "gles2_decoder_context_t::decode, OP_glBindAttribLocation: GL checksumCalculator failure\n");
86 }
87 #ifdef CHECK_GL_ERRORS
88 GLint err = this->glGetError();
89 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBindAttribLocation\n", err);
90 #endif
91 DECODER_DEBUG_LOG("gles2(%p): glBindAttribLocation(program:%u index:%u name:%p(%u) )", stream, var_program, var_index, (const GLchar*)(inptr_name.get()), size_name);
92 this->glBindAttribLocation_dec(this, var_program, var_index, (const GLchar*)(inptr_name.get()));
93 SET_LASTCALL("glBindAttribLocation");
94 android::base::endTrace();
95 break;
96 }
97 case OP_glBindBuffer: {
98 android::base::beginTrace("glBindBuffer decode");
99 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
100 GLuint var_buffer = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
101 if (useChecksum) {
102 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
103 "gles2_decoder_context_t::decode, OP_glBindBuffer: GL checksumCalculator failure\n");
104 }
105 #ifdef CHECK_GL_ERRORS
106 GLint err = this->glGetError();
107 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBindBuffer\n", err);
108 #endif
109 DECODER_DEBUG_LOG("gles2(%p): glBindBuffer(target:0x%08x buffer:%u )", stream, var_target, var_buffer);
110 this->glBindBuffer(var_target, var_buffer);
111 SET_LASTCALL("glBindBuffer");
112 android::base::endTrace();
113 break;
114 }
115 case OP_glBindFramebuffer: {
116 android::base::beginTrace("glBindFramebuffer decode");
117 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
118 GLuint var_framebuffer = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
119 if (useChecksum) {
120 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
121 "gles2_decoder_context_t::decode, OP_glBindFramebuffer: GL checksumCalculator failure\n");
122 }
123 #ifdef CHECK_GL_ERRORS
124 GLint err = this->glGetError();
125 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBindFramebuffer\n", err);
126 #endif
127 DECODER_DEBUG_LOG("gles2(%p): glBindFramebuffer(target:0x%08x framebuffer:%u )", stream, var_target, var_framebuffer);
128 this->glBindFramebuffer(var_target, var_framebuffer);
129 SET_LASTCALL("glBindFramebuffer");
130 android::base::endTrace();
131 break;
132 }
133 case OP_glBindRenderbuffer: {
134 android::base::beginTrace("glBindRenderbuffer decode");
135 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
136 GLuint var_renderbuffer = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
137 if (useChecksum) {
138 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
139 "gles2_decoder_context_t::decode, OP_glBindRenderbuffer: GL checksumCalculator failure\n");
140 }
141 #ifdef CHECK_GL_ERRORS
142 GLint err = this->glGetError();
143 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBindRenderbuffer\n", err);
144 #endif
145 DECODER_DEBUG_LOG("gles2(%p): glBindRenderbuffer(target:0x%08x renderbuffer:%u )", stream, var_target, var_renderbuffer);
146 this->glBindRenderbuffer(var_target, var_renderbuffer);
147 SET_LASTCALL("glBindRenderbuffer");
148 android::base::endTrace();
149 break;
150 }
151 case OP_glBindTexture: {
152 android::base::beginTrace("glBindTexture decode");
153 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
154 GLuint var_texture = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
155 if (useChecksum) {
156 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
157 "gles2_decoder_context_t::decode, OP_glBindTexture: GL checksumCalculator failure\n");
158 }
159 #ifdef CHECK_GL_ERRORS
160 GLint err = this->glGetError();
161 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBindTexture\n", err);
162 #endif
163 DECODER_DEBUG_LOG("gles2(%p): glBindTexture(target:0x%08x texture:%u )", stream, var_target, var_texture);
164 this->glBindTexture(var_target, var_texture);
165 SET_LASTCALL("glBindTexture");
166 android::base::endTrace();
167 break;
168 }
169 case OP_glBlendColor: {
170 android::base::beginTrace("glBlendColor decode");
171 GLclampf var_red = Unpack<GLclampf,uint32_t>(ptr + 8);
172 GLclampf var_green = Unpack<GLclampf,uint32_t>(ptr + 8 + 4);
173 GLclampf var_blue = Unpack<GLclampf,uint32_t>(ptr + 8 + 4 + 4);
174 GLclampf var_alpha = Unpack<GLclampf,uint32_t>(ptr + 8 + 4 + 4 + 4);
175 if (useChecksum) {
176 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
177 "gles2_decoder_context_t::decode, OP_glBlendColor: GL checksumCalculator failure\n");
178 }
179 #ifdef CHECK_GL_ERRORS
180 GLint err = this->glGetError();
181 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBlendColor\n", err);
182 #endif
183 DECODER_DEBUG_LOG("gles2(%p): glBlendColor(red:%f green:%f blue:%f alpha:%f )", stream, var_red, var_green, var_blue, var_alpha);
184 this->glBlendColor(var_red, var_green, var_blue, var_alpha);
185 SET_LASTCALL("glBlendColor");
186 android::base::endTrace();
187 break;
188 }
189 case OP_glBlendEquation: {
190 android::base::beginTrace("glBlendEquation decode");
191 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
192 if (useChecksum) {
193 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
194 "gles2_decoder_context_t::decode, OP_glBlendEquation: GL checksumCalculator failure\n");
195 }
196 #ifdef CHECK_GL_ERRORS
197 GLint err = this->glGetError();
198 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBlendEquation\n", err);
199 #endif
200 DECODER_DEBUG_LOG("gles2(%p): glBlendEquation(mode:0x%08x )", stream, var_mode);
201 this->glBlendEquation(var_mode);
202 SET_LASTCALL("glBlendEquation");
203 android::base::endTrace();
204 break;
205 }
206 case OP_glBlendEquationSeparate: {
207 android::base::beginTrace("glBlendEquationSeparate decode");
208 GLenum var_modeRGB = Unpack<GLenum,uint32_t>(ptr + 8);
209 GLenum var_modeAlpha = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
210 if (useChecksum) {
211 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
212 "gles2_decoder_context_t::decode, OP_glBlendEquationSeparate: GL checksumCalculator failure\n");
213 }
214 #ifdef CHECK_GL_ERRORS
215 GLint err = this->glGetError();
216 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBlendEquationSeparate\n", err);
217 #endif
218 DECODER_DEBUG_LOG("gles2(%p): glBlendEquationSeparate(modeRGB:0x%08x modeAlpha:0x%08x )", stream, var_modeRGB, var_modeAlpha);
219 this->glBlendEquationSeparate(var_modeRGB, var_modeAlpha);
220 SET_LASTCALL("glBlendEquationSeparate");
221 android::base::endTrace();
222 break;
223 }
224 case OP_glBlendFunc: {
225 android::base::beginTrace("glBlendFunc decode");
226 GLenum var_sfactor = Unpack<GLenum,uint32_t>(ptr + 8);
227 GLenum var_dfactor = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
228 if (useChecksum) {
229 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
230 "gles2_decoder_context_t::decode, OP_glBlendFunc: GL checksumCalculator failure\n");
231 }
232 #ifdef CHECK_GL_ERRORS
233 GLint err = this->glGetError();
234 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBlendFunc\n", err);
235 #endif
236 DECODER_DEBUG_LOG("gles2(%p): glBlendFunc(sfactor:0x%08x dfactor:0x%08x )", stream, var_sfactor, var_dfactor);
237 this->glBlendFunc(var_sfactor, var_dfactor);
238 SET_LASTCALL("glBlendFunc");
239 android::base::endTrace();
240 break;
241 }
242 case OP_glBlendFuncSeparate: {
243 android::base::beginTrace("glBlendFuncSeparate decode");
244 GLenum var_srcRGB = Unpack<GLenum,uint32_t>(ptr + 8);
245 GLenum var_dstRGB = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
246 GLenum var_srcAlpha = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
247 GLenum var_dstAlpha = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4);
248 if (useChecksum) {
249 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
250 "gles2_decoder_context_t::decode, OP_glBlendFuncSeparate: GL checksumCalculator failure\n");
251 }
252 #ifdef CHECK_GL_ERRORS
253 GLint err = this->glGetError();
254 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBlendFuncSeparate\n", err);
255 #endif
256 DECODER_DEBUG_LOG("gles2(%p): glBlendFuncSeparate(srcRGB:0x%08x dstRGB:0x%08x srcAlpha:0x%08x dstAlpha:0x%08x )", stream, var_srcRGB, var_dstRGB, var_srcAlpha, var_dstAlpha);
257 this->glBlendFuncSeparate(var_srcRGB, var_dstRGB, var_srcAlpha, var_dstAlpha);
258 SET_LASTCALL("glBlendFuncSeparate");
259 android::base::endTrace();
260 break;
261 }
262 case OP_glBufferData: {
263 android::base::beginTrace("glBufferData decode");
264 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
265 GLsizeiptr var_size = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4);
266 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
267 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4, size_data);
268 GLenum var_usage = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_data);
269 if (useChecksum) {
270 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_data + 4, ptr + 8 + 4 + 4 + 4 + size_data + 4, checksumSize,
271 "gles2_decoder_context_t::decode, OP_glBufferData: GL checksumCalculator failure\n");
272 }
273 #ifdef CHECK_GL_ERRORS
274 GLint err = this->glGetError();
275 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBufferData\n", err);
276 #endif
277 DECODER_DEBUG_LOG("gles2(%p): glBufferData(target:0x%08x size:0x%08lx data:%p(%u) usage:0x%08x )", stream, var_target, var_size, (const GLvoid*)(inptr_data.get()), size_data, var_usage);
278 this->glBufferData(var_target, var_size, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get()), var_usage);
279 SET_LASTCALL("glBufferData");
280 android::base::endTrace();
281 break;
282 }
283 case OP_glBufferSubData: {
284 android::base::beginTrace("glBufferSubData decode");
285 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
286 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4);
287 GLsizeiptr var_size = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4);
288 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
289 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4, size_data);
290 if (useChecksum) {
291 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + size_data, checksumSize,
292 "gles2_decoder_context_t::decode, OP_glBufferSubData: GL checksumCalculator failure\n");
293 }
294 #ifdef CHECK_GL_ERRORS
295 GLint err = this->glGetError();
296 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBufferSubData\n", err);
297 #endif
298 DECODER_DEBUG_LOG("gles2(%p): glBufferSubData(target:0x%08x offset:0x%08lx size:0x%08lx data:%p(%u) )", stream, var_target, var_offset, var_size, (const GLvoid*)(inptr_data.get()), size_data);
299 this->glBufferSubData(var_target, var_offset, var_size, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get()));
300 SET_LASTCALL("glBufferSubData");
301 android::base::endTrace();
302 break;
303 }
304 case OP_glCheckFramebufferStatus: {
305 android::base::beginTrace("glCheckFramebufferStatus decode");
306 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
307 if (useChecksum) {
308 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
309 "gles2_decoder_context_t::decode, OP_glCheckFramebufferStatus: GL checksumCalculator failure\n");
310 }
311 size_t totalTmpSize = sizeof(GLenum);
312 totalTmpSize += checksumSize;
313 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
314 #ifdef CHECK_GL_ERRORS
315 GLint err = this->glGetError();
316 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCheckFramebufferStatus\n", err);
317 #endif
318 DECODER_DEBUG_LOG("gles2(%p): glCheckFramebufferStatus(target:0x%08x )", stream, var_target);
319 *(GLenum *)(&tmpBuf[0]) = this->glCheckFramebufferStatus(var_target);
320 if (useChecksum) {
321 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
322 }
323 stream->flush();
324 SET_LASTCALL("glCheckFramebufferStatus");
325 android::base::endTrace();
326 break;
327 }
328 case OP_glClear: {
329 android::base::beginTrace("glClear decode");
330 GLbitfield var_mask = Unpack<GLbitfield,uint32_t>(ptr + 8);
331 if (useChecksum) {
332 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
333 "gles2_decoder_context_t::decode, OP_glClear: GL checksumCalculator failure\n");
334 }
335 #ifdef CHECK_GL_ERRORS
336 GLint err = this->glGetError();
337 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glClear\n", err);
338 #endif
339 DECODER_DEBUG_LOG("gles2(%p): glClear(mask:0x%08x )", stream, var_mask);
340 this->glClear(var_mask);
341 SET_LASTCALL("glClear");
342 android::base::endTrace();
343 break;
344 }
345 case OP_glClearColor: {
346 android::base::beginTrace("glClearColor decode");
347 GLclampf var_red = Unpack<GLclampf,uint32_t>(ptr + 8);
348 GLclampf var_green = Unpack<GLclampf,uint32_t>(ptr + 8 + 4);
349 GLclampf var_blue = Unpack<GLclampf,uint32_t>(ptr + 8 + 4 + 4);
350 GLclampf var_alpha = Unpack<GLclampf,uint32_t>(ptr + 8 + 4 + 4 + 4);
351 if (useChecksum) {
352 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
353 "gles2_decoder_context_t::decode, OP_glClearColor: GL checksumCalculator failure\n");
354 }
355 #ifdef CHECK_GL_ERRORS
356 GLint err = this->glGetError();
357 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glClearColor\n", err);
358 #endif
359 DECODER_DEBUG_LOG("gles2(%p): glClearColor(red:%f green:%f blue:%f alpha:%f )", stream, var_red, var_green, var_blue, var_alpha);
360 this->glClearColor(var_red, var_green, var_blue, var_alpha);
361 SET_LASTCALL("glClearColor");
362 android::base::endTrace();
363 break;
364 }
365 case OP_glClearDepthf: {
366 android::base::beginTrace("glClearDepthf decode");
367 GLclampf var_depth = Unpack<GLclampf,uint32_t>(ptr + 8);
368 if (useChecksum) {
369 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
370 "gles2_decoder_context_t::decode, OP_glClearDepthf: GL checksumCalculator failure\n");
371 }
372 #ifdef CHECK_GL_ERRORS
373 GLint err = this->glGetError();
374 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glClearDepthf\n", err);
375 #endif
376 DECODER_DEBUG_LOG("gles2(%p): glClearDepthf(depth:%f )", stream, var_depth);
377 this->glClearDepthf(var_depth);
378 SET_LASTCALL("glClearDepthf");
379 android::base::endTrace();
380 break;
381 }
382 case OP_glClearStencil: {
383 android::base::beginTrace("glClearStencil decode");
384 GLint var_s = Unpack<GLint,uint32_t>(ptr + 8);
385 if (useChecksum) {
386 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
387 "gles2_decoder_context_t::decode, OP_glClearStencil: GL checksumCalculator failure\n");
388 }
389 #ifdef CHECK_GL_ERRORS
390 GLint err = this->glGetError();
391 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glClearStencil\n", err);
392 #endif
393 DECODER_DEBUG_LOG("gles2(%p): glClearStencil(s:%d )", stream, var_s);
394 this->glClearStencil(var_s);
395 SET_LASTCALL("glClearStencil");
396 android::base::endTrace();
397 break;
398 }
399 case OP_glColorMask: {
400 android::base::beginTrace("glColorMask decode");
401 GLboolean var_red = Unpack<GLboolean,uint8_t>(ptr + 8);
402 GLboolean var_green = Unpack<GLboolean,uint8_t>(ptr + 8 + 1);
403 GLboolean var_blue = Unpack<GLboolean,uint8_t>(ptr + 8 + 1 + 1);
404 GLboolean var_alpha = Unpack<GLboolean,uint8_t>(ptr + 8 + 1 + 1 + 1);
405 if (useChecksum) {
406 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 1 + 1 + 1 + 1, ptr + 8 + 1 + 1 + 1 + 1, checksumSize,
407 "gles2_decoder_context_t::decode, OP_glColorMask: GL checksumCalculator failure\n");
408 }
409 #ifdef CHECK_GL_ERRORS
410 GLint err = this->glGetError();
411 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glColorMask\n", err);
412 #endif
413 DECODER_DEBUG_LOG("gles2(%p): glColorMask(red:%d green:%d blue:%d alpha:%d )", stream, var_red, var_green, var_blue, var_alpha);
414 this->glColorMask(var_red, var_green, var_blue, var_alpha);
415 SET_LASTCALL("glColorMask");
416 android::base::endTrace();
417 break;
418 }
419 case OP_glCompileShader: {
420 android::base::beginTrace("glCompileShader decode");
421 GLuint var_shader = Unpack<GLuint,uint32_t>(ptr + 8);
422 if (useChecksum) {
423 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
424 "gles2_decoder_context_t::decode, OP_glCompileShader: GL checksumCalculator failure\n");
425 }
426 #ifdef CHECK_GL_ERRORS
427 GLint err = this->glGetError();
428 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCompileShader\n", err);
429 #endif
430 DECODER_DEBUG_LOG("gles2(%p): glCompileShader(shader:%u )", stream, var_shader);
431 this->glCompileShader_dec(this, var_shader);
432 SET_LASTCALL("glCompileShader");
433 android::base::endTrace();
434 break;
435 }
436 case OP_glCompressedTexImage2D: {
437 android::base::beginTrace("glCompressedTexImage2D decode");
438 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
439 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
440 GLenum var_internalformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
441 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
442 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
443 GLint var_border = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
444 GLsizei var_imageSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
445 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
446 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data);
447 if (useChecksum) {
448 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize,
449 "gles2_decoder_context_t::decode, OP_glCompressedTexImage2D: GL checksumCalculator failure\n");
450 }
451 #ifdef CHECK_GL_ERRORS
452 GLint err = this->glGetError();
453 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCompressedTexImage2D\n", err);
454 #endif
455 DECODER_DEBUG_LOG("gles2(%p): glCompressedTexImage2D(target:0x%08x level:%d internalformat:0x%08x width:%d height:%d border:%d imageSize:%d data:%p(%u) )", stream, var_target, var_level, var_internalformat, var_width, var_height, var_border, var_imageSize, (const GLvoid*)(inptr_data.get()), size_data);
456 this->glCompressedTexImage2D(var_target, var_level, var_internalformat, var_width, var_height, var_border, var_imageSize, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get()));
457 SET_LASTCALL("glCompressedTexImage2D");
458 android::base::endTrace();
459 break;
460 }
461 case OP_glCompressedTexSubImage2D: {
462 android::base::beginTrace("glCompressedTexSubImage2D decode");
463 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
464 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
465 GLint var_xoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
466 GLint var_yoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
467 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
468 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
469 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
470 GLsizei var_imageSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
471 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
472 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data);
473 if (useChecksum) {
474 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize,
475 "gles2_decoder_context_t::decode, OP_glCompressedTexSubImage2D: GL checksumCalculator failure\n");
476 }
477 #ifdef CHECK_GL_ERRORS
478 GLint err = this->glGetError();
479 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCompressedTexSubImage2D\n", err);
480 #endif
481 DECODER_DEBUG_LOG("gles2(%p): glCompressedTexSubImage2D(target:0x%08x level:%d xoffset:%d yoffset:%d width:%d height:%d format:0x%08x imageSize:%d data:%p(%u) )", stream, var_target, var_level, var_xoffset, var_yoffset, var_width, var_height, var_format, var_imageSize, (const GLvoid*)(inptr_data.get()), size_data);
482 this->glCompressedTexSubImage2D(var_target, var_level, var_xoffset, var_yoffset, var_width, var_height, var_format, var_imageSize, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get()));
483 SET_LASTCALL("glCompressedTexSubImage2D");
484 android::base::endTrace();
485 break;
486 }
487 case OP_glCopyTexImage2D: {
488 android::base::beginTrace("glCopyTexImage2D decode");
489 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
490 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
491 GLenum var_internalformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
492 GLint var_x = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
493 GLint var_y = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
494 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
495 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
496 GLint var_border = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
497 if (useChecksum) {
498 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
499 "gles2_decoder_context_t::decode, OP_glCopyTexImage2D: GL checksumCalculator failure\n");
500 }
501 #ifdef CHECK_GL_ERRORS
502 GLint err = this->glGetError();
503 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCopyTexImage2D\n", err);
504 #endif
505 DECODER_DEBUG_LOG("gles2(%p): glCopyTexImage2D(target:0x%08x level:%d internalformat:0x%08x x:%d y:%d width:%d height:%d border:%d )", stream, var_target, var_level, var_internalformat, var_x, var_y, var_width, var_height, var_border);
506 this->glCopyTexImage2D(var_target, var_level, var_internalformat, var_x, var_y, var_width, var_height, var_border);
507 SET_LASTCALL("glCopyTexImage2D");
508 android::base::endTrace();
509 break;
510 }
511 case OP_glCopyTexSubImage2D: {
512 android::base::beginTrace("glCopyTexSubImage2D decode");
513 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
514 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
515 GLint var_xoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
516 GLint var_yoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
517 GLint var_x = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
518 GLint var_y = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
519 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
520 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
521 if (useChecksum) {
522 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
523 "gles2_decoder_context_t::decode, OP_glCopyTexSubImage2D: GL checksumCalculator failure\n");
524 }
525 #ifdef CHECK_GL_ERRORS
526 GLint err = this->glGetError();
527 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCopyTexSubImage2D\n", err);
528 #endif
529 DECODER_DEBUG_LOG("gles2(%p): glCopyTexSubImage2D(target:0x%08x level:%d xoffset:%d yoffset:%d x:%d y:%d width:%d height:%d )", stream, var_target, var_level, var_xoffset, var_yoffset, var_x, var_y, var_width, var_height);
530 this->glCopyTexSubImage2D(var_target, var_level, var_xoffset, var_yoffset, var_x, var_y, var_width, var_height);
531 SET_LASTCALL("glCopyTexSubImage2D");
532 android::base::endTrace();
533 break;
534 }
535 case OP_glCreateProgram: {
536 android::base::beginTrace("glCreateProgram decode");
537 if (useChecksum) {
538 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize,
539 "gles2_decoder_context_t::decode, OP_glCreateProgram: GL checksumCalculator failure\n");
540 }
541 size_t totalTmpSize = sizeof(GLuint);
542 totalTmpSize += checksumSize;
543 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
544 #ifdef CHECK_GL_ERRORS
545 GLint err = this->glGetError();
546 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCreateProgram\n", err);
547 #endif
548 DECODER_DEBUG_LOG("gles2(%p): glCreateProgram()", stream);
549 *(GLuint *)(&tmpBuf[0]) = this->glCreateProgram_dec(this);
550 if (useChecksum) {
551 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
552 }
553 stream->flush();
554 SET_LASTCALL("glCreateProgram");
555 android::base::endTrace();
556 break;
557 }
558 case OP_glCreateShader: {
559 android::base::beginTrace("glCreateShader decode");
560 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8);
561 if (useChecksum) {
562 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
563 "gles2_decoder_context_t::decode, OP_glCreateShader: GL checksumCalculator failure\n");
564 }
565 size_t totalTmpSize = sizeof(GLuint);
566 totalTmpSize += checksumSize;
567 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
568 #ifdef CHECK_GL_ERRORS
569 GLint err = this->glGetError();
570 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCreateShader\n", err);
571 #endif
572 DECODER_DEBUG_LOG("gles2(%p): glCreateShader(type:0x%08x )", stream, var_type);
573 *(GLuint *)(&tmpBuf[0]) = this->glCreateShader_dec(this, var_type);
574 if (useChecksum) {
575 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
576 }
577 stream->flush();
578 SET_LASTCALL("glCreateShader");
579 android::base::endTrace();
580 break;
581 }
582 case OP_glCullFace: {
583 android::base::beginTrace("glCullFace decode");
584 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
585 if (useChecksum) {
586 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
587 "gles2_decoder_context_t::decode, OP_glCullFace: GL checksumCalculator failure\n");
588 }
589 #ifdef CHECK_GL_ERRORS
590 GLint err = this->glGetError();
591 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCullFace\n", err);
592 #endif
593 DECODER_DEBUG_LOG("gles2(%p): glCullFace(mode:0x%08x )", stream, var_mode);
594 this->glCullFace(var_mode);
595 SET_LASTCALL("glCullFace");
596 android::base::endTrace();
597 break;
598 }
599 case OP_glDeleteBuffers: {
600 android::base::beginTrace("glDeleteBuffers decode");
601 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
602 uint32_t size_buffers __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
603 InputBuffer inptr_buffers(ptr + 8 + 4 + 4, size_buffers);
604 if (useChecksum) {
605 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_buffers, ptr + 8 + 4 + 4 + size_buffers, checksumSize,
606 "gles2_decoder_context_t::decode, OP_glDeleteBuffers: GL checksumCalculator failure\n");
607 }
608 #ifdef CHECK_GL_ERRORS
609 GLint err = this->glGetError();
610 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteBuffers\n", err);
611 #endif
612 DECODER_DEBUG_LOG("gles2(%p): glDeleteBuffers(n:%d buffers:%p(%u) )", stream, var_n, (const GLuint*)(inptr_buffers.get()), size_buffers);
613 this->glDeleteBuffers_dec(this, var_n, (const GLuint*)(inptr_buffers.get()));
614 SET_LASTCALL("glDeleteBuffers");
615 android::base::endTrace();
616 break;
617 }
618 case OP_glDeleteFramebuffers: {
619 android::base::beginTrace("glDeleteFramebuffers decode");
620 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
621 uint32_t size_framebuffers __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
622 InputBuffer inptr_framebuffers(ptr + 8 + 4 + 4, size_framebuffers);
623 if (useChecksum) {
624 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_framebuffers, ptr + 8 + 4 + 4 + size_framebuffers, checksumSize,
625 "gles2_decoder_context_t::decode, OP_glDeleteFramebuffers: GL checksumCalculator failure\n");
626 }
627 #ifdef CHECK_GL_ERRORS
628 GLint err = this->glGetError();
629 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteFramebuffers\n", err);
630 #endif
631 DECODER_DEBUG_LOG("gles2(%p): glDeleteFramebuffers(n:%d framebuffers:%p(%u) )", stream, var_n, (const GLuint*)(inptr_framebuffers.get()), size_framebuffers);
632 this->glDeleteFramebuffers_dec(this, var_n, (const GLuint*)(inptr_framebuffers.get()));
633 SET_LASTCALL("glDeleteFramebuffers");
634 android::base::endTrace();
635 break;
636 }
637 case OP_glDeleteProgram: {
638 android::base::beginTrace("glDeleteProgram decode");
639 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
640 if (useChecksum) {
641 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
642 "gles2_decoder_context_t::decode, OP_glDeleteProgram: GL checksumCalculator failure\n");
643 }
644 #ifdef CHECK_GL_ERRORS
645 GLint err = this->glGetError();
646 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteProgram\n", err);
647 #endif
648 DECODER_DEBUG_LOG("gles2(%p): glDeleteProgram(program:%u )", stream, var_program);
649 this->glDeleteProgram_dec(this, var_program);
650 SET_LASTCALL("glDeleteProgram");
651 android::base::endTrace();
652 break;
653 }
654 case OP_glDeleteRenderbuffers: {
655 android::base::beginTrace("glDeleteRenderbuffers decode");
656 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
657 uint32_t size_renderbuffers __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
658 InputBuffer inptr_renderbuffers(ptr + 8 + 4 + 4, size_renderbuffers);
659 if (useChecksum) {
660 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_renderbuffers, ptr + 8 + 4 + 4 + size_renderbuffers, checksumSize,
661 "gles2_decoder_context_t::decode, OP_glDeleteRenderbuffers: GL checksumCalculator failure\n");
662 }
663 #ifdef CHECK_GL_ERRORS
664 GLint err = this->glGetError();
665 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteRenderbuffers\n", err);
666 #endif
667 DECODER_DEBUG_LOG("gles2(%p): glDeleteRenderbuffers(n:%d renderbuffers:%p(%u) )", stream, var_n, (const GLuint*)(inptr_renderbuffers.get()), size_renderbuffers);
668 this->glDeleteRenderbuffers_dec(this, var_n, (const GLuint*)(inptr_renderbuffers.get()));
669 SET_LASTCALL("glDeleteRenderbuffers");
670 android::base::endTrace();
671 break;
672 }
673 case OP_glDeleteShader: {
674 android::base::beginTrace("glDeleteShader decode");
675 GLuint var_shader = Unpack<GLuint,uint32_t>(ptr + 8);
676 if (useChecksum) {
677 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
678 "gles2_decoder_context_t::decode, OP_glDeleteShader: GL checksumCalculator failure\n");
679 }
680 #ifdef CHECK_GL_ERRORS
681 GLint err = this->glGetError();
682 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteShader\n", err);
683 #endif
684 DECODER_DEBUG_LOG("gles2(%p): glDeleteShader(shader:%u )", stream, var_shader);
685 this->glDeleteShader_dec(this, var_shader);
686 SET_LASTCALL("glDeleteShader");
687 android::base::endTrace();
688 break;
689 }
690 case OP_glDeleteTextures: {
691 android::base::beginTrace("glDeleteTextures decode");
692 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
693 uint32_t size_textures __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
694 InputBuffer inptr_textures(ptr + 8 + 4 + 4, size_textures);
695 if (useChecksum) {
696 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_textures, ptr + 8 + 4 + 4 + size_textures, checksumSize,
697 "gles2_decoder_context_t::decode, OP_glDeleteTextures: GL checksumCalculator failure\n");
698 }
699 #ifdef CHECK_GL_ERRORS
700 GLint err = this->glGetError();
701 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteTextures\n", err);
702 #endif
703 DECODER_DEBUG_LOG("gles2(%p): glDeleteTextures(n:%d textures:%p(%u) )", stream, var_n, (const GLuint*)(inptr_textures.get()), size_textures);
704 this->glDeleteTextures_dec(this, var_n, (const GLuint*)(inptr_textures.get()));
705 SET_LASTCALL("glDeleteTextures");
706 android::base::endTrace();
707 break;
708 }
709 case OP_glDepthFunc: {
710 android::base::beginTrace("glDepthFunc decode");
711 GLenum var_func = Unpack<GLenum,uint32_t>(ptr + 8);
712 if (useChecksum) {
713 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
714 "gles2_decoder_context_t::decode, OP_glDepthFunc: GL checksumCalculator failure\n");
715 }
716 #ifdef CHECK_GL_ERRORS
717 GLint err = this->glGetError();
718 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDepthFunc\n", err);
719 #endif
720 DECODER_DEBUG_LOG("gles2(%p): glDepthFunc(func:0x%08x )", stream, var_func);
721 this->glDepthFunc(var_func);
722 SET_LASTCALL("glDepthFunc");
723 android::base::endTrace();
724 break;
725 }
726 case OP_glDepthMask: {
727 android::base::beginTrace("glDepthMask decode");
728 GLboolean var_flag = Unpack<GLboolean,uint8_t>(ptr + 8);
729 if (useChecksum) {
730 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 1, ptr + 8 + 1, checksumSize,
731 "gles2_decoder_context_t::decode, OP_glDepthMask: GL checksumCalculator failure\n");
732 }
733 #ifdef CHECK_GL_ERRORS
734 GLint err = this->glGetError();
735 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDepthMask\n", err);
736 #endif
737 DECODER_DEBUG_LOG("gles2(%p): glDepthMask(flag:%d )", stream, var_flag);
738 this->glDepthMask(var_flag);
739 SET_LASTCALL("glDepthMask");
740 android::base::endTrace();
741 break;
742 }
743 case OP_glDepthRangef: {
744 android::base::beginTrace("glDepthRangef decode");
745 GLclampf var_zNear = Unpack<GLclampf,uint32_t>(ptr + 8);
746 GLclampf var_zFar = Unpack<GLclampf,uint32_t>(ptr + 8 + 4);
747 if (useChecksum) {
748 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
749 "gles2_decoder_context_t::decode, OP_glDepthRangef: GL checksumCalculator failure\n");
750 }
751 #ifdef CHECK_GL_ERRORS
752 GLint err = this->glGetError();
753 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDepthRangef\n", err);
754 #endif
755 DECODER_DEBUG_LOG("gles2(%p): glDepthRangef(zNear:%f zFar:%f )", stream, var_zNear, var_zFar);
756 this->glDepthRangef(var_zNear, var_zFar);
757 SET_LASTCALL("glDepthRangef");
758 android::base::endTrace();
759 break;
760 }
761 case OP_glDetachShader: {
762 android::base::beginTrace("glDetachShader decode");
763 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
764 GLuint var_shader = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
765 if (useChecksum) {
766 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
767 "gles2_decoder_context_t::decode, OP_glDetachShader: GL checksumCalculator failure\n");
768 }
769 #ifdef CHECK_GL_ERRORS
770 GLint err = this->glGetError();
771 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDetachShader\n", err);
772 #endif
773 DECODER_DEBUG_LOG("gles2(%p): glDetachShader(program:%u shader:%u )", stream, var_program, var_shader);
774 this->glDetachShader_dec(this, var_program, var_shader);
775 SET_LASTCALL("glDetachShader");
776 android::base::endTrace();
777 break;
778 }
779 case OP_glDisable: {
780 android::base::beginTrace("glDisable decode");
781 GLenum var_cap = Unpack<GLenum,uint32_t>(ptr + 8);
782 if (useChecksum) {
783 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
784 "gles2_decoder_context_t::decode, OP_glDisable: GL checksumCalculator failure\n");
785 }
786 #ifdef CHECK_GL_ERRORS
787 GLint err = this->glGetError();
788 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDisable\n", err);
789 #endif
790 DECODER_DEBUG_LOG("gles2(%p): glDisable(cap:0x%08x )", stream, var_cap);
791 this->glDisable(var_cap);
792 SET_LASTCALL("glDisable");
793 android::base::endTrace();
794 break;
795 }
796 case OP_glDisableVertexAttribArray: {
797 android::base::beginTrace("glDisableVertexAttribArray decode");
798 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
799 if (useChecksum) {
800 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
801 "gles2_decoder_context_t::decode, OP_glDisableVertexAttribArray: GL checksumCalculator failure\n");
802 }
803 #ifdef CHECK_GL_ERRORS
804 GLint err = this->glGetError();
805 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDisableVertexAttribArray\n", err);
806 #endif
807 DECODER_DEBUG_LOG("gles2(%p): glDisableVertexAttribArray(index:%u )", stream, var_index);
808 this->glDisableVertexAttribArray(var_index);
809 SET_LASTCALL("glDisableVertexAttribArray");
810 android::base::endTrace();
811 break;
812 }
813 case OP_glDrawArrays: {
814 android::base::beginTrace("glDrawArrays decode");
815 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
816 GLint var_first = Unpack<GLint,uint32_t>(ptr + 8 + 4);
817 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
818 if (useChecksum) {
819 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
820 "gles2_decoder_context_t::decode, OP_glDrawArrays: GL checksumCalculator failure\n");
821 }
822 #ifdef CHECK_GL_ERRORS
823 GLint err = this->glGetError();
824 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawArrays\n", err);
825 #endif
826 DECODER_DEBUG_LOG("gles2(%p): glDrawArrays(mode:0x%08x first:%d count:%d )", stream, var_mode, var_first, var_count);
827 this->glDrawArrays(var_mode, var_first, var_count);
828 SET_LASTCALL("glDrawArrays");
829 android::base::endTrace();
830 break;
831 }
832 case OP_glDrawElements: {
833 android::base::beginTrace("glDrawElements decode");
834 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
835 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
836 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
837 uint32_t size_indices __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
838 InputBuffer inptr_indices(ptr + 8 + 4 + 4 + 4 + 4, size_indices);
839 if (useChecksum) {
840 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_indices, ptr + 8 + 4 + 4 + 4 + 4 + size_indices, checksumSize,
841 "gles2_decoder_context_t::decode, OP_glDrawElements: GL checksumCalculator failure\n");
842 }
843 #ifdef CHECK_GL_ERRORS
844 GLint err = this->glGetError();
845 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawElements\n", err);
846 #endif
847 DECODER_DEBUG_LOG("gles2(%p): glDrawElements(mode:0x%08x count:%d type:0x%08x indices:%p(%u) )", stream, var_mode, var_count, var_type, (const GLvoid*)(inptr_indices.get()), size_indices);
848 this->glDrawElements(var_mode, var_count, var_type, (const GLvoid*)(inptr_indices.get()));
849 SET_LASTCALL("glDrawElements");
850 android::base::endTrace();
851 break;
852 }
853 case OP_glEnable: {
854 android::base::beginTrace("glEnable decode");
855 GLenum var_cap = Unpack<GLenum,uint32_t>(ptr + 8);
856 if (useChecksum) {
857 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
858 "gles2_decoder_context_t::decode, OP_glEnable: GL checksumCalculator failure\n");
859 }
860 #ifdef CHECK_GL_ERRORS
861 GLint err = this->glGetError();
862 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glEnable\n", err);
863 #endif
864 DECODER_DEBUG_LOG("gles2(%p): glEnable(cap:0x%08x )", stream, var_cap);
865 this->glEnable(var_cap);
866 SET_LASTCALL("glEnable");
867 android::base::endTrace();
868 break;
869 }
870 case OP_glEnableVertexAttribArray: {
871 android::base::beginTrace("glEnableVertexAttribArray decode");
872 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
873 if (useChecksum) {
874 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
875 "gles2_decoder_context_t::decode, OP_glEnableVertexAttribArray: GL checksumCalculator failure\n");
876 }
877 #ifdef CHECK_GL_ERRORS
878 GLint err = this->glGetError();
879 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glEnableVertexAttribArray\n", err);
880 #endif
881 DECODER_DEBUG_LOG("gles2(%p): glEnableVertexAttribArray(index:%u )", stream, var_index);
882 this->glEnableVertexAttribArray(var_index);
883 SET_LASTCALL("glEnableVertexAttribArray");
884 android::base::endTrace();
885 break;
886 }
887 case OP_glFinish: {
888 android::base::beginTrace("glFinish decode");
889 if (useChecksum) {
890 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize,
891 "gles2_decoder_context_t::decode, OP_glFinish: GL checksumCalculator failure\n");
892 }
893 #ifdef CHECK_GL_ERRORS
894 GLint err = this->glGetError();
895 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFinish\n", err);
896 #endif
897 DECODER_DEBUG_LOG("gles2(%p): glFinish()", stream);
898 this->glFinish();
899 SET_LASTCALL("glFinish");
900 android::base::endTrace();
901 break;
902 }
903 case OP_glFlush: {
904 android::base::beginTrace("glFlush decode");
905 if (useChecksum) {
906 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize,
907 "gles2_decoder_context_t::decode, OP_glFlush: GL checksumCalculator failure\n");
908 }
909 #ifdef CHECK_GL_ERRORS
910 GLint err = this->glGetError();
911 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFlush\n", err);
912 #endif
913 DECODER_DEBUG_LOG("gles2(%p): glFlush()", stream);
914 this->glFlush();
915 SET_LASTCALL("glFlush");
916 android::base::endTrace();
917 break;
918 }
919 case OP_glFramebufferRenderbuffer: {
920 android::base::beginTrace("glFramebufferRenderbuffer decode");
921 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
922 GLenum var_attachment = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
923 GLenum var_renderbuffertarget = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
924 GLuint var_renderbuffer = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4);
925 if (useChecksum) {
926 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
927 "gles2_decoder_context_t::decode, OP_glFramebufferRenderbuffer: GL checksumCalculator failure\n");
928 }
929 #ifdef CHECK_GL_ERRORS
930 GLint err = this->glGetError();
931 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFramebufferRenderbuffer\n", err);
932 #endif
933 DECODER_DEBUG_LOG("gles2(%p): glFramebufferRenderbuffer(target:0x%08x attachment:0x%08x renderbuffertarget:0x%08x renderbuffer:%u )", stream, var_target, var_attachment, var_renderbuffertarget, var_renderbuffer);
934 this->glFramebufferRenderbuffer(var_target, var_attachment, var_renderbuffertarget, var_renderbuffer);
935 SET_LASTCALL("glFramebufferRenderbuffer");
936 android::base::endTrace();
937 break;
938 }
939 case OP_glFramebufferTexture2D: {
940 android::base::beginTrace("glFramebufferTexture2D decode");
941 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
942 GLenum var_attachment = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
943 GLenum var_textarget = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
944 GLuint var_texture = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4);
945 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
946 if (useChecksum) {
947 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
948 "gles2_decoder_context_t::decode, OP_glFramebufferTexture2D: GL checksumCalculator failure\n");
949 }
950 #ifdef CHECK_GL_ERRORS
951 GLint err = this->glGetError();
952 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFramebufferTexture2D\n", err);
953 #endif
954 DECODER_DEBUG_LOG("gles2(%p): glFramebufferTexture2D(target:0x%08x attachment:0x%08x textarget:0x%08x texture:%u level:%d )", stream, var_target, var_attachment, var_textarget, var_texture, var_level);
955 this->glFramebufferTexture2D(var_target, var_attachment, var_textarget, var_texture, var_level);
956 SET_LASTCALL("glFramebufferTexture2D");
957 android::base::endTrace();
958 break;
959 }
960 case OP_glFrontFace: {
961 android::base::beginTrace("glFrontFace decode");
962 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
963 if (useChecksum) {
964 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
965 "gles2_decoder_context_t::decode, OP_glFrontFace: GL checksumCalculator failure\n");
966 }
967 #ifdef CHECK_GL_ERRORS
968 GLint err = this->glGetError();
969 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFrontFace\n", err);
970 #endif
971 DECODER_DEBUG_LOG("gles2(%p): glFrontFace(mode:0x%08x )", stream, var_mode);
972 this->glFrontFace(var_mode);
973 SET_LASTCALL("glFrontFace");
974 android::base::endTrace();
975 break;
976 }
977 case OP_glGenBuffers: {
978 android::base::beginTrace("glGenBuffers decode");
979 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
980 uint32_t size_buffers __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
981 if (useChecksum) {
982 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
983 "gles2_decoder_context_t::decode, OP_glGenBuffers: GL checksumCalculator failure\n");
984 }
985 size_t totalTmpSize = size_buffers;
986 totalTmpSize += checksumSize;
987 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
988 OutputBuffer outptr_buffers(&tmpBuf[0], size_buffers);
989 #ifdef CHECK_GL_ERRORS
990 GLint err = this->glGetError();
991 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGenBuffers\n", err);
992 #endif
993 DECODER_DEBUG_LOG("gles2(%p): glGenBuffers(n:%d buffers:%p(%u) )", stream, var_n, (GLuint*)(outptr_buffers.get()), size_buffers);
994 this->glGenBuffers_dec(this, var_n, (GLuint*)(outptr_buffers.get()));
995 outptr_buffers.flush();
996 if (useChecksum) {
997 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
998 }
999 stream->flush();
1000 SET_LASTCALL("glGenBuffers");
1001 android::base::endTrace();
1002 break;
1003 }
1004 case OP_glGenerateMipmap: {
1005 android::base::beginTrace("glGenerateMipmap decode");
1006 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
1007 if (useChecksum) {
1008 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
1009 "gles2_decoder_context_t::decode, OP_glGenerateMipmap: GL checksumCalculator failure\n");
1010 }
1011 #ifdef CHECK_GL_ERRORS
1012 GLint err = this->glGetError();
1013 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGenerateMipmap\n", err);
1014 #endif
1015 DECODER_DEBUG_LOG("gles2(%p): glGenerateMipmap(target:0x%08x )", stream, var_target);
1016 this->glGenerateMipmap(var_target);
1017 SET_LASTCALL("glGenerateMipmap");
1018 android::base::endTrace();
1019 break;
1020 }
1021 case OP_glGenFramebuffers: {
1022 android::base::beginTrace("glGenFramebuffers decode");
1023 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
1024 uint32_t size_framebuffers __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
1025 if (useChecksum) {
1026 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
1027 "gles2_decoder_context_t::decode, OP_glGenFramebuffers: GL checksumCalculator failure\n");
1028 }
1029 size_t totalTmpSize = size_framebuffers;
1030 totalTmpSize += checksumSize;
1031 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1032 OutputBuffer outptr_framebuffers(&tmpBuf[0], size_framebuffers);
1033 #ifdef CHECK_GL_ERRORS
1034 GLint err = this->glGetError();
1035 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGenFramebuffers\n", err);
1036 #endif
1037 DECODER_DEBUG_LOG("gles2(%p): glGenFramebuffers(n:%d framebuffers:%p(%u) )", stream, var_n, (GLuint*)(outptr_framebuffers.get()), size_framebuffers);
1038 this->glGenFramebuffers_dec(this, var_n, (GLuint*)(outptr_framebuffers.get()));
1039 outptr_framebuffers.flush();
1040 if (useChecksum) {
1041 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1042 }
1043 stream->flush();
1044 SET_LASTCALL("glGenFramebuffers");
1045 android::base::endTrace();
1046 break;
1047 }
1048 case OP_glGenRenderbuffers: {
1049 android::base::beginTrace("glGenRenderbuffers decode");
1050 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
1051 uint32_t size_renderbuffers __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
1052 if (useChecksum) {
1053 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
1054 "gles2_decoder_context_t::decode, OP_glGenRenderbuffers: GL checksumCalculator failure\n");
1055 }
1056 size_t totalTmpSize = size_renderbuffers;
1057 totalTmpSize += checksumSize;
1058 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1059 OutputBuffer outptr_renderbuffers(&tmpBuf[0], size_renderbuffers);
1060 #ifdef CHECK_GL_ERRORS
1061 GLint err = this->glGetError();
1062 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGenRenderbuffers\n", err);
1063 #endif
1064 DECODER_DEBUG_LOG("gles2(%p): glGenRenderbuffers(n:%d renderbuffers:%p(%u) )", stream, var_n, (GLuint*)(outptr_renderbuffers.get()), size_renderbuffers);
1065 this->glGenRenderbuffers_dec(this, var_n, (GLuint*)(outptr_renderbuffers.get()));
1066 outptr_renderbuffers.flush();
1067 if (useChecksum) {
1068 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1069 }
1070 stream->flush();
1071 SET_LASTCALL("glGenRenderbuffers");
1072 android::base::endTrace();
1073 break;
1074 }
1075 case OP_glGenTextures: {
1076 android::base::beginTrace("glGenTextures decode");
1077 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
1078 uint32_t size_textures __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
1079 if (useChecksum) {
1080 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
1081 "gles2_decoder_context_t::decode, OP_glGenTextures: GL checksumCalculator failure\n");
1082 }
1083 size_t totalTmpSize = size_textures;
1084 totalTmpSize += checksumSize;
1085 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1086 OutputBuffer outptr_textures(&tmpBuf[0], size_textures);
1087 #ifdef CHECK_GL_ERRORS
1088 GLint err = this->glGetError();
1089 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGenTextures\n", err);
1090 #endif
1091 DECODER_DEBUG_LOG("gles2(%p): glGenTextures(n:%d textures:%p(%u) )", stream, var_n, (GLuint*)(outptr_textures.get()), size_textures);
1092 this->glGenTextures_dec(this, var_n, (GLuint*)(outptr_textures.get()));
1093 outptr_textures.flush();
1094 if (useChecksum) {
1095 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1096 }
1097 stream->flush();
1098 SET_LASTCALL("glGenTextures");
1099 android::base::endTrace();
1100 break;
1101 }
1102 case OP_glGetActiveAttrib: {
1103 android::base::beginTrace("glGetActiveAttrib decode");
1104 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
1105 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
1106 GLsizei var_bufsize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
1107 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
1108 uint32_t size_size __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
1109 uint32_t size_type __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
1110 uint32_t size_name __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
1111 if (useChecksum) {
1112 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
1113 "gles2_decoder_context_t::decode, OP_glGetActiveAttrib: GL checksumCalculator failure\n");
1114 }
1115 size_t totalTmpSize = size_length;
1116 totalTmpSize += size_size;
1117 totalTmpSize += size_type;
1118 totalTmpSize += size_name;
1119 totalTmpSize += checksumSize;
1120 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1121 OutputBuffer outptr_length(&tmpBuf[0], size_length);
1122 OutputBuffer outptr_size(&tmpBuf[0 + size_length], size_size);
1123 OutputBuffer outptr_type(&tmpBuf[0 + size_length + size_size], size_type);
1124 OutputBuffer outptr_name(&tmpBuf[0 + size_length + size_size + size_type], size_name);
1125 #ifdef CHECK_GL_ERRORS
1126 GLint err = this->glGetError();
1127 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetActiveAttrib\n", err);
1128 #endif
1129 DECODER_DEBUG_LOG("gles2(%p): glGetActiveAttrib(program:%u index:%u bufsize:%d length:%p(%u) size:%p(%u) type:%p(%u) name:%p(%u) )", stream, var_program, var_index, var_bufsize, (GLsizei*)(outptr_length.get()), size_length, (GLint*)(outptr_size.get()), size_size, (GLenum*)(outptr_type.get()), size_type, (GLchar*)(outptr_name.get()), size_name);
1130 this->glGetActiveAttrib_dec(this, var_program, var_index, var_bufsize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), size_size == 0 ? nullptr : (GLint*)(outptr_size.get()), size_type == 0 ? nullptr : (GLenum*)(outptr_type.get()), size_name == 0 ? nullptr : (GLchar*)(outptr_name.get()));
1131 outptr_length.flush();
1132 outptr_size.flush();
1133 outptr_type.flush();
1134 outptr_name.flush();
1135 if (useChecksum) {
1136 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1137 }
1138 stream->flush();
1139 SET_LASTCALL("glGetActiveAttrib");
1140 android::base::endTrace();
1141 break;
1142 }
1143 case OP_glGetActiveUniform: {
1144 android::base::beginTrace("glGetActiveUniform decode");
1145 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
1146 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
1147 GLsizei var_bufsize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
1148 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
1149 uint32_t size_size __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
1150 uint32_t size_type __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
1151 uint32_t size_name __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
1152 if (useChecksum) {
1153 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
1154 "gles2_decoder_context_t::decode, OP_glGetActiveUniform: GL checksumCalculator failure\n");
1155 }
1156 size_t totalTmpSize = size_length;
1157 totalTmpSize += size_size;
1158 totalTmpSize += size_type;
1159 totalTmpSize += size_name;
1160 totalTmpSize += checksumSize;
1161 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1162 OutputBuffer outptr_length(&tmpBuf[0], size_length);
1163 OutputBuffer outptr_size(&tmpBuf[0 + size_length], size_size);
1164 OutputBuffer outptr_type(&tmpBuf[0 + size_length + size_size], size_type);
1165 OutputBuffer outptr_name(&tmpBuf[0 + size_length + size_size + size_type], size_name);
1166 #ifdef CHECK_GL_ERRORS
1167 GLint err = this->glGetError();
1168 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetActiveUniform\n", err);
1169 #endif
1170 DECODER_DEBUG_LOG("gles2(%p): glGetActiveUniform(program:%u index:%u bufsize:%d length:%p(%u) size:%p(%u) type:%p(%u) name:%p(%u) )", stream, var_program, var_index, var_bufsize, (GLsizei*)(outptr_length.get()), size_length, (GLint*)(outptr_size.get()), size_size, (GLenum*)(outptr_type.get()), size_type, (GLchar*)(outptr_name.get()), size_name);
1171 this->glGetActiveUniform_dec(this, var_program, var_index, var_bufsize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), size_size == 0 ? nullptr : (GLint*)(outptr_size.get()), size_type == 0 ? nullptr : (GLenum*)(outptr_type.get()), size_name == 0 ? nullptr : (GLchar*)(outptr_name.get()));
1172 outptr_length.flush();
1173 outptr_size.flush();
1174 outptr_type.flush();
1175 outptr_name.flush();
1176 if (useChecksum) {
1177 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1178 }
1179 stream->flush();
1180 SET_LASTCALL("glGetActiveUniform");
1181 android::base::endTrace();
1182 break;
1183 }
1184 case OP_glGetAttachedShaders: {
1185 android::base::beginTrace("glGetAttachedShaders decode");
1186 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
1187 GLsizei var_maxcount = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
1188 uint32_t size_count __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1189 uint32_t size_shaders __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
1190 if (useChecksum) {
1191 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
1192 "gles2_decoder_context_t::decode, OP_glGetAttachedShaders: GL checksumCalculator failure\n");
1193 }
1194 size_t totalTmpSize = size_count;
1195 totalTmpSize += size_shaders;
1196 totalTmpSize += checksumSize;
1197 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1198 OutputBuffer outptr_count(&tmpBuf[0], size_count);
1199 OutputBuffer outptr_shaders(&tmpBuf[0 + size_count], size_shaders);
1200 #ifdef CHECK_GL_ERRORS
1201 GLint err = this->glGetError();
1202 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetAttachedShaders\n", err);
1203 #endif
1204 DECODER_DEBUG_LOG("gles2(%p): glGetAttachedShaders(program:%u maxcount:%d count:%p(%u) shaders:%p(%u) )", stream, var_program, var_maxcount, (GLsizei*)(outptr_count.get()), size_count, (GLuint*)(outptr_shaders.get()), size_shaders);
1205 this->glGetAttachedShaders_dec(this, var_program, var_maxcount, size_count == 0 ? nullptr : (GLsizei*)(outptr_count.get()), (GLuint*)(outptr_shaders.get()));
1206 outptr_count.flush();
1207 outptr_shaders.flush();
1208 if (useChecksum) {
1209 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1210 }
1211 stream->flush();
1212 SET_LASTCALL("glGetAttachedShaders");
1213 android::base::endTrace();
1214 break;
1215 }
1216 case OP_glGetAttribLocation: {
1217 android::base::beginTrace("glGetAttribLocation decode");
1218 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
1219 uint32_t size_name __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
1220 InputBuffer inptr_name(ptr + 8 + 4 + 4, size_name);
1221 if (useChecksum) {
1222 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_name, ptr + 8 + 4 + 4 + size_name, checksumSize,
1223 "gles2_decoder_context_t::decode, OP_glGetAttribLocation: GL checksumCalculator failure\n");
1224 }
1225 size_t totalTmpSize = sizeof(int);
1226 totalTmpSize += checksumSize;
1227 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1228 #ifdef CHECK_GL_ERRORS
1229 GLint err = this->glGetError();
1230 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetAttribLocation\n", err);
1231 #endif
1232 DECODER_DEBUG_LOG("gles2(%p): glGetAttribLocation(program:%u name:%p(%u) )", stream, var_program, (const GLchar*)(inptr_name.get()), size_name);
1233 *(int *)(&tmpBuf[0]) = this->glGetAttribLocation_dec(this, var_program, (const GLchar*)(inptr_name.get()));
1234 if (useChecksum) {
1235 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1236 }
1237 stream->flush();
1238 SET_LASTCALL("glGetAttribLocation");
1239 android::base::endTrace();
1240 break;
1241 }
1242 case OP_glGetBooleanv: {
1243 android::base::beginTrace("glGetBooleanv decode");
1244 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8);
1245 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
1246 if (useChecksum) {
1247 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
1248 "gles2_decoder_context_t::decode, OP_glGetBooleanv: GL checksumCalculator failure\n");
1249 }
1250 size_t totalTmpSize = size_params;
1251 totalTmpSize += checksumSize;
1252 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1253 OutputBuffer outptr_params(&tmpBuf[0], size_params);
1254 #ifdef CHECK_GL_ERRORS
1255 GLint err = this->glGetError();
1256 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetBooleanv\n", err);
1257 #endif
1258 DECODER_DEBUG_LOG("gles2(%p): glGetBooleanv(pname:0x%08x params:%p(%u) )", stream, var_pname, (GLboolean*)(outptr_params.get()), size_params);
1259 this->glGetBooleanv(var_pname, (GLboolean*)(outptr_params.get()));
1260 outptr_params.flush();
1261 if (useChecksum) {
1262 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1263 }
1264 stream->flush();
1265 SET_LASTCALL("glGetBooleanv");
1266 android::base::endTrace();
1267 break;
1268 }
1269 case OP_glGetBufferParameteriv: {
1270 android::base::beginTrace("glGetBufferParameteriv decode");
1271 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
1272 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
1273 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1274 if (useChecksum) {
1275 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
1276 "gles2_decoder_context_t::decode, OP_glGetBufferParameteriv: GL checksumCalculator failure\n");
1277 }
1278 size_t totalTmpSize = size_params;
1279 totalTmpSize += checksumSize;
1280 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1281 OutputBuffer outptr_params(&tmpBuf[0], size_params);
1282 #ifdef CHECK_GL_ERRORS
1283 GLint err = this->glGetError();
1284 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetBufferParameteriv\n", err);
1285 #endif
1286 DECODER_DEBUG_LOG("gles2(%p): glGetBufferParameteriv(target:0x%08x pname:0x%08x params:%p(%u) )", stream, var_target, var_pname, (GLint*)(outptr_params.get()), size_params);
1287 this->glGetBufferParameteriv(var_target, var_pname, (GLint*)(outptr_params.get()));
1288 outptr_params.flush();
1289 if (useChecksum) {
1290 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1291 }
1292 stream->flush();
1293 SET_LASTCALL("glGetBufferParameteriv");
1294 android::base::endTrace();
1295 break;
1296 }
1297 case OP_glGetError: {
1298 android::base::beginTrace("glGetError decode");
1299 if (useChecksum) {
1300 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize,
1301 "gles2_decoder_context_t::decode, OP_glGetError: GL checksumCalculator failure\n");
1302 }
1303 size_t totalTmpSize = sizeof(GLenum);
1304 totalTmpSize += checksumSize;
1305 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1306 #ifdef CHECK_GL_ERRORS
1307 GLint err = this->glGetError();
1308 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetError\n", err);
1309 #endif
1310 DECODER_DEBUG_LOG("gles2(%p): glGetError()", stream);
1311 *(GLenum *)(&tmpBuf[0]) = this->glGetError();
1312 if (useChecksum) {
1313 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1314 }
1315 stream->flush();
1316 SET_LASTCALL("glGetError");
1317 android::base::endTrace();
1318 break;
1319 }
1320 case OP_glGetFloatv: {
1321 android::base::beginTrace("glGetFloatv decode");
1322 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8);
1323 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
1324 if (useChecksum) {
1325 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
1326 "gles2_decoder_context_t::decode, OP_glGetFloatv: GL checksumCalculator failure\n");
1327 }
1328 size_t totalTmpSize = size_params;
1329 totalTmpSize += checksumSize;
1330 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1331 OutputBuffer outptr_params(&tmpBuf[0], size_params);
1332 #ifdef CHECK_GL_ERRORS
1333 GLint err = this->glGetError();
1334 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetFloatv\n", err);
1335 #endif
1336 DECODER_DEBUG_LOG("gles2(%p): glGetFloatv(pname:0x%08x params:%p(%u) )", stream, var_pname, (GLfloat*)(outptr_params.get()), size_params);
1337 this->glGetFloatv(var_pname, (GLfloat*)(outptr_params.get()));
1338 outptr_params.flush();
1339 if (useChecksum) {
1340 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1341 }
1342 stream->flush();
1343 SET_LASTCALL("glGetFloatv");
1344 android::base::endTrace();
1345 break;
1346 }
1347 case OP_glGetFramebufferAttachmentParameteriv: {
1348 android::base::beginTrace("glGetFramebufferAttachmentParameteriv decode");
1349 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
1350 GLenum var_attachment = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
1351 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
1352 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
1353 if (useChecksum) {
1354 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
1355 "gles2_decoder_context_t::decode, OP_glGetFramebufferAttachmentParameteriv: GL checksumCalculator failure\n");
1356 }
1357 size_t totalTmpSize = size_params;
1358 totalTmpSize += checksumSize;
1359 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1360 OutputBuffer outptr_params(&tmpBuf[0], size_params);
1361 #ifdef CHECK_GL_ERRORS
1362 GLint err = this->glGetError();
1363 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetFramebufferAttachmentParameteriv\n", err);
1364 #endif
1365 DECODER_DEBUG_LOG("gles2(%p): glGetFramebufferAttachmentParameteriv(target:0x%08x attachment:0x%08x pname:0x%08x params:%p(%u) )", stream, var_target, var_attachment, var_pname, (GLint*)(outptr_params.get()), size_params);
1366 this->glGetFramebufferAttachmentParameteriv(var_target, var_attachment, var_pname, (GLint*)(outptr_params.get()));
1367 outptr_params.flush();
1368 if (useChecksum) {
1369 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1370 }
1371 stream->flush();
1372 SET_LASTCALL("glGetFramebufferAttachmentParameteriv");
1373 android::base::endTrace();
1374 break;
1375 }
1376 case OP_glGetIntegerv: {
1377 android::base::beginTrace("glGetIntegerv decode");
1378 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8);
1379 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
1380 if (useChecksum) {
1381 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
1382 "gles2_decoder_context_t::decode, OP_glGetIntegerv: GL checksumCalculator failure\n");
1383 }
1384 size_t totalTmpSize = size_params;
1385 totalTmpSize += checksumSize;
1386 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1387 OutputBuffer outptr_params(&tmpBuf[0], size_params);
1388 #ifdef CHECK_GL_ERRORS
1389 GLint err = this->glGetError();
1390 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetIntegerv\n", err);
1391 #endif
1392 DECODER_DEBUG_LOG("gles2(%p): glGetIntegerv(pname:0x%08x params:%p(%u) )", stream, var_pname, (GLint*)(outptr_params.get()), size_params);
1393 this->glGetIntegerv(var_pname, (GLint*)(outptr_params.get()));
1394 outptr_params.flush();
1395 if (useChecksum) {
1396 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1397 }
1398 stream->flush();
1399 SET_LASTCALL("glGetIntegerv");
1400 android::base::endTrace();
1401 break;
1402 }
1403 case OP_glGetProgramiv: {
1404 android::base::beginTrace("glGetProgramiv decode");
1405 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
1406 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
1407 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1408 if (useChecksum) {
1409 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
1410 "gles2_decoder_context_t::decode, OP_glGetProgramiv: GL checksumCalculator failure\n");
1411 }
1412 size_t totalTmpSize = size_params;
1413 totalTmpSize += checksumSize;
1414 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1415 OutputBuffer outptr_params(&tmpBuf[0], size_params);
1416 #ifdef CHECK_GL_ERRORS
1417 GLint err = this->glGetError();
1418 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetProgramiv\n", err);
1419 #endif
1420 DECODER_DEBUG_LOG("gles2(%p): glGetProgramiv(program:%u pname:0x%08x params:%p(%u) )", stream, var_program, var_pname, (GLint*)(outptr_params.get()), size_params);
1421 this->glGetProgramiv_dec(this, var_program, var_pname, (GLint*)(outptr_params.get()));
1422 outptr_params.flush();
1423 if (useChecksum) {
1424 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1425 }
1426 stream->flush();
1427 SET_LASTCALL("glGetProgramiv");
1428 android::base::endTrace();
1429 break;
1430 }
1431 case OP_glGetProgramInfoLog: {
1432 android::base::beginTrace("glGetProgramInfoLog decode");
1433 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
1434 GLsizei var_bufsize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
1435 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1436 uint32_t size_infolog __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
1437 if (useChecksum) {
1438 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
1439 "gles2_decoder_context_t::decode, OP_glGetProgramInfoLog: GL checksumCalculator failure\n");
1440 }
1441 size_t totalTmpSize = size_length;
1442 totalTmpSize += size_infolog;
1443 totalTmpSize += checksumSize;
1444 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1445 OutputBuffer outptr_length(&tmpBuf[0], size_length);
1446 OutputBuffer outptr_infolog(&tmpBuf[0 + size_length], size_infolog);
1447 #ifdef CHECK_GL_ERRORS
1448 GLint err = this->glGetError();
1449 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetProgramInfoLog\n", err);
1450 #endif
1451 DECODER_DEBUG_LOG("gles2(%p): glGetProgramInfoLog(program:%u bufsize:%d length:%p(%u) infolog:%p(%u) )", stream, var_program, var_bufsize, (GLsizei*)(outptr_length.get()), size_length, (GLchar*)(outptr_infolog.get()), size_infolog);
1452 this->glGetProgramInfoLog_dec(this, var_program, var_bufsize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLchar*)(outptr_infolog.get()));
1453 outptr_length.flush();
1454 outptr_infolog.flush();
1455 if (useChecksum) {
1456 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1457 }
1458 stream->flush();
1459 SET_LASTCALL("glGetProgramInfoLog");
1460 android::base::endTrace();
1461 break;
1462 }
1463 case OP_glGetRenderbufferParameteriv: {
1464 android::base::beginTrace("glGetRenderbufferParameteriv decode");
1465 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
1466 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
1467 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1468 if (useChecksum) {
1469 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
1470 "gles2_decoder_context_t::decode, OP_glGetRenderbufferParameteriv: GL checksumCalculator failure\n");
1471 }
1472 size_t totalTmpSize = size_params;
1473 totalTmpSize += checksumSize;
1474 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1475 OutputBuffer outptr_params(&tmpBuf[0], size_params);
1476 #ifdef CHECK_GL_ERRORS
1477 GLint err = this->glGetError();
1478 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetRenderbufferParameteriv\n", err);
1479 #endif
1480 DECODER_DEBUG_LOG("gles2(%p): glGetRenderbufferParameteriv(target:0x%08x pname:0x%08x params:%p(%u) )", stream, var_target, var_pname, (GLint*)(outptr_params.get()), size_params);
1481 this->glGetRenderbufferParameteriv(var_target, var_pname, (GLint*)(outptr_params.get()));
1482 outptr_params.flush();
1483 if (useChecksum) {
1484 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1485 }
1486 stream->flush();
1487 SET_LASTCALL("glGetRenderbufferParameteriv");
1488 android::base::endTrace();
1489 break;
1490 }
1491 case OP_glGetShaderiv: {
1492 android::base::beginTrace("glGetShaderiv decode");
1493 GLuint var_shader = Unpack<GLuint,uint32_t>(ptr + 8);
1494 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
1495 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1496 if (useChecksum) {
1497 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
1498 "gles2_decoder_context_t::decode, OP_glGetShaderiv: GL checksumCalculator failure\n");
1499 }
1500 size_t totalTmpSize = size_params;
1501 totalTmpSize += checksumSize;
1502 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1503 OutputBuffer outptr_params(&tmpBuf[0], size_params);
1504 #ifdef CHECK_GL_ERRORS
1505 GLint err = this->glGetError();
1506 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetShaderiv\n", err);
1507 #endif
1508 DECODER_DEBUG_LOG("gles2(%p): glGetShaderiv(shader:%u pname:0x%08x params:%p(%u) )", stream, var_shader, var_pname, (GLint*)(outptr_params.get()), size_params);
1509 this->glGetShaderiv_dec(this, var_shader, var_pname, (GLint*)(outptr_params.get()));
1510 outptr_params.flush();
1511 if (useChecksum) {
1512 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1513 }
1514 stream->flush();
1515 SET_LASTCALL("glGetShaderiv");
1516 android::base::endTrace();
1517 break;
1518 }
1519 case OP_glGetShaderInfoLog: {
1520 android::base::beginTrace("glGetShaderInfoLog decode");
1521 GLuint var_shader = Unpack<GLuint,uint32_t>(ptr + 8);
1522 GLsizei var_bufsize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
1523 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1524 uint32_t size_infolog __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
1525 if (useChecksum) {
1526 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
1527 "gles2_decoder_context_t::decode, OP_glGetShaderInfoLog: GL checksumCalculator failure\n");
1528 }
1529 size_t totalTmpSize = size_length;
1530 totalTmpSize += size_infolog;
1531 totalTmpSize += checksumSize;
1532 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1533 OutputBuffer outptr_length(&tmpBuf[0], size_length);
1534 OutputBuffer outptr_infolog(&tmpBuf[0 + size_length], size_infolog);
1535 #ifdef CHECK_GL_ERRORS
1536 GLint err = this->glGetError();
1537 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetShaderInfoLog\n", err);
1538 #endif
1539 DECODER_DEBUG_LOG("gles2(%p): glGetShaderInfoLog(shader:%u bufsize:%d length:%p(%u) infolog:%p(%u) )", stream, var_shader, var_bufsize, (GLsizei*)(outptr_length.get()), size_length, (GLchar*)(outptr_infolog.get()), size_infolog);
1540 this->glGetShaderInfoLog_dec(this, var_shader, var_bufsize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLchar*)(outptr_infolog.get()));
1541 outptr_length.flush();
1542 outptr_infolog.flush();
1543 if (useChecksum) {
1544 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1545 }
1546 stream->flush();
1547 SET_LASTCALL("glGetShaderInfoLog");
1548 android::base::endTrace();
1549 break;
1550 }
1551 case OP_glGetShaderPrecisionFormat: {
1552 android::base::beginTrace("glGetShaderPrecisionFormat decode");
1553 GLenum var_shadertype = Unpack<GLenum,uint32_t>(ptr + 8);
1554 GLenum var_precisiontype = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
1555 uint32_t size_range __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1556 uint32_t size_precision __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
1557 if (useChecksum) {
1558 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
1559 "gles2_decoder_context_t::decode, OP_glGetShaderPrecisionFormat: GL checksumCalculator failure\n");
1560 }
1561 size_t totalTmpSize = size_range;
1562 totalTmpSize += size_precision;
1563 totalTmpSize += checksumSize;
1564 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1565 OutputBuffer outptr_range(&tmpBuf[0], size_range);
1566 OutputBuffer outptr_precision(&tmpBuf[0 + size_range], size_precision);
1567 #ifdef CHECK_GL_ERRORS
1568 GLint err = this->glGetError();
1569 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetShaderPrecisionFormat\n", err);
1570 #endif
1571 DECODER_DEBUG_LOG("gles2(%p): glGetShaderPrecisionFormat(shadertype:0x%08x precisiontype:0x%08x range:%p(%u) precision:%p(%u) )", stream, var_shadertype, var_precisiontype, (GLint*)(outptr_range.get()), size_range, (GLint*)(outptr_precision.get()), size_precision);
1572 this->glGetShaderPrecisionFormat(var_shadertype, var_precisiontype, (GLint*)(outptr_range.get()), (GLint*)(outptr_precision.get()));
1573 outptr_range.flush();
1574 outptr_precision.flush();
1575 if (useChecksum) {
1576 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1577 }
1578 stream->flush();
1579 SET_LASTCALL("glGetShaderPrecisionFormat");
1580 android::base::endTrace();
1581 break;
1582 }
1583 case OP_glGetShaderSource: {
1584 android::base::beginTrace("glGetShaderSource decode");
1585 GLuint var_shader = Unpack<GLuint,uint32_t>(ptr + 8);
1586 GLsizei var_bufsize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
1587 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1588 uint32_t size_source __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
1589 if (useChecksum) {
1590 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
1591 "gles2_decoder_context_t::decode, OP_glGetShaderSource: GL checksumCalculator failure\n");
1592 }
1593 size_t totalTmpSize = size_length;
1594 totalTmpSize += size_source;
1595 totalTmpSize += checksumSize;
1596 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1597 OutputBuffer outptr_length(&tmpBuf[0], size_length);
1598 OutputBuffer outptr_source(&tmpBuf[0 + size_length], size_source);
1599 #ifdef CHECK_GL_ERRORS
1600 GLint err = this->glGetError();
1601 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetShaderSource\n", err);
1602 #endif
1603 DECODER_DEBUG_LOG("gles2(%p): glGetShaderSource(shader:%u bufsize:%d length:%p(%u) source:%p(%u) )", stream, var_shader, var_bufsize, (GLsizei*)(outptr_length.get()), size_length, (GLchar*)(outptr_source.get()), size_source);
1604 this->glGetShaderSource_dec(this, var_shader, var_bufsize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLchar*)(outptr_source.get()));
1605 outptr_length.flush();
1606 outptr_source.flush();
1607 if (useChecksum) {
1608 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1609 }
1610 stream->flush();
1611 SET_LASTCALL("glGetShaderSource");
1612 android::base::endTrace();
1613 break;
1614 }
1615 case OP_glGetString: {
1616 android::base::beginTrace("glGetString decode");
1617 GLenum var_name = Unpack<GLenum,uint32_t>(ptr + 8);
1618 if (useChecksum) {
1619 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
1620 "gles2_decoder_context_t::decode, OP_glGetString: GL checksumCalculator failure\n");
1621 }
1622 #ifdef CHECK_GL_ERRORS
1623 GLint err = this->glGetError();
1624 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetString\n", err);
1625 #endif
1626 DECODER_DEBUG_LOG("gles2(%p): glGetString(name:0x%08x )", stream, var_name);
1627 this->glGetString(var_name);
1628 SET_LASTCALL("glGetString");
1629 android::base::endTrace();
1630 break;
1631 }
1632 case OP_glGetTexParameterfv: {
1633 android::base::beginTrace("glGetTexParameterfv decode");
1634 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
1635 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
1636 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1637 if (useChecksum) {
1638 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
1639 "gles2_decoder_context_t::decode, OP_glGetTexParameterfv: GL checksumCalculator failure\n");
1640 }
1641 size_t totalTmpSize = size_params;
1642 totalTmpSize += checksumSize;
1643 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1644 OutputBuffer outptr_params(&tmpBuf[0], size_params);
1645 #ifdef CHECK_GL_ERRORS
1646 GLint err = this->glGetError();
1647 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetTexParameterfv\n", err);
1648 #endif
1649 DECODER_DEBUG_LOG("gles2(%p): glGetTexParameterfv(target:0x%08x pname:0x%08x params:%p(%u) )", stream, var_target, var_pname, (GLfloat*)(outptr_params.get()), size_params);
1650 this->glGetTexParameterfv(var_target, var_pname, (GLfloat*)(outptr_params.get()));
1651 outptr_params.flush();
1652 if (useChecksum) {
1653 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1654 }
1655 stream->flush();
1656 SET_LASTCALL("glGetTexParameterfv");
1657 android::base::endTrace();
1658 break;
1659 }
1660 case OP_glGetTexParameteriv: {
1661 android::base::beginTrace("glGetTexParameteriv decode");
1662 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
1663 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
1664 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1665 if (useChecksum) {
1666 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
1667 "gles2_decoder_context_t::decode, OP_glGetTexParameteriv: GL checksumCalculator failure\n");
1668 }
1669 size_t totalTmpSize = size_params;
1670 totalTmpSize += checksumSize;
1671 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1672 OutputBuffer outptr_params(&tmpBuf[0], size_params);
1673 #ifdef CHECK_GL_ERRORS
1674 GLint err = this->glGetError();
1675 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetTexParameteriv\n", err);
1676 #endif
1677 DECODER_DEBUG_LOG("gles2(%p): glGetTexParameteriv(target:0x%08x pname:0x%08x params:%p(%u) )", stream, var_target, var_pname, (GLint*)(outptr_params.get()), size_params);
1678 this->glGetTexParameteriv(var_target, var_pname, (GLint*)(outptr_params.get()));
1679 outptr_params.flush();
1680 if (useChecksum) {
1681 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1682 }
1683 stream->flush();
1684 SET_LASTCALL("glGetTexParameteriv");
1685 android::base::endTrace();
1686 break;
1687 }
1688 case OP_glGetUniformfv: {
1689 android::base::beginTrace("glGetUniformfv decode");
1690 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
1691 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
1692 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1693 if (useChecksum) {
1694 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
1695 "gles2_decoder_context_t::decode, OP_glGetUniformfv: GL checksumCalculator failure\n");
1696 }
1697 size_t totalTmpSize = size_params;
1698 totalTmpSize += checksumSize;
1699 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1700 OutputBuffer outptr_params(&tmpBuf[0], size_params);
1701 #ifdef CHECK_GL_ERRORS
1702 GLint err = this->glGetError();
1703 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetUniformfv\n", err);
1704 #endif
1705 DECODER_DEBUG_LOG("gles2(%p): glGetUniformfv(program:%u location:%d params:%p(%u) )", stream, var_program, var_location, (GLfloat*)(outptr_params.get()), size_params);
1706 this->glGetUniformfv_dec(this, var_program, var_location, (GLfloat*)(outptr_params.get()));
1707 outptr_params.flush();
1708 if (useChecksum) {
1709 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1710 }
1711 stream->flush();
1712 SET_LASTCALL("glGetUniformfv");
1713 android::base::endTrace();
1714 break;
1715 }
1716 case OP_glGetUniformiv: {
1717 android::base::beginTrace("glGetUniformiv decode");
1718 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
1719 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
1720 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1721 if (useChecksum) {
1722 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
1723 "gles2_decoder_context_t::decode, OP_glGetUniformiv: GL checksumCalculator failure\n");
1724 }
1725 size_t totalTmpSize = size_params;
1726 totalTmpSize += checksumSize;
1727 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1728 OutputBuffer outptr_params(&tmpBuf[0], size_params);
1729 #ifdef CHECK_GL_ERRORS
1730 GLint err = this->glGetError();
1731 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetUniformiv\n", err);
1732 #endif
1733 DECODER_DEBUG_LOG("gles2(%p): glGetUniformiv(program:%u location:%d params:%p(%u) )", stream, var_program, var_location, (GLint*)(outptr_params.get()), size_params);
1734 this->glGetUniformiv_dec(this, var_program, var_location, (GLint*)(outptr_params.get()));
1735 outptr_params.flush();
1736 if (useChecksum) {
1737 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1738 }
1739 stream->flush();
1740 SET_LASTCALL("glGetUniformiv");
1741 android::base::endTrace();
1742 break;
1743 }
1744 case OP_glGetUniformLocation: {
1745 android::base::beginTrace("glGetUniformLocation decode");
1746 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
1747 uint32_t size_name __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
1748 InputBuffer inptr_name(ptr + 8 + 4 + 4, size_name);
1749 if (useChecksum) {
1750 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_name, ptr + 8 + 4 + 4 + size_name, checksumSize,
1751 "gles2_decoder_context_t::decode, OP_glGetUniformLocation: GL checksumCalculator failure\n");
1752 }
1753 size_t totalTmpSize = sizeof(int);
1754 totalTmpSize += checksumSize;
1755 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1756 #ifdef CHECK_GL_ERRORS
1757 GLint err = this->glGetError();
1758 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetUniformLocation\n", err);
1759 #endif
1760 DECODER_DEBUG_LOG("gles2(%p): glGetUniformLocation(program:%u name:%p(%u) )", stream, var_program, (const GLchar*)(inptr_name.get()), size_name);
1761 *(int *)(&tmpBuf[0]) = this->glGetUniformLocation_dec(this, var_program, (const GLchar*)(inptr_name.get()));
1762 if (useChecksum) {
1763 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1764 }
1765 stream->flush();
1766 SET_LASTCALL("glGetUniformLocation");
1767 android::base::endTrace();
1768 break;
1769 }
1770 case OP_glGetVertexAttribfv: {
1771 android::base::beginTrace("glGetVertexAttribfv decode");
1772 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
1773 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
1774 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1775 if (useChecksum) {
1776 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
1777 "gles2_decoder_context_t::decode, OP_glGetVertexAttribfv: GL checksumCalculator failure\n");
1778 }
1779 size_t totalTmpSize = size_params;
1780 totalTmpSize += checksumSize;
1781 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1782 OutputBuffer outptr_params(&tmpBuf[0], size_params);
1783 #ifdef CHECK_GL_ERRORS
1784 GLint err = this->glGetError();
1785 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetVertexAttribfv\n", err);
1786 #endif
1787 DECODER_DEBUG_LOG("gles2(%p): glGetVertexAttribfv(index:%u pname:0x%08x params:%p(%u) )", stream, var_index, var_pname, (GLfloat*)(outptr_params.get()), size_params);
1788 this->glGetVertexAttribfv(var_index, var_pname, (GLfloat*)(outptr_params.get()));
1789 outptr_params.flush();
1790 if (useChecksum) {
1791 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1792 }
1793 stream->flush();
1794 SET_LASTCALL("glGetVertexAttribfv");
1795 android::base::endTrace();
1796 break;
1797 }
1798 case OP_glGetVertexAttribiv: {
1799 android::base::beginTrace("glGetVertexAttribiv decode");
1800 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
1801 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
1802 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1803 if (useChecksum) {
1804 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
1805 "gles2_decoder_context_t::decode, OP_glGetVertexAttribiv: GL checksumCalculator failure\n");
1806 }
1807 size_t totalTmpSize = size_params;
1808 totalTmpSize += checksumSize;
1809 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1810 OutputBuffer outptr_params(&tmpBuf[0], size_params);
1811 #ifdef CHECK_GL_ERRORS
1812 GLint err = this->glGetError();
1813 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetVertexAttribiv\n", err);
1814 #endif
1815 DECODER_DEBUG_LOG("gles2(%p): glGetVertexAttribiv(index:%u pname:0x%08x params:%p(%u) )", stream, var_index, var_pname, (GLint*)(outptr_params.get()), size_params);
1816 this->glGetVertexAttribiv(var_index, var_pname, (GLint*)(outptr_params.get()));
1817 outptr_params.flush();
1818 if (useChecksum) {
1819 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1820 }
1821 stream->flush();
1822 SET_LASTCALL("glGetVertexAttribiv");
1823 android::base::endTrace();
1824 break;
1825 }
1826 case OP_glGetVertexAttribPointerv: {
1827 android::base::beginTrace("glGetVertexAttribPointerv decode");
1828 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
1829 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
1830 uint32_t size_pointer __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
1831 InputBuffer inptr_pointer(ptr + 8 + 4 + 4 + 4, size_pointer);
1832 if (useChecksum) {
1833 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_pointer, ptr + 8 + 4 + 4 + 4 + size_pointer, checksumSize,
1834 "gles2_decoder_context_t::decode, OP_glGetVertexAttribPointerv: GL checksumCalculator failure\n");
1835 }
1836 #ifdef CHECK_GL_ERRORS
1837 GLint err = this->glGetError();
1838 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetVertexAttribPointerv\n", err);
1839 #endif
1840 DECODER_DEBUG_LOG("gles2(%p): glGetVertexAttribPointerv(index:%u pname:0x%08x pointer:%p(%u) )", stream, var_index, var_pname, (GLvoid**)(inptr_pointer.get()), size_pointer);
1841 this->glGetVertexAttribPointerv(var_index, var_pname, (GLvoid**)(inptr_pointer.get()));
1842 SET_LASTCALL("glGetVertexAttribPointerv");
1843 android::base::endTrace();
1844 break;
1845 }
1846 case OP_glHint: {
1847 android::base::beginTrace("glHint decode");
1848 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
1849 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
1850 if (useChecksum) {
1851 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
1852 "gles2_decoder_context_t::decode, OP_glHint: GL checksumCalculator failure\n");
1853 }
1854 #ifdef CHECK_GL_ERRORS
1855 GLint err = this->glGetError();
1856 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glHint\n", err);
1857 #endif
1858 DECODER_DEBUG_LOG("gles2(%p): glHint(target:0x%08x mode:0x%08x )", stream, var_target, var_mode);
1859 this->glHint(var_target, var_mode);
1860 SET_LASTCALL("glHint");
1861 android::base::endTrace();
1862 break;
1863 }
1864 case OP_glIsBuffer: {
1865 android::base::beginTrace("glIsBuffer decode");
1866 GLuint var_buffer = Unpack<GLuint,uint32_t>(ptr + 8);
1867 if (useChecksum) {
1868 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
1869 "gles2_decoder_context_t::decode, OP_glIsBuffer: GL checksumCalculator failure\n");
1870 }
1871 size_t totalTmpSize = sizeof(GLboolean);
1872 totalTmpSize += checksumSize;
1873 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1874 #ifdef CHECK_GL_ERRORS
1875 GLint err = this->glGetError();
1876 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsBuffer\n", err);
1877 #endif
1878 DECODER_DEBUG_LOG("gles2(%p): glIsBuffer(buffer:%u )", stream, var_buffer);
1879 *(GLboolean *)(&tmpBuf[0]) = this->glIsBuffer(var_buffer);
1880 if (useChecksum) {
1881 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1882 }
1883 stream->flush();
1884 SET_LASTCALL("glIsBuffer");
1885 android::base::endTrace();
1886 break;
1887 }
1888 case OP_glIsEnabled: {
1889 android::base::beginTrace("glIsEnabled decode");
1890 GLenum var_cap = Unpack<GLenum,uint32_t>(ptr + 8);
1891 if (useChecksum) {
1892 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
1893 "gles2_decoder_context_t::decode, OP_glIsEnabled: GL checksumCalculator failure\n");
1894 }
1895 size_t totalTmpSize = sizeof(GLboolean);
1896 totalTmpSize += checksumSize;
1897 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1898 #ifdef CHECK_GL_ERRORS
1899 GLint err = this->glGetError();
1900 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsEnabled\n", err);
1901 #endif
1902 DECODER_DEBUG_LOG("gles2(%p): glIsEnabled(cap:0x%08x )", stream, var_cap);
1903 *(GLboolean *)(&tmpBuf[0]) = this->glIsEnabled(var_cap);
1904 if (useChecksum) {
1905 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1906 }
1907 stream->flush();
1908 SET_LASTCALL("glIsEnabled");
1909 android::base::endTrace();
1910 break;
1911 }
1912 case OP_glIsFramebuffer: {
1913 android::base::beginTrace("glIsFramebuffer decode");
1914 GLuint var_framebuffer = Unpack<GLuint,uint32_t>(ptr + 8);
1915 if (useChecksum) {
1916 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
1917 "gles2_decoder_context_t::decode, OP_glIsFramebuffer: GL checksumCalculator failure\n");
1918 }
1919 size_t totalTmpSize = sizeof(GLboolean);
1920 totalTmpSize += checksumSize;
1921 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1922 #ifdef CHECK_GL_ERRORS
1923 GLint err = this->glGetError();
1924 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsFramebuffer\n", err);
1925 #endif
1926 DECODER_DEBUG_LOG("gles2(%p): glIsFramebuffer(framebuffer:%u )", stream, var_framebuffer);
1927 *(GLboolean *)(&tmpBuf[0]) = this->glIsFramebuffer(var_framebuffer);
1928 if (useChecksum) {
1929 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1930 }
1931 stream->flush();
1932 SET_LASTCALL("glIsFramebuffer");
1933 android::base::endTrace();
1934 break;
1935 }
1936 case OP_glIsProgram: {
1937 android::base::beginTrace("glIsProgram decode");
1938 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
1939 if (useChecksum) {
1940 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
1941 "gles2_decoder_context_t::decode, OP_glIsProgram: GL checksumCalculator failure\n");
1942 }
1943 size_t totalTmpSize = sizeof(GLboolean);
1944 totalTmpSize += checksumSize;
1945 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1946 #ifdef CHECK_GL_ERRORS
1947 GLint err = this->glGetError();
1948 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsProgram\n", err);
1949 #endif
1950 DECODER_DEBUG_LOG("gles2(%p): glIsProgram(program:%u )", stream, var_program);
1951 *(GLboolean *)(&tmpBuf[0]) = this->glIsProgram_dec(this, var_program);
1952 if (useChecksum) {
1953 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1954 }
1955 stream->flush();
1956 SET_LASTCALL("glIsProgram");
1957 android::base::endTrace();
1958 break;
1959 }
1960 case OP_glIsRenderbuffer: {
1961 android::base::beginTrace("glIsRenderbuffer decode");
1962 GLuint var_renderbuffer = Unpack<GLuint,uint32_t>(ptr + 8);
1963 if (useChecksum) {
1964 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
1965 "gles2_decoder_context_t::decode, OP_glIsRenderbuffer: GL checksumCalculator failure\n");
1966 }
1967 size_t totalTmpSize = sizeof(GLboolean);
1968 totalTmpSize += checksumSize;
1969 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1970 #ifdef CHECK_GL_ERRORS
1971 GLint err = this->glGetError();
1972 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsRenderbuffer\n", err);
1973 #endif
1974 DECODER_DEBUG_LOG("gles2(%p): glIsRenderbuffer(renderbuffer:%u )", stream, var_renderbuffer);
1975 *(GLboolean *)(&tmpBuf[0]) = this->glIsRenderbuffer(var_renderbuffer);
1976 if (useChecksum) {
1977 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1978 }
1979 stream->flush();
1980 SET_LASTCALL("glIsRenderbuffer");
1981 android::base::endTrace();
1982 break;
1983 }
1984 case OP_glIsShader: {
1985 android::base::beginTrace("glIsShader decode");
1986 GLuint var_shader = Unpack<GLuint,uint32_t>(ptr + 8);
1987 if (useChecksum) {
1988 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
1989 "gles2_decoder_context_t::decode, OP_glIsShader: GL checksumCalculator failure\n");
1990 }
1991 size_t totalTmpSize = sizeof(GLboolean);
1992 totalTmpSize += checksumSize;
1993 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1994 #ifdef CHECK_GL_ERRORS
1995 GLint err = this->glGetError();
1996 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsShader\n", err);
1997 #endif
1998 DECODER_DEBUG_LOG("gles2(%p): glIsShader(shader:%u )", stream, var_shader);
1999 *(GLboolean *)(&tmpBuf[0]) = this->glIsShader_dec(this, var_shader);
2000 if (useChecksum) {
2001 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
2002 }
2003 stream->flush();
2004 SET_LASTCALL("glIsShader");
2005 android::base::endTrace();
2006 break;
2007 }
2008 case OP_glIsTexture: {
2009 android::base::beginTrace("glIsTexture decode");
2010 GLuint var_texture = Unpack<GLuint,uint32_t>(ptr + 8);
2011 if (useChecksum) {
2012 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
2013 "gles2_decoder_context_t::decode, OP_glIsTexture: GL checksumCalculator failure\n");
2014 }
2015 size_t totalTmpSize = sizeof(GLboolean);
2016 totalTmpSize += checksumSize;
2017 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
2018 #ifdef CHECK_GL_ERRORS
2019 GLint err = this->glGetError();
2020 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsTexture\n", err);
2021 #endif
2022 DECODER_DEBUG_LOG("gles2(%p): glIsTexture(texture:%u )", stream, var_texture);
2023 *(GLboolean *)(&tmpBuf[0]) = this->glIsTexture(var_texture);
2024 if (useChecksum) {
2025 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
2026 }
2027 stream->flush();
2028 SET_LASTCALL("glIsTexture");
2029 android::base::endTrace();
2030 break;
2031 }
2032 case OP_glLineWidth: {
2033 android::base::beginTrace("glLineWidth decode");
2034 GLfloat var_width = Unpack<GLfloat,uint32_t>(ptr + 8);
2035 if (useChecksum) {
2036 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
2037 "gles2_decoder_context_t::decode, OP_glLineWidth: GL checksumCalculator failure\n");
2038 }
2039 #ifdef CHECK_GL_ERRORS
2040 GLint err = this->glGetError();
2041 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glLineWidth\n", err);
2042 #endif
2043 DECODER_DEBUG_LOG("gles2(%p): glLineWidth(width:%f )", stream, var_width);
2044 this->glLineWidth(var_width);
2045 SET_LASTCALL("glLineWidth");
2046 android::base::endTrace();
2047 break;
2048 }
2049 case OP_glLinkProgram: {
2050 android::base::beginTrace("glLinkProgram decode");
2051 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
2052 if (useChecksum) {
2053 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
2054 "gles2_decoder_context_t::decode, OP_glLinkProgram: GL checksumCalculator failure\n");
2055 }
2056 #ifdef CHECK_GL_ERRORS
2057 GLint err = this->glGetError();
2058 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glLinkProgram\n", err);
2059 #endif
2060 DECODER_DEBUG_LOG("gles2(%p): glLinkProgram(program:%u )", stream, var_program);
2061 this->glLinkProgram_dec(this, var_program);
2062 SET_LASTCALL("glLinkProgram");
2063 android::base::endTrace();
2064 break;
2065 }
2066 case OP_glPixelStorei: {
2067 android::base::beginTrace("glPixelStorei decode");
2068 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8);
2069 GLint var_param = Unpack<GLint,uint32_t>(ptr + 8 + 4);
2070 if (useChecksum) {
2071 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
2072 "gles2_decoder_context_t::decode, OP_glPixelStorei: GL checksumCalculator failure\n");
2073 }
2074 #ifdef CHECK_GL_ERRORS
2075 GLint err = this->glGetError();
2076 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glPixelStorei\n", err);
2077 #endif
2078 DECODER_DEBUG_LOG("gles2(%p): glPixelStorei(pname:0x%08x param:%d )", stream, var_pname, var_param);
2079 this->glPixelStorei(var_pname, var_param);
2080 SET_LASTCALL("glPixelStorei");
2081 android::base::endTrace();
2082 break;
2083 }
2084 case OP_glPolygonOffset: {
2085 android::base::beginTrace("glPolygonOffset decode");
2086 GLfloat var_factor = Unpack<GLfloat,uint32_t>(ptr + 8);
2087 GLfloat var_units = Unpack<GLfloat,uint32_t>(ptr + 8 + 4);
2088 if (useChecksum) {
2089 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
2090 "gles2_decoder_context_t::decode, OP_glPolygonOffset: GL checksumCalculator failure\n");
2091 }
2092 #ifdef CHECK_GL_ERRORS
2093 GLint err = this->glGetError();
2094 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glPolygonOffset\n", err);
2095 #endif
2096 DECODER_DEBUG_LOG("gles2(%p): glPolygonOffset(factor:%f units:%f )", stream, var_factor, var_units);
2097 this->glPolygonOffset(var_factor, var_units);
2098 SET_LASTCALL("glPolygonOffset");
2099 android::base::endTrace();
2100 break;
2101 }
2102 case OP_glReadPixels: {
2103 android::base::beginTrace("glReadPixels decode");
2104 GLint var_x = Unpack<GLint,uint32_t>(ptr + 8);
2105 GLint var_y = Unpack<GLint,uint32_t>(ptr + 8 + 4);
2106 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
2107 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
2108 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
2109 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
2110 uint32_t size_pixels __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
2111 if (useChecksum) {
2112 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
2113 "gles2_decoder_context_t::decode, OP_glReadPixels: GL checksumCalculator failure\n");
2114 }
2115 size_t totalTmpSize = size_pixels;
2116 totalTmpSize += checksumSize;
2117 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
2118 OutputBuffer outptr_pixels(&tmpBuf[0], size_pixels);
2119 #ifdef CHECK_GL_ERRORS
2120 GLint err = this->glGetError();
2121 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glReadPixels\n", err);
2122 #endif
2123 DECODER_DEBUG_LOG("gles2(%p): glReadPixels(x:%d y:%d width:%d height:%d format:0x%08x type:0x%08x pixels:%p(%u) )", stream, var_x, var_y, var_width, var_height, var_format, var_type, (GLvoid*)(outptr_pixels.get()), size_pixels);
2124 this->glReadPixels(var_x, var_y, var_width, var_height, var_format, var_type, (GLvoid*)(outptr_pixels.get()));
2125 outptr_pixels.flush();
2126 if (useChecksum) {
2127 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
2128 }
2129 stream->flush();
2130 SET_LASTCALL("glReadPixels");
2131 android::base::endTrace();
2132 break;
2133 }
2134 case OP_glReleaseShaderCompiler: {
2135 android::base::beginTrace("glReleaseShaderCompiler decode");
2136 if (useChecksum) {
2137 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize,
2138 "gles2_decoder_context_t::decode, OP_glReleaseShaderCompiler: GL checksumCalculator failure\n");
2139 }
2140 #ifdef CHECK_GL_ERRORS
2141 GLint err = this->glGetError();
2142 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glReleaseShaderCompiler\n", err);
2143 #endif
2144 DECODER_DEBUG_LOG("gles2(%p): glReleaseShaderCompiler()", stream);
2145 this->glReleaseShaderCompiler();
2146 SET_LASTCALL("glReleaseShaderCompiler");
2147 android::base::endTrace();
2148 break;
2149 }
2150 case OP_glRenderbufferStorage: {
2151 android::base::beginTrace("glRenderbufferStorage decode");
2152 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
2153 GLenum var_internalformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
2154 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
2155 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
2156 if (useChecksum) {
2157 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
2158 "gles2_decoder_context_t::decode, OP_glRenderbufferStorage: GL checksumCalculator failure\n");
2159 }
2160 #ifdef CHECK_GL_ERRORS
2161 GLint err = this->glGetError();
2162 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glRenderbufferStorage\n", err);
2163 #endif
2164 DECODER_DEBUG_LOG("gles2(%p): glRenderbufferStorage(target:0x%08x internalformat:0x%08x width:%d height:%d )", stream, var_target, var_internalformat, var_width, var_height);
2165 this->glRenderbufferStorage(var_target, var_internalformat, var_width, var_height);
2166 SET_LASTCALL("glRenderbufferStorage");
2167 android::base::endTrace();
2168 break;
2169 }
2170 case OP_glSampleCoverage: {
2171 android::base::beginTrace("glSampleCoverage decode");
2172 GLclampf var_value = Unpack<GLclampf,uint32_t>(ptr + 8);
2173 GLboolean var_invert = Unpack<GLboolean,uint8_t>(ptr + 8 + 4);
2174 if (useChecksum) {
2175 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 1, ptr + 8 + 4 + 1, checksumSize,
2176 "gles2_decoder_context_t::decode, OP_glSampleCoverage: GL checksumCalculator failure\n");
2177 }
2178 #ifdef CHECK_GL_ERRORS
2179 GLint err = this->glGetError();
2180 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glSampleCoverage\n", err);
2181 #endif
2182 DECODER_DEBUG_LOG("gles2(%p): glSampleCoverage(value:%f invert:%d )", stream, var_value, var_invert);
2183 this->glSampleCoverage(var_value, var_invert);
2184 SET_LASTCALL("glSampleCoverage");
2185 android::base::endTrace();
2186 break;
2187 }
2188 case OP_glScissor: {
2189 android::base::beginTrace("glScissor decode");
2190 GLint var_x = Unpack<GLint,uint32_t>(ptr + 8);
2191 GLint var_y = Unpack<GLint,uint32_t>(ptr + 8 + 4);
2192 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
2193 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
2194 if (useChecksum) {
2195 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
2196 "gles2_decoder_context_t::decode, OP_glScissor: GL checksumCalculator failure\n");
2197 }
2198 #ifdef CHECK_GL_ERRORS
2199 GLint err = this->glGetError();
2200 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glScissor\n", err);
2201 #endif
2202 DECODER_DEBUG_LOG("gles2(%p): glScissor(x:%d y:%d width:%d height:%d )", stream, var_x, var_y, var_width, var_height);
2203 this->glScissor(var_x, var_y, var_width, var_height);
2204 SET_LASTCALL("glScissor");
2205 android::base::endTrace();
2206 break;
2207 }
2208 case OP_glShaderBinary: {
2209 android::base::beginTrace("glShaderBinary decode");
2210 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
2211 uint32_t size_shaders __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
2212 InputBuffer inptr_shaders(ptr + 8 + 4 + 4, size_shaders);
2213 GLenum var_binaryformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + size_shaders);
2214 uint32_t size_binary __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + size_shaders + 4);
2215 InputBuffer inptr_binary(ptr + 8 + 4 + 4 + size_shaders + 4 + 4, size_binary);
2216 GLsizei var_length = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + size_shaders + 4 + 4 + size_binary);
2217 if (useChecksum) {
2218 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_shaders + 4 + 4 + size_binary + 4, ptr + 8 + 4 + 4 + size_shaders + 4 + 4 + size_binary + 4, checksumSize,
2219 "gles2_decoder_context_t::decode, OP_glShaderBinary: GL checksumCalculator failure\n");
2220 }
2221 #ifdef CHECK_GL_ERRORS
2222 GLint err = this->glGetError();
2223 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glShaderBinary\n", err);
2224 #endif
2225 DECODER_DEBUG_LOG("gles2(%p): glShaderBinary(n:%d shaders:%p(%u) binaryformat:0x%08x binary:%p(%u) length:%d )", stream, var_n, (const GLuint*)(inptr_shaders.get()), size_shaders, var_binaryformat, (const GLvoid*)(inptr_binary.get()), size_binary, var_length);
2226 this->glShaderBinary(var_n, (const GLuint*)(inptr_shaders.get()), var_binaryformat, (const GLvoid*)(inptr_binary.get()), var_length);
2227 SET_LASTCALL("glShaderBinary");
2228 android::base::endTrace();
2229 break;
2230 }
2231 case OP_glShaderSource: {
2232 android::base::beginTrace("glShaderSource decode");
2233 GLuint var_shader = Unpack<GLuint,uint32_t>(ptr + 8);
2234 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
2235 uint32_t size_string __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
2236 InputBuffer inptr_string(ptr + 8 + 4 + 4 + 4, size_string);
2237 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_string);
2238 InputBuffer inptr_length(ptr + 8 + 4 + 4 + 4 + size_string + 4, size_length);
2239 if (useChecksum) {
2240 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_string + 4 + size_length, ptr + 8 + 4 + 4 + 4 + size_string + 4 + size_length, checksumSize,
2241 "gles2_decoder_context_t::decode, OP_glShaderSource: GL checksumCalculator failure\n");
2242 }
2243 #ifdef CHECK_GL_ERRORS
2244 GLint err = this->glGetError();
2245 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glShaderSource\n", err);
2246 #endif
2247 DECODER_DEBUG_LOG("gles2(%p): glShaderSource(shader:%u count:%d string:%p(%u) length:%p(%u) )", stream, var_shader, var_count, (const GLchar* const*)(inptr_string.get()), size_string, (const GLint*)(inptr_length.get()), size_length);
2248 this->glShaderSource(var_shader, var_count, (const GLchar* const*)(inptr_string.get()), (const GLint*)(inptr_length.get()));
2249 SET_LASTCALL("glShaderSource");
2250 android::base::endTrace();
2251 break;
2252 }
2253 case OP_glStencilFunc: {
2254 android::base::beginTrace("glStencilFunc decode");
2255 GLenum var_func = Unpack<GLenum,uint32_t>(ptr + 8);
2256 GLint var_ref = Unpack<GLint,uint32_t>(ptr + 8 + 4);
2257 GLuint var_mask = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
2258 if (useChecksum) {
2259 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
2260 "gles2_decoder_context_t::decode, OP_glStencilFunc: GL checksumCalculator failure\n");
2261 }
2262 #ifdef CHECK_GL_ERRORS
2263 GLint err = this->glGetError();
2264 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glStencilFunc\n", err);
2265 #endif
2266 DECODER_DEBUG_LOG("gles2(%p): glStencilFunc(func:0x%08x ref:%d mask:%u )", stream, var_func, var_ref, var_mask);
2267 this->glStencilFunc(var_func, var_ref, var_mask);
2268 SET_LASTCALL("glStencilFunc");
2269 android::base::endTrace();
2270 break;
2271 }
2272 case OP_glStencilFuncSeparate: {
2273 android::base::beginTrace("glStencilFuncSeparate decode");
2274 GLenum var_face = Unpack<GLenum,uint32_t>(ptr + 8);
2275 GLenum var_func = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
2276 GLint var_ref = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
2277 GLuint var_mask = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4);
2278 if (useChecksum) {
2279 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
2280 "gles2_decoder_context_t::decode, OP_glStencilFuncSeparate: GL checksumCalculator failure\n");
2281 }
2282 #ifdef CHECK_GL_ERRORS
2283 GLint err = this->glGetError();
2284 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glStencilFuncSeparate\n", err);
2285 #endif
2286 DECODER_DEBUG_LOG("gles2(%p): glStencilFuncSeparate(face:0x%08x func:0x%08x ref:%d mask:%u )", stream, var_face, var_func, var_ref, var_mask);
2287 this->glStencilFuncSeparate(var_face, var_func, var_ref, var_mask);
2288 SET_LASTCALL("glStencilFuncSeparate");
2289 android::base::endTrace();
2290 break;
2291 }
2292 case OP_glStencilMask: {
2293 android::base::beginTrace("glStencilMask decode");
2294 GLuint var_mask = Unpack<GLuint,uint32_t>(ptr + 8);
2295 if (useChecksum) {
2296 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
2297 "gles2_decoder_context_t::decode, OP_glStencilMask: GL checksumCalculator failure\n");
2298 }
2299 #ifdef CHECK_GL_ERRORS
2300 GLint err = this->glGetError();
2301 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glStencilMask\n", err);
2302 #endif
2303 DECODER_DEBUG_LOG("gles2(%p): glStencilMask(mask:%u )", stream, var_mask);
2304 this->glStencilMask(var_mask);
2305 SET_LASTCALL("glStencilMask");
2306 android::base::endTrace();
2307 break;
2308 }
2309 case OP_glStencilMaskSeparate: {
2310 android::base::beginTrace("glStencilMaskSeparate decode");
2311 GLenum var_face = Unpack<GLenum,uint32_t>(ptr + 8);
2312 GLuint var_mask = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
2313 if (useChecksum) {
2314 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
2315 "gles2_decoder_context_t::decode, OP_glStencilMaskSeparate: GL checksumCalculator failure\n");
2316 }
2317 #ifdef CHECK_GL_ERRORS
2318 GLint err = this->glGetError();
2319 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glStencilMaskSeparate\n", err);
2320 #endif
2321 DECODER_DEBUG_LOG("gles2(%p): glStencilMaskSeparate(face:0x%08x mask:%u )", stream, var_face, var_mask);
2322 this->glStencilMaskSeparate(var_face, var_mask);
2323 SET_LASTCALL("glStencilMaskSeparate");
2324 android::base::endTrace();
2325 break;
2326 }
2327 case OP_glStencilOp: {
2328 android::base::beginTrace("glStencilOp decode");
2329 GLenum var_fail = Unpack<GLenum,uint32_t>(ptr + 8);
2330 GLenum var_zfail = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
2331 GLenum var_zpass = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
2332 if (useChecksum) {
2333 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
2334 "gles2_decoder_context_t::decode, OP_glStencilOp: GL checksumCalculator failure\n");
2335 }
2336 #ifdef CHECK_GL_ERRORS
2337 GLint err = this->glGetError();
2338 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glStencilOp\n", err);
2339 #endif
2340 DECODER_DEBUG_LOG("gles2(%p): glStencilOp(fail:0x%08x zfail:0x%08x zpass:0x%08x )", stream, var_fail, var_zfail, var_zpass);
2341 this->glStencilOp(var_fail, var_zfail, var_zpass);
2342 SET_LASTCALL("glStencilOp");
2343 android::base::endTrace();
2344 break;
2345 }
2346 case OP_glStencilOpSeparate: {
2347 android::base::beginTrace("glStencilOpSeparate decode");
2348 GLenum var_face = Unpack<GLenum,uint32_t>(ptr + 8);
2349 GLenum var_fail = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
2350 GLenum var_zfail = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
2351 GLenum var_zpass = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4);
2352 if (useChecksum) {
2353 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
2354 "gles2_decoder_context_t::decode, OP_glStencilOpSeparate: GL checksumCalculator failure\n");
2355 }
2356 #ifdef CHECK_GL_ERRORS
2357 GLint err = this->glGetError();
2358 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glStencilOpSeparate\n", err);
2359 #endif
2360 DECODER_DEBUG_LOG("gles2(%p): glStencilOpSeparate(face:0x%08x fail:0x%08x zfail:0x%08x zpass:0x%08x )", stream, var_face, var_fail, var_zfail, var_zpass);
2361 this->glStencilOpSeparate(var_face, var_fail, var_zfail, var_zpass);
2362 SET_LASTCALL("glStencilOpSeparate");
2363 android::base::endTrace();
2364 break;
2365 }
2366 case OP_glTexImage2D: {
2367 android::base::beginTrace("glTexImage2D decode");
2368 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
2369 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
2370 GLint var_internalformat = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
2371 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
2372 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
2373 GLint var_border = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
2374 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
2375 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
2376 uint32_t size_pixels __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
2377 InputBuffer inptr_pixels(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_pixels);
2378 if (useChecksum) {
2379 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, checksumSize,
2380 "gles2_decoder_context_t::decode, OP_glTexImage2D: GL checksumCalculator failure\n");
2381 }
2382 #ifdef CHECK_GL_ERRORS
2383 GLint err = this->glGetError();
2384 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexImage2D\n", err);
2385 #endif
2386 DECODER_DEBUG_LOG("gles2(%p): glTexImage2D(target:0x%08x level:%d internalformat:%d width:%d height:%d border:%d format:0x%08x type:0x%08x pixels:%p(%u) )", stream, var_target, var_level, var_internalformat, var_width, var_height, var_border, var_format, var_type, (const GLvoid*)(inptr_pixels.get()), size_pixels);
2387 this->glTexImage2D(var_target, var_level, var_internalformat, var_width, var_height, var_border, var_format, var_type, size_pixels == 0 ? nullptr : (const GLvoid*)(inptr_pixels.get()));
2388 SET_LASTCALL("glTexImage2D");
2389 android::base::endTrace();
2390 break;
2391 }
2392 case OP_glTexParameterf: {
2393 android::base::beginTrace("glTexParameterf decode");
2394 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
2395 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
2396 GLfloat var_param = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4);
2397 if (useChecksum) {
2398 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
2399 "gles2_decoder_context_t::decode, OP_glTexParameterf: GL checksumCalculator failure\n");
2400 }
2401 #ifdef CHECK_GL_ERRORS
2402 GLint err = this->glGetError();
2403 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexParameterf\n", err);
2404 #endif
2405 DECODER_DEBUG_LOG("gles2(%p): glTexParameterf(target:0x%08x pname:0x%08x param:%f )", stream, var_target, var_pname, var_param);
2406 this->glTexParameterf(var_target, var_pname, var_param);
2407 SET_LASTCALL("glTexParameterf");
2408 android::base::endTrace();
2409 break;
2410 }
2411 case OP_glTexParameterfv: {
2412 android::base::beginTrace("glTexParameterfv decode");
2413 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
2414 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
2415 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
2416 InputBuffer inptr_params(ptr + 8 + 4 + 4 + 4, size_params);
2417 if (useChecksum) {
2418 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + 4 + size_params, checksumSize,
2419 "gles2_decoder_context_t::decode, OP_glTexParameterfv: GL checksumCalculator failure\n");
2420 }
2421 #ifdef CHECK_GL_ERRORS
2422 GLint err = this->glGetError();
2423 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexParameterfv\n", err);
2424 #endif
2425 DECODER_DEBUG_LOG("gles2(%p): glTexParameterfv(target:0x%08x pname:0x%08x params:%p(%u) )", stream, var_target, var_pname, (const GLfloat*)(inptr_params.get()), size_params);
2426 this->glTexParameterfv(var_target, var_pname, (const GLfloat*)(inptr_params.get()));
2427 SET_LASTCALL("glTexParameterfv");
2428 android::base::endTrace();
2429 break;
2430 }
2431 case OP_glTexParameteri: {
2432 android::base::beginTrace("glTexParameteri decode");
2433 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
2434 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
2435 GLint var_param = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
2436 if (useChecksum) {
2437 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
2438 "gles2_decoder_context_t::decode, OP_glTexParameteri: GL checksumCalculator failure\n");
2439 }
2440 #ifdef CHECK_GL_ERRORS
2441 GLint err = this->glGetError();
2442 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexParameteri\n", err);
2443 #endif
2444 DECODER_DEBUG_LOG("gles2(%p): glTexParameteri(target:0x%08x pname:0x%08x param:%d )", stream, var_target, var_pname, var_param);
2445 this->glTexParameteri(var_target, var_pname, var_param);
2446 SET_LASTCALL("glTexParameteri");
2447 android::base::endTrace();
2448 break;
2449 }
2450 case OP_glTexParameteriv: {
2451 android::base::beginTrace("glTexParameteriv decode");
2452 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
2453 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
2454 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
2455 InputBuffer inptr_params(ptr + 8 + 4 + 4 + 4, size_params);
2456 if (useChecksum) {
2457 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + 4 + size_params, checksumSize,
2458 "gles2_decoder_context_t::decode, OP_glTexParameteriv: GL checksumCalculator failure\n");
2459 }
2460 #ifdef CHECK_GL_ERRORS
2461 GLint err = this->glGetError();
2462 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexParameteriv\n", err);
2463 #endif
2464 DECODER_DEBUG_LOG("gles2(%p): glTexParameteriv(target:0x%08x pname:0x%08x params:%p(%u) )", stream, var_target, var_pname, (const GLint*)(inptr_params.get()), size_params);
2465 this->glTexParameteriv(var_target, var_pname, (const GLint*)(inptr_params.get()));
2466 SET_LASTCALL("glTexParameteriv");
2467 android::base::endTrace();
2468 break;
2469 }
2470 case OP_glTexSubImage2D: {
2471 android::base::beginTrace("glTexSubImage2D decode");
2472 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
2473 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
2474 GLint var_xoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
2475 GLint var_yoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
2476 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
2477 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
2478 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
2479 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
2480 uint32_t size_pixels __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
2481 InputBuffer inptr_pixels(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_pixels);
2482 if (useChecksum) {
2483 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, checksumSize,
2484 "gles2_decoder_context_t::decode, OP_glTexSubImage2D: GL checksumCalculator failure\n");
2485 }
2486 #ifdef CHECK_GL_ERRORS
2487 GLint err = this->glGetError();
2488 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexSubImage2D\n", err);
2489 #endif
2490 DECODER_DEBUG_LOG("gles2(%p): glTexSubImage2D(target:0x%08x level:%d xoffset:%d yoffset:%d width:%d height:%d format:0x%08x type:0x%08x pixels:%p(%u) )", stream, var_target, var_level, var_xoffset, var_yoffset, var_width, var_height, var_format, var_type, (const GLvoid*)(inptr_pixels.get()), size_pixels);
2491 this->glTexSubImage2D(var_target, var_level, var_xoffset, var_yoffset, var_width, var_height, var_format, var_type, size_pixels == 0 ? nullptr : (const GLvoid*)(inptr_pixels.get()));
2492 SET_LASTCALL("glTexSubImage2D");
2493 android::base::endTrace();
2494 break;
2495 }
2496 case OP_glUniform1f: {
2497 android::base::beginTrace("glUniform1f decode");
2498 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2499 GLfloat var_x = Unpack<GLfloat,uint32_t>(ptr + 8 + 4);
2500 if (useChecksum) {
2501 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
2502 "gles2_decoder_context_t::decode, OP_glUniform1f: GL checksumCalculator failure\n");
2503 }
2504 #ifdef CHECK_GL_ERRORS
2505 GLint err = this->glGetError();
2506 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform1f\n", err);
2507 #endif
2508 DECODER_DEBUG_LOG("gles2(%p): glUniform1f(location:%d x:%f )", stream, var_location, var_x);
2509 this->glUniform1f(var_location, var_x);
2510 SET_LASTCALL("glUniform1f");
2511 android::base::endTrace();
2512 break;
2513 }
2514 case OP_glUniform1fv: {
2515 android::base::beginTrace("glUniform1fv decode");
2516 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2517 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
2518 uint32_t size_v __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
2519 InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v);
2520 if (useChecksum) {
2521 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize,
2522 "gles2_decoder_context_t::decode, OP_glUniform1fv: GL checksumCalculator failure\n");
2523 }
2524 #ifdef CHECK_GL_ERRORS
2525 GLint err = this->glGetError();
2526 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform1fv\n", err);
2527 #endif
2528 DECODER_DEBUG_LOG("gles2(%p): glUniform1fv(location:%d count:%d v:%p(%u) )", stream, var_location, var_count, (const GLfloat*)(inptr_v.get()), size_v);
2529 this->glUniform1fv(var_location, var_count, (const GLfloat*)(inptr_v.get()));
2530 SET_LASTCALL("glUniform1fv");
2531 android::base::endTrace();
2532 break;
2533 }
2534 case OP_glUniform1i: {
2535 android::base::beginTrace("glUniform1i decode");
2536 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2537 GLint var_x = Unpack<GLint,uint32_t>(ptr + 8 + 4);
2538 if (useChecksum) {
2539 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
2540 "gles2_decoder_context_t::decode, OP_glUniform1i: GL checksumCalculator failure\n");
2541 }
2542 #ifdef CHECK_GL_ERRORS
2543 GLint err = this->glGetError();
2544 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform1i\n", err);
2545 #endif
2546 DECODER_DEBUG_LOG("gles2(%p): glUniform1i(location:%d x:%d )", stream, var_location, var_x);
2547 this->glUniform1i(var_location, var_x);
2548 SET_LASTCALL("glUniform1i");
2549 android::base::endTrace();
2550 break;
2551 }
2552 case OP_glUniform1iv: {
2553 android::base::beginTrace("glUniform1iv decode");
2554 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2555 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
2556 uint32_t size_v __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
2557 InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v);
2558 if (useChecksum) {
2559 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize,
2560 "gles2_decoder_context_t::decode, OP_glUniform1iv: GL checksumCalculator failure\n");
2561 }
2562 #ifdef CHECK_GL_ERRORS
2563 GLint err = this->glGetError();
2564 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform1iv\n", err);
2565 #endif
2566 DECODER_DEBUG_LOG("gles2(%p): glUniform1iv(location:%d count:%d v:%p(%u) )", stream, var_location, var_count, (const GLint*)(inptr_v.get()), size_v);
2567 this->glUniform1iv(var_location, var_count, (const GLint*)(inptr_v.get()));
2568 SET_LASTCALL("glUniform1iv");
2569 android::base::endTrace();
2570 break;
2571 }
2572 case OP_glUniform2f: {
2573 android::base::beginTrace("glUniform2f decode");
2574 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2575 GLfloat var_x = Unpack<GLfloat,uint32_t>(ptr + 8 + 4);
2576 GLfloat var_y = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4);
2577 if (useChecksum) {
2578 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
2579 "gles2_decoder_context_t::decode, OP_glUniform2f: GL checksumCalculator failure\n");
2580 }
2581 #ifdef CHECK_GL_ERRORS
2582 GLint err = this->glGetError();
2583 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform2f\n", err);
2584 #endif
2585 DECODER_DEBUG_LOG("gles2(%p): glUniform2f(location:%d x:%f y:%f )", stream, var_location, var_x, var_y);
2586 this->glUniform2f(var_location, var_x, var_y);
2587 SET_LASTCALL("glUniform2f");
2588 android::base::endTrace();
2589 break;
2590 }
2591 case OP_glUniform2fv: {
2592 android::base::beginTrace("glUniform2fv decode");
2593 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2594 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
2595 uint32_t size_v __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
2596 InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v);
2597 if (useChecksum) {
2598 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize,
2599 "gles2_decoder_context_t::decode, OP_glUniform2fv: GL checksumCalculator failure\n");
2600 }
2601 #ifdef CHECK_GL_ERRORS
2602 GLint err = this->glGetError();
2603 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform2fv\n", err);
2604 #endif
2605 DECODER_DEBUG_LOG("gles2(%p): glUniform2fv(location:%d count:%d v:%p(%u) )", stream, var_location, var_count, (const GLfloat*)(inptr_v.get()), size_v);
2606 this->glUniform2fv(var_location, var_count, (const GLfloat*)(inptr_v.get()));
2607 SET_LASTCALL("glUniform2fv");
2608 android::base::endTrace();
2609 break;
2610 }
2611 case OP_glUniform2i: {
2612 android::base::beginTrace("glUniform2i decode");
2613 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2614 GLint var_x = Unpack<GLint,uint32_t>(ptr + 8 + 4);
2615 GLint var_y = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
2616 if (useChecksum) {
2617 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
2618 "gles2_decoder_context_t::decode, OP_glUniform2i: GL checksumCalculator failure\n");
2619 }
2620 #ifdef CHECK_GL_ERRORS
2621 GLint err = this->glGetError();
2622 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform2i\n", err);
2623 #endif
2624 DECODER_DEBUG_LOG("gles2(%p): glUniform2i(location:%d x:%d y:%d )", stream, var_location, var_x, var_y);
2625 this->glUniform2i(var_location, var_x, var_y);
2626 SET_LASTCALL("glUniform2i");
2627 android::base::endTrace();
2628 break;
2629 }
2630 case OP_glUniform2iv: {
2631 android::base::beginTrace("glUniform2iv decode");
2632 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2633 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
2634 uint32_t size_v __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
2635 InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v);
2636 if (useChecksum) {
2637 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize,
2638 "gles2_decoder_context_t::decode, OP_glUniform2iv: GL checksumCalculator failure\n");
2639 }
2640 #ifdef CHECK_GL_ERRORS
2641 GLint err = this->glGetError();
2642 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform2iv\n", err);
2643 #endif
2644 DECODER_DEBUG_LOG("gles2(%p): glUniform2iv(location:%d count:%d v:%p(%u) )", stream, var_location, var_count, (const GLint*)(inptr_v.get()), size_v);
2645 this->glUniform2iv(var_location, var_count, (const GLint*)(inptr_v.get()));
2646 SET_LASTCALL("glUniform2iv");
2647 android::base::endTrace();
2648 break;
2649 }
2650 case OP_glUniform3f: {
2651 android::base::beginTrace("glUniform3f decode");
2652 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2653 GLfloat var_x = Unpack<GLfloat,uint32_t>(ptr + 8 + 4);
2654 GLfloat var_y = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4);
2655 GLfloat var_z = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4 + 4);
2656 if (useChecksum) {
2657 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
2658 "gles2_decoder_context_t::decode, OP_glUniform3f: GL checksumCalculator failure\n");
2659 }
2660 #ifdef CHECK_GL_ERRORS
2661 GLint err = this->glGetError();
2662 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform3f\n", err);
2663 #endif
2664 DECODER_DEBUG_LOG("gles2(%p): glUniform3f(location:%d x:%f y:%f z:%f )", stream, var_location, var_x, var_y, var_z);
2665 this->glUniform3f(var_location, var_x, var_y, var_z);
2666 SET_LASTCALL("glUniform3f");
2667 android::base::endTrace();
2668 break;
2669 }
2670 case OP_glUniform3fv: {
2671 android::base::beginTrace("glUniform3fv decode");
2672 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2673 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
2674 uint32_t size_v __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
2675 InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v);
2676 if (useChecksum) {
2677 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize,
2678 "gles2_decoder_context_t::decode, OP_glUniform3fv: GL checksumCalculator failure\n");
2679 }
2680 #ifdef CHECK_GL_ERRORS
2681 GLint err = this->glGetError();
2682 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform3fv\n", err);
2683 #endif
2684 DECODER_DEBUG_LOG("gles2(%p): glUniform3fv(location:%d count:%d v:%p(%u) )", stream, var_location, var_count, (const GLfloat*)(inptr_v.get()), size_v);
2685 this->glUniform3fv(var_location, var_count, (const GLfloat*)(inptr_v.get()));
2686 SET_LASTCALL("glUniform3fv");
2687 android::base::endTrace();
2688 break;
2689 }
2690 case OP_glUniform3i: {
2691 android::base::beginTrace("glUniform3i decode");
2692 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2693 GLint var_x = Unpack<GLint,uint32_t>(ptr + 8 + 4);
2694 GLint var_y = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
2695 GLint var_z = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
2696 if (useChecksum) {
2697 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
2698 "gles2_decoder_context_t::decode, OP_glUniform3i: GL checksumCalculator failure\n");
2699 }
2700 #ifdef CHECK_GL_ERRORS
2701 GLint err = this->glGetError();
2702 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform3i\n", err);
2703 #endif
2704 DECODER_DEBUG_LOG("gles2(%p): glUniform3i(location:%d x:%d y:%d z:%d )", stream, var_location, var_x, var_y, var_z);
2705 this->glUniform3i(var_location, var_x, var_y, var_z);
2706 SET_LASTCALL("glUniform3i");
2707 android::base::endTrace();
2708 break;
2709 }
2710 case OP_glUniform3iv: {
2711 android::base::beginTrace("glUniform3iv decode");
2712 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2713 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
2714 uint32_t size_v __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
2715 InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v);
2716 if (useChecksum) {
2717 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize,
2718 "gles2_decoder_context_t::decode, OP_glUniform3iv: GL checksumCalculator failure\n");
2719 }
2720 #ifdef CHECK_GL_ERRORS
2721 GLint err = this->glGetError();
2722 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform3iv\n", err);
2723 #endif
2724 DECODER_DEBUG_LOG("gles2(%p): glUniform3iv(location:%d count:%d v:%p(%u) )", stream, var_location, var_count, (const GLint*)(inptr_v.get()), size_v);
2725 this->glUniform3iv(var_location, var_count, (const GLint*)(inptr_v.get()));
2726 SET_LASTCALL("glUniform3iv");
2727 android::base::endTrace();
2728 break;
2729 }
2730 case OP_glUniform4f: {
2731 android::base::beginTrace("glUniform4f decode");
2732 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2733 GLfloat var_x = Unpack<GLfloat,uint32_t>(ptr + 8 + 4);
2734 GLfloat var_y = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4);
2735 GLfloat var_z = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4 + 4);
2736 GLfloat var_w = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
2737 if (useChecksum) {
2738 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
2739 "gles2_decoder_context_t::decode, OP_glUniform4f: GL checksumCalculator failure\n");
2740 }
2741 #ifdef CHECK_GL_ERRORS
2742 GLint err = this->glGetError();
2743 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform4f\n", err);
2744 #endif
2745 DECODER_DEBUG_LOG("gles2(%p): glUniform4f(location:%d x:%f y:%f z:%f w:%f )", stream, var_location, var_x, var_y, var_z, var_w);
2746 this->glUniform4f(var_location, var_x, var_y, var_z, var_w);
2747 SET_LASTCALL("glUniform4f");
2748 android::base::endTrace();
2749 break;
2750 }
2751 case OP_glUniform4fv: {
2752 android::base::beginTrace("glUniform4fv decode");
2753 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2754 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
2755 uint32_t size_v __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
2756 InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v);
2757 if (useChecksum) {
2758 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize,
2759 "gles2_decoder_context_t::decode, OP_glUniform4fv: GL checksumCalculator failure\n");
2760 }
2761 #ifdef CHECK_GL_ERRORS
2762 GLint err = this->glGetError();
2763 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform4fv\n", err);
2764 #endif
2765 DECODER_DEBUG_LOG("gles2(%p): glUniform4fv(location:%d count:%d v:%p(%u) )", stream, var_location, var_count, (const GLfloat*)(inptr_v.get()), size_v);
2766 this->glUniform4fv(var_location, var_count, (const GLfloat*)(inptr_v.get()));
2767 SET_LASTCALL("glUniform4fv");
2768 android::base::endTrace();
2769 break;
2770 }
2771 case OP_glUniform4i: {
2772 android::base::beginTrace("glUniform4i decode");
2773 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2774 GLint var_x = Unpack<GLint,uint32_t>(ptr + 8 + 4);
2775 GLint var_y = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
2776 GLint var_z = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
2777 GLint var_w = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
2778 if (useChecksum) {
2779 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
2780 "gles2_decoder_context_t::decode, OP_glUniform4i: GL checksumCalculator failure\n");
2781 }
2782 #ifdef CHECK_GL_ERRORS
2783 GLint err = this->glGetError();
2784 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform4i\n", err);
2785 #endif
2786 DECODER_DEBUG_LOG("gles2(%p): glUniform4i(location:%d x:%d y:%d z:%d w:%d )", stream, var_location, var_x, var_y, var_z, var_w);
2787 this->glUniform4i(var_location, var_x, var_y, var_z, var_w);
2788 SET_LASTCALL("glUniform4i");
2789 android::base::endTrace();
2790 break;
2791 }
2792 case OP_glUniform4iv: {
2793 android::base::beginTrace("glUniform4iv decode");
2794 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2795 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
2796 uint32_t size_v __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
2797 InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v);
2798 if (useChecksum) {
2799 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize,
2800 "gles2_decoder_context_t::decode, OP_glUniform4iv: GL checksumCalculator failure\n");
2801 }
2802 #ifdef CHECK_GL_ERRORS
2803 GLint err = this->glGetError();
2804 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform4iv\n", err);
2805 #endif
2806 DECODER_DEBUG_LOG("gles2(%p): glUniform4iv(location:%d count:%d v:%p(%u) )", stream, var_location, var_count, (const GLint*)(inptr_v.get()), size_v);
2807 this->glUniform4iv(var_location, var_count, (const GLint*)(inptr_v.get()));
2808 SET_LASTCALL("glUniform4iv");
2809 android::base::endTrace();
2810 break;
2811 }
2812 case OP_glUniformMatrix2fv: {
2813 android::base::beginTrace("glUniformMatrix2fv decode");
2814 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2815 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
2816 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4);
2817 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 1);
2818 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value);
2819 if (useChecksum) {
2820 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize,
2821 "gles2_decoder_context_t::decode, OP_glUniformMatrix2fv: GL checksumCalculator failure\n");
2822 }
2823 #ifdef CHECK_GL_ERRORS
2824 GLint err = this->glGetError();
2825 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniformMatrix2fv\n", err);
2826 #endif
2827 DECODER_DEBUG_LOG("gles2(%p): glUniformMatrix2fv(location:%d count:%d transpose:%d value:%p(%u) )", stream, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
2828 this->glUniformMatrix2fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
2829 SET_LASTCALL("glUniformMatrix2fv");
2830 android::base::endTrace();
2831 break;
2832 }
2833 case OP_glUniformMatrix3fv: {
2834 android::base::beginTrace("glUniformMatrix3fv decode");
2835 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2836 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
2837 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4);
2838 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 1);
2839 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value);
2840 if (useChecksum) {
2841 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize,
2842 "gles2_decoder_context_t::decode, OP_glUniformMatrix3fv: GL checksumCalculator failure\n");
2843 }
2844 #ifdef CHECK_GL_ERRORS
2845 GLint err = this->glGetError();
2846 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniformMatrix3fv\n", err);
2847 #endif
2848 DECODER_DEBUG_LOG("gles2(%p): glUniformMatrix3fv(location:%d count:%d transpose:%d value:%p(%u) )", stream, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
2849 this->glUniformMatrix3fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
2850 SET_LASTCALL("glUniformMatrix3fv");
2851 android::base::endTrace();
2852 break;
2853 }
2854 case OP_glUniformMatrix4fv: {
2855 android::base::beginTrace("glUniformMatrix4fv decode");
2856 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
2857 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
2858 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4);
2859 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 1);
2860 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value);
2861 if (useChecksum) {
2862 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize,
2863 "gles2_decoder_context_t::decode, OP_glUniformMatrix4fv: GL checksumCalculator failure\n");
2864 }
2865 #ifdef CHECK_GL_ERRORS
2866 GLint err = this->glGetError();
2867 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniformMatrix4fv\n", err);
2868 #endif
2869 DECODER_DEBUG_LOG("gles2(%p): glUniformMatrix4fv(location:%d count:%d transpose:%d value:%p(%u) )", stream, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
2870 this->glUniformMatrix4fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
2871 SET_LASTCALL("glUniformMatrix4fv");
2872 android::base::endTrace();
2873 break;
2874 }
2875 case OP_glUseProgram: {
2876 android::base::beginTrace("glUseProgram decode");
2877 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
2878 if (useChecksum) {
2879 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
2880 "gles2_decoder_context_t::decode, OP_glUseProgram: GL checksumCalculator failure\n");
2881 }
2882 #ifdef CHECK_GL_ERRORS
2883 GLint err = this->glGetError();
2884 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUseProgram\n", err);
2885 #endif
2886 DECODER_DEBUG_LOG("gles2(%p): glUseProgram(program:%u )", stream, var_program);
2887 this->glUseProgram_dec(this, var_program);
2888 SET_LASTCALL("glUseProgram");
2889 android::base::endTrace();
2890 break;
2891 }
2892 case OP_glValidateProgram: {
2893 android::base::beginTrace("glValidateProgram decode");
2894 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
2895 if (useChecksum) {
2896 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
2897 "gles2_decoder_context_t::decode, OP_glValidateProgram: GL checksumCalculator failure\n");
2898 }
2899 #ifdef CHECK_GL_ERRORS
2900 GLint err = this->glGetError();
2901 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glValidateProgram\n", err);
2902 #endif
2903 DECODER_DEBUG_LOG("gles2(%p): glValidateProgram(program:%u )", stream, var_program);
2904 this->glValidateProgram_dec(this, var_program);
2905 SET_LASTCALL("glValidateProgram");
2906 android::base::endTrace();
2907 break;
2908 }
2909 case OP_glVertexAttrib1f: {
2910 android::base::beginTrace("glVertexAttrib1f decode");
2911 GLuint var_indx = Unpack<GLuint,uint32_t>(ptr + 8);
2912 GLfloat var_x = Unpack<GLfloat,uint32_t>(ptr + 8 + 4);
2913 if (useChecksum) {
2914 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
2915 "gles2_decoder_context_t::decode, OP_glVertexAttrib1f: GL checksumCalculator failure\n");
2916 }
2917 #ifdef CHECK_GL_ERRORS
2918 GLint err = this->glGetError();
2919 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttrib1f\n", err);
2920 #endif
2921 DECODER_DEBUG_LOG("gles2(%p): glVertexAttrib1f(indx:%u x:%f )", stream, var_indx, var_x);
2922 this->glVertexAttrib1f(var_indx, var_x);
2923 SET_LASTCALL("glVertexAttrib1f");
2924 android::base::endTrace();
2925 break;
2926 }
2927 case OP_glVertexAttrib1fv: {
2928 android::base::beginTrace("glVertexAttrib1fv decode");
2929 GLuint var_indx = Unpack<GLuint,uint32_t>(ptr + 8);
2930 uint32_t size_values __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
2931 InputBuffer inptr_values(ptr + 8 + 4 + 4, size_values);
2932 if (useChecksum) {
2933 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_values, ptr + 8 + 4 + 4 + size_values, checksumSize,
2934 "gles2_decoder_context_t::decode, OP_glVertexAttrib1fv: GL checksumCalculator failure\n");
2935 }
2936 #ifdef CHECK_GL_ERRORS
2937 GLint err = this->glGetError();
2938 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttrib1fv\n", err);
2939 #endif
2940 DECODER_DEBUG_LOG("gles2(%p): glVertexAttrib1fv(indx:%u values:%p(%u) )", stream, var_indx, (const GLfloat*)(inptr_values.get()), size_values);
2941 this->glVertexAttrib1fv(var_indx, (const GLfloat*)(inptr_values.get()));
2942 SET_LASTCALL("glVertexAttrib1fv");
2943 android::base::endTrace();
2944 break;
2945 }
2946 case OP_glVertexAttrib2f: {
2947 android::base::beginTrace("glVertexAttrib2f decode");
2948 GLuint var_indx = Unpack<GLuint,uint32_t>(ptr + 8);
2949 GLfloat var_x = Unpack<GLfloat,uint32_t>(ptr + 8 + 4);
2950 GLfloat var_y = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4);
2951 if (useChecksum) {
2952 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
2953 "gles2_decoder_context_t::decode, OP_glVertexAttrib2f: GL checksumCalculator failure\n");
2954 }
2955 #ifdef CHECK_GL_ERRORS
2956 GLint err = this->glGetError();
2957 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttrib2f\n", err);
2958 #endif
2959 DECODER_DEBUG_LOG("gles2(%p): glVertexAttrib2f(indx:%u x:%f y:%f )", stream, var_indx, var_x, var_y);
2960 this->glVertexAttrib2f(var_indx, var_x, var_y);
2961 SET_LASTCALL("glVertexAttrib2f");
2962 android::base::endTrace();
2963 break;
2964 }
2965 case OP_glVertexAttrib2fv: {
2966 android::base::beginTrace("glVertexAttrib2fv decode");
2967 GLuint var_indx = Unpack<GLuint,uint32_t>(ptr + 8);
2968 uint32_t size_values __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
2969 InputBuffer inptr_values(ptr + 8 + 4 + 4, size_values);
2970 if (useChecksum) {
2971 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_values, ptr + 8 + 4 + 4 + size_values, checksumSize,
2972 "gles2_decoder_context_t::decode, OP_glVertexAttrib2fv: GL checksumCalculator failure\n");
2973 }
2974 #ifdef CHECK_GL_ERRORS
2975 GLint err = this->glGetError();
2976 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttrib2fv\n", err);
2977 #endif
2978 DECODER_DEBUG_LOG("gles2(%p): glVertexAttrib2fv(indx:%u values:%p(%u) )", stream, var_indx, (const GLfloat*)(inptr_values.get()), size_values);
2979 this->glVertexAttrib2fv(var_indx, (const GLfloat*)(inptr_values.get()));
2980 SET_LASTCALL("glVertexAttrib2fv");
2981 android::base::endTrace();
2982 break;
2983 }
2984 case OP_glVertexAttrib3f: {
2985 android::base::beginTrace("glVertexAttrib3f decode");
2986 GLuint var_indx = Unpack<GLuint,uint32_t>(ptr + 8);
2987 GLfloat var_x = Unpack<GLfloat,uint32_t>(ptr + 8 + 4);
2988 GLfloat var_y = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4);
2989 GLfloat var_z = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4 + 4);
2990 if (useChecksum) {
2991 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
2992 "gles2_decoder_context_t::decode, OP_glVertexAttrib3f: GL checksumCalculator failure\n");
2993 }
2994 #ifdef CHECK_GL_ERRORS
2995 GLint err = this->glGetError();
2996 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttrib3f\n", err);
2997 #endif
2998 DECODER_DEBUG_LOG("gles2(%p): glVertexAttrib3f(indx:%u x:%f y:%f z:%f )", stream, var_indx, var_x, var_y, var_z);
2999 this->glVertexAttrib3f(var_indx, var_x, var_y, var_z);
3000 SET_LASTCALL("glVertexAttrib3f");
3001 android::base::endTrace();
3002 break;
3003 }
3004 case OP_glVertexAttrib3fv: {
3005 android::base::beginTrace("glVertexAttrib3fv decode");
3006 GLuint var_indx = Unpack<GLuint,uint32_t>(ptr + 8);
3007 uint32_t size_values __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
3008 InputBuffer inptr_values(ptr + 8 + 4 + 4, size_values);
3009 if (useChecksum) {
3010 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_values, ptr + 8 + 4 + 4 + size_values, checksumSize,
3011 "gles2_decoder_context_t::decode, OP_glVertexAttrib3fv: GL checksumCalculator failure\n");
3012 }
3013 #ifdef CHECK_GL_ERRORS
3014 GLint err = this->glGetError();
3015 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttrib3fv\n", err);
3016 #endif
3017 DECODER_DEBUG_LOG("gles2(%p): glVertexAttrib3fv(indx:%u values:%p(%u) )", stream, var_indx, (const GLfloat*)(inptr_values.get()), size_values);
3018 this->glVertexAttrib3fv(var_indx, (const GLfloat*)(inptr_values.get()));
3019 SET_LASTCALL("glVertexAttrib3fv");
3020 android::base::endTrace();
3021 break;
3022 }
3023 case OP_glVertexAttrib4f: {
3024 android::base::beginTrace("glVertexAttrib4f decode");
3025 GLuint var_indx = Unpack<GLuint,uint32_t>(ptr + 8);
3026 GLfloat var_x = Unpack<GLfloat,uint32_t>(ptr + 8 + 4);
3027 GLfloat var_y = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4);
3028 GLfloat var_z = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4 + 4);
3029 GLfloat var_w = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
3030 if (useChecksum) {
3031 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
3032 "gles2_decoder_context_t::decode, OP_glVertexAttrib4f: GL checksumCalculator failure\n");
3033 }
3034 #ifdef CHECK_GL_ERRORS
3035 GLint err = this->glGetError();
3036 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttrib4f\n", err);
3037 #endif
3038 DECODER_DEBUG_LOG("gles2(%p): glVertexAttrib4f(indx:%u x:%f y:%f z:%f w:%f )", stream, var_indx, var_x, var_y, var_z, var_w);
3039 this->glVertexAttrib4f(var_indx, var_x, var_y, var_z, var_w);
3040 SET_LASTCALL("glVertexAttrib4f");
3041 android::base::endTrace();
3042 break;
3043 }
3044 case OP_glVertexAttrib4fv: {
3045 android::base::beginTrace("glVertexAttrib4fv decode");
3046 GLuint var_indx = Unpack<GLuint,uint32_t>(ptr + 8);
3047 uint32_t size_values __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
3048 InputBuffer inptr_values(ptr + 8 + 4 + 4, size_values);
3049 if (useChecksum) {
3050 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_values, ptr + 8 + 4 + 4 + size_values, checksumSize,
3051 "gles2_decoder_context_t::decode, OP_glVertexAttrib4fv: GL checksumCalculator failure\n");
3052 }
3053 #ifdef CHECK_GL_ERRORS
3054 GLint err = this->glGetError();
3055 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttrib4fv\n", err);
3056 #endif
3057 DECODER_DEBUG_LOG("gles2(%p): glVertexAttrib4fv(indx:%u values:%p(%u) )", stream, var_indx, (const GLfloat*)(inptr_values.get()), size_values);
3058 this->glVertexAttrib4fv(var_indx, (const GLfloat*)(inptr_values.get()));
3059 SET_LASTCALL("glVertexAttrib4fv");
3060 android::base::endTrace();
3061 break;
3062 }
3063 case OP_glVertexAttribPointer: {
3064 android::base::beginTrace("glVertexAttribPointer decode");
3065 GLuint var_indx = Unpack<GLuint,uint32_t>(ptr + 8);
3066 GLint var_size = Unpack<GLint,uint32_t>(ptr + 8 + 4);
3067 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
3068 GLboolean var_normalized = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4);
3069 GLsizei var_stride = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1);
3070 uint32_t size_ptr __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1 + 4);
3071 InputBuffer inptr_ptr(ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4, size_ptr);
3072 if (useChecksum) {
3073 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + 4 + size_ptr, ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4 + size_ptr, checksumSize,
3074 "gles2_decoder_context_t::decode, OP_glVertexAttribPointer: GL checksumCalculator failure\n");
3075 }
3076 #ifdef CHECK_GL_ERRORS
3077 GLint err = this->glGetError();
3078 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttribPointer\n", err);
3079 #endif
3080 DECODER_DEBUG_LOG("gles2(%p): glVertexAttribPointer(indx:%u size:%d type:0x%08x normalized:%d stride:%d ptr:%p(%u) )", stream, var_indx, var_size, var_type, var_normalized, var_stride, (const GLvoid*)(inptr_ptr.get()), size_ptr);
3081 this->glVertexAttribPointer(var_indx, var_size, var_type, var_normalized, var_stride, (const GLvoid*)(inptr_ptr.get()));
3082 SET_LASTCALL("glVertexAttribPointer");
3083 android::base::endTrace();
3084 break;
3085 }
3086 case OP_glViewport: {
3087 android::base::beginTrace("glViewport decode");
3088 GLint var_x = Unpack<GLint,uint32_t>(ptr + 8);
3089 GLint var_y = Unpack<GLint,uint32_t>(ptr + 8 + 4);
3090 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
3091 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
3092 if (useChecksum) {
3093 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
3094 "gles2_decoder_context_t::decode, OP_glViewport: GL checksumCalculator failure\n");
3095 }
3096 #ifdef CHECK_GL_ERRORS
3097 GLint err = this->glGetError();
3098 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glViewport\n", err);
3099 #endif
3100 DECODER_DEBUG_LOG("gles2(%p): glViewport(x:%d y:%d width:%d height:%d )", stream, var_x, var_y, var_width, var_height);
3101 this->glViewport(var_x, var_y, var_width, var_height);
3102 SET_LASTCALL("glViewport");
3103 android::base::endTrace();
3104 break;
3105 }
3106 case OP_glEGLImageTargetTexture2DOES: {
3107 android::base::beginTrace("glEGLImageTargetTexture2DOES decode");
3108 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
3109 GLeglImageOES var_image = Unpack<GLeglImageOES,uint32_t>(ptr + 8 + 4);
3110 if (useChecksum) {
3111 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
3112 "gles2_decoder_context_t::decode, OP_glEGLImageTargetTexture2DOES: GL checksumCalculator failure\n");
3113 }
3114 #ifdef CHECK_GL_ERRORS
3115 GLint err = this->glGetError();
3116 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glEGLImageTargetTexture2DOES\n", err);
3117 #endif
3118 DECODER_DEBUG_LOG("gles2(%p): glEGLImageTargetTexture2DOES(target:0x%08x image:%p )", stream, var_target, var_image);
3119 this->glEGLImageTargetTexture2DOES(var_target, var_image);
3120 SET_LASTCALL("glEGLImageTargetTexture2DOES");
3121 android::base::endTrace();
3122 break;
3123 }
3124 case OP_glEGLImageTargetRenderbufferStorageOES: {
3125 android::base::beginTrace("glEGLImageTargetRenderbufferStorageOES decode");
3126 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
3127 GLeglImageOES var_image = Unpack<GLeglImageOES,uint32_t>(ptr + 8 + 4);
3128 if (useChecksum) {
3129 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
3130 "gles2_decoder_context_t::decode, OP_glEGLImageTargetRenderbufferStorageOES: GL checksumCalculator failure\n");
3131 }
3132 #ifdef CHECK_GL_ERRORS
3133 GLint err = this->glGetError();
3134 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glEGLImageTargetRenderbufferStorageOES\n", err);
3135 #endif
3136 DECODER_DEBUG_LOG("gles2(%p): glEGLImageTargetRenderbufferStorageOES(target:0x%08x image:%p )", stream, var_target, var_image);
3137 this->glEGLImageTargetRenderbufferStorageOES(var_target, var_image);
3138 SET_LASTCALL("glEGLImageTargetRenderbufferStorageOES");
3139 android::base::endTrace();
3140 break;
3141 }
3142 case OP_glGetProgramBinaryOES: {
3143 android::base::beginTrace("glGetProgramBinaryOES decode");
3144 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
3145 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
3146 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
3147 InputBuffer inptr_length(ptr + 8 + 4 + 4 + 4, size_length);
3148 uint32_t size_binaryFormat __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_length);
3149 InputBuffer inptr_binaryFormat(ptr + 8 + 4 + 4 + 4 + size_length + 4, size_binaryFormat);
3150 uint32_t size_binary __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_length + 4 + size_binaryFormat);
3151 InputBuffer inptr_binary(ptr + 8 + 4 + 4 + 4 + size_length + 4 + size_binaryFormat + 4, size_binary);
3152 if (useChecksum) {
3153 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_length + 4 + size_binaryFormat + 4 + size_binary, ptr + 8 + 4 + 4 + 4 + size_length + 4 + size_binaryFormat + 4 + size_binary, checksumSize,
3154 "gles2_decoder_context_t::decode, OP_glGetProgramBinaryOES: GL checksumCalculator failure\n");
3155 }
3156 #ifdef CHECK_GL_ERRORS
3157 GLint err = this->glGetError();
3158 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetProgramBinaryOES\n", err);
3159 #endif
3160 DECODER_DEBUG_LOG("gles2(%p): glGetProgramBinaryOES(program:%u bufSize:%d length:%p(%u) binaryFormat:%p(%u) binary:%p(%u) )", stream, var_program, var_bufSize, (GLsizei*)(inptr_length.get()), size_length, (GLenum*)(inptr_binaryFormat.get()), size_binaryFormat, (GLvoid*)(inptr_binary.get()), size_binary);
3161 this->glGetProgramBinaryOES_dec(this, var_program, var_bufSize, (GLsizei*)(inptr_length.get()), (GLenum*)(inptr_binaryFormat.get()), (GLvoid*)(inptr_binary.get()));
3162 SET_LASTCALL("glGetProgramBinaryOES");
3163 android::base::endTrace();
3164 break;
3165 }
3166 case OP_glProgramBinaryOES: {
3167 android::base::beginTrace("glProgramBinaryOES decode");
3168 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
3169 GLenum var_binaryFormat = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
3170 uint32_t size_binary __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
3171 InputBuffer inptr_binary(ptr + 8 + 4 + 4 + 4, size_binary);
3172 GLint var_length = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_binary);
3173 if (useChecksum) {
3174 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_binary + 4, ptr + 8 + 4 + 4 + 4 + size_binary + 4, checksumSize,
3175 "gles2_decoder_context_t::decode, OP_glProgramBinaryOES: GL checksumCalculator failure\n");
3176 }
3177 #ifdef CHECK_GL_ERRORS
3178 GLint err = this->glGetError();
3179 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramBinaryOES\n", err);
3180 #endif
3181 DECODER_DEBUG_LOG("gles2(%p): glProgramBinaryOES(program:%u binaryFormat:0x%08x binary:%p(%u) length:%d )", stream, var_program, var_binaryFormat, (const GLvoid*)(inptr_binary.get()), size_binary, var_length);
3182 this->glProgramBinaryOES_dec(this, var_program, var_binaryFormat, (const GLvoid*)(inptr_binary.get()), var_length);
3183 SET_LASTCALL("glProgramBinaryOES");
3184 android::base::endTrace();
3185 break;
3186 }
3187 case OP_glMapBufferOES: {
3188 android::base::beginTrace("glMapBufferOES decode");
3189 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
3190 GLenum var_access = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
3191 if (useChecksum) {
3192 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
3193 "gles2_decoder_context_t::decode, OP_glMapBufferOES: GL checksumCalculator failure\n");
3194 }
3195 #ifdef CHECK_GL_ERRORS
3196 GLint err = this->glGetError();
3197 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glMapBufferOES\n", err);
3198 #endif
3199 DECODER_DEBUG_LOG("gles2(%p): glMapBufferOES(target:0x%08x access:0x%08x )", stream, var_target, var_access);
3200 this->glMapBufferOES(var_target, var_access);
3201 SET_LASTCALL("glMapBufferOES");
3202 android::base::endTrace();
3203 break;
3204 }
3205 case OP_glUnmapBufferOES: {
3206 android::base::beginTrace("glUnmapBufferOES decode");
3207 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
3208 if (useChecksum) {
3209 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
3210 "gles2_decoder_context_t::decode, OP_glUnmapBufferOES: GL checksumCalculator failure\n");
3211 }
3212 size_t totalTmpSize = sizeof(GLboolean);
3213 totalTmpSize += checksumSize;
3214 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
3215 #ifdef CHECK_GL_ERRORS
3216 GLint err = this->glGetError();
3217 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUnmapBufferOES\n", err);
3218 #endif
3219 DECODER_DEBUG_LOG("gles2(%p): glUnmapBufferOES(target:0x%08x )", stream, var_target);
3220 *(GLboolean *)(&tmpBuf[0]) = this->glUnmapBufferOES(var_target);
3221 if (useChecksum) {
3222 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
3223 }
3224 stream->flush();
3225 SET_LASTCALL("glUnmapBufferOES");
3226 android::base::endTrace();
3227 break;
3228 }
3229 case OP_glTexImage3DOES: {
3230 android::base::beginTrace("glTexImage3DOES decode");
3231 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
3232 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
3233 GLenum var_internalformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
3234 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
3235 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
3236 GLsizei var_depth = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
3237 GLint var_border = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
3238 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3239 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3240 uint32_t size_pixels __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3241 InputBuffer inptr_pixels(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_pixels);
3242 if (useChecksum) {
3243 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, checksumSize,
3244 "gles2_decoder_context_t::decode, OP_glTexImage3DOES: GL checksumCalculator failure\n");
3245 }
3246 #ifdef CHECK_GL_ERRORS
3247 GLint err = this->glGetError();
3248 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexImage3DOES\n", err);
3249 #endif
3250 DECODER_DEBUG_LOG("gles2(%p): glTexImage3DOES(target:0x%08x level:%d internalformat:0x%08x width:%d height:%d depth:%d border:%d format:0x%08x type:0x%08x pixels:%p(%u) )", stream, var_target, var_level, var_internalformat, var_width, var_height, var_depth, var_border, var_format, var_type, (const GLvoid*)(inptr_pixels.get()), size_pixels);
3251 this->glTexImage3DOES(var_target, var_level, var_internalformat, var_width, var_height, var_depth, var_border, var_format, var_type, size_pixels == 0 ? nullptr : (const GLvoid*)(inptr_pixels.get()));
3252 SET_LASTCALL("glTexImage3DOES");
3253 android::base::endTrace();
3254 break;
3255 }
3256 case OP_glTexSubImage3DOES: {
3257 android::base::beginTrace("glTexSubImage3DOES decode");
3258 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
3259 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
3260 GLint var_xoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
3261 GLint var_yoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
3262 GLint var_zoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
3263 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
3264 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
3265 GLsizei var_depth = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3266 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3267 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3268 uint32_t size_pixels __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3269 InputBuffer inptr_pixels(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_pixels);
3270 if (useChecksum) {
3271 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, checksumSize,
3272 "gles2_decoder_context_t::decode, OP_glTexSubImage3DOES: GL checksumCalculator failure\n");
3273 }
3274 #ifdef CHECK_GL_ERRORS
3275 GLint err = this->glGetError();
3276 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexSubImage3DOES\n", err);
3277 #endif
3278 DECODER_DEBUG_LOG("gles2(%p): glTexSubImage3DOES(target:0x%08x level:%d xoffset:%d yoffset:%d zoffset:%d width:%d height:%d depth:%d format:0x%08x type:0x%08x pixels:%p(%u) )", stream, var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_type, (const GLvoid*)(inptr_pixels.get()), size_pixels);
3279 this->glTexSubImage3DOES(var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_type, size_pixels == 0 ? nullptr : (const GLvoid*)(inptr_pixels.get()));
3280 SET_LASTCALL("glTexSubImage3DOES");
3281 android::base::endTrace();
3282 break;
3283 }
3284 case OP_glCopyTexSubImage3DOES: {
3285 android::base::beginTrace("glCopyTexSubImage3DOES decode");
3286 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
3287 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
3288 GLint var_xoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
3289 GLint var_yoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
3290 GLint var_zoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
3291 GLint var_x = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
3292 GLint var_y = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
3293 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3294 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3295 if (useChecksum) {
3296 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
3297 "gles2_decoder_context_t::decode, OP_glCopyTexSubImage3DOES: GL checksumCalculator failure\n");
3298 }
3299 #ifdef CHECK_GL_ERRORS
3300 GLint err = this->glGetError();
3301 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCopyTexSubImage3DOES\n", err);
3302 #endif
3303 DECODER_DEBUG_LOG("gles2(%p): glCopyTexSubImage3DOES(target:0x%08x level:%d xoffset:%d yoffset:%d zoffset:%d x:%d y:%d width:%d height:%d )", stream, var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_x, var_y, var_width, var_height);
3304 this->glCopyTexSubImage3DOES(var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_x, var_y, var_width, var_height);
3305 SET_LASTCALL("glCopyTexSubImage3DOES");
3306 android::base::endTrace();
3307 break;
3308 }
3309 case OP_glCompressedTexImage3DOES: {
3310 android::base::beginTrace("glCompressedTexImage3DOES decode");
3311 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
3312 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
3313 GLenum var_internalformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
3314 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
3315 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
3316 GLsizei var_depth = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
3317 GLint var_border = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
3318 GLsizei var_imageSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3319 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3320 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data);
3321 if (useChecksum) {
3322 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize,
3323 "gles2_decoder_context_t::decode, OP_glCompressedTexImage3DOES: GL checksumCalculator failure\n");
3324 }
3325 #ifdef CHECK_GL_ERRORS
3326 GLint err = this->glGetError();
3327 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCompressedTexImage3DOES\n", err);
3328 #endif
3329 DECODER_DEBUG_LOG("gles2(%p): glCompressedTexImage3DOES(target:0x%08x level:%d internalformat:0x%08x width:%d height:%d depth:%d border:%d imageSize:%d data:%p(%u) )", stream, var_target, var_level, var_internalformat, var_width, var_height, var_depth, var_border, var_imageSize, (const GLvoid*)(inptr_data.get()), size_data);
3330 this->glCompressedTexImage3DOES(var_target, var_level, var_internalformat, var_width, var_height, var_depth, var_border, var_imageSize, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get()));
3331 SET_LASTCALL("glCompressedTexImage3DOES");
3332 android::base::endTrace();
3333 break;
3334 }
3335 case OP_glCompressedTexSubImage3DOES: {
3336 android::base::beginTrace("glCompressedTexSubImage3DOES decode");
3337 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
3338 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
3339 GLint var_xoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
3340 GLint var_yoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
3341 GLint var_zoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
3342 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
3343 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
3344 GLsizei var_depth = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3345 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3346 GLsizei var_imageSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3347 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3348 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data);
3349 if (useChecksum) {
3350 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize,
3351 "gles2_decoder_context_t::decode, OP_glCompressedTexSubImage3DOES: GL checksumCalculator failure\n");
3352 }
3353 #ifdef CHECK_GL_ERRORS
3354 GLint err = this->glGetError();
3355 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCompressedTexSubImage3DOES\n", err);
3356 #endif
3357 DECODER_DEBUG_LOG("gles2(%p): glCompressedTexSubImage3DOES(target:0x%08x level:%d xoffset:%d yoffset:%d zoffset:%d width:%d height:%d depth:%d format:0x%08x imageSize:%d data:%p(%u) )", stream, var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_imageSize, (const GLvoid*)(inptr_data.get()), size_data);
3358 this->glCompressedTexSubImage3DOES(var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_imageSize, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get()));
3359 SET_LASTCALL("glCompressedTexSubImage3DOES");
3360 android::base::endTrace();
3361 break;
3362 }
3363 case OP_glFramebufferTexture3DOES: {
3364 android::base::beginTrace("glFramebufferTexture3DOES decode");
3365 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
3366 GLenum var_attachment = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
3367 GLenum var_textarget = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
3368 GLuint var_texture = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4);
3369 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
3370 GLint var_zoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
3371 if (useChecksum) {
3372 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
3373 "gles2_decoder_context_t::decode, OP_glFramebufferTexture3DOES: GL checksumCalculator failure\n");
3374 }
3375 #ifdef CHECK_GL_ERRORS
3376 GLint err = this->glGetError();
3377 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFramebufferTexture3DOES\n", err);
3378 #endif
3379 DECODER_DEBUG_LOG("gles2(%p): glFramebufferTexture3DOES(target:0x%08x attachment:0x%08x textarget:0x%08x texture:%u level:%d zoffset:%d )", stream, var_target, var_attachment, var_textarget, var_texture, var_level, var_zoffset);
3380 this->glFramebufferTexture3DOES(var_target, var_attachment, var_textarget, var_texture, var_level, var_zoffset);
3381 SET_LASTCALL("glFramebufferTexture3DOES");
3382 android::base::endTrace();
3383 break;
3384 }
3385 case OP_glBindVertexArrayOES: {
3386 android::base::beginTrace("glBindVertexArrayOES decode");
3387 GLuint var_array = Unpack<GLuint,uint32_t>(ptr + 8);
3388 if (useChecksum) {
3389 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
3390 "gles2_decoder_context_t::decode, OP_glBindVertexArrayOES: GL checksumCalculator failure\n");
3391 }
3392 #ifdef CHECK_GL_ERRORS
3393 GLint err = this->glGetError();
3394 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBindVertexArrayOES\n", err);
3395 #endif
3396 DECODER_DEBUG_LOG("gles2(%p): glBindVertexArrayOES(array:%u )", stream, var_array);
3397 this->glBindVertexArrayOES(var_array);
3398 SET_LASTCALL("glBindVertexArrayOES");
3399 android::base::endTrace();
3400 break;
3401 }
3402 case OP_glDeleteVertexArraysOES: {
3403 android::base::beginTrace("glDeleteVertexArraysOES decode");
3404 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
3405 uint32_t size_arrays __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
3406 InputBuffer inptr_arrays(ptr + 8 + 4 + 4, size_arrays);
3407 if (useChecksum) {
3408 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_arrays, ptr + 8 + 4 + 4 + size_arrays, checksumSize,
3409 "gles2_decoder_context_t::decode, OP_glDeleteVertexArraysOES: GL checksumCalculator failure\n");
3410 }
3411 #ifdef CHECK_GL_ERRORS
3412 GLint err = this->glGetError();
3413 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteVertexArraysOES\n", err);
3414 #endif
3415 DECODER_DEBUG_LOG("gles2(%p): glDeleteVertexArraysOES(n:%d arrays:%p(%u) )", stream, var_n, (const GLuint*)(inptr_arrays.get()), size_arrays);
3416 this->glDeleteVertexArraysOES_dec(this, var_n, (const GLuint*)(inptr_arrays.get()));
3417 SET_LASTCALL("glDeleteVertexArraysOES");
3418 android::base::endTrace();
3419 break;
3420 }
3421 case OP_glGenVertexArraysOES: {
3422 android::base::beginTrace("glGenVertexArraysOES decode");
3423 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
3424 uint32_t size_arrays __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
3425 if (useChecksum) {
3426 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
3427 "gles2_decoder_context_t::decode, OP_glGenVertexArraysOES: GL checksumCalculator failure\n");
3428 }
3429 size_t totalTmpSize = size_arrays;
3430 totalTmpSize += checksumSize;
3431 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
3432 OutputBuffer outptr_arrays(&tmpBuf[0], size_arrays);
3433 #ifdef CHECK_GL_ERRORS
3434 GLint err = this->glGetError();
3435 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGenVertexArraysOES\n", err);
3436 #endif
3437 DECODER_DEBUG_LOG("gles2(%p): glGenVertexArraysOES(n:%d arrays:%p(%u) )", stream, var_n, (GLuint*)(outptr_arrays.get()), size_arrays);
3438 this->glGenVertexArraysOES_dec(this, var_n, (GLuint*)(outptr_arrays.get()));
3439 outptr_arrays.flush();
3440 if (useChecksum) {
3441 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
3442 }
3443 stream->flush();
3444 SET_LASTCALL("glGenVertexArraysOES");
3445 android::base::endTrace();
3446 break;
3447 }
3448 case OP_glIsVertexArrayOES: {
3449 android::base::beginTrace("glIsVertexArrayOES decode");
3450 GLuint var_array = Unpack<GLuint,uint32_t>(ptr + 8);
3451 if (useChecksum) {
3452 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
3453 "gles2_decoder_context_t::decode, OP_glIsVertexArrayOES: GL checksumCalculator failure\n");
3454 }
3455 size_t totalTmpSize = sizeof(GLboolean);
3456 totalTmpSize += checksumSize;
3457 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
3458 #ifdef CHECK_GL_ERRORS
3459 GLint err = this->glGetError();
3460 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsVertexArrayOES\n", err);
3461 #endif
3462 DECODER_DEBUG_LOG("gles2(%p): glIsVertexArrayOES(array:%u )", stream, var_array);
3463 *(GLboolean *)(&tmpBuf[0]) = this->glIsVertexArrayOES(var_array);
3464 if (useChecksum) {
3465 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
3466 }
3467 stream->flush();
3468 SET_LASTCALL("glIsVertexArrayOES");
3469 android::base::endTrace();
3470 break;
3471 }
3472 case OP_glDiscardFramebufferEXT: {
3473 android::base::beginTrace("glDiscardFramebufferEXT decode");
3474 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
3475 GLsizei var_numAttachments = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
3476 uint32_t size_attachments __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
3477 InputBuffer inptr_attachments(ptr + 8 + 4 + 4 + 4, size_attachments);
3478 if (useChecksum) {
3479 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_attachments, ptr + 8 + 4 + 4 + 4 + size_attachments, checksumSize,
3480 "gles2_decoder_context_t::decode, OP_glDiscardFramebufferEXT: GL checksumCalculator failure\n");
3481 }
3482 #ifdef CHECK_GL_ERRORS
3483 GLint err = this->glGetError();
3484 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDiscardFramebufferEXT\n", err);
3485 #endif
3486 DECODER_DEBUG_LOG("gles2(%p): glDiscardFramebufferEXT(target:0x%08x numAttachments:%d attachments:%p(%u) )", stream, var_target, var_numAttachments, (const GLenum*)(inptr_attachments.get()), size_attachments);
3487 this->glDiscardFramebufferEXT(var_target, var_numAttachments, (const GLenum*)(inptr_attachments.get()));
3488 SET_LASTCALL("glDiscardFramebufferEXT");
3489 android::base::endTrace();
3490 break;
3491 }
3492 case OP_glMultiDrawArraysEXT: {
3493 android::base::beginTrace("glMultiDrawArraysEXT decode");
3494 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
3495 uint32_t size_first __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
3496 InputBuffer inptr_first(ptr + 8 + 4 + 4, size_first);
3497 uint32_t size_count __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + size_first);
3498 InputBuffer inptr_count(ptr + 8 + 4 + 4 + size_first + 4, size_count);
3499 GLsizei var_primcount = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + size_first + 4 + size_count);
3500 if (useChecksum) {
3501 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_first + 4 + size_count + 4, ptr + 8 + 4 + 4 + size_first + 4 + size_count + 4, checksumSize,
3502 "gles2_decoder_context_t::decode, OP_glMultiDrawArraysEXT: GL checksumCalculator failure\n");
3503 }
3504 #ifdef CHECK_GL_ERRORS
3505 GLint err = this->glGetError();
3506 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glMultiDrawArraysEXT\n", err);
3507 #endif
3508 DECODER_DEBUG_LOG("gles2(%p): glMultiDrawArraysEXT(mode:0x%08x first:%p(%u) count:%p(%u) primcount:%d )", stream, var_mode, (const GLint*)(inptr_first.get()), size_first, (const GLsizei*)(inptr_count.get()), size_count, var_primcount);
3509 this->glMultiDrawArraysEXT(var_mode, (const GLint*)(inptr_first.get()), (const GLsizei*)(inptr_count.get()), var_primcount);
3510 SET_LASTCALL("glMultiDrawArraysEXT");
3511 android::base::endTrace();
3512 break;
3513 }
3514 case OP_glMultiDrawElementsEXT: {
3515 android::base::beginTrace("glMultiDrawElementsEXT decode");
3516 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
3517 uint32_t size_count __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
3518 InputBuffer inptr_count(ptr + 8 + 4 + 4, size_count);
3519 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + size_count);
3520 uint32_t size_indices __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + size_count + 4);
3521 InputBuffer inptr_indices(ptr + 8 + 4 + 4 + size_count + 4 + 4, size_indices);
3522 GLsizei var_primcount = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + size_count + 4 + 4 + size_indices);
3523 if (useChecksum) {
3524 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_count + 4 + 4 + size_indices + 4, ptr + 8 + 4 + 4 + size_count + 4 + 4 + size_indices + 4, checksumSize,
3525 "gles2_decoder_context_t::decode, OP_glMultiDrawElementsEXT: GL checksumCalculator failure\n");
3526 }
3527 #ifdef CHECK_GL_ERRORS
3528 GLint err = this->glGetError();
3529 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glMultiDrawElementsEXT\n", err);
3530 #endif
3531 DECODER_DEBUG_LOG("gles2(%p): glMultiDrawElementsEXT(mode:0x%08x count:%p(%u) type:0x%08x indices:%p(%u) primcount:%d )", stream, var_mode, (const GLsizei*)(inptr_count.get()), size_count, var_type, (const GLvoid* const*)(inptr_indices.get()), size_indices, var_primcount);
3532 this->glMultiDrawElementsEXT(var_mode, (const GLsizei*)(inptr_count.get()), var_type, (const GLvoid* const*)(inptr_indices.get()), var_primcount);
3533 SET_LASTCALL("glMultiDrawElementsEXT");
3534 android::base::endTrace();
3535 break;
3536 }
3537 case OP_glGetPerfMonitorGroupsAMD: {
3538 android::base::beginTrace("glGetPerfMonitorGroupsAMD decode");
3539 uint32_t size_numGroups __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
3540 InputBuffer inptr_numGroups(ptr + 8 + 4, size_numGroups);
3541 GLsizei var_groupsSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + size_numGroups);
3542 uint32_t size_groups __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + size_numGroups + 4);
3543 InputBuffer inptr_groups(ptr + 8 + 4 + size_numGroups + 4 + 4, size_groups);
3544 if (useChecksum) {
3545 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_numGroups + 4 + 4 + size_groups, ptr + 8 + 4 + size_numGroups + 4 + 4 + size_groups, checksumSize,
3546 "gles2_decoder_context_t::decode, OP_glGetPerfMonitorGroupsAMD: GL checksumCalculator failure\n");
3547 }
3548 #ifdef CHECK_GL_ERRORS
3549 GLint err = this->glGetError();
3550 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetPerfMonitorGroupsAMD\n", err);
3551 #endif
3552 DECODER_DEBUG_LOG("gles2(%p): glGetPerfMonitorGroupsAMD(numGroups:%p(%u) groupsSize:%d groups:%p(%u) )", stream, (GLint*)(inptr_numGroups.get()), size_numGroups, var_groupsSize, (GLuint*)(inptr_groups.get()), size_groups);
3553 this->glGetPerfMonitorGroupsAMD((GLint*)(inptr_numGroups.get()), var_groupsSize, (GLuint*)(inptr_groups.get()));
3554 SET_LASTCALL("glGetPerfMonitorGroupsAMD");
3555 android::base::endTrace();
3556 break;
3557 }
3558 case OP_glGetPerfMonitorCountersAMD: {
3559 android::base::beginTrace("glGetPerfMonitorCountersAMD decode");
3560 GLuint var_group = Unpack<GLuint,uint32_t>(ptr + 8);
3561 uint32_t size_numCounters __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
3562 InputBuffer inptr_numCounters(ptr + 8 + 4 + 4, size_numCounters);
3563 uint32_t size_maxActiveCounters __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + size_numCounters);
3564 InputBuffer inptr_maxActiveCounters(ptr + 8 + 4 + 4 + size_numCounters + 4, size_maxActiveCounters);
3565 GLsizei var_counterSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + size_numCounters + 4 + size_maxActiveCounters);
3566 uint32_t size_counters __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + size_numCounters + 4 + size_maxActiveCounters + 4);
3567 InputBuffer inptr_counters(ptr + 8 + 4 + 4 + size_numCounters + 4 + size_maxActiveCounters + 4 + 4, size_counters);
3568 if (useChecksum) {
3569 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_numCounters + 4 + size_maxActiveCounters + 4 + 4 + size_counters, ptr + 8 + 4 + 4 + size_numCounters + 4 + size_maxActiveCounters + 4 + 4 + size_counters, checksumSize,
3570 "gles2_decoder_context_t::decode, OP_glGetPerfMonitorCountersAMD: GL checksumCalculator failure\n");
3571 }
3572 #ifdef CHECK_GL_ERRORS
3573 GLint err = this->glGetError();
3574 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetPerfMonitorCountersAMD\n", err);
3575 #endif
3576 DECODER_DEBUG_LOG("gles2(%p): glGetPerfMonitorCountersAMD(group:%u numCounters:%p(%u) maxActiveCounters:%p(%u) counterSize:%d counters:%p(%u) )", stream, var_group, (GLint*)(inptr_numCounters.get()), size_numCounters, (GLint*)(inptr_maxActiveCounters.get()), size_maxActiveCounters, var_counterSize, (GLuint*)(inptr_counters.get()), size_counters);
3577 this->glGetPerfMonitorCountersAMD(var_group, (GLint*)(inptr_numCounters.get()), (GLint*)(inptr_maxActiveCounters.get()), var_counterSize, (GLuint*)(inptr_counters.get()));
3578 SET_LASTCALL("glGetPerfMonitorCountersAMD");
3579 android::base::endTrace();
3580 break;
3581 }
3582 case OP_glGetPerfMonitorGroupStringAMD: {
3583 android::base::beginTrace("glGetPerfMonitorGroupStringAMD decode");
3584 GLuint var_group = Unpack<GLuint,uint32_t>(ptr + 8);
3585 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
3586 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
3587 InputBuffer inptr_length(ptr + 8 + 4 + 4 + 4, size_length);
3588 uint32_t size_groupString __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_length);
3589 InputBuffer inptr_groupString(ptr + 8 + 4 + 4 + 4 + size_length + 4, size_groupString);
3590 if (useChecksum) {
3591 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_length + 4 + size_groupString, ptr + 8 + 4 + 4 + 4 + size_length + 4 + size_groupString, checksumSize,
3592 "gles2_decoder_context_t::decode, OP_glGetPerfMonitorGroupStringAMD: GL checksumCalculator failure\n");
3593 }
3594 #ifdef CHECK_GL_ERRORS
3595 GLint err = this->glGetError();
3596 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetPerfMonitorGroupStringAMD\n", err);
3597 #endif
3598 DECODER_DEBUG_LOG("gles2(%p): glGetPerfMonitorGroupStringAMD(group:%u bufSize:%d length:%p(%u) groupString:%p(%u) )", stream, var_group, var_bufSize, (GLsizei*)(inptr_length.get()), size_length, (GLchar*)(inptr_groupString.get()), size_groupString);
3599 this->glGetPerfMonitorGroupStringAMD(var_group, var_bufSize, (GLsizei*)(inptr_length.get()), (GLchar*)(inptr_groupString.get()));
3600 SET_LASTCALL("glGetPerfMonitorGroupStringAMD");
3601 android::base::endTrace();
3602 break;
3603 }
3604 case OP_glGetPerfMonitorCounterStringAMD: {
3605 android::base::beginTrace("glGetPerfMonitorCounterStringAMD decode");
3606 GLuint var_group = Unpack<GLuint,uint32_t>(ptr + 8);
3607 GLuint var_counter = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
3608 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
3609 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
3610 InputBuffer inptr_length(ptr + 8 + 4 + 4 + 4 + 4, size_length);
3611 uint32_t size_counterString __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + size_length);
3612 InputBuffer inptr_counterString(ptr + 8 + 4 + 4 + 4 + 4 + size_length + 4, size_counterString);
3613 if (useChecksum) {
3614 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_length + 4 + size_counterString, ptr + 8 + 4 + 4 + 4 + 4 + size_length + 4 + size_counterString, checksumSize,
3615 "gles2_decoder_context_t::decode, OP_glGetPerfMonitorCounterStringAMD: GL checksumCalculator failure\n");
3616 }
3617 #ifdef CHECK_GL_ERRORS
3618 GLint err = this->glGetError();
3619 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetPerfMonitorCounterStringAMD\n", err);
3620 #endif
3621 DECODER_DEBUG_LOG("gles2(%p): glGetPerfMonitorCounterStringAMD(group:%u counter:%u bufSize:%d length:%p(%u) counterString:%p(%u) )", stream, var_group, var_counter, var_bufSize, (GLsizei*)(inptr_length.get()), size_length, (GLchar*)(inptr_counterString.get()), size_counterString);
3622 this->glGetPerfMonitorCounterStringAMD(var_group, var_counter, var_bufSize, (GLsizei*)(inptr_length.get()), (GLchar*)(inptr_counterString.get()));
3623 SET_LASTCALL("glGetPerfMonitorCounterStringAMD");
3624 android::base::endTrace();
3625 break;
3626 }
3627 case OP_glGetPerfMonitorCounterInfoAMD: {
3628 android::base::beginTrace("glGetPerfMonitorCounterInfoAMD decode");
3629 GLuint var_group = Unpack<GLuint,uint32_t>(ptr + 8);
3630 GLuint var_counter = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
3631 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
3632 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
3633 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4, size_data);
3634 if (useChecksum) {
3635 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + size_data, checksumSize,
3636 "gles2_decoder_context_t::decode, OP_glGetPerfMonitorCounterInfoAMD: GL checksumCalculator failure\n");
3637 }
3638 #ifdef CHECK_GL_ERRORS
3639 GLint err = this->glGetError();
3640 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetPerfMonitorCounterInfoAMD\n", err);
3641 #endif
3642 DECODER_DEBUG_LOG("gles2(%p): glGetPerfMonitorCounterInfoAMD(group:%u counter:%u pname:0x%08x data:%p(%u) )", stream, var_group, var_counter, var_pname, (GLvoid*)(inptr_data.get()), size_data);
3643 this->glGetPerfMonitorCounterInfoAMD(var_group, var_counter, var_pname, (GLvoid*)(inptr_data.get()));
3644 SET_LASTCALL("glGetPerfMonitorCounterInfoAMD");
3645 android::base::endTrace();
3646 break;
3647 }
3648 case OP_glGenPerfMonitorsAMD: {
3649 android::base::beginTrace("glGenPerfMonitorsAMD decode");
3650 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
3651 uint32_t size_monitors __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
3652 InputBuffer inptr_monitors(ptr + 8 + 4 + 4, size_monitors);
3653 if (useChecksum) {
3654 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_monitors, ptr + 8 + 4 + 4 + size_monitors, checksumSize,
3655 "gles2_decoder_context_t::decode, OP_glGenPerfMonitorsAMD: GL checksumCalculator failure\n");
3656 }
3657 #ifdef CHECK_GL_ERRORS
3658 GLint err = this->glGetError();
3659 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGenPerfMonitorsAMD\n", err);
3660 #endif
3661 DECODER_DEBUG_LOG("gles2(%p): glGenPerfMonitorsAMD(n:%d monitors:%p(%u) )", stream, var_n, (GLuint*)(inptr_monitors.get()), size_monitors);
3662 this->glGenPerfMonitorsAMD(var_n, (GLuint*)(inptr_monitors.get()));
3663 SET_LASTCALL("glGenPerfMonitorsAMD");
3664 android::base::endTrace();
3665 break;
3666 }
3667 case OP_glDeletePerfMonitorsAMD: {
3668 android::base::beginTrace("glDeletePerfMonitorsAMD decode");
3669 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
3670 uint32_t size_monitors __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
3671 InputBuffer inptr_monitors(ptr + 8 + 4 + 4, size_monitors);
3672 if (useChecksum) {
3673 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_monitors, ptr + 8 + 4 + 4 + size_monitors, checksumSize,
3674 "gles2_decoder_context_t::decode, OP_glDeletePerfMonitorsAMD: GL checksumCalculator failure\n");
3675 }
3676 #ifdef CHECK_GL_ERRORS
3677 GLint err = this->glGetError();
3678 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeletePerfMonitorsAMD\n", err);
3679 #endif
3680 DECODER_DEBUG_LOG("gles2(%p): glDeletePerfMonitorsAMD(n:%d monitors:%p(%u) )", stream, var_n, (GLuint*)(inptr_monitors.get()), size_monitors);
3681 this->glDeletePerfMonitorsAMD(var_n, (GLuint*)(inptr_monitors.get()));
3682 SET_LASTCALL("glDeletePerfMonitorsAMD");
3683 android::base::endTrace();
3684 break;
3685 }
3686 case OP_glSelectPerfMonitorCountersAMD: {
3687 android::base::beginTrace("glSelectPerfMonitorCountersAMD decode");
3688 GLuint var_monitor = Unpack<GLuint,uint32_t>(ptr + 8);
3689 GLboolean var_enable = Unpack<GLboolean,uint8_t>(ptr + 8 + 4);
3690 GLuint var_group = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 1);
3691 GLint var_numCounters = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 1 + 4);
3692 uint32_t size_countersList __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 1 + 4 + 4);
3693 InputBuffer inptr_countersList(ptr + 8 + 4 + 1 + 4 + 4 + 4, size_countersList);
3694 if (useChecksum) {
3695 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 1 + 4 + 4 + 4 + size_countersList, ptr + 8 + 4 + 1 + 4 + 4 + 4 + size_countersList, checksumSize,
3696 "gles2_decoder_context_t::decode, OP_glSelectPerfMonitorCountersAMD: GL checksumCalculator failure\n");
3697 }
3698 #ifdef CHECK_GL_ERRORS
3699 GLint err = this->glGetError();
3700 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glSelectPerfMonitorCountersAMD\n", err);
3701 #endif
3702 DECODER_DEBUG_LOG("gles2(%p): glSelectPerfMonitorCountersAMD(monitor:%u enable:%d group:%u numCounters:%d countersList:%p(%u) )", stream, var_monitor, var_enable, var_group, var_numCounters, (GLuint*)(inptr_countersList.get()), size_countersList);
3703 this->glSelectPerfMonitorCountersAMD(var_monitor, var_enable, var_group, var_numCounters, (GLuint*)(inptr_countersList.get()));
3704 SET_LASTCALL("glSelectPerfMonitorCountersAMD");
3705 android::base::endTrace();
3706 break;
3707 }
3708 case OP_glBeginPerfMonitorAMD: {
3709 android::base::beginTrace("glBeginPerfMonitorAMD decode");
3710 GLuint var_monitor = Unpack<GLuint,uint32_t>(ptr + 8);
3711 if (useChecksum) {
3712 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
3713 "gles2_decoder_context_t::decode, OP_glBeginPerfMonitorAMD: GL checksumCalculator failure\n");
3714 }
3715 #ifdef CHECK_GL_ERRORS
3716 GLint err = this->glGetError();
3717 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBeginPerfMonitorAMD\n", err);
3718 #endif
3719 DECODER_DEBUG_LOG("gles2(%p): glBeginPerfMonitorAMD(monitor:%u )", stream, var_monitor);
3720 this->glBeginPerfMonitorAMD(var_monitor);
3721 SET_LASTCALL("glBeginPerfMonitorAMD");
3722 android::base::endTrace();
3723 break;
3724 }
3725 case OP_glEndPerfMonitorAMD: {
3726 android::base::beginTrace("glEndPerfMonitorAMD decode");
3727 GLuint var_monitor = Unpack<GLuint,uint32_t>(ptr + 8);
3728 if (useChecksum) {
3729 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
3730 "gles2_decoder_context_t::decode, OP_glEndPerfMonitorAMD: GL checksumCalculator failure\n");
3731 }
3732 #ifdef CHECK_GL_ERRORS
3733 GLint err = this->glGetError();
3734 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glEndPerfMonitorAMD\n", err);
3735 #endif
3736 DECODER_DEBUG_LOG("gles2(%p): glEndPerfMonitorAMD(monitor:%u )", stream, var_monitor);
3737 this->glEndPerfMonitorAMD(var_monitor);
3738 SET_LASTCALL("glEndPerfMonitorAMD");
3739 android::base::endTrace();
3740 break;
3741 }
3742 case OP_glGetPerfMonitorCounterDataAMD: {
3743 android::base::beginTrace("glGetPerfMonitorCounterDataAMD decode");
3744 GLuint var_monitor = Unpack<GLuint,uint32_t>(ptr + 8);
3745 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
3746 GLsizei var_dataSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
3747 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
3748 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4, size_data);
3749 uint32_t size_bytesWritten __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + size_data);
3750 InputBuffer inptr_bytesWritten(ptr + 8 + 4 + 4 + 4 + 4 + size_data + 4, size_bytesWritten);
3751 if (useChecksum) {
3752 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_data + 4 + size_bytesWritten, ptr + 8 + 4 + 4 + 4 + 4 + size_data + 4 + size_bytesWritten, checksumSize,
3753 "gles2_decoder_context_t::decode, OP_glGetPerfMonitorCounterDataAMD: GL checksumCalculator failure\n");
3754 }
3755 #ifdef CHECK_GL_ERRORS
3756 GLint err = this->glGetError();
3757 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetPerfMonitorCounterDataAMD\n", err);
3758 #endif
3759 DECODER_DEBUG_LOG("gles2(%p): glGetPerfMonitorCounterDataAMD(monitor:%u pname:0x%08x dataSize:%d data:%p(%u) bytesWritten:%p(%u) )", stream, var_monitor, var_pname, var_dataSize, (GLuint*)(inptr_data.get()), size_data, (GLint*)(inptr_bytesWritten.get()), size_bytesWritten);
3760 this->glGetPerfMonitorCounterDataAMD(var_monitor, var_pname, var_dataSize, (GLuint*)(inptr_data.get()), (GLint*)(inptr_bytesWritten.get()));
3761 SET_LASTCALL("glGetPerfMonitorCounterDataAMD");
3762 android::base::endTrace();
3763 break;
3764 }
3765 case OP_glRenderbufferStorageMultisampleIMG: {
3766 android::base::beginTrace("glRenderbufferStorageMultisampleIMG decode");
3767 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
3768 GLsizei var_samples = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
3769 GLenum var_internalformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
3770 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
3771 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
3772 if (useChecksum) {
3773 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
3774 "gles2_decoder_context_t::decode, OP_glRenderbufferStorageMultisampleIMG: GL checksumCalculator failure\n");
3775 }
3776 #ifdef CHECK_GL_ERRORS
3777 GLint err = this->glGetError();
3778 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glRenderbufferStorageMultisampleIMG\n", err);
3779 #endif
3780 DECODER_DEBUG_LOG("gles2(%p): glRenderbufferStorageMultisampleIMG(target:0x%08x samples:%d internalformat:0x%08x width:%d height:%d )", stream, var_target, var_samples, var_internalformat, var_width, var_height);
3781 this->glRenderbufferStorageMultisampleIMG(var_target, var_samples, var_internalformat, var_width, var_height);
3782 SET_LASTCALL("glRenderbufferStorageMultisampleIMG");
3783 android::base::endTrace();
3784 break;
3785 }
3786 case OP_glFramebufferTexture2DMultisampleIMG: {
3787 android::base::beginTrace("glFramebufferTexture2DMultisampleIMG decode");
3788 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
3789 GLenum var_attachment = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
3790 GLenum var_textarget = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
3791 GLuint var_texture = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4);
3792 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
3793 GLsizei var_samples = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
3794 if (useChecksum) {
3795 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
3796 "gles2_decoder_context_t::decode, OP_glFramebufferTexture2DMultisampleIMG: GL checksumCalculator failure\n");
3797 }
3798 #ifdef CHECK_GL_ERRORS
3799 GLint err = this->glGetError();
3800 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFramebufferTexture2DMultisampleIMG\n", err);
3801 #endif
3802 DECODER_DEBUG_LOG("gles2(%p): glFramebufferTexture2DMultisampleIMG(target:0x%08x attachment:0x%08x textarget:0x%08x texture:%u level:%d samples:%d )", stream, var_target, var_attachment, var_textarget, var_texture, var_level, var_samples);
3803 this->glFramebufferTexture2DMultisampleIMG(var_target, var_attachment, var_textarget, var_texture, var_level, var_samples);
3804 SET_LASTCALL("glFramebufferTexture2DMultisampleIMG");
3805 android::base::endTrace();
3806 break;
3807 }
3808 case OP_glDeleteFencesNV: {
3809 android::base::beginTrace("glDeleteFencesNV decode");
3810 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
3811 uint32_t size_fences __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
3812 InputBuffer inptr_fences(ptr + 8 + 4 + 4, size_fences);
3813 if (useChecksum) {
3814 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_fences, ptr + 8 + 4 + 4 + size_fences, checksumSize,
3815 "gles2_decoder_context_t::decode, OP_glDeleteFencesNV: GL checksumCalculator failure\n");
3816 }
3817 #ifdef CHECK_GL_ERRORS
3818 GLint err = this->glGetError();
3819 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteFencesNV\n", err);
3820 #endif
3821 DECODER_DEBUG_LOG("gles2(%p): glDeleteFencesNV(n:%d fences:%p(%u) )", stream, var_n, (const GLuint*)(inptr_fences.get()), size_fences);
3822 this->glDeleteFencesNV(var_n, (const GLuint*)(inptr_fences.get()));
3823 SET_LASTCALL("glDeleteFencesNV");
3824 android::base::endTrace();
3825 break;
3826 }
3827 case OP_glGenFencesNV: {
3828 android::base::beginTrace("glGenFencesNV decode");
3829 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
3830 uint32_t size_fences __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
3831 InputBuffer inptr_fences(ptr + 8 + 4 + 4, size_fences);
3832 if (useChecksum) {
3833 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_fences, ptr + 8 + 4 + 4 + size_fences, checksumSize,
3834 "gles2_decoder_context_t::decode, OP_glGenFencesNV: GL checksumCalculator failure\n");
3835 }
3836 #ifdef CHECK_GL_ERRORS
3837 GLint err = this->glGetError();
3838 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGenFencesNV\n", err);
3839 #endif
3840 DECODER_DEBUG_LOG("gles2(%p): glGenFencesNV(n:%d fences:%p(%u) )", stream, var_n, (GLuint*)(inptr_fences.get()), size_fences);
3841 this->glGenFencesNV(var_n, (GLuint*)(inptr_fences.get()));
3842 SET_LASTCALL("glGenFencesNV");
3843 android::base::endTrace();
3844 break;
3845 }
3846 case OP_glIsFenceNV: {
3847 android::base::beginTrace("glIsFenceNV decode");
3848 GLuint var_fence = Unpack<GLuint,uint32_t>(ptr + 8);
3849 if (useChecksum) {
3850 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
3851 "gles2_decoder_context_t::decode, OP_glIsFenceNV: GL checksumCalculator failure\n");
3852 }
3853 size_t totalTmpSize = sizeof(GLboolean);
3854 totalTmpSize += checksumSize;
3855 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
3856 #ifdef CHECK_GL_ERRORS
3857 GLint err = this->glGetError();
3858 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsFenceNV\n", err);
3859 #endif
3860 DECODER_DEBUG_LOG("gles2(%p): glIsFenceNV(fence:%u )", stream, var_fence);
3861 *(GLboolean *)(&tmpBuf[0]) = this->glIsFenceNV(var_fence);
3862 if (useChecksum) {
3863 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
3864 }
3865 stream->flush();
3866 SET_LASTCALL("glIsFenceNV");
3867 android::base::endTrace();
3868 break;
3869 }
3870 case OP_glTestFenceNV: {
3871 android::base::beginTrace("glTestFenceNV decode");
3872 GLuint var_fence = Unpack<GLuint,uint32_t>(ptr + 8);
3873 if (useChecksum) {
3874 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
3875 "gles2_decoder_context_t::decode, OP_glTestFenceNV: GL checksumCalculator failure\n");
3876 }
3877 size_t totalTmpSize = sizeof(GLboolean);
3878 totalTmpSize += checksumSize;
3879 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
3880 #ifdef CHECK_GL_ERRORS
3881 GLint err = this->glGetError();
3882 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTestFenceNV\n", err);
3883 #endif
3884 DECODER_DEBUG_LOG("gles2(%p): glTestFenceNV(fence:%u )", stream, var_fence);
3885 *(GLboolean *)(&tmpBuf[0]) = this->glTestFenceNV(var_fence);
3886 if (useChecksum) {
3887 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
3888 }
3889 stream->flush();
3890 SET_LASTCALL("glTestFenceNV");
3891 android::base::endTrace();
3892 break;
3893 }
3894 case OP_glGetFenceivNV: {
3895 android::base::beginTrace("glGetFenceivNV decode");
3896 GLuint var_fence = Unpack<GLuint,uint32_t>(ptr + 8);
3897 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
3898 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
3899 InputBuffer inptr_params(ptr + 8 + 4 + 4 + 4, size_params);
3900 if (useChecksum) {
3901 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + 4 + size_params, checksumSize,
3902 "gles2_decoder_context_t::decode, OP_glGetFenceivNV: GL checksumCalculator failure\n");
3903 }
3904 #ifdef CHECK_GL_ERRORS
3905 GLint err = this->glGetError();
3906 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetFenceivNV\n", err);
3907 #endif
3908 DECODER_DEBUG_LOG("gles2(%p): glGetFenceivNV(fence:%u pname:0x%08x params:%p(%u) )", stream, var_fence, var_pname, (GLint*)(inptr_params.get()), size_params);
3909 this->glGetFenceivNV(var_fence, var_pname, (GLint*)(inptr_params.get()));
3910 SET_LASTCALL("glGetFenceivNV");
3911 android::base::endTrace();
3912 break;
3913 }
3914 case OP_glFinishFenceNV: {
3915 android::base::beginTrace("glFinishFenceNV decode");
3916 GLuint var_fence = Unpack<GLuint,uint32_t>(ptr + 8);
3917 if (useChecksum) {
3918 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
3919 "gles2_decoder_context_t::decode, OP_glFinishFenceNV: GL checksumCalculator failure\n");
3920 }
3921 #ifdef CHECK_GL_ERRORS
3922 GLint err = this->glGetError();
3923 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFinishFenceNV\n", err);
3924 #endif
3925 DECODER_DEBUG_LOG("gles2(%p): glFinishFenceNV(fence:%u )", stream, var_fence);
3926 this->glFinishFenceNV(var_fence);
3927 SET_LASTCALL("glFinishFenceNV");
3928 android::base::endTrace();
3929 break;
3930 }
3931 case OP_glSetFenceNV: {
3932 android::base::beginTrace("glSetFenceNV decode");
3933 GLuint var_fence = Unpack<GLuint,uint32_t>(ptr + 8);
3934 GLenum var_condition = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
3935 if (useChecksum) {
3936 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
3937 "gles2_decoder_context_t::decode, OP_glSetFenceNV: GL checksumCalculator failure\n");
3938 }
3939 #ifdef CHECK_GL_ERRORS
3940 GLint err = this->glGetError();
3941 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glSetFenceNV\n", err);
3942 #endif
3943 DECODER_DEBUG_LOG("gles2(%p): glSetFenceNV(fence:%u condition:0x%08x )", stream, var_fence, var_condition);
3944 this->glSetFenceNV(var_fence, var_condition);
3945 SET_LASTCALL("glSetFenceNV");
3946 android::base::endTrace();
3947 break;
3948 }
3949 case OP_glCoverageMaskNV: {
3950 android::base::beginTrace("glCoverageMaskNV decode");
3951 GLboolean var_mask = Unpack<GLboolean,uint8_t>(ptr + 8);
3952 if (useChecksum) {
3953 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 1, ptr + 8 + 1, checksumSize,
3954 "gles2_decoder_context_t::decode, OP_glCoverageMaskNV: GL checksumCalculator failure\n");
3955 }
3956 #ifdef CHECK_GL_ERRORS
3957 GLint err = this->glGetError();
3958 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCoverageMaskNV\n", err);
3959 #endif
3960 DECODER_DEBUG_LOG("gles2(%p): glCoverageMaskNV(mask:%d )", stream, var_mask);
3961 this->glCoverageMaskNV(var_mask);
3962 SET_LASTCALL("glCoverageMaskNV");
3963 android::base::endTrace();
3964 break;
3965 }
3966 case OP_glCoverageOperationNV: {
3967 android::base::beginTrace("glCoverageOperationNV decode");
3968 GLenum var_operation = Unpack<GLenum,uint32_t>(ptr + 8);
3969 if (useChecksum) {
3970 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
3971 "gles2_decoder_context_t::decode, OP_glCoverageOperationNV: GL checksumCalculator failure\n");
3972 }
3973 #ifdef CHECK_GL_ERRORS
3974 GLint err = this->glGetError();
3975 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCoverageOperationNV\n", err);
3976 #endif
3977 DECODER_DEBUG_LOG("gles2(%p): glCoverageOperationNV(operation:0x%08x )", stream, var_operation);
3978 this->glCoverageOperationNV(var_operation);
3979 SET_LASTCALL("glCoverageOperationNV");
3980 android::base::endTrace();
3981 break;
3982 }
3983 case OP_glGetDriverControlsQCOM: {
3984 android::base::beginTrace("glGetDriverControlsQCOM decode");
3985 uint32_t size_num __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
3986 InputBuffer inptr_num(ptr + 8 + 4, size_num);
3987 GLsizei var_size = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + size_num);
3988 uint32_t size_driverControls __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + size_num + 4);
3989 InputBuffer inptr_driverControls(ptr + 8 + 4 + size_num + 4 + 4, size_driverControls);
3990 if (useChecksum) {
3991 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_num + 4 + 4 + size_driverControls, ptr + 8 + 4 + size_num + 4 + 4 + size_driverControls, checksumSize,
3992 "gles2_decoder_context_t::decode, OP_glGetDriverControlsQCOM: GL checksumCalculator failure\n");
3993 }
3994 #ifdef CHECK_GL_ERRORS
3995 GLint err = this->glGetError();
3996 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetDriverControlsQCOM\n", err);
3997 #endif
3998 DECODER_DEBUG_LOG("gles2(%p): glGetDriverControlsQCOM(num:%p(%u) size:%d driverControls:%p(%u) )", stream, (GLint*)(inptr_num.get()), size_num, var_size, (GLuint*)(inptr_driverControls.get()), size_driverControls);
3999 this->glGetDriverControlsQCOM((GLint*)(inptr_num.get()), var_size, (GLuint*)(inptr_driverControls.get()));
4000 SET_LASTCALL("glGetDriverControlsQCOM");
4001 android::base::endTrace();
4002 break;
4003 }
4004 case OP_glGetDriverControlStringQCOM: {
4005 android::base::beginTrace("glGetDriverControlStringQCOM decode");
4006 GLuint var_driverControl = Unpack<GLuint,uint32_t>(ptr + 8);
4007 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
4008 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
4009 InputBuffer inptr_length(ptr + 8 + 4 + 4 + 4, size_length);
4010 uint32_t size_driverControlString __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_length);
4011 InputBuffer inptr_driverControlString(ptr + 8 + 4 + 4 + 4 + size_length + 4, size_driverControlString);
4012 if (useChecksum) {
4013 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_length + 4 + size_driverControlString, ptr + 8 + 4 + 4 + 4 + size_length + 4 + size_driverControlString, checksumSize,
4014 "gles2_decoder_context_t::decode, OP_glGetDriverControlStringQCOM: GL checksumCalculator failure\n");
4015 }
4016 #ifdef CHECK_GL_ERRORS
4017 GLint err = this->glGetError();
4018 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetDriverControlStringQCOM\n", err);
4019 #endif
4020 DECODER_DEBUG_LOG("gles2(%p): glGetDriverControlStringQCOM(driverControl:%u bufSize:%d length:%p(%u) driverControlString:%p(%u) )", stream, var_driverControl, var_bufSize, (GLsizei*)(inptr_length.get()), size_length, (GLchar*)(inptr_driverControlString.get()), size_driverControlString);
4021 this->glGetDriverControlStringQCOM(var_driverControl, var_bufSize, (GLsizei*)(inptr_length.get()), (GLchar*)(inptr_driverControlString.get()));
4022 SET_LASTCALL("glGetDriverControlStringQCOM");
4023 android::base::endTrace();
4024 break;
4025 }
4026 case OP_glEnableDriverControlQCOM: {
4027 android::base::beginTrace("glEnableDriverControlQCOM decode");
4028 GLuint var_driverControl = Unpack<GLuint,uint32_t>(ptr + 8);
4029 if (useChecksum) {
4030 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
4031 "gles2_decoder_context_t::decode, OP_glEnableDriverControlQCOM: GL checksumCalculator failure\n");
4032 }
4033 #ifdef CHECK_GL_ERRORS
4034 GLint err = this->glGetError();
4035 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glEnableDriverControlQCOM\n", err);
4036 #endif
4037 DECODER_DEBUG_LOG("gles2(%p): glEnableDriverControlQCOM(driverControl:%u )", stream, var_driverControl);
4038 this->glEnableDriverControlQCOM(var_driverControl);
4039 SET_LASTCALL("glEnableDriverControlQCOM");
4040 android::base::endTrace();
4041 break;
4042 }
4043 case OP_glDisableDriverControlQCOM: {
4044 android::base::beginTrace("glDisableDriverControlQCOM decode");
4045 GLuint var_driverControl = Unpack<GLuint,uint32_t>(ptr + 8);
4046 if (useChecksum) {
4047 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
4048 "gles2_decoder_context_t::decode, OP_glDisableDriverControlQCOM: GL checksumCalculator failure\n");
4049 }
4050 #ifdef CHECK_GL_ERRORS
4051 GLint err = this->glGetError();
4052 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDisableDriverControlQCOM\n", err);
4053 #endif
4054 DECODER_DEBUG_LOG("gles2(%p): glDisableDriverControlQCOM(driverControl:%u )", stream, var_driverControl);
4055 this->glDisableDriverControlQCOM(var_driverControl);
4056 SET_LASTCALL("glDisableDriverControlQCOM");
4057 android::base::endTrace();
4058 break;
4059 }
4060 case OP_glExtGetTexturesQCOM: {
4061 android::base::beginTrace("glExtGetTexturesQCOM decode");
4062 uint32_t size_textures __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
4063 InputBuffer inptr_textures(ptr + 8 + 4, size_textures);
4064 GLint var_maxTextures = Unpack<GLint,uint32_t>(ptr + 8 + 4 + size_textures);
4065 uint32_t size_numTextures __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + size_textures + 4);
4066 InputBuffer inptr_numTextures(ptr + 8 + 4 + size_textures + 4 + 4, size_numTextures);
4067 if (useChecksum) {
4068 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_textures + 4 + 4 + size_numTextures, ptr + 8 + 4 + size_textures + 4 + 4 + size_numTextures, checksumSize,
4069 "gles2_decoder_context_t::decode, OP_glExtGetTexturesQCOM: GL checksumCalculator failure\n");
4070 }
4071 #ifdef CHECK_GL_ERRORS
4072 GLint err = this->glGetError();
4073 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glExtGetTexturesQCOM\n", err);
4074 #endif
4075 DECODER_DEBUG_LOG("gles2(%p): glExtGetTexturesQCOM(textures:%p(%u) maxTextures:%d numTextures:%p(%u) )", stream, (GLuint*)(inptr_textures.get()), size_textures, var_maxTextures, (GLint*)(inptr_numTextures.get()), size_numTextures);
4076 this->glExtGetTexturesQCOM((GLuint*)(inptr_textures.get()), var_maxTextures, (GLint*)(inptr_numTextures.get()));
4077 SET_LASTCALL("glExtGetTexturesQCOM");
4078 android::base::endTrace();
4079 break;
4080 }
4081 case OP_glExtGetBuffersQCOM: {
4082 android::base::beginTrace("glExtGetBuffersQCOM decode");
4083 uint32_t size_buffers __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
4084 InputBuffer inptr_buffers(ptr + 8 + 4, size_buffers);
4085 GLint var_maxBuffers = Unpack<GLint,uint32_t>(ptr + 8 + 4 + size_buffers);
4086 uint32_t size_numBuffers __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + size_buffers + 4);
4087 InputBuffer inptr_numBuffers(ptr + 8 + 4 + size_buffers + 4 + 4, size_numBuffers);
4088 if (useChecksum) {
4089 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_buffers + 4 + 4 + size_numBuffers, ptr + 8 + 4 + size_buffers + 4 + 4 + size_numBuffers, checksumSize,
4090 "gles2_decoder_context_t::decode, OP_glExtGetBuffersQCOM: GL checksumCalculator failure\n");
4091 }
4092 #ifdef CHECK_GL_ERRORS
4093 GLint err = this->glGetError();
4094 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glExtGetBuffersQCOM\n", err);
4095 #endif
4096 DECODER_DEBUG_LOG("gles2(%p): glExtGetBuffersQCOM(buffers:%p(%u) maxBuffers:%d numBuffers:%p(%u) )", stream, (GLuint*)(inptr_buffers.get()), size_buffers, var_maxBuffers, (GLint*)(inptr_numBuffers.get()), size_numBuffers);
4097 this->glExtGetBuffersQCOM((GLuint*)(inptr_buffers.get()), var_maxBuffers, (GLint*)(inptr_numBuffers.get()));
4098 SET_LASTCALL("glExtGetBuffersQCOM");
4099 android::base::endTrace();
4100 break;
4101 }
4102 case OP_glExtGetRenderbuffersQCOM: {
4103 android::base::beginTrace("glExtGetRenderbuffersQCOM decode");
4104 uint32_t size_renderbuffers __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
4105 InputBuffer inptr_renderbuffers(ptr + 8 + 4, size_renderbuffers);
4106 GLint var_maxRenderbuffers = Unpack<GLint,uint32_t>(ptr + 8 + 4 + size_renderbuffers);
4107 uint32_t size_numRenderbuffers __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + size_renderbuffers + 4);
4108 InputBuffer inptr_numRenderbuffers(ptr + 8 + 4 + size_renderbuffers + 4 + 4, size_numRenderbuffers);
4109 if (useChecksum) {
4110 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_renderbuffers + 4 + 4 + size_numRenderbuffers, ptr + 8 + 4 + size_renderbuffers + 4 + 4 + size_numRenderbuffers, checksumSize,
4111 "gles2_decoder_context_t::decode, OP_glExtGetRenderbuffersQCOM: GL checksumCalculator failure\n");
4112 }
4113 #ifdef CHECK_GL_ERRORS
4114 GLint err = this->glGetError();
4115 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glExtGetRenderbuffersQCOM\n", err);
4116 #endif
4117 DECODER_DEBUG_LOG("gles2(%p): glExtGetRenderbuffersQCOM(renderbuffers:%p(%u) maxRenderbuffers:%d numRenderbuffers:%p(%u) )", stream, (GLuint*)(inptr_renderbuffers.get()), size_renderbuffers, var_maxRenderbuffers, (GLint*)(inptr_numRenderbuffers.get()), size_numRenderbuffers);
4118 this->glExtGetRenderbuffersQCOM((GLuint*)(inptr_renderbuffers.get()), var_maxRenderbuffers, (GLint*)(inptr_numRenderbuffers.get()));
4119 SET_LASTCALL("glExtGetRenderbuffersQCOM");
4120 android::base::endTrace();
4121 break;
4122 }
4123 case OP_glExtGetFramebuffersQCOM: {
4124 android::base::beginTrace("glExtGetFramebuffersQCOM decode");
4125 uint32_t size_framebuffers __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
4126 InputBuffer inptr_framebuffers(ptr + 8 + 4, size_framebuffers);
4127 GLint var_maxFramebuffers = Unpack<GLint,uint32_t>(ptr + 8 + 4 + size_framebuffers);
4128 uint32_t size_numFramebuffers __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + size_framebuffers + 4);
4129 InputBuffer inptr_numFramebuffers(ptr + 8 + 4 + size_framebuffers + 4 + 4, size_numFramebuffers);
4130 if (useChecksum) {
4131 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_framebuffers + 4 + 4 + size_numFramebuffers, ptr + 8 + 4 + size_framebuffers + 4 + 4 + size_numFramebuffers, checksumSize,
4132 "gles2_decoder_context_t::decode, OP_glExtGetFramebuffersQCOM: GL checksumCalculator failure\n");
4133 }
4134 #ifdef CHECK_GL_ERRORS
4135 GLint err = this->glGetError();
4136 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glExtGetFramebuffersQCOM\n", err);
4137 #endif
4138 DECODER_DEBUG_LOG("gles2(%p): glExtGetFramebuffersQCOM(framebuffers:%p(%u) maxFramebuffers:%d numFramebuffers:%p(%u) )", stream, (GLuint*)(inptr_framebuffers.get()), size_framebuffers, var_maxFramebuffers, (GLint*)(inptr_numFramebuffers.get()), size_numFramebuffers);
4139 this->glExtGetFramebuffersQCOM((GLuint*)(inptr_framebuffers.get()), var_maxFramebuffers, (GLint*)(inptr_numFramebuffers.get()));
4140 SET_LASTCALL("glExtGetFramebuffersQCOM");
4141 android::base::endTrace();
4142 break;
4143 }
4144 case OP_glExtGetTexLevelParameterivQCOM: {
4145 android::base::beginTrace("glExtGetTexLevelParameterivQCOM decode");
4146 GLuint var_texture = Unpack<GLuint,uint32_t>(ptr + 8);
4147 GLenum var_face = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
4148 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
4149 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4);
4150 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
4151 InputBuffer inptr_params(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_params);
4152 if (useChecksum) {
4153 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_params, checksumSize,
4154 "gles2_decoder_context_t::decode, OP_glExtGetTexLevelParameterivQCOM: GL checksumCalculator failure\n");
4155 }
4156 #ifdef CHECK_GL_ERRORS
4157 GLint err = this->glGetError();
4158 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glExtGetTexLevelParameterivQCOM\n", err);
4159 #endif
4160 DECODER_DEBUG_LOG("gles2(%p): glExtGetTexLevelParameterivQCOM(texture:%u face:0x%08x level:%d pname:0x%08x params:%p(%u) )", stream, var_texture, var_face, var_level, var_pname, (GLint*)(inptr_params.get()), size_params);
4161 this->glExtGetTexLevelParameterivQCOM(var_texture, var_face, var_level, var_pname, (GLint*)(inptr_params.get()));
4162 SET_LASTCALL("glExtGetTexLevelParameterivQCOM");
4163 android::base::endTrace();
4164 break;
4165 }
4166 case OP_glExtTexObjectStateOverrideiQCOM: {
4167 android::base::beginTrace("glExtTexObjectStateOverrideiQCOM decode");
4168 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4169 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
4170 GLint var_param = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
4171 if (useChecksum) {
4172 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
4173 "gles2_decoder_context_t::decode, OP_glExtTexObjectStateOverrideiQCOM: GL checksumCalculator failure\n");
4174 }
4175 #ifdef CHECK_GL_ERRORS
4176 GLint err = this->glGetError();
4177 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glExtTexObjectStateOverrideiQCOM\n", err);
4178 #endif
4179 DECODER_DEBUG_LOG("gles2(%p): glExtTexObjectStateOverrideiQCOM(target:0x%08x pname:0x%08x param:%d )", stream, var_target, var_pname, var_param);
4180 this->glExtTexObjectStateOverrideiQCOM(var_target, var_pname, var_param);
4181 SET_LASTCALL("glExtTexObjectStateOverrideiQCOM");
4182 android::base::endTrace();
4183 break;
4184 }
4185 case OP_glExtGetTexSubImageQCOM: {
4186 android::base::beginTrace("glExtGetTexSubImageQCOM decode");
4187 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4188 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
4189 GLint var_xoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
4190 GLint var_yoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
4191 GLint var_zoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
4192 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
4193 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
4194 GLsizei var_depth = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4195 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4196 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4197 uint32_t size_texels __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4198 InputBuffer inptr_texels(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_texels);
4199 if (useChecksum) {
4200 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_texels, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_texels, checksumSize,
4201 "gles2_decoder_context_t::decode, OP_glExtGetTexSubImageQCOM: GL checksumCalculator failure\n");
4202 }
4203 #ifdef CHECK_GL_ERRORS
4204 GLint err = this->glGetError();
4205 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glExtGetTexSubImageQCOM\n", err);
4206 #endif
4207 DECODER_DEBUG_LOG("gles2(%p): glExtGetTexSubImageQCOM(target:0x%08x level:%d xoffset:%d yoffset:%d zoffset:%d width:%d height:%d depth:%d format:0x%08x type:0x%08x texels:%p(%u) )", stream, var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_type, (GLvoid*)(inptr_texels.get()), size_texels);
4208 this->glExtGetTexSubImageQCOM(var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_type, (GLvoid*)(inptr_texels.get()));
4209 SET_LASTCALL("glExtGetTexSubImageQCOM");
4210 android::base::endTrace();
4211 break;
4212 }
4213 case OP_glExtGetBufferPointervQCOM: {
4214 android::base::beginTrace("glExtGetBufferPointervQCOM decode");
4215 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4216 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
4217 InputBuffer inptr_params(ptr + 8 + 4 + 4, size_params);
4218 if (useChecksum) {
4219 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + size_params, checksumSize,
4220 "gles2_decoder_context_t::decode, OP_glExtGetBufferPointervQCOM: GL checksumCalculator failure\n");
4221 }
4222 #ifdef CHECK_GL_ERRORS
4223 GLint err = this->glGetError();
4224 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glExtGetBufferPointervQCOM\n", err);
4225 #endif
4226 DECODER_DEBUG_LOG("gles2(%p): glExtGetBufferPointervQCOM(target:0x%08x params:%p(%u) )", stream, var_target, (GLvoidptr*)(inptr_params.get()), size_params);
4227 this->glExtGetBufferPointervQCOM(var_target, (GLvoidptr*)(inptr_params.get()));
4228 SET_LASTCALL("glExtGetBufferPointervQCOM");
4229 android::base::endTrace();
4230 break;
4231 }
4232 case OP_glExtGetShadersQCOM: {
4233 android::base::beginTrace("glExtGetShadersQCOM decode");
4234 uint32_t size_shaders __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
4235 InputBuffer inptr_shaders(ptr + 8 + 4, size_shaders);
4236 GLint var_maxShaders = Unpack<GLint,uint32_t>(ptr + 8 + 4 + size_shaders);
4237 uint32_t size_numShaders __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + size_shaders + 4);
4238 InputBuffer inptr_numShaders(ptr + 8 + 4 + size_shaders + 4 + 4, size_numShaders);
4239 if (useChecksum) {
4240 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_shaders + 4 + 4 + size_numShaders, ptr + 8 + 4 + size_shaders + 4 + 4 + size_numShaders, checksumSize,
4241 "gles2_decoder_context_t::decode, OP_glExtGetShadersQCOM: GL checksumCalculator failure\n");
4242 }
4243 #ifdef CHECK_GL_ERRORS
4244 GLint err = this->glGetError();
4245 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glExtGetShadersQCOM\n", err);
4246 #endif
4247 DECODER_DEBUG_LOG("gles2(%p): glExtGetShadersQCOM(shaders:%p(%u) maxShaders:%d numShaders:%p(%u) )", stream, (GLuint*)(inptr_shaders.get()), size_shaders, var_maxShaders, (GLint*)(inptr_numShaders.get()), size_numShaders);
4248 this->glExtGetShadersQCOM((GLuint*)(inptr_shaders.get()), var_maxShaders, (GLint*)(inptr_numShaders.get()));
4249 SET_LASTCALL("glExtGetShadersQCOM");
4250 android::base::endTrace();
4251 break;
4252 }
4253 case OP_glExtGetProgramsQCOM: {
4254 android::base::beginTrace("glExtGetProgramsQCOM decode");
4255 uint32_t size_programs __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
4256 InputBuffer inptr_programs(ptr + 8 + 4, size_programs);
4257 GLint var_maxPrograms = Unpack<GLint,uint32_t>(ptr + 8 + 4 + size_programs);
4258 uint32_t size_numPrograms __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + size_programs + 4);
4259 InputBuffer inptr_numPrograms(ptr + 8 + 4 + size_programs + 4 + 4, size_numPrograms);
4260 if (useChecksum) {
4261 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_programs + 4 + 4 + size_numPrograms, ptr + 8 + 4 + size_programs + 4 + 4 + size_numPrograms, checksumSize,
4262 "gles2_decoder_context_t::decode, OP_glExtGetProgramsQCOM: GL checksumCalculator failure\n");
4263 }
4264 #ifdef CHECK_GL_ERRORS
4265 GLint err = this->glGetError();
4266 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glExtGetProgramsQCOM\n", err);
4267 #endif
4268 DECODER_DEBUG_LOG("gles2(%p): glExtGetProgramsQCOM(programs:%p(%u) maxPrograms:%d numPrograms:%p(%u) )", stream, (GLuint*)(inptr_programs.get()), size_programs, var_maxPrograms, (GLint*)(inptr_numPrograms.get()), size_numPrograms);
4269 this->glExtGetProgramsQCOM((GLuint*)(inptr_programs.get()), var_maxPrograms, (GLint*)(inptr_numPrograms.get()));
4270 SET_LASTCALL("glExtGetProgramsQCOM");
4271 android::base::endTrace();
4272 break;
4273 }
4274 case OP_glExtIsProgramBinaryQCOM: {
4275 android::base::beginTrace("glExtIsProgramBinaryQCOM decode");
4276 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
4277 if (useChecksum) {
4278 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
4279 "gles2_decoder_context_t::decode, OP_glExtIsProgramBinaryQCOM: GL checksumCalculator failure\n");
4280 }
4281 size_t totalTmpSize = sizeof(GLboolean);
4282 totalTmpSize += checksumSize;
4283 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
4284 #ifdef CHECK_GL_ERRORS
4285 GLint err = this->glGetError();
4286 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glExtIsProgramBinaryQCOM\n", err);
4287 #endif
4288 DECODER_DEBUG_LOG("gles2(%p): glExtIsProgramBinaryQCOM(program:%u )", stream, var_program);
4289 *(GLboolean *)(&tmpBuf[0]) = this->glExtIsProgramBinaryQCOM(var_program);
4290 if (useChecksum) {
4291 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
4292 }
4293 stream->flush();
4294 SET_LASTCALL("glExtIsProgramBinaryQCOM");
4295 android::base::endTrace();
4296 break;
4297 }
4298 case OP_glExtGetProgramBinarySourceQCOM: {
4299 android::base::beginTrace("glExtGetProgramBinarySourceQCOM decode");
4300 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
4301 GLenum var_shadertype = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
4302 uint32_t size_source __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
4303 InputBuffer inptr_source(ptr + 8 + 4 + 4 + 4, size_source);
4304 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_source);
4305 InputBuffer inptr_length(ptr + 8 + 4 + 4 + 4 + size_source + 4, size_length);
4306 if (useChecksum) {
4307 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_source + 4 + size_length, ptr + 8 + 4 + 4 + 4 + size_source + 4 + size_length, checksumSize,
4308 "gles2_decoder_context_t::decode, OP_glExtGetProgramBinarySourceQCOM: GL checksumCalculator failure\n");
4309 }
4310 #ifdef CHECK_GL_ERRORS
4311 GLint err = this->glGetError();
4312 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glExtGetProgramBinarySourceQCOM\n", err);
4313 #endif
4314 DECODER_DEBUG_LOG("gles2(%p): glExtGetProgramBinarySourceQCOM(program:%u shadertype:0x%08x source:%p(%u) length:%p(%u) )", stream, var_program, var_shadertype, (GLchar*)(inptr_source.get()), size_source, (GLint*)(inptr_length.get()), size_length);
4315 this->glExtGetProgramBinarySourceQCOM(var_program, var_shadertype, (GLchar*)(inptr_source.get()), (GLint*)(inptr_length.get()));
4316 SET_LASTCALL("glExtGetProgramBinarySourceQCOM");
4317 android::base::endTrace();
4318 break;
4319 }
4320 case OP_glStartTilingQCOM: {
4321 android::base::beginTrace("glStartTilingQCOM decode");
4322 GLuint var_x = Unpack<GLuint,uint32_t>(ptr + 8);
4323 GLuint var_y = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
4324 GLuint var_width = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
4325 GLuint var_height = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4);
4326 GLbitfield var_preserveMask = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
4327 if (useChecksum) {
4328 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
4329 "gles2_decoder_context_t::decode, OP_glStartTilingQCOM: GL checksumCalculator failure\n");
4330 }
4331 #ifdef CHECK_GL_ERRORS
4332 GLint err = this->glGetError();
4333 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glStartTilingQCOM\n", err);
4334 #endif
4335 DECODER_DEBUG_LOG("gles2(%p): glStartTilingQCOM(x:%u y:%u width:%u height:%u preserveMask:0x%08x )", stream, var_x, var_y, var_width, var_height, var_preserveMask);
4336 this->glStartTilingQCOM(var_x, var_y, var_width, var_height, var_preserveMask);
4337 SET_LASTCALL("glStartTilingQCOM");
4338 android::base::endTrace();
4339 break;
4340 }
4341 case OP_glEndTilingQCOM: {
4342 android::base::beginTrace("glEndTilingQCOM decode");
4343 GLbitfield var_preserveMask = Unpack<GLbitfield,uint32_t>(ptr + 8);
4344 if (useChecksum) {
4345 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
4346 "gles2_decoder_context_t::decode, OP_glEndTilingQCOM: GL checksumCalculator failure\n");
4347 }
4348 #ifdef CHECK_GL_ERRORS
4349 GLint err = this->glGetError();
4350 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glEndTilingQCOM\n", err);
4351 #endif
4352 DECODER_DEBUG_LOG("gles2(%p): glEndTilingQCOM(preserveMask:0x%08x )", stream, var_preserveMask);
4353 this->glEndTilingQCOM(var_preserveMask);
4354 SET_LASTCALL("glEndTilingQCOM");
4355 android::base::endTrace();
4356 break;
4357 }
4358 case OP_glVertexAttribPointerData: {
4359 android::base::beginTrace("glVertexAttribPointerData decode");
4360 GLuint var_indx = Unpack<GLuint,uint32_t>(ptr + 8);
4361 GLint var_size = Unpack<GLint,uint32_t>(ptr + 8 + 4);
4362 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
4363 GLboolean var_normalized = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4);
4364 GLsizei var_stride = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1);
4365 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1 + 4);
4366 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4, size_data);
4367 GLuint var_datalen = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4 + size_data);
4368 if (useChecksum) {
4369 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + 4 + size_data + 4, ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4 + size_data + 4, checksumSize,
4370 "gles2_decoder_context_t::decode, OP_glVertexAttribPointerData: GL checksumCalculator failure\n");
4371 }
4372 #ifdef CHECK_GL_ERRORS
4373 GLint err = this->glGetError();
4374 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttribPointerData\n", err);
4375 #endif
4376 DECODER_DEBUG_LOG("gles2(%p): glVertexAttribPointerData(indx:%u size:%d type:0x%08x normalized:%d stride:%d data:%p(%u) datalen:%u )", stream, var_indx, var_size, var_type, var_normalized, var_stride, (void*)(inptr_data.get()), size_data, var_datalen);
4377 this->glVertexAttribPointerData(this, var_indx, var_size, var_type, var_normalized, var_stride, (void*)(inptr_data.get()), var_datalen);
4378 SET_LASTCALL("glVertexAttribPointerData");
4379 android::base::endTrace();
4380 break;
4381 }
4382 case OP_glVertexAttribPointerOffset: {
4383 android::base::beginTrace("glVertexAttribPointerOffset decode");
4384 GLuint var_indx = Unpack<GLuint,uint32_t>(ptr + 8);
4385 GLint var_size = Unpack<GLint,uint32_t>(ptr + 8 + 4);
4386 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
4387 GLboolean var_normalized = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4);
4388 GLsizei var_stride = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1);
4389 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1 + 4);
4390 if (useChecksum) {
4391 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4, checksumSize,
4392 "gles2_decoder_context_t::decode, OP_glVertexAttribPointerOffset: GL checksumCalculator failure\n");
4393 }
4394 #ifdef CHECK_GL_ERRORS
4395 GLint err = this->glGetError();
4396 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttribPointerOffset\n", err);
4397 #endif
4398 DECODER_DEBUG_LOG("gles2(%p): glVertexAttribPointerOffset(indx:%u size:%d type:0x%08x normalized:%d stride:%d offset:%u )", stream, var_indx, var_size, var_type, var_normalized, var_stride, var_offset);
4399 this->glVertexAttribPointerOffset(this, var_indx, var_size, var_type, var_normalized, var_stride, var_offset);
4400 SET_LASTCALL("glVertexAttribPointerOffset");
4401 android::base::endTrace();
4402 break;
4403 }
4404 case OP_glDrawElementsOffset: {
4405 android::base::beginTrace("glDrawElementsOffset decode");
4406 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
4407 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
4408 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
4409 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4);
4410 if (useChecksum) {
4411 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
4412 "gles2_decoder_context_t::decode, OP_glDrawElementsOffset: GL checksumCalculator failure\n");
4413 }
4414 #ifdef CHECK_GL_ERRORS
4415 GLint err = this->glGetError();
4416 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawElementsOffset\n", err);
4417 #endif
4418 DECODER_DEBUG_LOG("gles2(%p): glDrawElementsOffset(mode:0x%08x count:%d type:0x%08x offset:%u )", stream, var_mode, var_count, var_type, var_offset);
4419 this->glDrawElementsOffset(this, var_mode, var_count, var_type, var_offset);
4420 SET_LASTCALL("glDrawElementsOffset");
4421 android::base::endTrace();
4422 break;
4423 }
4424 case OP_glDrawElementsData: {
4425 android::base::beginTrace("glDrawElementsData decode");
4426 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
4427 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
4428 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
4429 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
4430 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4, size_data);
4431 GLuint var_datalen = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + size_data);
4432 if (useChecksum) {
4433 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_data + 4, ptr + 8 + 4 + 4 + 4 + 4 + size_data + 4, checksumSize,
4434 "gles2_decoder_context_t::decode, OP_glDrawElementsData: GL checksumCalculator failure\n");
4435 }
4436 #ifdef CHECK_GL_ERRORS
4437 GLint err = this->glGetError();
4438 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawElementsData\n", err);
4439 #endif
4440 DECODER_DEBUG_LOG("gles2(%p): glDrawElementsData(mode:0x%08x count:%d type:0x%08x data:%p(%u) datalen:%u )", stream, var_mode, var_count, var_type, (void*)(inptr_data.get()), size_data, var_datalen);
4441 this->glDrawElementsData(this, var_mode, var_count, var_type, (void*)(inptr_data.get()), var_datalen);
4442 SET_LASTCALL("glDrawElementsData");
4443 android::base::endTrace();
4444 break;
4445 }
4446 case OP_glGetCompressedTextureFormats: {
4447 android::base::beginTrace("glGetCompressedTextureFormats decode");
4448 int var_count = Unpack<int,uint32_t>(ptr + 8);
4449 uint32_t size_formats __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
4450 if (useChecksum) {
4451 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
4452 "gles2_decoder_context_t::decode, OP_glGetCompressedTextureFormats: GL checksumCalculator failure\n");
4453 }
4454 size_t totalTmpSize = size_formats;
4455 totalTmpSize += checksumSize;
4456 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
4457 OutputBuffer outptr_formats(&tmpBuf[0], size_formats);
4458 #ifdef CHECK_GL_ERRORS
4459 GLint err = this->glGetError();
4460 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetCompressedTextureFormats\n", err);
4461 #endif
4462 DECODER_DEBUG_LOG("gles2(%p): glGetCompressedTextureFormats(count:%d formats:%p(%u) )", stream, var_count, (GLint*)(outptr_formats.get()), size_formats);
4463 this->glGetCompressedTextureFormats(this, var_count, (GLint*)(outptr_formats.get()));
4464 outptr_formats.flush();
4465 if (useChecksum) {
4466 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
4467 }
4468 stream->flush();
4469 SET_LASTCALL("glGetCompressedTextureFormats");
4470 android::base::endTrace();
4471 break;
4472 }
4473 case OP_glShaderString: {
4474 android::base::beginTrace("glShaderString decode");
4475 GLuint var_shader = Unpack<GLuint,uint32_t>(ptr + 8);
4476 uint32_t size_string __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
4477 InputBuffer inptr_string(ptr + 8 + 4 + 4, size_string);
4478 GLsizei var_len = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + size_string);
4479 if (useChecksum) {
4480 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_string + 4, ptr + 8 + 4 + 4 + size_string + 4, checksumSize,
4481 "gles2_decoder_context_t::decode, OP_glShaderString: GL checksumCalculator failure\n");
4482 }
4483 #ifdef CHECK_GL_ERRORS
4484 GLint err = this->glGetError();
4485 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glShaderString\n", err);
4486 #endif
4487 DECODER_DEBUG_LOG("gles2(%p): glShaderString(shader:%u string:%p(%u) len:%d )", stream, var_shader, (const GLchar*)(inptr_string.get()), size_string, var_len);
4488 this->glShaderString(this, var_shader, (const GLchar*)(inptr_string.get()), var_len);
4489 SET_LASTCALL("glShaderString");
4490 android::base::endTrace();
4491 break;
4492 }
4493 case OP_glFinishRoundTrip: {
4494 android::base::beginTrace("glFinishRoundTrip decode");
4495 if (useChecksum) {
4496 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize,
4497 "gles2_decoder_context_t::decode, OP_glFinishRoundTrip: GL checksumCalculator failure\n");
4498 }
4499 size_t totalTmpSize = sizeof(int);
4500 totalTmpSize += checksumSize;
4501 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
4502 #ifdef CHECK_GL_ERRORS
4503 GLint err = this->glGetError();
4504 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFinishRoundTrip\n", err);
4505 #endif
4506 DECODER_DEBUG_LOG("gles2(%p): glFinishRoundTrip()", stream);
4507 *(int *)(&tmpBuf[0]) = this->glFinishRoundTrip(this);
4508 if (useChecksum) {
4509 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
4510 }
4511 stream->flush();
4512 SET_LASTCALL("glFinishRoundTrip");
4513 android::base::endTrace();
4514 break;
4515 }
4516 case OP_glGenVertexArrays: {
4517 android::base::beginTrace("glGenVertexArrays decode");
4518 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
4519 uint32_t size_arrays __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
4520 if (useChecksum) {
4521 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
4522 "gles2_decoder_context_t::decode, OP_glGenVertexArrays: GL checksumCalculator failure\n");
4523 }
4524 size_t totalTmpSize = size_arrays;
4525 totalTmpSize += checksumSize;
4526 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
4527 OutputBuffer outptr_arrays(&tmpBuf[0], size_arrays);
4528 #ifdef CHECK_GL_ERRORS
4529 GLint err = this->glGetError();
4530 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGenVertexArrays\n", err);
4531 #endif
4532 DECODER_DEBUG_LOG("gles2(%p): glGenVertexArrays(n:%d arrays:%p(%u) )", stream, var_n, (GLuint*)(outptr_arrays.get()), size_arrays);
4533 this->glGenVertexArrays_dec(this, var_n, (GLuint*)(outptr_arrays.get()));
4534 outptr_arrays.flush();
4535 if (useChecksum) {
4536 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
4537 }
4538 stream->flush();
4539 SET_LASTCALL("glGenVertexArrays");
4540 android::base::endTrace();
4541 break;
4542 }
4543 case OP_glBindVertexArray: {
4544 android::base::beginTrace("glBindVertexArray decode");
4545 GLuint var_array = Unpack<GLuint,uint32_t>(ptr + 8);
4546 if (useChecksum) {
4547 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
4548 "gles2_decoder_context_t::decode, OP_glBindVertexArray: GL checksumCalculator failure\n");
4549 }
4550 #ifdef CHECK_GL_ERRORS
4551 GLint err = this->glGetError();
4552 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBindVertexArray\n", err);
4553 #endif
4554 DECODER_DEBUG_LOG("gles2(%p): glBindVertexArray(array:%u )", stream, var_array);
4555 this->glBindVertexArray(var_array);
4556 SET_LASTCALL("glBindVertexArray");
4557 android::base::endTrace();
4558 break;
4559 }
4560 case OP_glDeleteVertexArrays: {
4561 android::base::beginTrace("glDeleteVertexArrays decode");
4562 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
4563 uint32_t size_arrays __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
4564 InputBuffer inptr_arrays(ptr + 8 + 4 + 4, size_arrays);
4565 if (useChecksum) {
4566 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_arrays, ptr + 8 + 4 + 4 + size_arrays, checksumSize,
4567 "gles2_decoder_context_t::decode, OP_glDeleteVertexArrays: GL checksumCalculator failure\n");
4568 }
4569 #ifdef CHECK_GL_ERRORS
4570 GLint err = this->glGetError();
4571 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteVertexArrays\n", err);
4572 #endif
4573 DECODER_DEBUG_LOG("gles2(%p): glDeleteVertexArrays(n:%d arrays:%p(%u) )", stream, var_n, (const GLuint*)(inptr_arrays.get()), size_arrays);
4574 this->glDeleteVertexArrays_dec(this, var_n, (const GLuint*)(inptr_arrays.get()));
4575 SET_LASTCALL("glDeleteVertexArrays");
4576 android::base::endTrace();
4577 break;
4578 }
4579 case OP_glIsVertexArray: {
4580 android::base::beginTrace("glIsVertexArray decode");
4581 GLuint var_array = Unpack<GLuint,uint32_t>(ptr + 8);
4582 if (useChecksum) {
4583 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
4584 "gles2_decoder_context_t::decode, OP_glIsVertexArray: GL checksumCalculator failure\n");
4585 }
4586 size_t totalTmpSize = sizeof(GLboolean);
4587 totalTmpSize += checksumSize;
4588 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
4589 #ifdef CHECK_GL_ERRORS
4590 GLint err = this->glGetError();
4591 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsVertexArray\n", err);
4592 #endif
4593 DECODER_DEBUG_LOG("gles2(%p): glIsVertexArray(array:%u )", stream, var_array);
4594 *(GLboolean *)(&tmpBuf[0]) = this->glIsVertexArray(var_array);
4595 if (useChecksum) {
4596 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
4597 }
4598 stream->flush();
4599 SET_LASTCALL("glIsVertexArray");
4600 android::base::endTrace();
4601 break;
4602 }
4603 case OP_glMapBufferRange: {
4604 android::base::beginTrace("glMapBufferRange decode");
4605 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4606 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4);
4607 GLsizeiptr var_length = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4);
4608 GLbitfield var_access = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4 + 4 + 4);
4609 if (useChecksum) {
4610 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
4611 "gles2_decoder_context_t::decode, OP_glMapBufferRange: GL checksumCalculator failure\n");
4612 }
4613 #ifdef CHECK_GL_ERRORS
4614 GLint err = this->glGetError();
4615 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glMapBufferRange\n", err);
4616 #endif
4617 DECODER_DEBUG_LOG("gles2(%p): glMapBufferRange(target:0x%08x offset:0x%08lx length:0x%08lx access:0x%08x )", stream, var_target, var_offset, var_length, var_access);
4618 this->glMapBufferRange(var_target, var_offset, var_length, var_access);
4619 SET_LASTCALL("glMapBufferRange");
4620 android::base::endTrace();
4621 break;
4622 }
4623 case OP_glUnmapBuffer: {
4624 android::base::beginTrace("glUnmapBuffer decode");
4625 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4626 if (useChecksum) {
4627 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
4628 "gles2_decoder_context_t::decode, OP_glUnmapBuffer: GL checksumCalculator failure\n");
4629 }
4630 size_t totalTmpSize = sizeof(GLboolean);
4631 totalTmpSize += checksumSize;
4632 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
4633 #ifdef CHECK_GL_ERRORS
4634 GLint err = this->glGetError();
4635 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUnmapBuffer\n", err);
4636 #endif
4637 DECODER_DEBUG_LOG("gles2(%p): glUnmapBuffer(target:0x%08x )", stream, var_target);
4638 *(GLboolean *)(&tmpBuf[0]) = this->glUnmapBuffer(var_target);
4639 if (useChecksum) {
4640 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
4641 }
4642 stream->flush();
4643 SET_LASTCALL("glUnmapBuffer");
4644 android::base::endTrace();
4645 break;
4646 }
4647 case OP_glFlushMappedBufferRange: {
4648 android::base::beginTrace("glFlushMappedBufferRange decode");
4649 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4650 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4);
4651 GLsizeiptr var_length = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4);
4652 if (useChecksum) {
4653 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
4654 "gles2_decoder_context_t::decode, OP_glFlushMappedBufferRange: GL checksumCalculator failure\n");
4655 }
4656 #ifdef CHECK_GL_ERRORS
4657 GLint err = this->glGetError();
4658 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFlushMappedBufferRange\n", err);
4659 #endif
4660 DECODER_DEBUG_LOG("gles2(%p): glFlushMappedBufferRange(target:0x%08x offset:0x%08lx length:0x%08lx )", stream, var_target, var_offset, var_length);
4661 this->glFlushMappedBufferRange(var_target, var_offset, var_length);
4662 SET_LASTCALL("glFlushMappedBufferRange");
4663 android::base::endTrace();
4664 break;
4665 }
4666 case OP_glMapBufferRangeAEMU: {
4667 android::base::beginTrace("glMapBufferRangeAEMU decode");
4668 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4669 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4);
4670 GLsizeiptr var_length = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4);
4671 GLbitfield var_access = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4 + 4 + 4);
4672 uint32_t size_mapped __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
4673 if (useChecksum) {
4674 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
4675 "gles2_decoder_context_t::decode, OP_glMapBufferRangeAEMU: GL checksumCalculator failure\n");
4676 }
4677 size_t totalTmpSize = size_mapped;
4678 totalTmpSize += checksumSize;
4679 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
4680 OutputBuffer outptr_mapped(&tmpBuf[0], size_mapped);
4681 #ifdef CHECK_GL_ERRORS
4682 GLint err = this->glGetError();
4683 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glMapBufferRangeAEMU\n", err);
4684 #endif
4685 DECODER_DEBUG_LOG("gles2(%p): glMapBufferRangeAEMU(target:0x%08x offset:0x%08lx length:0x%08lx access:0x%08x mapped:%p(%u) )", stream, var_target, var_offset, var_length, var_access, (void*)(outptr_mapped.get()), size_mapped);
4686 this->glMapBufferRangeAEMU(this, var_target, var_offset, var_length, var_access, size_mapped == 0 ? nullptr : (void*)(outptr_mapped.get()));
4687 outptr_mapped.flush();
4688 if (useChecksum) {
4689 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
4690 }
4691 stream->flush();
4692 SET_LASTCALL("glMapBufferRangeAEMU");
4693 android::base::endTrace();
4694 break;
4695 }
4696 case OP_glUnmapBufferAEMU: {
4697 android::base::beginTrace("glUnmapBufferAEMU decode");
4698 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4699 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4);
4700 GLsizeiptr var_length = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4);
4701 GLbitfield var_access = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4 + 4 + 4);
4702 uint32_t size_guest_buffer __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
4703 InputBuffer inptr_guest_buffer(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_guest_buffer);
4704 uint32_t size_out_res __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer);
4705 if (useChecksum) {
4706 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer + 4, checksumSize,
4707 "gles2_decoder_context_t::decode, OP_glUnmapBufferAEMU: GL checksumCalculator failure\n");
4708 }
4709 size_t totalTmpSize = size_out_res;
4710 totalTmpSize += checksumSize;
4711 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
4712 OutputBuffer outptr_out_res(&tmpBuf[0], size_out_res);
4713 #ifdef CHECK_GL_ERRORS
4714 GLint err = this->glGetError();
4715 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUnmapBufferAEMU\n", err);
4716 #endif
4717 DECODER_DEBUG_LOG("gles2(%p): glUnmapBufferAEMU(target:0x%08x offset:0x%08lx length:0x%08lx access:0x%08x guest_buffer:%p(%u) out_res:%p(%u) )", stream, var_target, var_offset, var_length, var_access, (void*)(inptr_guest_buffer.get()), size_guest_buffer, (GLboolean*)(outptr_out_res.get()), size_out_res);
4718 this->glUnmapBufferAEMU(this, var_target, var_offset, var_length, var_access, size_guest_buffer == 0 ? nullptr : (void*)(inptr_guest_buffer.get()), (GLboolean*)(outptr_out_res.get()));
4719 outptr_out_res.flush();
4720 if (useChecksum) {
4721 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
4722 }
4723 stream->flush();
4724 SET_LASTCALL("glUnmapBufferAEMU");
4725 android::base::endTrace();
4726 break;
4727 }
4728 case OP_glFlushMappedBufferRangeAEMU: {
4729 android::base::beginTrace("glFlushMappedBufferRangeAEMU decode");
4730 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4731 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4);
4732 GLsizeiptr var_length = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4);
4733 GLbitfield var_access = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4 + 4 + 4);
4734 uint32_t size_guest_buffer __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
4735 InputBuffer inptr_guest_buffer(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_guest_buffer);
4736 if (useChecksum) {
4737 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer, checksumSize,
4738 "gles2_decoder_context_t::decode, OP_glFlushMappedBufferRangeAEMU: GL checksumCalculator failure\n");
4739 }
4740 #ifdef CHECK_GL_ERRORS
4741 GLint err = this->glGetError();
4742 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFlushMappedBufferRangeAEMU\n", err);
4743 #endif
4744 DECODER_DEBUG_LOG("gles2(%p): glFlushMappedBufferRangeAEMU(target:0x%08x offset:0x%08lx length:0x%08lx access:0x%08x guest_buffer:%p(%u) )", stream, var_target, var_offset, var_length, var_access, (void*)(inptr_guest_buffer.get()), size_guest_buffer);
4745 this->glFlushMappedBufferRangeAEMU(this, var_target, var_offset, var_length, var_access, size_guest_buffer == 0 ? nullptr : (void*)(inptr_guest_buffer.get()));
4746 SET_LASTCALL("glFlushMappedBufferRangeAEMU");
4747 android::base::endTrace();
4748 break;
4749 }
4750 case OP_glReadPixelsOffsetAEMU: {
4751 android::base::beginTrace("glReadPixelsOffsetAEMU decode");
4752 GLint var_x = Unpack<GLint,uint32_t>(ptr + 8);
4753 GLint var_y = Unpack<GLint,uint32_t>(ptr + 8 + 4);
4754 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
4755 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
4756 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
4757 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
4758 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
4759 if (useChecksum) {
4760 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
4761 "gles2_decoder_context_t::decode, OP_glReadPixelsOffsetAEMU: GL checksumCalculator failure\n");
4762 }
4763 #ifdef CHECK_GL_ERRORS
4764 GLint err = this->glGetError();
4765 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glReadPixelsOffsetAEMU\n", err);
4766 #endif
4767 DECODER_DEBUG_LOG("gles2(%p): glReadPixelsOffsetAEMU(x:%d y:%d width:%d height:%d format:0x%08x type:0x%08x offset:%u )", stream, var_x, var_y, var_width, var_height, var_format, var_type, var_offset);
4768 this->glReadPixelsOffsetAEMU(this, var_x, var_y, var_width, var_height, var_format, var_type, var_offset);
4769 SET_LASTCALL("glReadPixelsOffsetAEMU");
4770 android::base::endTrace();
4771 break;
4772 }
4773 case OP_glCompressedTexImage2DOffsetAEMU: {
4774 android::base::beginTrace("glCompressedTexImage2DOffsetAEMU decode");
4775 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4776 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
4777 GLenum var_internalformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
4778 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
4779 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
4780 GLint var_border = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
4781 GLsizei var_imageSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
4782 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4783 if (useChecksum) {
4784 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
4785 "gles2_decoder_context_t::decode, OP_glCompressedTexImage2DOffsetAEMU: GL checksumCalculator failure\n");
4786 }
4787 #ifdef CHECK_GL_ERRORS
4788 GLint err = this->glGetError();
4789 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCompressedTexImage2DOffsetAEMU\n", err);
4790 #endif
4791 DECODER_DEBUG_LOG("gles2(%p): glCompressedTexImage2DOffsetAEMU(target:0x%08x level:%d internalformat:0x%08x width:%d height:%d border:%d imageSize:%d offset:%u )", stream, var_target, var_level, var_internalformat, var_width, var_height, var_border, var_imageSize, var_offset);
4792 this->glCompressedTexImage2DOffsetAEMU(this, var_target, var_level, var_internalformat, var_width, var_height, var_border, var_imageSize, var_offset);
4793 SET_LASTCALL("glCompressedTexImage2DOffsetAEMU");
4794 android::base::endTrace();
4795 break;
4796 }
4797 case OP_glCompressedTexSubImage2DOffsetAEMU: {
4798 android::base::beginTrace("glCompressedTexSubImage2DOffsetAEMU decode");
4799 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4800 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
4801 GLint var_xoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
4802 GLint var_yoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
4803 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
4804 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
4805 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
4806 GLsizei var_imageSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4807 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4808 if (useChecksum) {
4809 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
4810 "gles2_decoder_context_t::decode, OP_glCompressedTexSubImage2DOffsetAEMU: GL checksumCalculator failure\n");
4811 }
4812 #ifdef CHECK_GL_ERRORS
4813 GLint err = this->glGetError();
4814 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCompressedTexSubImage2DOffsetAEMU\n", err);
4815 #endif
4816 DECODER_DEBUG_LOG("gles2(%p): glCompressedTexSubImage2DOffsetAEMU(target:0x%08x level:%d xoffset:%d yoffset:%d width:%d height:%d format:0x%08x imageSize:%d offset:%u )", stream, var_target, var_level, var_xoffset, var_yoffset, var_width, var_height, var_format, var_imageSize, var_offset);
4817 this->glCompressedTexSubImage2DOffsetAEMU(this, var_target, var_level, var_xoffset, var_yoffset, var_width, var_height, var_format, var_imageSize, var_offset);
4818 SET_LASTCALL("glCompressedTexSubImage2DOffsetAEMU");
4819 android::base::endTrace();
4820 break;
4821 }
4822 case OP_glTexImage2DOffsetAEMU: {
4823 android::base::beginTrace("glTexImage2DOffsetAEMU decode");
4824 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4825 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
4826 GLint var_internalformat = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
4827 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
4828 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
4829 GLint var_border = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
4830 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
4831 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4832 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4833 if (useChecksum) {
4834 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
4835 "gles2_decoder_context_t::decode, OP_glTexImage2DOffsetAEMU: GL checksumCalculator failure\n");
4836 }
4837 #ifdef CHECK_GL_ERRORS
4838 GLint err = this->glGetError();
4839 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexImage2DOffsetAEMU\n", err);
4840 #endif
4841 DECODER_DEBUG_LOG("gles2(%p): glTexImage2DOffsetAEMU(target:0x%08x level:%d internalformat:%d width:%d height:%d border:%d format:0x%08x type:0x%08x offset:%u )", stream, var_target, var_level, var_internalformat, var_width, var_height, var_border, var_format, var_type, var_offset);
4842 this->glTexImage2DOffsetAEMU(this, var_target, var_level, var_internalformat, var_width, var_height, var_border, var_format, var_type, var_offset);
4843 SET_LASTCALL("glTexImage2DOffsetAEMU");
4844 android::base::endTrace();
4845 break;
4846 }
4847 case OP_glTexSubImage2DOffsetAEMU: {
4848 android::base::beginTrace("glTexSubImage2DOffsetAEMU decode");
4849 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4850 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
4851 GLint var_xoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
4852 GLint var_yoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
4853 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
4854 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
4855 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
4856 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4857 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4858 if (useChecksum) {
4859 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
4860 "gles2_decoder_context_t::decode, OP_glTexSubImage2DOffsetAEMU: GL checksumCalculator failure\n");
4861 }
4862 #ifdef CHECK_GL_ERRORS
4863 GLint err = this->glGetError();
4864 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexSubImage2DOffsetAEMU\n", err);
4865 #endif
4866 DECODER_DEBUG_LOG("gles2(%p): glTexSubImage2DOffsetAEMU(target:0x%08x level:%d xoffset:%d yoffset:%d width:%d height:%d format:0x%08x type:0x%08x offset:%u )", stream, var_target, var_level, var_xoffset, var_yoffset, var_width, var_height, var_format, var_type, var_offset);
4867 this->glTexSubImage2DOffsetAEMU(this, var_target, var_level, var_xoffset, var_yoffset, var_width, var_height, var_format, var_type, var_offset);
4868 SET_LASTCALL("glTexSubImage2DOffsetAEMU");
4869 android::base::endTrace();
4870 break;
4871 }
4872 case OP_glBindBufferRange: {
4873 android::base::beginTrace("glBindBufferRange decode");
4874 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4875 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
4876 GLuint var_buffer = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
4877 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4 + 4 + 4);
4878 GLsizeiptr var_size = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
4879 if (useChecksum) {
4880 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
4881 "gles2_decoder_context_t::decode, OP_glBindBufferRange: GL checksumCalculator failure\n");
4882 }
4883 #ifdef CHECK_GL_ERRORS
4884 GLint err = this->glGetError();
4885 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBindBufferRange\n", err);
4886 #endif
4887 DECODER_DEBUG_LOG("gles2(%p): glBindBufferRange(target:0x%08x index:%u buffer:%u offset:0x%08lx size:0x%08lx )", stream, var_target, var_index, var_buffer, var_offset, var_size);
4888 this->glBindBufferRange(var_target, var_index, var_buffer, var_offset, var_size);
4889 SET_LASTCALL("glBindBufferRange");
4890 android::base::endTrace();
4891 break;
4892 }
4893 case OP_glBindBufferBase: {
4894 android::base::beginTrace("glBindBufferBase decode");
4895 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
4896 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
4897 GLuint var_buffer = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
4898 if (useChecksum) {
4899 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
4900 "gles2_decoder_context_t::decode, OP_glBindBufferBase: GL checksumCalculator failure\n");
4901 }
4902 #ifdef CHECK_GL_ERRORS
4903 GLint err = this->glGetError();
4904 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBindBufferBase\n", err);
4905 #endif
4906 DECODER_DEBUG_LOG("gles2(%p): glBindBufferBase(target:0x%08x index:%u buffer:%u )", stream, var_target, var_index, var_buffer);
4907 this->glBindBufferBase(var_target, var_index, var_buffer);
4908 SET_LASTCALL("glBindBufferBase");
4909 android::base::endTrace();
4910 break;
4911 }
4912 case OP_glCopyBufferSubData: {
4913 android::base::beginTrace("glCopyBufferSubData decode");
4914 GLenum var_readtarget = Unpack<GLenum,uint32_t>(ptr + 8);
4915 GLenum var_writetarget = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
4916 GLintptr var_readoffset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4 + 4);
4917 GLintptr var_writeoffset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4 + 4 + 4);
4918 GLsizeiptr var_size = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
4919 if (useChecksum) {
4920 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
4921 "gles2_decoder_context_t::decode, OP_glCopyBufferSubData: GL checksumCalculator failure\n");
4922 }
4923 #ifdef CHECK_GL_ERRORS
4924 GLint err = this->glGetError();
4925 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCopyBufferSubData\n", err);
4926 #endif
4927 DECODER_DEBUG_LOG("gles2(%p): glCopyBufferSubData(readtarget:0x%08x writetarget:0x%08x readoffset:0x%08lx writeoffset:0x%08lx size:0x%08lx )", stream, var_readtarget, var_writetarget, var_readoffset, var_writeoffset, var_size);
4928 this->glCopyBufferSubData(var_readtarget, var_writetarget, var_readoffset, var_writeoffset, var_size);
4929 SET_LASTCALL("glCopyBufferSubData");
4930 android::base::endTrace();
4931 break;
4932 }
4933 case OP_glClearBufferiv: {
4934 android::base::beginTrace("glClearBufferiv decode");
4935 GLenum var_buffer = Unpack<GLenum,uint32_t>(ptr + 8);
4936 GLint var_drawBuffer = Unpack<GLint,uint32_t>(ptr + 8 + 4);
4937 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
4938 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4, size_value);
4939 if (useChecksum) {
4940 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + size_value, checksumSize,
4941 "gles2_decoder_context_t::decode, OP_glClearBufferiv: GL checksumCalculator failure\n");
4942 }
4943 #ifdef CHECK_GL_ERRORS
4944 GLint err = this->glGetError();
4945 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glClearBufferiv\n", err);
4946 #endif
4947 DECODER_DEBUG_LOG("gles2(%p): glClearBufferiv(buffer:0x%08x drawBuffer:%d value:%p(%u) )", stream, var_buffer, var_drawBuffer, (const GLint*)(inptr_value.get()), size_value);
4948 this->glClearBufferiv(var_buffer, var_drawBuffer, (const GLint*)(inptr_value.get()));
4949 SET_LASTCALL("glClearBufferiv");
4950 android::base::endTrace();
4951 break;
4952 }
4953 case OP_glClearBufferuiv: {
4954 android::base::beginTrace("glClearBufferuiv decode");
4955 GLenum var_buffer = Unpack<GLenum,uint32_t>(ptr + 8);
4956 GLint var_drawBuffer = Unpack<GLint,uint32_t>(ptr + 8 + 4);
4957 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
4958 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4, size_value);
4959 if (useChecksum) {
4960 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + size_value, checksumSize,
4961 "gles2_decoder_context_t::decode, OP_glClearBufferuiv: GL checksumCalculator failure\n");
4962 }
4963 #ifdef CHECK_GL_ERRORS
4964 GLint err = this->glGetError();
4965 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glClearBufferuiv\n", err);
4966 #endif
4967 DECODER_DEBUG_LOG("gles2(%p): glClearBufferuiv(buffer:0x%08x drawBuffer:%d value:%p(%u) )", stream, var_buffer, var_drawBuffer, (const GLuint*)(inptr_value.get()), size_value);
4968 this->glClearBufferuiv(var_buffer, var_drawBuffer, (const GLuint*)(inptr_value.get()));
4969 SET_LASTCALL("glClearBufferuiv");
4970 android::base::endTrace();
4971 break;
4972 }
4973 case OP_glClearBufferfv: {
4974 android::base::beginTrace("glClearBufferfv decode");
4975 GLenum var_buffer = Unpack<GLenum,uint32_t>(ptr + 8);
4976 GLint var_drawBuffer = Unpack<GLint,uint32_t>(ptr + 8 + 4);
4977 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
4978 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4, size_value);
4979 if (useChecksum) {
4980 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + size_value, checksumSize,
4981 "gles2_decoder_context_t::decode, OP_glClearBufferfv: GL checksumCalculator failure\n");
4982 }
4983 #ifdef CHECK_GL_ERRORS
4984 GLint err = this->glGetError();
4985 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glClearBufferfv\n", err);
4986 #endif
4987 DECODER_DEBUG_LOG("gles2(%p): glClearBufferfv(buffer:0x%08x drawBuffer:%d value:%p(%u) )", stream, var_buffer, var_drawBuffer, (const GLfloat*)(inptr_value.get()), size_value);
4988 this->glClearBufferfv(var_buffer, var_drawBuffer, (const GLfloat*)(inptr_value.get()));
4989 SET_LASTCALL("glClearBufferfv");
4990 android::base::endTrace();
4991 break;
4992 }
4993 case OP_glClearBufferfi: {
4994 android::base::beginTrace("glClearBufferfi decode");
4995 GLenum var_buffer = Unpack<GLenum,uint32_t>(ptr + 8);
4996 GLint var_drawBuffer = Unpack<GLint,uint32_t>(ptr + 8 + 4);
4997 GLfloat var_depth = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4);
4998 GLint var_stencil = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
4999 if (useChecksum) {
5000 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
5001 "gles2_decoder_context_t::decode, OP_glClearBufferfi: GL checksumCalculator failure\n");
5002 }
5003 #ifdef CHECK_GL_ERRORS
5004 GLint err = this->glGetError();
5005 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glClearBufferfi\n", err);
5006 #endif
5007 DECODER_DEBUG_LOG("gles2(%p): glClearBufferfi(buffer:0x%08x drawBuffer:%d depth:%f stencil:%d )", stream, var_buffer, var_drawBuffer, var_depth, var_stencil);
5008 this->glClearBufferfi(var_buffer, var_drawBuffer, var_depth, var_stencil);
5009 SET_LASTCALL("glClearBufferfi");
5010 android::base::endTrace();
5011 break;
5012 }
5013 case OP_glGetBufferParameteri64v: {
5014 android::base::beginTrace("glGetBufferParameteri64v decode");
5015 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
5016 GLenum var_value = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
5017 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
5018 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4, size_data);
5019 if (useChecksum) {
5020 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + size_data, checksumSize,
5021 "gles2_decoder_context_t::decode, OP_glGetBufferParameteri64v: GL checksumCalculator failure\n");
5022 }
5023 #ifdef CHECK_GL_ERRORS
5024 GLint err = this->glGetError();
5025 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetBufferParameteri64v\n", err);
5026 #endif
5027 DECODER_DEBUG_LOG("gles2(%p): glGetBufferParameteri64v(target:0x%08x value:0x%08x data:%p(%u) )", stream, var_target, var_value, (GLint64*)(inptr_data.get()), size_data);
5028 this->glGetBufferParameteri64v(var_target, var_value, (GLint64*)(inptr_data.get()));
5029 SET_LASTCALL("glGetBufferParameteri64v");
5030 android::base::endTrace();
5031 break;
5032 }
5033 case OP_glGetBufferPointerv: {
5034 android::base::beginTrace("glGetBufferPointerv decode");
5035 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
5036 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
5037 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
5038 InputBuffer inptr_params(ptr + 8 + 4 + 4 + 4, size_params);
5039 if (useChecksum) {
5040 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + 4 + size_params, checksumSize,
5041 "gles2_decoder_context_t::decode, OP_glGetBufferPointerv: GL checksumCalculator failure\n");
5042 }
5043 #ifdef CHECK_GL_ERRORS
5044 GLint err = this->glGetError();
5045 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetBufferPointerv\n", err);
5046 #endif
5047 DECODER_DEBUG_LOG("gles2(%p): glGetBufferPointerv(target:0x%08x pname:0x%08x params:%p(%u) )", stream, var_target, var_pname, (GLvoid**)(inptr_params.get()), size_params);
5048 this->glGetBufferPointerv(var_target, var_pname, (GLvoid**)(inptr_params.get()));
5049 SET_LASTCALL("glGetBufferPointerv");
5050 android::base::endTrace();
5051 break;
5052 }
5053 case OP_glUniformBlockBinding: {
5054 android::base::beginTrace("glUniformBlockBinding decode");
5055 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
5056 GLuint var_uniformBlockIndex = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
5057 GLuint var_uniformBlockBinding = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
5058 if (useChecksum) {
5059 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
5060 "gles2_decoder_context_t::decode, OP_glUniformBlockBinding: GL checksumCalculator failure\n");
5061 }
5062 #ifdef CHECK_GL_ERRORS
5063 GLint err = this->glGetError();
5064 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniformBlockBinding\n", err);
5065 #endif
5066 DECODER_DEBUG_LOG("gles2(%p): glUniformBlockBinding(program:%u uniformBlockIndex:%u uniformBlockBinding:%u )", stream, var_program, var_uniformBlockIndex, var_uniformBlockBinding);
5067 this->glUniformBlockBinding_dec(this, var_program, var_uniformBlockIndex, var_uniformBlockBinding);
5068 SET_LASTCALL("glUniformBlockBinding");
5069 android::base::endTrace();
5070 break;
5071 }
5072 case OP_glGetUniformBlockIndex: {
5073 android::base::beginTrace("glGetUniformBlockIndex decode");
5074 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
5075 uint32_t size_uniformBlockName __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
5076 InputBuffer inptr_uniformBlockName(ptr + 8 + 4 + 4, size_uniformBlockName);
5077 if (useChecksum) {
5078 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_uniformBlockName, ptr + 8 + 4 + 4 + size_uniformBlockName, checksumSize,
5079 "gles2_decoder_context_t::decode, OP_glGetUniformBlockIndex: GL checksumCalculator failure\n");
5080 }
5081 size_t totalTmpSize = sizeof(GLuint);
5082 totalTmpSize += checksumSize;
5083 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
5084 #ifdef CHECK_GL_ERRORS
5085 GLint err = this->glGetError();
5086 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetUniformBlockIndex\n", err);
5087 #endif
5088 DECODER_DEBUG_LOG("gles2(%p): glGetUniformBlockIndex(program:%u uniformBlockName:%p(%u) )", stream, var_program, (const GLchar*)(inptr_uniformBlockName.get()), size_uniformBlockName);
5089 *(GLuint *)(&tmpBuf[0]) = this->glGetUniformBlockIndex_dec(this, var_program, (const GLchar*)(inptr_uniformBlockName.get()));
5090 if (useChecksum) {
5091 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
5092 }
5093 stream->flush();
5094 SET_LASTCALL("glGetUniformBlockIndex");
5095 android::base::endTrace();
5096 break;
5097 }
5098 case OP_glGetUniformIndices: {
5099 android::base::beginTrace("glGetUniformIndices decode");
5100 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
5101 GLsizei var_uniformCount = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5102 uint32_t size_uniformNames __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
5103 InputBuffer inptr_uniformNames(ptr + 8 + 4 + 4 + 4, size_uniformNames);
5104 uint32_t size_uniformIndices __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_uniformNames);
5105 InputBuffer inptr_uniformIndices(ptr + 8 + 4 + 4 + 4 + size_uniformNames + 4, size_uniformIndices);
5106 if (useChecksum) {
5107 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_uniformNames + 4 + size_uniformIndices, ptr + 8 + 4 + 4 + 4 + size_uniformNames + 4 + size_uniformIndices, checksumSize,
5108 "gles2_decoder_context_t::decode, OP_glGetUniformIndices: GL checksumCalculator failure\n");
5109 }
5110 #ifdef CHECK_GL_ERRORS
5111 GLint err = this->glGetError();
5112 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetUniformIndices\n", err);
5113 #endif
5114 DECODER_DEBUG_LOG("gles2(%p): glGetUniformIndices(program:%u uniformCount:%d uniformNames:%p(%u) uniformIndices:%p(%u) )", stream, var_program, var_uniformCount, (const GLchar**)(inptr_uniformNames.get()), size_uniformNames, (GLuint*)(inptr_uniformIndices.get()), size_uniformIndices);
5115 this->glGetUniformIndices(var_program, var_uniformCount, (const GLchar**)(inptr_uniformNames.get()), (GLuint*)(inptr_uniformIndices.get()));
5116 SET_LASTCALL("glGetUniformIndices");
5117 android::base::endTrace();
5118 break;
5119 }
5120 case OP_glGetUniformIndicesAEMU: {
5121 android::base::beginTrace("glGetUniformIndicesAEMU decode");
5122 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
5123 GLsizei var_uniformCount = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5124 uint32_t size_packedUniformNames __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
5125 InputBuffer inptr_packedUniformNames(ptr + 8 + 4 + 4 + 4, size_packedUniformNames);
5126 GLsizei var_packedLen = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_packedUniformNames);
5127 uint32_t size_uniformIndices __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_packedUniformNames + 4);
5128 if (useChecksum) {
5129 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_packedUniformNames + 4 + 4, ptr + 8 + 4 + 4 + 4 + size_packedUniformNames + 4 + 4, checksumSize,
5130 "gles2_decoder_context_t::decode, OP_glGetUniformIndicesAEMU: GL checksumCalculator failure\n");
5131 }
5132 size_t totalTmpSize = size_uniformIndices;
5133 totalTmpSize += checksumSize;
5134 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
5135 OutputBuffer outptr_uniformIndices(&tmpBuf[0], size_uniformIndices);
5136 #ifdef CHECK_GL_ERRORS
5137 GLint err = this->glGetError();
5138 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetUniformIndicesAEMU\n", err);
5139 #endif
5140 DECODER_DEBUG_LOG("gles2(%p): glGetUniformIndicesAEMU(program:%u uniformCount:%d packedUniformNames:%p(%u) packedLen:%d uniformIndices:%p(%u) )", stream, var_program, var_uniformCount, (const GLchar*)(inptr_packedUniformNames.get()), size_packedUniformNames, var_packedLen, (GLuint*)(outptr_uniformIndices.get()), size_uniformIndices);
5141 this->glGetUniformIndicesAEMU(this, var_program, var_uniformCount, (const GLchar*)(inptr_packedUniformNames.get()), var_packedLen, (GLuint*)(outptr_uniformIndices.get()));
5142 outptr_uniformIndices.flush();
5143 if (useChecksum) {
5144 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
5145 }
5146 stream->flush();
5147 SET_LASTCALL("glGetUniformIndicesAEMU");
5148 android::base::endTrace();
5149 break;
5150 }
5151 case OP_glGetActiveUniformBlockiv: {
5152 android::base::beginTrace("glGetActiveUniformBlockiv decode");
5153 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
5154 GLuint var_uniformBlockIndex = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
5155 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
5156 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
5157 if (useChecksum) {
5158 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
5159 "gles2_decoder_context_t::decode, OP_glGetActiveUniformBlockiv: GL checksumCalculator failure\n");
5160 }
5161 size_t totalTmpSize = size_params;
5162 totalTmpSize += checksumSize;
5163 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
5164 OutputBuffer outptr_params(&tmpBuf[0], size_params);
5165 #ifdef CHECK_GL_ERRORS
5166 GLint err = this->glGetError();
5167 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetActiveUniformBlockiv\n", err);
5168 #endif
5169 DECODER_DEBUG_LOG("gles2(%p): glGetActiveUniformBlockiv(program:%u uniformBlockIndex:%u pname:0x%08x params:%p(%u) )", stream, var_program, var_uniformBlockIndex, var_pname, (GLint*)(outptr_params.get()), size_params);
5170 this->glGetActiveUniformBlockiv_dec(this, var_program, var_uniformBlockIndex, var_pname, (GLint*)(outptr_params.get()));
5171 outptr_params.flush();
5172 if (useChecksum) {
5173 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
5174 }
5175 stream->flush();
5176 SET_LASTCALL("glGetActiveUniformBlockiv");
5177 android::base::endTrace();
5178 break;
5179 }
5180 case OP_glGetActiveUniformBlockName: {
5181 android::base::beginTrace("glGetActiveUniformBlockName decode");
5182 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
5183 GLuint var_uniformBlockIndex = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
5184 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
5185 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
5186 uint32_t size_uniformBlockName __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
5187 if (useChecksum) {
5188 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
5189 "gles2_decoder_context_t::decode, OP_glGetActiveUniformBlockName: GL checksumCalculator failure\n");
5190 }
5191 size_t totalTmpSize = size_length;
5192 totalTmpSize += size_uniformBlockName;
5193 totalTmpSize += checksumSize;
5194 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
5195 OutputBuffer outptr_length(&tmpBuf[0], size_length);
5196 OutputBuffer outptr_uniformBlockName(&tmpBuf[0 + size_length], size_uniformBlockName);
5197 #ifdef CHECK_GL_ERRORS
5198 GLint err = this->glGetError();
5199 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetActiveUniformBlockName\n", err);
5200 #endif
5201 DECODER_DEBUG_LOG("gles2(%p): glGetActiveUniformBlockName(program:%u uniformBlockIndex:%u bufSize:%d length:%p(%u) uniformBlockName:%p(%u) )", stream, var_program, var_uniformBlockIndex, var_bufSize, (GLsizei*)(outptr_length.get()), size_length, (GLchar*)(outptr_uniformBlockName.get()), size_uniformBlockName);
5202 this->glGetActiveUniformBlockName_dec(this, var_program, var_uniformBlockIndex, var_bufSize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), size_uniformBlockName == 0 ? nullptr : (GLchar*)(outptr_uniformBlockName.get()));
5203 outptr_length.flush();
5204 outptr_uniformBlockName.flush();
5205 if (useChecksum) {
5206 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
5207 }
5208 stream->flush();
5209 SET_LASTCALL("glGetActiveUniformBlockName");
5210 android::base::endTrace();
5211 break;
5212 }
5213 case OP_glUniform1ui: {
5214 android::base::beginTrace("glUniform1ui decode");
5215 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
5216 GLuint var_v0 = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
5217 if (useChecksum) {
5218 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
5219 "gles2_decoder_context_t::decode, OP_glUniform1ui: GL checksumCalculator failure\n");
5220 }
5221 #ifdef CHECK_GL_ERRORS
5222 GLint err = this->glGetError();
5223 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform1ui\n", err);
5224 #endif
5225 DECODER_DEBUG_LOG("gles2(%p): glUniform1ui(location:%d v0:%u )", stream, var_location, var_v0);
5226 this->glUniform1ui(var_location, var_v0);
5227 SET_LASTCALL("glUniform1ui");
5228 android::base::endTrace();
5229 break;
5230 }
5231 case OP_glUniform2ui: {
5232 android::base::beginTrace("glUniform2ui decode");
5233 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
5234 GLuint var_v0 = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
5235 GLuint var_v1 = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
5236 if (useChecksum) {
5237 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
5238 "gles2_decoder_context_t::decode, OP_glUniform2ui: GL checksumCalculator failure\n");
5239 }
5240 #ifdef CHECK_GL_ERRORS
5241 GLint err = this->glGetError();
5242 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform2ui\n", err);
5243 #endif
5244 DECODER_DEBUG_LOG("gles2(%p): glUniform2ui(location:%d v0:%u v1:%u )", stream, var_location, var_v0, var_v1);
5245 this->glUniform2ui(var_location, var_v0, var_v1);
5246 SET_LASTCALL("glUniform2ui");
5247 android::base::endTrace();
5248 break;
5249 }
5250 case OP_glUniform3ui: {
5251 android::base::beginTrace("glUniform3ui decode");
5252 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
5253 GLuint var_v0 = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
5254 GLuint var_v1 = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
5255 GLuint var_v2 = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4);
5256 if (useChecksum) {
5257 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
5258 "gles2_decoder_context_t::decode, OP_glUniform3ui: GL checksumCalculator failure\n");
5259 }
5260 #ifdef CHECK_GL_ERRORS
5261 GLint err = this->glGetError();
5262 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform3ui\n", err);
5263 #endif
5264 DECODER_DEBUG_LOG("gles2(%p): glUniform3ui(location:%d v0:%u v1:%u v2:%u )", stream, var_location, var_v0, var_v1, var_v2);
5265 this->glUniform3ui(var_location, var_v0, var_v1, var_v2);
5266 SET_LASTCALL("glUniform3ui");
5267 android::base::endTrace();
5268 break;
5269 }
5270 case OP_glUniform4ui: {
5271 android::base::beginTrace("glUniform4ui decode");
5272 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
5273 GLint var_v0 = Unpack<GLint,uint32_t>(ptr + 8 + 4);
5274 GLuint var_v1 = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
5275 GLuint var_v2 = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4);
5276 GLuint var_v3 = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
5277 if (useChecksum) {
5278 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
5279 "gles2_decoder_context_t::decode, OP_glUniform4ui: GL checksumCalculator failure\n");
5280 }
5281 #ifdef CHECK_GL_ERRORS
5282 GLint err = this->glGetError();
5283 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform4ui\n", err);
5284 #endif
5285 DECODER_DEBUG_LOG("gles2(%p): glUniform4ui(location:%d v0:%d v1:%u v2:%u v3:%u )", stream, var_location, var_v0, var_v1, var_v2, var_v3);
5286 this->glUniform4ui(var_location, var_v0, var_v1, var_v2, var_v3);
5287 SET_LASTCALL("glUniform4ui");
5288 android::base::endTrace();
5289 break;
5290 }
5291 case OP_glUniform1uiv: {
5292 android::base::beginTrace("glUniform1uiv decode");
5293 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
5294 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5295 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
5296 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4, size_value);
5297 if (useChecksum) {
5298 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + size_value, checksumSize,
5299 "gles2_decoder_context_t::decode, OP_glUniform1uiv: GL checksumCalculator failure\n");
5300 }
5301 #ifdef CHECK_GL_ERRORS
5302 GLint err = this->glGetError();
5303 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform1uiv\n", err);
5304 #endif
5305 DECODER_DEBUG_LOG("gles2(%p): glUniform1uiv(location:%d count:%d value:%p(%u) )", stream, var_location, var_count, (const GLuint*)(inptr_value.get()), size_value);
5306 this->glUniform1uiv(var_location, var_count, (const GLuint*)(inptr_value.get()));
5307 SET_LASTCALL("glUniform1uiv");
5308 android::base::endTrace();
5309 break;
5310 }
5311 case OP_glUniform2uiv: {
5312 android::base::beginTrace("glUniform2uiv decode");
5313 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
5314 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5315 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
5316 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4, size_value);
5317 if (useChecksum) {
5318 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + size_value, checksumSize,
5319 "gles2_decoder_context_t::decode, OP_glUniform2uiv: GL checksumCalculator failure\n");
5320 }
5321 #ifdef CHECK_GL_ERRORS
5322 GLint err = this->glGetError();
5323 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform2uiv\n", err);
5324 #endif
5325 DECODER_DEBUG_LOG("gles2(%p): glUniform2uiv(location:%d count:%d value:%p(%u) )", stream, var_location, var_count, (const GLuint*)(inptr_value.get()), size_value);
5326 this->glUniform2uiv(var_location, var_count, (const GLuint*)(inptr_value.get()));
5327 SET_LASTCALL("glUniform2uiv");
5328 android::base::endTrace();
5329 break;
5330 }
5331 case OP_glUniform3uiv: {
5332 android::base::beginTrace("glUniform3uiv decode");
5333 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
5334 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5335 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
5336 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4, size_value);
5337 if (useChecksum) {
5338 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + size_value, checksumSize,
5339 "gles2_decoder_context_t::decode, OP_glUniform3uiv: GL checksumCalculator failure\n");
5340 }
5341 #ifdef CHECK_GL_ERRORS
5342 GLint err = this->glGetError();
5343 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform3uiv\n", err);
5344 #endif
5345 DECODER_DEBUG_LOG("gles2(%p): glUniform3uiv(location:%d count:%d value:%p(%u) )", stream, var_location, var_count, (const GLuint*)(inptr_value.get()), size_value);
5346 this->glUniform3uiv(var_location, var_count, (const GLuint*)(inptr_value.get()));
5347 SET_LASTCALL("glUniform3uiv");
5348 android::base::endTrace();
5349 break;
5350 }
5351 case OP_glUniform4uiv: {
5352 android::base::beginTrace("glUniform4uiv decode");
5353 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
5354 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5355 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
5356 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4, size_value);
5357 if (useChecksum) {
5358 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + size_value, checksumSize,
5359 "gles2_decoder_context_t::decode, OP_glUniform4uiv: GL checksumCalculator failure\n");
5360 }
5361 #ifdef CHECK_GL_ERRORS
5362 GLint err = this->glGetError();
5363 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniform4uiv\n", err);
5364 #endif
5365 DECODER_DEBUG_LOG("gles2(%p): glUniform4uiv(location:%d count:%d value:%p(%u) )", stream, var_location, var_count, (const GLuint*)(inptr_value.get()), size_value);
5366 this->glUniform4uiv(var_location, var_count, (const GLuint*)(inptr_value.get()));
5367 SET_LASTCALL("glUniform4uiv");
5368 android::base::endTrace();
5369 break;
5370 }
5371 case OP_glUniformMatrix2x3fv: {
5372 android::base::beginTrace("glUniformMatrix2x3fv decode");
5373 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
5374 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5375 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4);
5376 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 1);
5377 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value);
5378 if (useChecksum) {
5379 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize,
5380 "gles2_decoder_context_t::decode, OP_glUniformMatrix2x3fv: GL checksumCalculator failure\n");
5381 }
5382 #ifdef CHECK_GL_ERRORS
5383 GLint err = this->glGetError();
5384 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniformMatrix2x3fv\n", err);
5385 #endif
5386 DECODER_DEBUG_LOG("gles2(%p): glUniformMatrix2x3fv(location:%d count:%d transpose:%d value:%p(%u) )", stream, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
5387 this->glUniformMatrix2x3fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
5388 SET_LASTCALL("glUniformMatrix2x3fv");
5389 android::base::endTrace();
5390 break;
5391 }
5392 case OP_glUniformMatrix3x2fv: {
5393 android::base::beginTrace("glUniformMatrix3x2fv decode");
5394 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
5395 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5396 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4);
5397 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 1);
5398 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value);
5399 if (useChecksum) {
5400 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize,
5401 "gles2_decoder_context_t::decode, OP_glUniformMatrix3x2fv: GL checksumCalculator failure\n");
5402 }
5403 #ifdef CHECK_GL_ERRORS
5404 GLint err = this->glGetError();
5405 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniformMatrix3x2fv\n", err);
5406 #endif
5407 DECODER_DEBUG_LOG("gles2(%p): glUniformMatrix3x2fv(location:%d count:%d transpose:%d value:%p(%u) )", stream, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
5408 this->glUniformMatrix3x2fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
5409 SET_LASTCALL("glUniformMatrix3x2fv");
5410 android::base::endTrace();
5411 break;
5412 }
5413 case OP_glUniformMatrix2x4fv: {
5414 android::base::beginTrace("glUniformMatrix2x4fv decode");
5415 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
5416 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5417 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4);
5418 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 1);
5419 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value);
5420 if (useChecksum) {
5421 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize,
5422 "gles2_decoder_context_t::decode, OP_glUniformMatrix2x4fv: GL checksumCalculator failure\n");
5423 }
5424 #ifdef CHECK_GL_ERRORS
5425 GLint err = this->glGetError();
5426 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniformMatrix2x4fv\n", err);
5427 #endif
5428 DECODER_DEBUG_LOG("gles2(%p): glUniformMatrix2x4fv(location:%d count:%d transpose:%d value:%p(%u) )", stream, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
5429 this->glUniformMatrix2x4fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
5430 SET_LASTCALL("glUniformMatrix2x4fv");
5431 android::base::endTrace();
5432 break;
5433 }
5434 case OP_glUniformMatrix4x2fv: {
5435 android::base::beginTrace("glUniformMatrix4x2fv decode");
5436 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
5437 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5438 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4);
5439 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 1);
5440 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value);
5441 if (useChecksum) {
5442 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize,
5443 "gles2_decoder_context_t::decode, OP_glUniformMatrix4x2fv: GL checksumCalculator failure\n");
5444 }
5445 #ifdef CHECK_GL_ERRORS
5446 GLint err = this->glGetError();
5447 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniformMatrix4x2fv\n", err);
5448 #endif
5449 DECODER_DEBUG_LOG("gles2(%p): glUniformMatrix4x2fv(location:%d count:%d transpose:%d value:%p(%u) )", stream, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
5450 this->glUniformMatrix4x2fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
5451 SET_LASTCALL("glUniformMatrix4x2fv");
5452 android::base::endTrace();
5453 break;
5454 }
5455 case OP_glUniformMatrix3x4fv: {
5456 android::base::beginTrace("glUniformMatrix3x4fv decode");
5457 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
5458 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5459 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4);
5460 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 1);
5461 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value);
5462 if (useChecksum) {
5463 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize,
5464 "gles2_decoder_context_t::decode, OP_glUniformMatrix3x4fv: GL checksumCalculator failure\n");
5465 }
5466 #ifdef CHECK_GL_ERRORS
5467 GLint err = this->glGetError();
5468 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniformMatrix3x4fv\n", err);
5469 #endif
5470 DECODER_DEBUG_LOG("gles2(%p): glUniformMatrix3x4fv(location:%d count:%d transpose:%d value:%p(%u) )", stream, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
5471 this->glUniformMatrix3x4fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
5472 SET_LASTCALL("glUniformMatrix3x4fv");
5473 android::base::endTrace();
5474 break;
5475 }
5476 case OP_glUniformMatrix4x3fv: {
5477 android::base::beginTrace("glUniformMatrix4x3fv decode");
5478 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8);
5479 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5480 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4);
5481 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 1);
5482 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value);
5483 if (useChecksum) {
5484 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize,
5485 "gles2_decoder_context_t::decode, OP_glUniformMatrix4x3fv: GL checksumCalculator failure\n");
5486 }
5487 #ifdef CHECK_GL_ERRORS
5488 GLint err = this->glGetError();
5489 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUniformMatrix4x3fv\n", err);
5490 #endif
5491 DECODER_DEBUG_LOG("gles2(%p): glUniformMatrix4x3fv(location:%d count:%d transpose:%d value:%p(%u) )", stream, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
5492 this->glUniformMatrix4x3fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
5493 SET_LASTCALL("glUniformMatrix4x3fv");
5494 android::base::endTrace();
5495 break;
5496 }
5497 case OP_glGetUniformuiv: {
5498 android::base::beginTrace("glGetUniformuiv decode");
5499 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
5500 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
5501 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
5502 if (useChecksum) {
5503 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
5504 "gles2_decoder_context_t::decode, OP_glGetUniformuiv: GL checksumCalculator failure\n");
5505 }
5506 size_t totalTmpSize = size_params;
5507 totalTmpSize += checksumSize;
5508 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
5509 OutputBuffer outptr_params(&tmpBuf[0], size_params);
5510 #ifdef CHECK_GL_ERRORS
5511 GLint err = this->glGetError();
5512 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetUniformuiv\n", err);
5513 #endif
5514 DECODER_DEBUG_LOG("gles2(%p): glGetUniformuiv(program:%u location:%d params:%p(%u) )", stream, var_program, var_location, (GLuint*)(outptr_params.get()), size_params);
5515 this->glGetUniformuiv_dec(this, var_program, var_location, (GLuint*)(outptr_params.get()));
5516 outptr_params.flush();
5517 if (useChecksum) {
5518 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
5519 }
5520 stream->flush();
5521 SET_LASTCALL("glGetUniformuiv");
5522 android::base::endTrace();
5523 break;
5524 }
5525 case OP_glGetActiveUniformsiv: {
5526 android::base::beginTrace("glGetActiveUniformsiv decode");
5527 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
5528 GLsizei var_uniformCount = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5529 uint32_t size_uniformIndices __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
5530 InputBuffer inptr_uniformIndices(ptr + 8 + 4 + 4 + 4, size_uniformIndices);
5531 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_uniformIndices);
5532 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_uniformIndices + 4);
5533 if (useChecksum) {
5534 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_uniformIndices + 4 + 4, ptr + 8 + 4 + 4 + 4 + size_uniformIndices + 4 + 4, checksumSize,
5535 "gles2_decoder_context_t::decode, OP_glGetActiveUniformsiv: GL checksumCalculator failure\n");
5536 }
5537 size_t totalTmpSize = size_params;
5538 totalTmpSize += checksumSize;
5539 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
5540 OutputBuffer outptr_params(&tmpBuf[0], size_params);
5541 #ifdef CHECK_GL_ERRORS
5542 GLint err = this->glGetError();
5543 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetActiveUniformsiv\n", err);
5544 #endif
5545 DECODER_DEBUG_LOG("gles2(%p): glGetActiveUniformsiv(program:%u uniformCount:%d uniformIndices:%p(%u) pname:0x%08x params:%p(%u) )", stream, var_program, var_uniformCount, (const GLuint*)(inptr_uniformIndices.get()), size_uniformIndices, var_pname, (GLint*)(outptr_params.get()), size_params);
5546 this->glGetActiveUniformsiv_dec(this, var_program, var_uniformCount, (const GLuint*)(inptr_uniformIndices.get()), var_pname, (GLint*)(outptr_params.get()));
5547 outptr_params.flush();
5548 if (useChecksum) {
5549 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
5550 }
5551 stream->flush();
5552 SET_LASTCALL("glGetActiveUniformsiv");
5553 android::base::endTrace();
5554 break;
5555 }
5556 case OP_glVertexAttribI4i: {
5557 android::base::beginTrace("glVertexAttribI4i decode");
5558 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
5559 GLint var_v0 = Unpack<GLint,uint32_t>(ptr + 8 + 4);
5560 GLint var_v1 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
5561 GLint var_v2 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
5562 GLint var_v3 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
5563 if (useChecksum) {
5564 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
5565 "gles2_decoder_context_t::decode, OP_glVertexAttribI4i: GL checksumCalculator failure\n");
5566 }
5567 #ifdef CHECK_GL_ERRORS
5568 GLint err = this->glGetError();
5569 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttribI4i\n", err);
5570 #endif
5571 DECODER_DEBUG_LOG("gles2(%p): glVertexAttribI4i(index:%u v0:%d v1:%d v2:%d v3:%d )", stream, var_index, var_v0, var_v1, var_v2, var_v3);
5572 this->glVertexAttribI4i(var_index, var_v0, var_v1, var_v2, var_v3);
5573 SET_LASTCALL("glVertexAttribI4i");
5574 android::base::endTrace();
5575 break;
5576 }
5577 case OP_glVertexAttribI4ui: {
5578 android::base::beginTrace("glVertexAttribI4ui decode");
5579 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
5580 GLuint var_v0 = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
5581 GLuint var_v1 = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
5582 GLuint var_v2 = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4);
5583 GLuint var_v3 = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
5584 if (useChecksum) {
5585 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
5586 "gles2_decoder_context_t::decode, OP_glVertexAttribI4ui: GL checksumCalculator failure\n");
5587 }
5588 #ifdef CHECK_GL_ERRORS
5589 GLint err = this->glGetError();
5590 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttribI4ui\n", err);
5591 #endif
5592 DECODER_DEBUG_LOG("gles2(%p): glVertexAttribI4ui(index:%u v0:%u v1:%u v2:%u v3:%u )", stream, var_index, var_v0, var_v1, var_v2, var_v3);
5593 this->glVertexAttribI4ui(var_index, var_v0, var_v1, var_v2, var_v3);
5594 SET_LASTCALL("glVertexAttribI4ui");
5595 android::base::endTrace();
5596 break;
5597 }
5598 case OP_glVertexAttribI4iv: {
5599 android::base::beginTrace("glVertexAttribI4iv decode");
5600 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
5601 uint32_t size_v __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
5602 InputBuffer inptr_v(ptr + 8 + 4 + 4, size_v);
5603 if (useChecksum) {
5604 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + size_v, checksumSize,
5605 "gles2_decoder_context_t::decode, OP_glVertexAttribI4iv: GL checksumCalculator failure\n");
5606 }
5607 #ifdef CHECK_GL_ERRORS
5608 GLint err = this->glGetError();
5609 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttribI4iv\n", err);
5610 #endif
5611 DECODER_DEBUG_LOG("gles2(%p): glVertexAttribI4iv(index:%u v:%p(%u) )", stream, var_index, (const GLint*)(inptr_v.get()), size_v);
5612 this->glVertexAttribI4iv(var_index, (const GLint*)(inptr_v.get()));
5613 SET_LASTCALL("glVertexAttribI4iv");
5614 android::base::endTrace();
5615 break;
5616 }
5617 case OP_glVertexAttribI4uiv: {
5618 android::base::beginTrace("glVertexAttribI4uiv decode");
5619 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
5620 uint32_t size_v __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
5621 InputBuffer inptr_v(ptr + 8 + 4 + 4, size_v);
5622 if (useChecksum) {
5623 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + size_v, checksumSize,
5624 "gles2_decoder_context_t::decode, OP_glVertexAttribI4uiv: GL checksumCalculator failure\n");
5625 }
5626 #ifdef CHECK_GL_ERRORS
5627 GLint err = this->glGetError();
5628 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttribI4uiv\n", err);
5629 #endif
5630 DECODER_DEBUG_LOG("gles2(%p): glVertexAttribI4uiv(index:%u v:%p(%u) )", stream, var_index, (const GLuint*)(inptr_v.get()), size_v);
5631 this->glVertexAttribI4uiv(var_index, (const GLuint*)(inptr_v.get()));
5632 SET_LASTCALL("glVertexAttribI4uiv");
5633 android::base::endTrace();
5634 break;
5635 }
5636 case OP_glVertexAttribIPointer: {
5637 android::base::beginTrace("glVertexAttribIPointer decode");
5638 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
5639 GLint var_size = Unpack<GLint,uint32_t>(ptr + 8 + 4);
5640 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
5641 GLsizei var_stride = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
5642 uint32_t size_pointer __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
5643 InputBuffer inptr_pointer(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_pointer);
5644 if (useChecksum) {
5645 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_pointer, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_pointer, checksumSize,
5646 "gles2_decoder_context_t::decode, OP_glVertexAttribIPointer: GL checksumCalculator failure\n");
5647 }
5648 #ifdef CHECK_GL_ERRORS
5649 GLint err = this->glGetError();
5650 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttribIPointer\n", err);
5651 #endif
5652 DECODER_DEBUG_LOG("gles2(%p): glVertexAttribIPointer(index:%u size:%d type:0x%08x stride:%d pointer:%p(%u) )", stream, var_index, var_size, var_type, var_stride, (const GLvoid*)(inptr_pointer.get()), size_pointer);
5653 this->glVertexAttribIPointer(var_index, var_size, var_type, var_stride, (const GLvoid*)(inptr_pointer.get()));
5654 SET_LASTCALL("glVertexAttribIPointer");
5655 android::base::endTrace();
5656 break;
5657 }
5658 case OP_glVertexAttribIPointerOffsetAEMU: {
5659 android::base::beginTrace("glVertexAttribIPointerOffsetAEMU decode");
5660 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
5661 GLint var_size = Unpack<GLint,uint32_t>(ptr + 8 + 4);
5662 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
5663 GLsizei var_stride = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
5664 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
5665 if (useChecksum) {
5666 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
5667 "gles2_decoder_context_t::decode, OP_glVertexAttribIPointerOffsetAEMU: GL checksumCalculator failure\n");
5668 }
5669 #ifdef CHECK_GL_ERRORS
5670 GLint err = this->glGetError();
5671 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttribIPointerOffsetAEMU\n", err);
5672 #endif
5673 DECODER_DEBUG_LOG("gles2(%p): glVertexAttribIPointerOffsetAEMU(index:%u size:%d type:0x%08x stride:%d offset:%u )", stream, var_index, var_size, var_type, var_stride, var_offset);
5674 this->glVertexAttribIPointerOffsetAEMU(this, var_index, var_size, var_type, var_stride, var_offset);
5675 SET_LASTCALL("glVertexAttribIPointerOffsetAEMU");
5676 android::base::endTrace();
5677 break;
5678 }
5679 case OP_glVertexAttribIPointerDataAEMU: {
5680 android::base::beginTrace("glVertexAttribIPointerDataAEMU decode");
5681 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
5682 GLint var_size = Unpack<GLint,uint32_t>(ptr + 8 + 4);
5683 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
5684 GLsizei var_stride = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
5685 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
5686 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_data);
5687 GLuint var_datalen = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_data);
5688 if (useChecksum) {
5689 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_data + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_data + 4, checksumSize,
5690 "gles2_decoder_context_t::decode, OP_glVertexAttribIPointerDataAEMU: GL checksumCalculator failure\n");
5691 }
5692 #ifdef CHECK_GL_ERRORS
5693 GLint err = this->glGetError();
5694 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttribIPointerDataAEMU\n", err);
5695 #endif
5696 DECODER_DEBUG_LOG("gles2(%p): glVertexAttribIPointerDataAEMU(index:%u size:%d type:0x%08x stride:%d data:%p(%u) datalen:%u )", stream, var_index, var_size, var_type, var_stride, (void*)(inptr_data.get()), size_data, var_datalen);
5697 this->glVertexAttribIPointerDataAEMU(this, var_index, var_size, var_type, var_stride, (void*)(inptr_data.get()), var_datalen);
5698 SET_LASTCALL("glVertexAttribIPointerDataAEMU");
5699 android::base::endTrace();
5700 break;
5701 }
5702 case OP_glGetVertexAttribIiv: {
5703 android::base::beginTrace("glGetVertexAttribIiv decode");
5704 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
5705 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
5706 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
5707 if (useChecksum) {
5708 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
5709 "gles2_decoder_context_t::decode, OP_glGetVertexAttribIiv: GL checksumCalculator failure\n");
5710 }
5711 size_t totalTmpSize = size_params;
5712 totalTmpSize += checksumSize;
5713 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
5714 OutputBuffer outptr_params(&tmpBuf[0], size_params);
5715 #ifdef CHECK_GL_ERRORS
5716 GLint err = this->glGetError();
5717 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetVertexAttribIiv\n", err);
5718 #endif
5719 DECODER_DEBUG_LOG("gles2(%p): glGetVertexAttribIiv(index:%u pname:0x%08x params:%p(%u) )", stream, var_index, var_pname, (GLint*)(outptr_params.get()), size_params);
5720 this->glGetVertexAttribIiv(var_index, var_pname, (GLint*)(outptr_params.get()));
5721 outptr_params.flush();
5722 if (useChecksum) {
5723 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
5724 }
5725 stream->flush();
5726 SET_LASTCALL("glGetVertexAttribIiv");
5727 android::base::endTrace();
5728 break;
5729 }
5730 case OP_glGetVertexAttribIuiv: {
5731 android::base::beginTrace("glGetVertexAttribIuiv decode");
5732 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
5733 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
5734 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
5735 if (useChecksum) {
5736 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
5737 "gles2_decoder_context_t::decode, OP_glGetVertexAttribIuiv: GL checksumCalculator failure\n");
5738 }
5739 size_t totalTmpSize = size_params;
5740 totalTmpSize += checksumSize;
5741 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
5742 OutputBuffer outptr_params(&tmpBuf[0], size_params);
5743 #ifdef CHECK_GL_ERRORS
5744 GLint err = this->glGetError();
5745 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetVertexAttribIuiv\n", err);
5746 #endif
5747 DECODER_DEBUG_LOG("gles2(%p): glGetVertexAttribIuiv(index:%u pname:0x%08x params:%p(%u) )", stream, var_index, var_pname, (GLuint*)(outptr_params.get()), size_params);
5748 this->glGetVertexAttribIuiv(var_index, var_pname, (GLuint*)(outptr_params.get()));
5749 outptr_params.flush();
5750 if (useChecksum) {
5751 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
5752 }
5753 stream->flush();
5754 SET_LASTCALL("glGetVertexAttribIuiv");
5755 android::base::endTrace();
5756 break;
5757 }
5758 case OP_glVertexAttribDivisor: {
5759 android::base::beginTrace("glVertexAttribDivisor decode");
5760 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
5761 GLuint var_divisor = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
5762 if (useChecksum) {
5763 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
5764 "gles2_decoder_context_t::decode, OP_glVertexAttribDivisor: GL checksumCalculator failure\n");
5765 }
5766 #ifdef CHECK_GL_ERRORS
5767 GLint err = this->glGetError();
5768 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttribDivisor\n", err);
5769 #endif
5770 DECODER_DEBUG_LOG("gles2(%p): glVertexAttribDivisor(index:%u divisor:%u )", stream, var_index, var_divisor);
5771 this->glVertexAttribDivisor(var_index, var_divisor);
5772 SET_LASTCALL("glVertexAttribDivisor");
5773 android::base::endTrace();
5774 break;
5775 }
5776 case OP_glDrawArraysInstanced: {
5777 android::base::beginTrace("glDrawArraysInstanced decode");
5778 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
5779 GLint var_first = Unpack<GLint,uint32_t>(ptr + 8 + 4);
5780 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
5781 GLsizei var_primcount = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
5782 if (useChecksum) {
5783 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
5784 "gles2_decoder_context_t::decode, OP_glDrawArraysInstanced: GL checksumCalculator failure\n");
5785 }
5786 #ifdef CHECK_GL_ERRORS
5787 GLint err = this->glGetError();
5788 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawArraysInstanced\n", err);
5789 #endif
5790 DECODER_DEBUG_LOG("gles2(%p): glDrawArraysInstanced(mode:0x%08x first:%d count:%d primcount:%d )", stream, var_mode, var_first, var_count, var_primcount);
5791 this->glDrawArraysInstanced(var_mode, var_first, var_count, var_primcount);
5792 SET_LASTCALL("glDrawArraysInstanced");
5793 android::base::endTrace();
5794 break;
5795 }
5796 case OP_glDrawElementsInstanced: {
5797 android::base::beginTrace("glDrawElementsInstanced decode");
5798 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
5799 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5800 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
5801 uint32_t size_indices __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
5802 InputBuffer inptr_indices(ptr + 8 + 4 + 4 + 4 + 4, size_indices);
5803 GLsizei var_primcount = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + size_indices);
5804 if (useChecksum) {
5805 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_indices + 4, ptr + 8 + 4 + 4 + 4 + 4 + size_indices + 4, checksumSize,
5806 "gles2_decoder_context_t::decode, OP_glDrawElementsInstanced: GL checksumCalculator failure\n");
5807 }
5808 #ifdef CHECK_GL_ERRORS
5809 GLint err = this->glGetError();
5810 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawElementsInstanced\n", err);
5811 #endif
5812 DECODER_DEBUG_LOG("gles2(%p): glDrawElementsInstanced(mode:0x%08x count:%d type:0x%08x indices:%p(%u) primcount:%d )", stream, var_mode, var_count, var_type, (const void*)(inptr_indices.get()), size_indices, var_primcount);
5813 this->glDrawElementsInstanced(var_mode, var_count, var_type, (const void*)(inptr_indices.get()), var_primcount);
5814 SET_LASTCALL("glDrawElementsInstanced");
5815 android::base::endTrace();
5816 break;
5817 }
5818 case OP_glDrawElementsInstancedDataAEMU: {
5819 android::base::beginTrace("glDrawElementsInstancedDataAEMU decode");
5820 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
5821 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5822 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
5823 uint32_t size_indices __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
5824 InputBuffer inptr_indices(ptr + 8 + 4 + 4 + 4 + 4, size_indices);
5825 GLsizei var_primcount = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + size_indices);
5826 GLsizei var_datalen = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + size_indices + 4);
5827 if (useChecksum) {
5828 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_indices + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + size_indices + 4 + 4, checksumSize,
5829 "gles2_decoder_context_t::decode, OP_glDrawElementsInstancedDataAEMU: GL checksumCalculator failure\n");
5830 }
5831 #ifdef CHECK_GL_ERRORS
5832 GLint err = this->glGetError();
5833 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawElementsInstancedDataAEMU\n", err);
5834 #endif
5835 DECODER_DEBUG_LOG("gles2(%p): glDrawElementsInstancedDataAEMU(mode:0x%08x count:%d type:0x%08x indices:%p(%u) primcount:%d datalen:%d )", stream, var_mode, var_count, var_type, (const void*)(inptr_indices.get()), size_indices, var_primcount, var_datalen);
5836 this->glDrawElementsInstancedDataAEMU(this, var_mode, var_count, var_type, (const void*)(inptr_indices.get()), var_primcount, var_datalen);
5837 SET_LASTCALL("glDrawElementsInstancedDataAEMU");
5838 android::base::endTrace();
5839 break;
5840 }
5841 case OP_glDrawElementsInstancedOffsetAEMU: {
5842 android::base::beginTrace("glDrawElementsInstancedOffsetAEMU decode");
5843 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
5844 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
5845 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
5846 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4);
5847 GLsizei var_primcount = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
5848 if (useChecksum) {
5849 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
5850 "gles2_decoder_context_t::decode, OP_glDrawElementsInstancedOffsetAEMU: GL checksumCalculator failure\n");
5851 }
5852 #ifdef CHECK_GL_ERRORS
5853 GLint err = this->glGetError();
5854 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawElementsInstancedOffsetAEMU\n", err);
5855 #endif
5856 DECODER_DEBUG_LOG("gles2(%p): glDrawElementsInstancedOffsetAEMU(mode:0x%08x count:%d type:0x%08x offset:%u primcount:%d )", stream, var_mode, var_count, var_type, var_offset, var_primcount);
5857 this->glDrawElementsInstancedOffsetAEMU(this, var_mode, var_count, var_type, var_offset, var_primcount);
5858 SET_LASTCALL("glDrawElementsInstancedOffsetAEMU");
5859 android::base::endTrace();
5860 break;
5861 }
5862 case OP_glDrawRangeElements: {
5863 android::base::beginTrace("glDrawRangeElements decode");
5864 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
5865 GLuint var_start = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
5866 GLuint var_end = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
5867 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
5868 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
5869 uint32_t size_indices __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
5870 InputBuffer inptr_indices(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, size_indices);
5871 if (useChecksum) {
5872 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + size_indices, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + size_indices, checksumSize,
5873 "gles2_decoder_context_t::decode, OP_glDrawRangeElements: GL checksumCalculator failure\n");
5874 }
5875 #ifdef CHECK_GL_ERRORS
5876 GLint err = this->glGetError();
5877 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawRangeElements\n", err);
5878 #endif
5879 DECODER_DEBUG_LOG("gles2(%p): glDrawRangeElements(mode:0x%08x start:%u end:%u count:%d type:0x%08x indices:%p(%u) )", stream, var_mode, var_start, var_end, var_count, var_type, (const GLvoid*)(inptr_indices.get()), size_indices);
5880 this->glDrawRangeElements(var_mode, var_start, var_end, var_count, var_type, (const GLvoid*)(inptr_indices.get()));
5881 SET_LASTCALL("glDrawRangeElements");
5882 android::base::endTrace();
5883 break;
5884 }
5885 case OP_glDrawRangeElementsDataAEMU: {
5886 android::base::beginTrace("glDrawRangeElementsDataAEMU decode");
5887 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
5888 GLuint var_start = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
5889 GLuint var_end = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
5890 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
5891 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
5892 uint32_t size_indices __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
5893 InputBuffer inptr_indices(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, size_indices);
5894 GLsizei var_datalen = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + size_indices);
5895 if (useChecksum) {
5896 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + size_indices + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + size_indices + 4, checksumSize,
5897 "gles2_decoder_context_t::decode, OP_glDrawRangeElementsDataAEMU: GL checksumCalculator failure\n");
5898 }
5899 #ifdef CHECK_GL_ERRORS
5900 GLint err = this->glGetError();
5901 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawRangeElementsDataAEMU\n", err);
5902 #endif
5903 DECODER_DEBUG_LOG("gles2(%p): glDrawRangeElementsDataAEMU(mode:0x%08x start:%u end:%u count:%d type:0x%08x indices:%p(%u) datalen:%d )", stream, var_mode, var_start, var_end, var_count, var_type, (const GLvoid*)(inptr_indices.get()), size_indices, var_datalen);
5904 this->glDrawRangeElementsDataAEMU(this, var_mode, var_start, var_end, var_count, var_type, (const GLvoid*)(inptr_indices.get()), var_datalen);
5905 SET_LASTCALL("glDrawRangeElementsDataAEMU");
5906 android::base::endTrace();
5907 break;
5908 }
5909 case OP_glDrawRangeElementsOffsetAEMU: {
5910 android::base::beginTrace("glDrawRangeElementsOffsetAEMU decode");
5911 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
5912 GLuint var_start = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
5913 GLuint var_end = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
5914 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
5915 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
5916 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
5917 if (useChecksum) {
5918 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
5919 "gles2_decoder_context_t::decode, OP_glDrawRangeElementsOffsetAEMU: GL checksumCalculator failure\n");
5920 }
5921 #ifdef CHECK_GL_ERRORS
5922 GLint err = this->glGetError();
5923 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawRangeElementsOffsetAEMU\n", err);
5924 #endif
5925 DECODER_DEBUG_LOG("gles2(%p): glDrawRangeElementsOffsetAEMU(mode:0x%08x start:%u end:%u count:%d type:0x%08x offset:%u )", stream, var_mode, var_start, var_end, var_count, var_type, var_offset);
5926 this->glDrawRangeElementsOffsetAEMU(this, var_mode, var_start, var_end, var_count, var_type, var_offset);
5927 SET_LASTCALL("glDrawRangeElementsOffsetAEMU");
5928 android::base::endTrace();
5929 break;
5930 }
5931 case OP_glFenceSync: {
5932 android::base::beginTrace("glFenceSync decode");
5933 GLenum var_condition = Unpack<GLenum,uint32_t>(ptr + 8);
5934 GLbitfield var_flags = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4);
5935 if (useChecksum) {
5936 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
5937 "gles2_decoder_context_t::decode, OP_glFenceSync: GL checksumCalculator failure\n");
5938 }
5939 size_t totalTmpSize = sizeof(GLsync);
5940 totalTmpSize += checksumSize;
5941 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
5942 #ifdef CHECK_GL_ERRORS
5943 GLint err = this->glGetError();
5944 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFenceSync\n", err);
5945 #endif
5946 DECODER_DEBUG_LOG("gles2(%p): glFenceSync(condition:0x%08x flags:0x%08x )", stream, var_condition, var_flags);
5947 *(GLsync *)(&tmpBuf[0]) = this->glFenceSync(var_condition, var_flags);
5948 if (useChecksum) {
5949 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
5950 }
5951 stream->flush();
5952 SET_LASTCALL("glFenceSync");
5953 android::base::endTrace();
5954 break;
5955 }
5956 case OP_glClientWaitSync: {
5957 android::base::beginTrace("glClientWaitSync decode");
5958 GLsync var_wait_on = Unpack<GLsync,uint64_t>(ptr + 8);
5959 GLbitfield var_flags = Unpack<GLbitfield,uint32_t>(ptr + 8 + 8);
5960 GLuint64 var_timeout = Unpack<GLuint64,uint64_t>(ptr + 8 + 8 + 4);
5961 if (useChecksum) {
5962 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 8, ptr + 8 + 8 + 4 + 8, checksumSize,
5963 "gles2_decoder_context_t::decode, OP_glClientWaitSync: GL checksumCalculator failure\n");
5964 }
5965 size_t totalTmpSize = sizeof(GLenum);
5966 totalTmpSize += checksumSize;
5967 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
5968 #ifdef CHECK_GL_ERRORS
5969 GLint err = this->glGetError();
5970 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glClientWaitSync\n", err);
5971 #endif
5972 DECODER_DEBUG_LOG("gles2(%p): glClientWaitSync(wait_on:%p flags:0x%08x timeout:0x%016lx )", stream, var_wait_on, var_flags, var_timeout);
5973 *(GLenum *)(&tmpBuf[0]) = this->glClientWaitSync(var_wait_on, var_flags, var_timeout);
5974 if (useChecksum) {
5975 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
5976 }
5977 stream->flush();
5978 SET_LASTCALL("glClientWaitSync");
5979 android::base::endTrace();
5980 break;
5981 }
5982 case OP_glWaitSync: {
5983 android::base::beginTrace("glWaitSync decode");
5984 GLsync var_wait_on = Unpack<GLsync,uint64_t>(ptr + 8);
5985 GLbitfield var_flags = Unpack<GLbitfield,uint32_t>(ptr + 8 + 8);
5986 GLuint64 var_timeout = Unpack<GLuint64,uint64_t>(ptr + 8 + 8 + 4);
5987 if (useChecksum) {
5988 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 8, ptr + 8 + 8 + 4 + 8, checksumSize,
5989 "gles2_decoder_context_t::decode, OP_glWaitSync: GL checksumCalculator failure\n");
5990 }
5991 #ifdef CHECK_GL_ERRORS
5992 GLint err = this->glGetError();
5993 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glWaitSync\n", err);
5994 #endif
5995 DECODER_DEBUG_LOG("gles2(%p): glWaitSync(wait_on:%p flags:0x%08x timeout:0x%016lx )", stream, var_wait_on, var_flags, var_timeout);
5996 this->glWaitSync(var_wait_on, var_flags, var_timeout);
5997 SET_LASTCALL("glWaitSync");
5998 android::base::endTrace();
5999 break;
6000 }
6001 case OP_glDeleteSync: {
6002 android::base::beginTrace("glDeleteSync decode");
6003 GLsync var_to_delete = Unpack<GLsync,uint64_t>(ptr + 8);
6004 if (useChecksum) {
6005 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize,
6006 "gles2_decoder_context_t::decode, OP_glDeleteSync: GL checksumCalculator failure\n");
6007 }
6008 #ifdef CHECK_GL_ERRORS
6009 GLint err = this->glGetError();
6010 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteSync\n", err);
6011 #endif
6012 DECODER_DEBUG_LOG("gles2(%p): glDeleteSync(to_delete:%p )", stream, var_to_delete);
6013 this->glDeleteSync(var_to_delete);
6014 SET_LASTCALL("glDeleteSync");
6015 android::base::endTrace();
6016 break;
6017 }
6018 case OP_glIsSync: {
6019 android::base::beginTrace("glIsSync decode");
6020 GLsync var_sync = Unpack<GLsync,uint64_t>(ptr + 8);
6021 if (useChecksum) {
6022 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize,
6023 "gles2_decoder_context_t::decode, OP_glIsSync: GL checksumCalculator failure\n");
6024 }
6025 size_t totalTmpSize = sizeof(GLboolean);
6026 totalTmpSize += checksumSize;
6027 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6028 #ifdef CHECK_GL_ERRORS
6029 GLint err = this->glGetError();
6030 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsSync\n", err);
6031 #endif
6032 DECODER_DEBUG_LOG("gles2(%p): glIsSync(sync:%p )", stream, var_sync);
6033 *(GLboolean *)(&tmpBuf[0]) = this->glIsSync(var_sync);
6034 if (useChecksum) {
6035 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6036 }
6037 stream->flush();
6038 SET_LASTCALL("glIsSync");
6039 android::base::endTrace();
6040 break;
6041 }
6042 case OP_glGetSynciv: {
6043 android::base::beginTrace("glGetSynciv decode");
6044 GLsync var_sync = Unpack<GLsync,uint64_t>(ptr + 8);
6045 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 8);
6046 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 8 + 4);
6047 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 4 + 4);
6048 InputBuffer inptr_length(ptr + 8 + 8 + 4 + 4 + 4, size_length);
6049 uint32_t size_values __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 4 + 4 + 4 + size_length);
6050 InputBuffer inptr_values(ptr + 8 + 8 + 4 + 4 + 4 + size_length + 4, size_values);
6051 if (useChecksum) {
6052 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 4 + 4 + size_length + 4 + size_values, ptr + 8 + 8 + 4 + 4 + 4 + size_length + 4 + size_values, checksumSize,
6053 "gles2_decoder_context_t::decode, OP_glGetSynciv: GL checksumCalculator failure\n");
6054 }
6055 #ifdef CHECK_GL_ERRORS
6056 GLint err = this->glGetError();
6057 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetSynciv\n", err);
6058 #endif
6059 DECODER_DEBUG_LOG("gles2(%p): glGetSynciv(sync:%p pname:0x%08x bufSize:%d length:%p(%u) values:%p(%u) )", stream, var_sync, var_pname, var_bufSize, (GLsizei*)(inptr_length.get()), size_length, (GLint*)(inptr_values.get()), size_values);
6060 this->glGetSynciv(var_sync, var_pname, var_bufSize, (GLsizei*)(inptr_length.get()), (GLint*)(inptr_values.get()));
6061 SET_LASTCALL("glGetSynciv");
6062 android::base::endTrace();
6063 break;
6064 }
6065 case OP_glFenceSyncAEMU: {
6066 android::base::beginTrace("glFenceSyncAEMU decode");
6067 GLenum var_condition = Unpack<GLenum,uint32_t>(ptr + 8);
6068 GLbitfield var_flags = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4);
6069 if (useChecksum) {
6070 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
6071 "gles2_decoder_context_t::decode, OP_glFenceSyncAEMU: GL checksumCalculator failure\n");
6072 }
6073 size_t totalTmpSize = sizeof(uint64_t);
6074 totalTmpSize += checksumSize;
6075 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6076 #ifdef CHECK_GL_ERRORS
6077 GLint err = this->glGetError();
6078 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFenceSyncAEMU\n", err);
6079 #endif
6080 DECODER_DEBUG_LOG("gles2(%p): glFenceSyncAEMU(condition:0x%08x flags:0x%08x )", stream, var_condition, var_flags);
6081 *(uint64_t *)(&tmpBuf[0]) = this->glFenceSyncAEMU(this, var_condition, var_flags);
6082 if (useChecksum) {
6083 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6084 }
6085 stream->flush();
6086 SET_LASTCALL("glFenceSyncAEMU");
6087 android::base::endTrace();
6088 break;
6089 }
6090 case OP_glClientWaitSyncAEMU: {
6091 android::base::beginTrace("glClientWaitSyncAEMU decode");
6092 uint64_t var_wait_on = Unpack<uint64_t,uint64_t>(ptr + 8);
6093 GLbitfield var_flags = Unpack<GLbitfield,uint32_t>(ptr + 8 + 8);
6094 GLuint64 var_timeout = Unpack<GLuint64,uint64_t>(ptr + 8 + 8 + 4);
6095 if (useChecksum) {
6096 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 8, ptr + 8 + 8 + 4 + 8, checksumSize,
6097 "gles2_decoder_context_t::decode, OP_glClientWaitSyncAEMU: GL checksumCalculator failure\n");
6098 }
6099 size_t totalTmpSize = sizeof(GLenum);
6100 totalTmpSize += checksumSize;
6101 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6102 #ifdef CHECK_GL_ERRORS
6103 GLint err = this->glGetError();
6104 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glClientWaitSyncAEMU\n", err);
6105 #endif
6106 DECODER_DEBUG_LOG("gles2(%p): glClientWaitSyncAEMU(wait_on:0x%016lx flags:0x%08x timeout:0x%016lx )", stream, var_wait_on, var_flags, var_timeout);
6107 *(GLenum *)(&tmpBuf[0]) = this->glClientWaitSyncAEMU(this, var_wait_on, var_flags, var_timeout);
6108 if (useChecksum) {
6109 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6110 }
6111 stream->flush();
6112 SET_LASTCALL("glClientWaitSyncAEMU");
6113 android::base::endTrace();
6114 break;
6115 }
6116 case OP_glWaitSyncAEMU: {
6117 android::base::beginTrace("glWaitSyncAEMU decode");
6118 uint64_t var_wait_on = Unpack<uint64_t,uint64_t>(ptr + 8);
6119 GLbitfield var_flags = Unpack<GLbitfield,uint32_t>(ptr + 8 + 8);
6120 GLuint64 var_timeout = Unpack<GLuint64,uint64_t>(ptr + 8 + 8 + 4);
6121 if (useChecksum) {
6122 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 8, ptr + 8 + 8 + 4 + 8, checksumSize,
6123 "gles2_decoder_context_t::decode, OP_glWaitSyncAEMU: GL checksumCalculator failure\n");
6124 }
6125 #ifdef CHECK_GL_ERRORS
6126 GLint err = this->glGetError();
6127 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glWaitSyncAEMU\n", err);
6128 #endif
6129 DECODER_DEBUG_LOG("gles2(%p): glWaitSyncAEMU(wait_on:0x%016lx flags:0x%08x timeout:0x%016lx )", stream, var_wait_on, var_flags, var_timeout);
6130 this->glWaitSyncAEMU(this, var_wait_on, var_flags, var_timeout);
6131 SET_LASTCALL("glWaitSyncAEMU");
6132 android::base::endTrace();
6133 break;
6134 }
6135 case OP_glDeleteSyncAEMU: {
6136 android::base::beginTrace("glDeleteSyncAEMU decode");
6137 uint64_t var_to_delete = Unpack<uint64_t,uint64_t>(ptr + 8);
6138 if (useChecksum) {
6139 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize,
6140 "gles2_decoder_context_t::decode, OP_glDeleteSyncAEMU: GL checksumCalculator failure\n");
6141 }
6142 #ifdef CHECK_GL_ERRORS
6143 GLint err = this->glGetError();
6144 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteSyncAEMU\n", err);
6145 #endif
6146 DECODER_DEBUG_LOG("gles2(%p): glDeleteSyncAEMU(to_delete:0x%016lx )", stream, var_to_delete);
6147 this->glDeleteSyncAEMU(this, var_to_delete);
6148 SET_LASTCALL("glDeleteSyncAEMU");
6149 android::base::endTrace();
6150 break;
6151 }
6152 case OP_glIsSyncAEMU: {
6153 android::base::beginTrace("glIsSyncAEMU decode");
6154 uint64_t var_sync = Unpack<uint64_t,uint64_t>(ptr + 8);
6155 if (useChecksum) {
6156 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize,
6157 "gles2_decoder_context_t::decode, OP_glIsSyncAEMU: GL checksumCalculator failure\n");
6158 }
6159 size_t totalTmpSize = sizeof(GLboolean);
6160 totalTmpSize += checksumSize;
6161 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6162 #ifdef CHECK_GL_ERRORS
6163 GLint err = this->glGetError();
6164 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsSyncAEMU\n", err);
6165 #endif
6166 DECODER_DEBUG_LOG("gles2(%p): glIsSyncAEMU(sync:0x%016lx )", stream, var_sync);
6167 *(GLboolean *)(&tmpBuf[0]) = this->glIsSyncAEMU(this, var_sync);
6168 if (useChecksum) {
6169 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6170 }
6171 stream->flush();
6172 SET_LASTCALL("glIsSyncAEMU");
6173 android::base::endTrace();
6174 break;
6175 }
6176 case OP_glGetSyncivAEMU: {
6177 android::base::beginTrace("glGetSyncivAEMU decode");
6178 uint64_t var_sync = Unpack<uint64_t,uint64_t>(ptr + 8);
6179 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 8);
6180 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 8 + 4);
6181 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 4 + 4);
6182 uint32_t size_values __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 4 + 4 + 4);
6183 if (useChecksum) {
6184 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 4 + 4 + 4, ptr + 8 + 8 + 4 + 4 + 4 + 4, checksumSize,
6185 "gles2_decoder_context_t::decode, OP_glGetSyncivAEMU: GL checksumCalculator failure\n");
6186 }
6187 size_t totalTmpSize = size_length;
6188 totalTmpSize += size_values;
6189 totalTmpSize += checksumSize;
6190 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6191 OutputBuffer outptr_length(&tmpBuf[0], size_length);
6192 OutputBuffer outptr_values(&tmpBuf[0 + size_length], size_values);
6193 #ifdef CHECK_GL_ERRORS
6194 GLint err = this->glGetError();
6195 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetSyncivAEMU\n", err);
6196 #endif
6197 DECODER_DEBUG_LOG("gles2(%p): glGetSyncivAEMU(sync:0x%016lx pname:0x%08x bufSize:%d length:%p(%u) values:%p(%u) )", stream, var_sync, var_pname, var_bufSize, (GLsizei*)(outptr_length.get()), size_length, (GLint*)(outptr_values.get()), size_values);
6198 this->glGetSyncivAEMU(this, var_sync, var_pname, var_bufSize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLint*)(outptr_values.get()));
6199 outptr_length.flush();
6200 outptr_values.flush();
6201 if (useChecksum) {
6202 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6203 }
6204 stream->flush();
6205 SET_LASTCALL("glGetSyncivAEMU");
6206 android::base::endTrace();
6207 break;
6208 }
6209 case OP_glDrawBuffers: {
6210 android::base::beginTrace("glDrawBuffers decode");
6211 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
6212 uint32_t size_bufs __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
6213 InputBuffer inptr_bufs(ptr + 8 + 4 + 4, size_bufs);
6214 if (useChecksum) {
6215 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_bufs, ptr + 8 + 4 + 4 + size_bufs, checksumSize,
6216 "gles2_decoder_context_t::decode, OP_glDrawBuffers: GL checksumCalculator failure\n");
6217 }
6218 #ifdef CHECK_GL_ERRORS
6219 GLint err = this->glGetError();
6220 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawBuffers\n", err);
6221 #endif
6222 DECODER_DEBUG_LOG("gles2(%p): glDrawBuffers(n:%d bufs:%p(%u) )", stream, var_n, (const GLenum*)(inptr_bufs.get()), size_bufs);
6223 this->glDrawBuffers(var_n, (const GLenum*)(inptr_bufs.get()));
6224 SET_LASTCALL("glDrawBuffers");
6225 android::base::endTrace();
6226 break;
6227 }
6228 case OP_glReadBuffer: {
6229 android::base::beginTrace("glReadBuffer decode");
6230 GLenum var_src = Unpack<GLenum,uint32_t>(ptr + 8);
6231 if (useChecksum) {
6232 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
6233 "gles2_decoder_context_t::decode, OP_glReadBuffer: GL checksumCalculator failure\n");
6234 }
6235 #ifdef CHECK_GL_ERRORS
6236 GLint err = this->glGetError();
6237 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glReadBuffer\n", err);
6238 #endif
6239 DECODER_DEBUG_LOG("gles2(%p): glReadBuffer(src:0x%08x )", stream, var_src);
6240 this->glReadBuffer(var_src);
6241 SET_LASTCALL("glReadBuffer");
6242 android::base::endTrace();
6243 break;
6244 }
6245 case OP_glBlitFramebuffer: {
6246 android::base::beginTrace("glBlitFramebuffer decode");
6247 GLint var_srcX0 = Unpack<GLint,uint32_t>(ptr + 8);
6248 GLint var_srcY0 = Unpack<GLint,uint32_t>(ptr + 8 + 4);
6249 GLint var_srcX1 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
6250 GLint var_srcY1 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
6251 GLint var_dstX0 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
6252 GLint var_dstY0 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
6253 GLint var_dstX1 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
6254 GLint var_dstY1 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
6255 GLbitfield var_mask = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
6256 GLenum var_filter = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
6257 if (useChecksum) {
6258 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
6259 "gles2_decoder_context_t::decode, OP_glBlitFramebuffer: GL checksumCalculator failure\n");
6260 }
6261 #ifdef CHECK_GL_ERRORS
6262 GLint err = this->glGetError();
6263 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBlitFramebuffer\n", err);
6264 #endif
6265 DECODER_DEBUG_LOG("gles2(%p): glBlitFramebuffer(srcX0:%d srcY0:%d srcX1:%d srcY1:%d dstX0:%d dstY0:%d dstX1:%d dstY1:%d mask:0x%08x filter:0x%08x )", stream, var_srcX0, var_srcY0, var_srcX1, var_srcY1, var_dstX0, var_dstY0, var_dstX1, var_dstY1, var_mask, var_filter);
6266 this->glBlitFramebuffer(var_srcX0, var_srcY0, var_srcX1, var_srcY1, var_dstX0, var_dstY0, var_dstX1, var_dstY1, var_mask, var_filter);
6267 SET_LASTCALL("glBlitFramebuffer");
6268 android::base::endTrace();
6269 break;
6270 }
6271 case OP_glInvalidateFramebuffer: {
6272 android::base::beginTrace("glInvalidateFramebuffer decode");
6273 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
6274 GLsizei var_numAttachments = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
6275 uint32_t size_attachments __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
6276 InputBuffer inptr_attachments(ptr + 8 + 4 + 4 + 4, size_attachments);
6277 if (useChecksum) {
6278 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_attachments, ptr + 8 + 4 + 4 + 4 + size_attachments, checksumSize,
6279 "gles2_decoder_context_t::decode, OP_glInvalidateFramebuffer: GL checksumCalculator failure\n");
6280 }
6281 #ifdef CHECK_GL_ERRORS
6282 GLint err = this->glGetError();
6283 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glInvalidateFramebuffer\n", err);
6284 #endif
6285 DECODER_DEBUG_LOG("gles2(%p): glInvalidateFramebuffer(target:0x%08x numAttachments:%d attachments:%p(%u) )", stream, var_target, var_numAttachments, (const GLenum*)(inptr_attachments.get()), size_attachments);
6286 this->glInvalidateFramebuffer(var_target, var_numAttachments, (const GLenum*)(inptr_attachments.get()));
6287 SET_LASTCALL("glInvalidateFramebuffer");
6288 android::base::endTrace();
6289 break;
6290 }
6291 case OP_glInvalidateSubFramebuffer: {
6292 android::base::beginTrace("glInvalidateSubFramebuffer decode");
6293 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
6294 GLsizei var_numAttachments = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
6295 uint32_t size_attachments __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
6296 InputBuffer inptr_attachments(ptr + 8 + 4 + 4 + 4, size_attachments);
6297 GLint var_x = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_attachments);
6298 GLint var_y = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_attachments + 4);
6299 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_attachments + 4 + 4);
6300 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_attachments + 4 + 4 + 4);
6301 if (useChecksum) {
6302 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_attachments + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + size_attachments + 4 + 4 + 4 + 4, checksumSize,
6303 "gles2_decoder_context_t::decode, OP_glInvalidateSubFramebuffer: GL checksumCalculator failure\n");
6304 }
6305 #ifdef CHECK_GL_ERRORS
6306 GLint err = this->glGetError();
6307 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glInvalidateSubFramebuffer\n", err);
6308 #endif
6309 DECODER_DEBUG_LOG("gles2(%p): glInvalidateSubFramebuffer(target:0x%08x numAttachments:%d attachments:%p(%u) x:%d y:%d width:%d height:%d )", stream, var_target, var_numAttachments, (const GLenum*)(inptr_attachments.get()), size_attachments, var_x, var_y, var_width, var_height);
6310 this->glInvalidateSubFramebuffer(var_target, var_numAttachments, (const GLenum*)(inptr_attachments.get()), var_x, var_y, var_width, var_height);
6311 SET_LASTCALL("glInvalidateSubFramebuffer");
6312 android::base::endTrace();
6313 break;
6314 }
6315 case OP_glFramebufferTextureLayer: {
6316 android::base::beginTrace("glFramebufferTextureLayer decode");
6317 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
6318 GLenum var_attachment = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
6319 GLuint var_texture = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
6320 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
6321 GLint var_layer = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
6322 if (useChecksum) {
6323 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
6324 "gles2_decoder_context_t::decode, OP_glFramebufferTextureLayer: GL checksumCalculator failure\n");
6325 }
6326 #ifdef CHECK_GL_ERRORS
6327 GLint err = this->glGetError();
6328 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFramebufferTextureLayer\n", err);
6329 #endif
6330 DECODER_DEBUG_LOG("gles2(%p): glFramebufferTextureLayer(target:0x%08x attachment:0x%08x texture:%u level:%d layer:%d )", stream, var_target, var_attachment, var_texture, var_level, var_layer);
6331 this->glFramebufferTextureLayer(var_target, var_attachment, var_texture, var_level, var_layer);
6332 SET_LASTCALL("glFramebufferTextureLayer");
6333 android::base::endTrace();
6334 break;
6335 }
6336 case OP_glRenderbufferStorageMultisample: {
6337 android::base::beginTrace("glRenderbufferStorageMultisample decode");
6338 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
6339 GLsizei var_samples = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
6340 GLenum var_internalformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
6341 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
6342 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
6343 if (useChecksum) {
6344 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
6345 "gles2_decoder_context_t::decode, OP_glRenderbufferStorageMultisample: GL checksumCalculator failure\n");
6346 }
6347 #ifdef CHECK_GL_ERRORS
6348 GLint err = this->glGetError();
6349 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glRenderbufferStorageMultisample\n", err);
6350 #endif
6351 DECODER_DEBUG_LOG("gles2(%p): glRenderbufferStorageMultisample(target:0x%08x samples:%d internalformat:0x%08x width:%d height:%d )", stream, var_target, var_samples, var_internalformat, var_width, var_height);
6352 this->glRenderbufferStorageMultisample(var_target, var_samples, var_internalformat, var_width, var_height);
6353 SET_LASTCALL("glRenderbufferStorageMultisample");
6354 android::base::endTrace();
6355 break;
6356 }
6357 case OP_glTexStorage2D: {
6358 android::base::beginTrace("glTexStorage2D decode");
6359 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
6360 GLsizei var_levels = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
6361 GLenum var_internalformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
6362 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
6363 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
6364 if (useChecksum) {
6365 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
6366 "gles2_decoder_context_t::decode, OP_glTexStorage2D: GL checksumCalculator failure\n");
6367 }
6368 #ifdef CHECK_GL_ERRORS
6369 GLint err = this->glGetError();
6370 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexStorage2D\n", err);
6371 #endif
6372 DECODER_DEBUG_LOG("gles2(%p): glTexStorage2D(target:0x%08x levels:%d internalformat:0x%08x width:%d height:%d )", stream, var_target, var_levels, var_internalformat, var_width, var_height);
6373 this->glTexStorage2D(var_target, var_levels, var_internalformat, var_width, var_height);
6374 SET_LASTCALL("glTexStorage2D");
6375 android::base::endTrace();
6376 break;
6377 }
6378 case OP_glGetInternalformativ: {
6379 android::base::beginTrace("glGetInternalformativ decode");
6380 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
6381 GLenum var_internalformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
6382 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
6383 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
6384 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
6385 if (useChecksum) {
6386 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
6387 "gles2_decoder_context_t::decode, OP_glGetInternalformativ: GL checksumCalculator failure\n");
6388 }
6389 size_t totalTmpSize = size_params;
6390 totalTmpSize += checksumSize;
6391 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6392 OutputBuffer outptr_params(&tmpBuf[0], size_params);
6393 #ifdef CHECK_GL_ERRORS
6394 GLint err = this->glGetError();
6395 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetInternalformativ\n", err);
6396 #endif
6397 DECODER_DEBUG_LOG("gles2(%p): glGetInternalformativ(target:0x%08x internalformat:0x%08x pname:0x%08x bufSize:%d params:%p(%u) )", stream, var_target, var_internalformat, var_pname, var_bufSize, (GLint*)(outptr_params.get()), size_params);
6398 this->glGetInternalformativ(var_target, var_internalformat, var_pname, var_bufSize, (GLint*)(outptr_params.get()));
6399 outptr_params.flush();
6400 if (useChecksum) {
6401 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6402 }
6403 stream->flush();
6404 SET_LASTCALL("glGetInternalformativ");
6405 android::base::endTrace();
6406 break;
6407 }
6408 case OP_glBeginTransformFeedback: {
6409 android::base::beginTrace("glBeginTransformFeedback decode");
6410 GLenum var_primitiveMode = Unpack<GLenum,uint32_t>(ptr + 8);
6411 if (useChecksum) {
6412 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
6413 "gles2_decoder_context_t::decode, OP_glBeginTransformFeedback: GL checksumCalculator failure\n");
6414 }
6415 #ifdef CHECK_GL_ERRORS
6416 GLint err = this->glGetError();
6417 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBeginTransformFeedback\n", err);
6418 #endif
6419 DECODER_DEBUG_LOG("gles2(%p): glBeginTransformFeedback(primitiveMode:0x%08x )", stream, var_primitiveMode);
6420 this->glBeginTransformFeedback(var_primitiveMode);
6421 SET_LASTCALL("glBeginTransformFeedback");
6422 android::base::endTrace();
6423 break;
6424 }
6425 case OP_glEndTransformFeedback: {
6426 android::base::beginTrace("glEndTransformFeedback decode");
6427 if (useChecksum) {
6428 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize,
6429 "gles2_decoder_context_t::decode, OP_glEndTransformFeedback: GL checksumCalculator failure\n");
6430 }
6431 #ifdef CHECK_GL_ERRORS
6432 GLint err = this->glGetError();
6433 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glEndTransformFeedback\n", err);
6434 #endif
6435 DECODER_DEBUG_LOG("gles2(%p): glEndTransformFeedback()", stream);
6436 this->glEndTransformFeedback();
6437 SET_LASTCALL("glEndTransformFeedback");
6438 android::base::endTrace();
6439 break;
6440 }
6441 case OP_glGenTransformFeedbacks: {
6442 android::base::beginTrace("glGenTransformFeedbacks decode");
6443 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
6444 uint32_t size_ids __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
6445 if (useChecksum) {
6446 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
6447 "gles2_decoder_context_t::decode, OP_glGenTransformFeedbacks: GL checksumCalculator failure\n");
6448 }
6449 size_t totalTmpSize = size_ids;
6450 totalTmpSize += checksumSize;
6451 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6452 OutputBuffer outptr_ids(&tmpBuf[0], size_ids);
6453 #ifdef CHECK_GL_ERRORS
6454 GLint err = this->glGetError();
6455 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGenTransformFeedbacks\n", err);
6456 #endif
6457 DECODER_DEBUG_LOG("gles2(%p): glGenTransformFeedbacks(n:%d ids:%p(%u) )", stream, var_n, (GLuint*)(outptr_ids.get()), size_ids);
6458 this->glGenTransformFeedbacks_dec(this, var_n, (GLuint*)(outptr_ids.get()));
6459 outptr_ids.flush();
6460 if (useChecksum) {
6461 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6462 }
6463 stream->flush();
6464 SET_LASTCALL("glGenTransformFeedbacks");
6465 android::base::endTrace();
6466 break;
6467 }
6468 case OP_glDeleteTransformFeedbacks: {
6469 android::base::beginTrace("glDeleteTransformFeedbacks decode");
6470 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
6471 uint32_t size_ids __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
6472 InputBuffer inptr_ids(ptr + 8 + 4 + 4, size_ids);
6473 if (useChecksum) {
6474 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_ids, ptr + 8 + 4 + 4 + size_ids, checksumSize,
6475 "gles2_decoder_context_t::decode, OP_glDeleteTransformFeedbacks: GL checksumCalculator failure\n");
6476 }
6477 #ifdef CHECK_GL_ERRORS
6478 GLint err = this->glGetError();
6479 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteTransformFeedbacks\n", err);
6480 #endif
6481 DECODER_DEBUG_LOG("gles2(%p): glDeleteTransformFeedbacks(n:%d ids:%p(%u) )", stream, var_n, (const GLuint*)(inptr_ids.get()), size_ids);
6482 this->glDeleteTransformFeedbacks_dec(this, var_n, (const GLuint*)(inptr_ids.get()));
6483 SET_LASTCALL("glDeleteTransformFeedbacks");
6484 android::base::endTrace();
6485 break;
6486 }
6487 case OP_glBindTransformFeedback: {
6488 android::base::beginTrace("glBindTransformFeedback decode");
6489 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
6490 GLuint var_id = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
6491 if (useChecksum) {
6492 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
6493 "gles2_decoder_context_t::decode, OP_glBindTransformFeedback: GL checksumCalculator failure\n");
6494 }
6495 #ifdef CHECK_GL_ERRORS
6496 GLint err = this->glGetError();
6497 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBindTransformFeedback\n", err);
6498 #endif
6499 DECODER_DEBUG_LOG("gles2(%p): glBindTransformFeedback(target:0x%08x id:%u )", stream, var_target, var_id);
6500 this->glBindTransformFeedback(var_target, var_id);
6501 SET_LASTCALL("glBindTransformFeedback");
6502 android::base::endTrace();
6503 break;
6504 }
6505 case OP_glPauseTransformFeedback: {
6506 android::base::beginTrace("glPauseTransformFeedback decode");
6507 if (useChecksum) {
6508 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize,
6509 "gles2_decoder_context_t::decode, OP_glPauseTransformFeedback: GL checksumCalculator failure\n");
6510 }
6511 #ifdef CHECK_GL_ERRORS
6512 GLint err = this->glGetError();
6513 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glPauseTransformFeedback\n", err);
6514 #endif
6515 DECODER_DEBUG_LOG("gles2(%p): glPauseTransformFeedback()", stream);
6516 this->glPauseTransformFeedback();
6517 SET_LASTCALL("glPauseTransformFeedback");
6518 android::base::endTrace();
6519 break;
6520 }
6521 case OP_glResumeTransformFeedback: {
6522 android::base::beginTrace("glResumeTransformFeedback decode");
6523 if (useChecksum) {
6524 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize,
6525 "gles2_decoder_context_t::decode, OP_glResumeTransformFeedback: GL checksumCalculator failure\n");
6526 }
6527 #ifdef CHECK_GL_ERRORS
6528 GLint err = this->glGetError();
6529 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glResumeTransformFeedback\n", err);
6530 #endif
6531 DECODER_DEBUG_LOG("gles2(%p): glResumeTransformFeedback()", stream);
6532 this->glResumeTransformFeedback();
6533 SET_LASTCALL("glResumeTransformFeedback");
6534 android::base::endTrace();
6535 break;
6536 }
6537 case OP_glIsTransformFeedback: {
6538 android::base::beginTrace("glIsTransformFeedback decode");
6539 GLuint var_id = Unpack<GLuint,uint32_t>(ptr + 8);
6540 if (useChecksum) {
6541 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
6542 "gles2_decoder_context_t::decode, OP_glIsTransformFeedback: GL checksumCalculator failure\n");
6543 }
6544 size_t totalTmpSize = sizeof(GLboolean);
6545 totalTmpSize += checksumSize;
6546 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6547 #ifdef CHECK_GL_ERRORS
6548 GLint err = this->glGetError();
6549 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsTransformFeedback\n", err);
6550 #endif
6551 DECODER_DEBUG_LOG("gles2(%p): glIsTransformFeedback(id:%u )", stream, var_id);
6552 *(GLboolean *)(&tmpBuf[0]) = this->glIsTransformFeedback(var_id);
6553 if (useChecksum) {
6554 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6555 }
6556 stream->flush();
6557 SET_LASTCALL("glIsTransformFeedback");
6558 android::base::endTrace();
6559 break;
6560 }
6561 case OP_glTransformFeedbackVaryings: {
6562 android::base::beginTrace("glTransformFeedbackVaryings decode");
6563 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
6564 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
6565 uint32_t size_varyings __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
6566 InputBuffer inptr_varyings(ptr + 8 + 4 + 4 + 4, size_varyings);
6567 GLenum var_bufferMode = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_varyings);
6568 if (useChecksum) {
6569 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_varyings + 4, ptr + 8 + 4 + 4 + 4 + size_varyings + 4, checksumSize,
6570 "gles2_decoder_context_t::decode, OP_glTransformFeedbackVaryings: GL checksumCalculator failure\n");
6571 }
6572 #ifdef CHECK_GL_ERRORS
6573 GLint err = this->glGetError();
6574 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTransformFeedbackVaryings\n", err);
6575 #endif
6576 DECODER_DEBUG_LOG("gles2(%p): glTransformFeedbackVaryings(program:%u count:%d varyings:%p(%u) bufferMode:0x%08x )", stream, var_program, var_count, (const char**)(inptr_varyings.get()), size_varyings, var_bufferMode);
6577 this->glTransformFeedbackVaryings_dec(this, var_program, var_count, (const char**)(inptr_varyings.get()), var_bufferMode);
6578 SET_LASTCALL("glTransformFeedbackVaryings");
6579 android::base::endTrace();
6580 break;
6581 }
6582 case OP_glTransformFeedbackVaryingsAEMU: {
6583 android::base::beginTrace("glTransformFeedbackVaryingsAEMU decode");
6584 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
6585 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
6586 uint32_t size_packedVaryings __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
6587 InputBuffer inptr_packedVaryings(ptr + 8 + 4 + 4 + 4, size_packedVaryings);
6588 GLuint var_packedVaryingsLen = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_packedVaryings);
6589 GLenum var_bufferMode = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_packedVaryings + 4);
6590 if (useChecksum) {
6591 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_packedVaryings + 4 + 4, ptr + 8 + 4 + 4 + 4 + size_packedVaryings + 4 + 4, checksumSize,
6592 "gles2_decoder_context_t::decode, OP_glTransformFeedbackVaryingsAEMU: GL checksumCalculator failure\n");
6593 }
6594 #ifdef CHECK_GL_ERRORS
6595 GLint err = this->glGetError();
6596 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTransformFeedbackVaryingsAEMU\n", err);
6597 #endif
6598 DECODER_DEBUG_LOG("gles2(%p): glTransformFeedbackVaryingsAEMU(program:%u count:%d packedVaryings:%p(%u) packedVaryingsLen:%u bufferMode:0x%08x )", stream, var_program, var_count, (const char*)(inptr_packedVaryings.get()), size_packedVaryings, var_packedVaryingsLen, var_bufferMode);
6599 this->glTransformFeedbackVaryingsAEMU(this, var_program, var_count, (const char*)(inptr_packedVaryings.get()), var_packedVaryingsLen, var_bufferMode);
6600 SET_LASTCALL("glTransformFeedbackVaryingsAEMU");
6601 android::base::endTrace();
6602 break;
6603 }
6604 case OP_glGetTransformFeedbackVarying: {
6605 android::base::beginTrace("glGetTransformFeedbackVarying decode");
6606 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
6607 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
6608 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
6609 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
6610 uint32_t size_size __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
6611 uint32_t size_type __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
6612 uint32_t size_name __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
6613 if (useChecksum) {
6614 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
6615 "gles2_decoder_context_t::decode, OP_glGetTransformFeedbackVarying: GL checksumCalculator failure\n");
6616 }
6617 size_t totalTmpSize = size_length;
6618 totalTmpSize += size_size;
6619 totalTmpSize += size_type;
6620 totalTmpSize += size_name;
6621 totalTmpSize += checksumSize;
6622 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6623 OutputBuffer outptr_length(&tmpBuf[0], size_length);
6624 OutputBuffer outptr_size(&tmpBuf[0 + size_length], size_size);
6625 OutputBuffer outptr_type(&tmpBuf[0 + size_length + size_size], size_type);
6626 OutputBuffer outptr_name(&tmpBuf[0 + size_length + size_size + size_type], size_name);
6627 #ifdef CHECK_GL_ERRORS
6628 GLint err = this->glGetError();
6629 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetTransformFeedbackVarying\n", err);
6630 #endif
6631 DECODER_DEBUG_LOG("gles2(%p): glGetTransformFeedbackVarying(program:%u index:%u bufSize:%d length:%p(%u) size:%p(%u) type:%p(%u) name:%p(%u) )", stream, var_program, var_index, var_bufSize, (GLsizei*)(outptr_length.get()), size_length, (GLsizei*)(outptr_size.get()), size_size, (GLenum*)(outptr_type.get()), size_type, (char*)(outptr_name.get()), size_name);
6632 this->glGetTransformFeedbackVarying_dec(this, var_program, var_index, var_bufSize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLsizei*)(outptr_size.get()), size_type == 0 ? nullptr : (GLenum*)(outptr_type.get()), size_name == 0 ? nullptr : (char*)(outptr_name.get()));
6633 outptr_length.flush();
6634 outptr_size.flush();
6635 outptr_type.flush();
6636 outptr_name.flush();
6637 if (useChecksum) {
6638 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6639 }
6640 stream->flush();
6641 SET_LASTCALL("glGetTransformFeedbackVarying");
6642 android::base::endTrace();
6643 break;
6644 }
6645 case OP_glGenSamplers: {
6646 android::base::beginTrace("glGenSamplers decode");
6647 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
6648 uint32_t size_samplers __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
6649 if (useChecksum) {
6650 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
6651 "gles2_decoder_context_t::decode, OP_glGenSamplers: GL checksumCalculator failure\n");
6652 }
6653 size_t totalTmpSize = size_samplers;
6654 totalTmpSize += checksumSize;
6655 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6656 OutputBuffer outptr_samplers(&tmpBuf[0], size_samplers);
6657 #ifdef CHECK_GL_ERRORS
6658 GLint err = this->glGetError();
6659 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGenSamplers\n", err);
6660 #endif
6661 DECODER_DEBUG_LOG("gles2(%p): glGenSamplers(n:%d samplers:%p(%u) )", stream, var_n, (GLuint*)(outptr_samplers.get()), size_samplers);
6662 this->glGenSamplers_dec(this, var_n, (GLuint*)(outptr_samplers.get()));
6663 outptr_samplers.flush();
6664 if (useChecksum) {
6665 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6666 }
6667 stream->flush();
6668 SET_LASTCALL("glGenSamplers");
6669 android::base::endTrace();
6670 break;
6671 }
6672 case OP_glDeleteSamplers: {
6673 android::base::beginTrace("glDeleteSamplers decode");
6674 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
6675 uint32_t size_samplers __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
6676 InputBuffer inptr_samplers(ptr + 8 + 4 + 4, size_samplers);
6677 if (useChecksum) {
6678 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_samplers, ptr + 8 + 4 + 4 + size_samplers, checksumSize,
6679 "gles2_decoder_context_t::decode, OP_glDeleteSamplers: GL checksumCalculator failure\n");
6680 }
6681 #ifdef CHECK_GL_ERRORS
6682 GLint err = this->glGetError();
6683 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteSamplers\n", err);
6684 #endif
6685 DECODER_DEBUG_LOG("gles2(%p): glDeleteSamplers(n:%d samplers:%p(%u) )", stream, var_n, (const GLuint*)(inptr_samplers.get()), size_samplers);
6686 this->glDeleteSamplers_dec(this, var_n, (const GLuint*)(inptr_samplers.get()));
6687 SET_LASTCALL("glDeleteSamplers");
6688 android::base::endTrace();
6689 break;
6690 }
6691 case OP_glBindSampler: {
6692 android::base::beginTrace("glBindSampler decode");
6693 GLuint var_unit = Unpack<GLuint,uint32_t>(ptr + 8);
6694 GLuint var_sampler = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
6695 if (useChecksum) {
6696 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
6697 "gles2_decoder_context_t::decode, OP_glBindSampler: GL checksumCalculator failure\n");
6698 }
6699 #ifdef CHECK_GL_ERRORS
6700 GLint err = this->glGetError();
6701 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBindSampler\n", err);
6702 #endif
6703 DECODER_DEBUG_LOG("gles2(%p): glBindSampler(unit:%u sampler:%u )", stream, var_unit, var_sampler);
6704 this->glBindSampler(var_unit, var_sampler);
6705 SET_LASTCALL("glBindSampler");
6706 android::base::endTrace();
6707 break;
6708 }
6709 case OP_glSamplerParameterf: {
6710 android::base::beginTrace("glSamplerParameterf decode");
6711 GLuint var_sampler = Unpack<GLuint,uint32_t>(ptr + 8);
6712 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
6713 GLfloat var_param = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4);
6714 if (useChecksum) {
6715 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
6716 "gles2_decoder_context_t::decode, OP_glSamplerParameterf: GL checksumCalculator failure\n");
6717 }
6718 #ifdef CHECK_GL_ERRORS
6719 GLint err = this->glGetError();
6720 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glSamplerParameterf\n", err);
6721 #endif
6722 DECODER_DEBUG_LOG("gles2(%p): glSamplerParameterf(sampler:%u pname:0x%08x param:%f )", stream, var_sampler, var_pname, var_param);
6723 this->glSamplerParameterf(var_sampler, var_pname, var_param);
6724 SET_LASTCALL("glSamplerParameterf");
6725 android::base::endTrace();
6726 break;
6727 }
6728 case OP_glSamplerParameteri: {
6729 android::base::beginTrace("glSamplerParameteri decode");
6730 GLuint var_sampler = Unpack<GLuint,uint32_t>(ptr + 8);
6731 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
6732 GLint var_param = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
6733 if (useChecksum) {
6734 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
6735 "gles2_decoder_context_t::decode, OP_glSamplerParameteri: GL checksumCalculator failure\n");
6736 }
6737 #ifdef CHECK_GL_ERRORS
6738 GLint err = this->glGetError();
6739 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glSamplerParameteri\n", err);
6740 #endif
6741 DECODER_DEBUG_LOG("gles2(%p): glSamplerParameteri(sampler:%u pname:0x%08x param:%d )", stream, var_sampler, var_pname, var_param);
6742 this->glSamplerParameteri(var_sampler, var_pname, var_param);
6743 SET_LASTCALL("glSamplerParameteri");
6744 android::base::endTrace();
6745 break;
6746 }
6747 case OP_glSamplerParameterfv: {
6748 android::base::beginTrace("glSamplerParameterfv decode");
6749 GLuint var_sampler = Unpack<GLuint,uint32_t>(ptr + 8);
6750 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
6751 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
6752 InputBuffer inptr_params(ptr + 8 + 4 + 4 + 4, size_params);
6753 if (useChecksum) {
6754 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + 4 + size_params, checksumSize,
6755 "gles2_decoder_context_t::decode, OP_glSamplerParameterfv: GL checksumCalculator failure\n");
6756 }
6757 #ifdef CHECK_GL_ERRORS
6758 GLint err = this->glGetError();
6759 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glSamplerParameterfv\n", err);
6760 #endif
6761 DECODER_DEBUG_LOG("gles2(%p): glSamplerParameterfv(sampler:%u pname:0x%08x params:%p(%u) )", stream, var_sampler, var_pname, (const GLfloat*)(inptr_params.get()), size_params);
6762 this->glSamplerParameterfv(var_sampler, var_pname, (const GLfloat*)(inptr_params.get()));
6763 SET_LASTCALL("glSamplerParameterfv");
6764 android::base::endTrace();
6765 break;
6766 }
6767 case OP_glSamplerParameteriv: {
6768 android::base::beginTrace("glSamplerParameteriv decode");
6769 GLuint var_sampler = Unpack<GLuint,uint32_t>(ptr + 8);
6770 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
6771 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
6772 InputBuffer inptr_params(ptr + 8 + 4 + 4 + 4, size_params);
6773 if (useChecksum) {
6774 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + 4 + size_params, checksumSize,
6775 "gles2_decoder_context_t::decode, OP_glSamplerParameteriv: GL checksumCalculator failure\n");
6776 }
6777 #ifdef CHECK_GL_ERRORS
6778 GLint err = this->glGetError();
6779 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glSamplerParameteriv\n", err);
6780 #endif
6781 DECODER_DEBUG_LOG("gles2(%p): glSamplerParameteriv(sampler:%u pname:0x%08x params:%p(%u) )", stream, var_sampler, var_pname, (const GLint*)(inptr_params.get()), size_params);
6782 this->glSamplerParameteriv(var_sampler, var_pname, (const GLint*)(inptr_params.get()));
6783 SET_LASTCALL("glSamplerParameteriv");
6784 android::base::endTrace();
6785 break;
6786 }
6787 case OP_glGetSamplerParameterfv: {
6788 android::base::beginTrace("glGetSamplerParameterfv decode");
6789 GLuint var_sampler = Unpack<GLuint,uint32_t>(ptr + 8);
6790 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
6791 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
6792 if (useChecksum) {
6793 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
6794 "gles2_decoder_context_t::decode, OP_glGetSamplerParameterfv: GL checksumCalculator failure\n");
6795 }
6796 size_t totalTmpSize = size_params;
6797 totalTmpSize += checksumSize;
6798 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6799 OutputBuffer outptr_params(&tmpBuf[0], size_params);
6800 #ifdef CHECK_GL_ERRORS
6801 GLint err = this->glGetError();
6802 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetSamplerParameterfv\n", err);
6803 #endif
6804 DECODER_DEBUG_LOG("gles2(%p): glGetSamplerParameterfv(sampler:%u pname:0x%08x params:%p(%u) )", stream, var_sampler, var_pname, (GLfloat*)(outptr_params.get()), size_params);
6805 this->glGetSamplerParameterfv(var_sampler, var_pname, (GLfloat*)(outptr_params.get()));
6806 outptr_params.flush();
6807 if (useChecksum) {
6808 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6809 }
6810 stream->flush();
6811 SET_LASTCALL("glGetSamplerParameterfv");
6812 android::base::endTrace();
6813 break;
6814 }
6815 case OP_glGetSamplerParameteriv: {
6816 android::base::beginTrace("glGetSamplerParameteriv decode");
6817 GLuint var_sampler = Unpack<GLuint,uint32_t>(ptr + 8);
6818 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
6819 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
6820 if (useChecksum) {
6821 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
6822 "gles2_decoder_context_t::decode, OP_glGetSamplerParameteriv: GL checksumCalculator failure\n");
6823 }
6824 size_t totalTmpSize = size_params;
6825 totalTmpSize += checksumSize;
6826 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6827 OutputBuffer outptr_params(&tmpBuf[0], size_params);
6828 #ifdef CHECK_GL_ERRORS
6829 GLint err = this->glGetError();
6830 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetSamplerParameteriv\n", err);
6831 #endif
6832 DECODER_DEBUG_LOG("gles2(%p): glGetSamplerParameteriv(sampler:%u pname:0x%08x params:%p(%u) )", stream, var_sampler, var_pname, (GLint*)(outptr_params.get()), size_params);
6833 this->glGetSamplerParameteriv(var_sampler, var_pname, (GLint*)(outptr_params.get()));
6834 outptr_params.flush();
6835 if (useChecksum) {
6836 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6837 }
6838 stream->flush();
6839 SET_LASTCALL("glGetSamplerParameteriv");
6840 android::base::endTrace();
6841 break;
6842 }
6843 case OP_glIsSampler: {
6844 android::base::beginTrace("glIsSampler decode");
6845 GLuint var_sampler = Unpack<GLuint,uint32_t>(ptr + 8);
6846 if (useChecksum) {
6847 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
6848 "gles2_decoder_context_t::decode, OP_glIsSampler: GL checksumCalculator failure\n");
6849 }
6850 size_t totalTmpSize = sizeof(GLboolean);
6851 totalTmpSize += checksumSize;
6852 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6853 #ifdef CHECK_GL_ERRORS
6854 GLint err = this->glGetError();
6855 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsSampler\n", err);
6856 #endif
6857 DECODER_DEBUG_LOG("gles2(%p): glIsSampler(sampler:%u )", stream, var_sampler);
6858 *(GLboolean *)(&tmpBuf[0]) = this->glIsSampler(var_sampler);
6859 if (useChecksum) {
6860 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6861 }
6862 stream->flush();
6863 SET_LASTCALL("glIsSampler");
6864 android::base::endTrace();
6865 break;
6866 }
6867 case OP_glGenQueries: {
6868 android::base::beginTrace("glGenQueries decode");
6869 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
6870 uint32_t size_queries __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
6871 if (useChecksum) {
6872 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
6873 "gles2_decoder_context_t::decode, OP_glGenQueries: GL checksumCalculator failure\n");
6874 }
6875 size_t totalTmpSize = size_queries;
6876 totalTmpSize += checksumSize;
6877 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6878 OutputBuffer outptr_queries(&tmpBuf[0], size_queries);
6879 #ifdef CHECK_GL_ERRORS
6880 GLint err = this->glGetError();
6881 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGenQueries\n", err);
6882 #endif
6883 DECODER_DEBUG_LOG("gles2(%p): glGenQueries(n:%d queries:%p(%u) )", stream, var_n, (GLuint*)(outptr_queries.get()), size_queries);
6884 this->glGenQueries_dec(this, var_n, (GLuint*)(outptr_queries.get()));
6885 outptr_queries.flush();
6886 if (useChecksum) {
6887 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6888 }
6889 stream->flush();
6890 SET_LASTCALL("glGenQueries");
6891 android::base::endTrace();
6892 break;
6893 }
6894 case OP_glDeleteQueries: {
6895 android::base::beginTrace("glDeleteQueries decode");
6896 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
6897 uint32_t size_queries __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
6898 InputBuffer inptr_queries(ptr + 8 + 4 + 4, size_queries);
6899 if (useChecksum) {
6900 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_queries, ptr + 8 + 4 + 4 + size_queries, checksumSize,
6901 "gles2_decoder_context_t::decode, OP_glDeleteQueries: GL checksumCalculator failure\n");
6902 }
6903 #ifdef CHECK_GL_ERRORS
6904 GLint err = this->glGetError();
6905 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteQueries\n", err);
6906 #endif
6907 DECODER_DEBUG_LOG("gles2(%p): glDeleteQueries(n:%d queries:%p(%u) )", stream, var_n, (const GLuint*)(inptr_queries.get()), size_queries);
6908 this->glDeleteQueries_dec(this, var_n, (const GLuint*)(inptr_queries.get()));
6909 SET_LASTCALL("glDeleteQueries");
6910 android::base::endTrace();
6911 break;
6912 }
6913 case OP_glBeginQuery: {
6914 android::base::beginTrace("glBeginQuery decode");
6915 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
6916 GLuint var_query = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
6917 if (useChecksum) {
6918 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
6919 "gles2_decoder_context_t::decode, OP_glBeginQuery: GL checksumCalculator failure\n");
6920 }
6921 #ifdef CHECK_GL_ERRORS
6922 GLint err = this->glGetError();
6923 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBeginQuery\n", err);
6924 #endif
6925 DECODER_DEBUG_LOG("gles2(%p): glBeginQuery(target:0x%08x query:%u )", stream, var_target, var_query);
6926 this->glBeginQuery(var_target, var_query);
6927 SET_LASTCALL("glBeginQuery");
6928 android::base::endTrace();
6929 break;
6930 }
6931 case OP_glEndQuery: {
6932 android::base::beginTrace("glEndQuery decode");
6933 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
6934 if (useChecksum) {
6935 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
6936 "gles2_decoder_context_t::decode, OP_glEndQuery: GL checksumCalculator failure\n");
6937 }
6938 #ifdef CHECK_GL_ERRORS
6939 GLint err = this->glGetError();
6940 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glEndQuery\n", err);
6941 #endif
6942 DECODER_DEBUG_LOG("gles2(%p): glEndQuery(target:0x%08x )", stream, var_target);
6943 this->glEndQuery(var_target);
6944 SET_LASTCALL("glEndQuery");
6945 android::base::endTrace();
6946 break;
6947 }
6948 case OP_glGetQueryiv: {
6949 android::base::beginTrace("glGetQueryiv decode");
6950 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
6951 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
6952 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
6953 if (useChecksum) {
6954 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
6955 "gles2_decoder_context_t::decode, OP_glGetQueryiv: GL checksumCalculator failure\n");
6956 }
6957 size_t totalTmpSize = size_params;
6958 totalTmpSize += checksumSize;
6959 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6960 OutputBuffer outptr_params(&tmpBuf[0], size_params);
6961 #ifdef CHECK_GL_ERRORS
6962 GLint err = this->glGetError();
6963 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetQueryiv\n", err);
6964 #endif
6965 DECODER_DEBUG_LOG("gles2(%p): glGetQueryiv(target:0x%08x pname:0x%08x params:%p(%u) )", stream, var_target, var_pname, (GLint*)(outptr_params.get()), size_params);
6966 this->glGetQueryiv(var_target, var_pname, (GLint*)(outptr_params.get()));
6967 outptr_params.flush();
6968 if (useChecksum) {
6969 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6970 }
6971 stream->flush();
6972 SET_LASTCALL("glGetQueryiv");
6973 android::base::endTrace();
6974 break;
6975 }
6976 case OP_glGetQueryObjectuiv: {
6977 android::base::beginTrace("glGetQueryObjectuiv decode");
6978 GLuint var_query = Unpack<GLuint,uint32_t>(ptr + 8);
6979 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
6980 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
6981 if (useChecksum) {
6982 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
6983 "gles2_decoder_context_t::decode, OP_glGetQueryObjectuiv: GL checksumCalculator failure\n");
6984 }
6985 size_t totalTmpSize = size_params;
6986 totalTmpSize += checksumSize;
6987 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
6988 OutputBuffer outptr_params(&tmpBuf[0], size_params);
6989 #ifdef CHECK_GL_ERRORS
6990 GLint err = this->glGetError();
6991 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetQueryObjectuiv\n", err);
6992 #endif
6993 DECODER_DEBUG_LOG("gles2(%p): glGetQueryObjectuiv(query:%u pname:0x%08x params:%p(%u) )", stream, var_query, var_pname, (GLuint*)(outptr_params.get()), size_params);
6994 this->glGetQueryObjectuiv(var_query, var_pname, (GLuint*)(outptr_params.get()));
6995 outptr_params.flush();
6996 if (useChecksum) {
6997 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
6998 }
6999 stream->flush();
7000 SET_LASTCALL("glGetQueryObjectuiv");
7001 android::base::endTrace();
7002 break;
7003 }
7004 case OP_glIsQuery: {
7005 android::base::beginTrace("glIsQuery decode");
7006 GLuint var_query = Unpack<GLuint,uint32_t>(ptr + 8);
7007 if (useChecksum) {
7008 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
7009 "gles2_decoder_context_t::decode, OP_glIsQuery: GL checksumCalculator failure\n");
7010 }
7011 size_t totalTmpSize = sizeof(GLboolean);
7012 totalTmpSize += checksumSize;
7013 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
7014 #ifdef CHECK_GL_ERRORS
7015 GLint err = this->glGetError();
7016 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsQuery\n", err);
7017 #endif
7018 DECODER_DEBUG_LOG("gles2(%p): glIsQuery(query:%u )", stream, var_query);
7019 *(GLboolean *)(&tmpBuf[0]) = this->glIsQuery(var_query);
7020 if (useChecksum) {
7021 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
7022 }
7023 stream->flush();
7024 SET_LASTCALL("glIsQuery");
7025 android::base::endTrace();
7026 break;
7027 }
7028 case OP_glProgramParameteri: {
7029 android::base::beginTrace("glProgramParameteri decode");
7030 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
7031 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
7032 GLint var_value = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
7033 if (useChecksum) {
7034 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
7035 "gles2_decoder_context_t::decode, OP_glProgramParameteri: GL checksumCalculator failure\n");
7036 }
7037 #ifdef CHECK_GL_ERRORS
7038 GLint err = this->glGetError();
7039 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramParameteri\n", err);
7040 #endif
7041 DECODER_DEBUG_LOG("gles2(%p): glProgramParameteri(program:%u pname:0x%08x value:%d )", stream, var_program, var_pname, var_value);
7042 this->glProgramParameteri_dec(this, var_program, var_pname, var_value);
7043 SET_LASTCALL("glProgramParameteri");
7044 android::base::endTrace();
7045 break;
7046 }
7047 case OP_glProgramBinary: {
7048 android::base::beginTrace("glProgramBinary decode");
7049 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
7050 GLenum var_binaryFormat = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
7051 uint32_t size_binary __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
7052 InputBuffer inptr_binary(ptr + 8 + 4 + 4 + 4, size_binary);
7053 GLsizei var_length = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_binary);
7054 if (useChecksum) {
7055 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_binary + 4, ptr + 8 + 4 + 4 + 4 + size_binary + 4, checksumSize,
7056 "gles2_decoder_context_t::decode, OP_glProgramBinary: GL checksumCalculator failure\n");
7057 }
7058 #ifdef CHECK_GL_ERRORS
7059 GLint err = this->glGetError();
7060 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramBinary\n", err);
7061 #endif
7062 DECODER_DEBUG_LOG("gles2(%p): glProgramBinary(program:%u binaryFormat:0x%08x binary:%p(%u) length:%d )", stream, var_program, var_binaryFormat, (const void*)(inptr_binary.get()), size_binary, var_length);
7063 this->glProgramBinary_dec(this, var_program, var_binaryFormat, (const void*)(inptr_binary.get()), var_length);
7064 SET_LASTCALL("glProgramBinary");
7065 android::base::endTrace();
7066 break;
7067 }
7068 case OP_glGetProgramBinary: {
7069 android::base::beginTrace("glGetProgramBinary decode");
7070 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
7071 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
7072 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
7073 uint32_t size_binaryFormat __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
7074 uint32_t size_binary __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7075 if (useChecksum) {
7076 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
7077 "gles2_decoder_context_t::decode, OP_glGetProgramBinary: GL checksumCalculator failure\n");
7078 }
7079 size_t totalTmpSize = size_length;
7080 totalTmpSize += size_binaryFormat;
7081 totalTmpSize += size_binary;
7082 totalTmpSize += checksumSize;
7083 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
7084 OutputBuffer outptr_length(&tmpBuf[0], size_length);
7085 OutputBuffer outptr_binaryFormat(&tmpBuf[0 + size_length], size_binaryFormat);
7086 OutputBuffer outptr_binary(&tmpBuf[0 + size_length + size_binaryFormat], size_binary);
7087 #ifdef CHECK_GL_ERRORS
7088 GLint err = this->glGetError();
7089 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetProgramBinary\n", err);
7090 #endif
7091 DECODER_DEBUG_LOG("gles2(%p): glGetProgramBinary(program:%u bufSize:%d length:%p(%u) binaryFormat:%p(%u) binary:%p(%u) )", stream, var_program, var_bufSize, (GLsizei*)(outptr_length.get()), size_length, (GLenum*)(outptr_binaryFormat.get()), size_binaryFormat, (void*)(outptr_binary.get()), size_binary);
7092 this->glGetProgramBinary_dec(this, var_program, var_bufSize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLenum*)(outptr_binaryFormat.get()), (void*)(outptr_binary.get()));
7093 outptr_length.flush();
7094 outptr_binaryFormat.flush();
7095 outptr_binary.flush();
7096 if (useChecksum) {
7097 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
7098 }
7099 stream->flush();
7100 SET_LASTCALL("glGetProgramBinary");
7101 android::base::endTrace();
7102 break;
7103 }
7104 case OP_glGetFragDataLocation: {
7105 android::base::beginTrace("glGetFragDataLocation decode");
7106 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
7107 uint32_t size_name __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
7108 InputBuffer inptr_name(ptr + 8 + 4 + 4, size_name);
7109 if (useChecksum) {
7110 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_name, ptr + 8 + 4 + 4 + size_name, checksumSize,
7111 "gles2_decoder_context_t::decode, OP_glGetFragDataLocation: GL checksumCalculator failure\n");
7112 }
7113 size_t totalTmpSize = sizeof(GLint);
7114 totalTmpSize += checksumSize;
7115 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
7116 #ifdef CHECK_GL_ERRORS
7117 GLint err = this->glGetError();
7118 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetFragDataLocation\n", err);
7119 #endif
7120 DECODER_DEBUG_LOG("gles2(%p): glGetFragDataLocation(program:%u name:%p(%u) )", stream, var_program, (const char*)(inptr_name.get()), size_name);
7121 *(GLint *)(&tmpBuf[0]) = this->glGetFragDataLocation_dec(this, var_program, (const char*)(inptr_name.get()));
7122 if (useChecksum) {
7123 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
7124 }
7125 stream->flush();
7126 SET_LASTCALL("glGetFragDataLocation");
7127 android::base::endTrace();
7128 break;
7129 }
7130 case OP_glGetInteger64v: {
7131 android::base::beginTrace("glGetInteger64v decode");
7132 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8);
7133 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
7134 if (useChecksum) {
7135 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
7136 "gles2_decoder_context_t::decode, OP_glGetInteger64v: GL checksumCalculator failure\n");
7137 }
7138 size_t totalTmpSize = size_data;
7139 totalTmpSize += checksumSize;
7140 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
7141 OutputBuffer outptr_data(&tmpBuf[0], size_data);
7142 #ifdef CHECK_GL_ERRORS
7143 GLint err = this->glGetError();
7144 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetInteger64v\n", err);
7145 #endif
7146 DECODER_DEBUG_LOG("gles2(%p): glGetInteger64v(pname:0x%08x data:%p(%u) )", stream, var_pname, (GLint64*)(outptr_data.get()), size_data);
7147 this->glGetInteger64v(var_pname, (GLint64*)(outptr_data.get()));
7148 outptr_data.flush();
7149 if (useChecksum) {
7150 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
7151 }
7152 stream->flush();
7153 SET_LASTCALL("glGetInteger64v");
7154 android::base::endTrace();
7155 break;
7156 }
7157 case OP_glGetIntegeri_v: {
7158 android::base::beginTrace("glGetIntegeri_v decode");
7159 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
7160 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
7161 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
7162 if (useChecksum) {
7163 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
7164 "gles2_decoder_context_t::decode, OP_glGetIntegeri_v: GL checksumCalculator failure\n");
7165 }
7166 size_t totalTmpSize = size_data;
7167 totalTmpSize += checksumSize;
7168 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
7169 OutputBuffer outptr_data(&tmpBuf[0], size_data);
7170 #ifdef CHECK_GL_ERRORS
7171 GLint err = this->glGetError();
7172 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetIntegeri_v\n", err);
7173 #endif
7174 DECODER_DEBUG_LOG("gles2(%p): glGetIntegeri_v(target:0x%08x index:%u data:%p(%u) )", stream, var_target, var_index, (GLint*)(outptr_data.get()), size_data);
7175 this->glGetIntegeri_v(var_target, var_index, (GLint*)(outptr_data.get()));
7176 outptr_data.flush();
7177 if (useChecksum) {
7178 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
7179 }
7180 stream->flush();
7181 SET_LASTCALL("glGetIntegeri_v");
7182 android::base::endTrace();
7183 break;
7184 }
7185 case OP_glGetInteger64i_v: {
7186 android::base::beginTrace("glGetInteger64i_v decode");
7187 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
7188 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
7189 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
7190 if (useChecksum) {
7191 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
7192 "gles2_decoder_context_t::decode, OP_glGetInteger64i_v: GL checksumCalculator failure\n");
7193 }
7194 size_t totalTmpSize = size_data;
7195 totalTmpSize += checksumSize;
7196 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
7197 OutputBuffer outptr_data(&tmpBuf[0], size_data);
7198 #ifdef CHECK_GL_ERRORS
7199 GLint err = this->glGetError();
7200 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetInteger64i_v\n", err);
7201 #endif
7202 DECODER_DEBUG_LOG("gles2(%p): glGetInteger64i_v(target:0x%08x index:%u data:%p(%u) )", stream, var_target, var_index, (GLint64*)(outptr_data.get()), size_data);
7203 this->glGetInteger64i_v(var_target, var_index, (GLint64*)(outptr_data.get()));
7204 outptr_data.flush();
7205 if (useChecksum) {
7206 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
7207 }
7208 stream->flush();
7209 SET_LASTCALL("glGetInteger64i_v");
7210 android::base::endTrace();
7211 break;
7212 }
7213 case OP_glTexImage3D: {
7214 android::base::beginTrace("glTexImage3D decode");
7215 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
7216 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7217 GLint var_internalFormat = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
7218 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
7219 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7220 GLsizei var_depth = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
7221 GLint var_border = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
7222 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7223 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7224 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7225 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data);
7226 if (useChecksum) {
7227 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize,
7228 "gles2_decoder_context_t::decode, OP_glTexImage3D: GL checksumCalculator failure\n");
7229 }
7230 #ifdef CHECK_GL_ERRORS
7231 GLint err = this->glGetError();
7232 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexImage3D\n", err);
7233 #endif
7234 DECODER_DEBUG_LOG("gles2(%p): glTexImage3D(target:0x%08x level:%d internalFormat:%d width:%d height:%d depth:%d border:%d format:0x%08x type:0x%08x data:%p(%u) )", stream, var_target, var_level, var_internalFormat, var_width, var_height, var_depth, var_border, var_format, var_type, (const GLvoid*)(inptr_data.get()), size_data);
7235 this->glTexImage3D(var_target, var_level, var_internalFormat, var_width, var_height, var_depth, var_border, var_format, var_type, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get()));
7236 SET_LASTCALL("glTexImage3D");
7237 android::base::endTrace();
7238 break;
7239 }
7240 case OP_glTexImage3DOffsetAEMU: {
7241 android::base::beginTrace("glTexImage3DOffsetAEMU decode");
7242 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
7243 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7244 GLint var_internalFormat = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
7245 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
7246 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7247 GLsizei var_depth = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
7248 GLint var_border = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
7249 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7250 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7251 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7252 if (useChecksum) {
7253 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
7254 "gles2_decoder_context_t::decode, OP_glTexImage3DOffsetAEMU: GL checksumCalculator failure\n");
7255 }
7256 #ifdef CHECK_GL_ERRORS
7257 GLint err = this->glGetError();
7258 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexImage3DOffsetAEMU\n", err);
7259 #endif
7260 DECODER_DEBUG_LOG("gles2(%p): glTexImage3DOffsetAEMU(target:0x%08x level:%d internalFormat:%d width:%d height:%d depth:%d border:%d format:0x%08x type:0x%08x offset:%u )", stream, var_target, var_level, var_internalFormat, var_width, var_height, var_depth, var_border, var_format, var_type, var_offset);
7261 this->glTexImage3DOffsetAEMU(this, var_target, var_level, var_internalFormat, var_width, var_height, var_depth, var_border, var_format, var_type, var_offset);
7262 SET_LASTCALL("glTexImage3DOffsetAEMU");
7263 android::base::endTrace();
7264 break;
7265 }
7266 case OP_glTexStorage3D: {
7267 android::base::beginTrace("glTexStorage3D decode");
7268 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
7269 GLsizei var_levels = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
7270 GLenum var_internalformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
7271 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
7272 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7273 GLsizei var_depth = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
7274 if (useChecksum) {
7275 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
7276 "gles2_decoder_context_t::decode, OP_glTexStorage3D: GL checksumCalculator failure\n");
7277 }
7278 #ifdef CHECK_GL_ERRORS
7279 GLint err = this->glGetError();
7280 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexStorage3D\n", err);
7281 #endif
7282 DECODER_DEBUG_LOG("gles2(%p): glTexStorage3D(target:0x%08x levels:%d internalformat:0x%08x width:%d height:%d depth:%d )", stream, var_target, var_levels, var_internalformat, var_width, var_height, var_depth);
7283 this->glTexStorage3D(var_target, var_levels, var_internalformat, var_width, var_height, var_depth);
7284 SET_LASTCALL("glTexStorage3D");
7285 android::base::endTrace();
7286 break;
7287 }
7288 case OP_glTexSubImage3D: {
7289 android::base::beginTrace("glTexSubImage3D decode");
7290 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
7291 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7292 GLint var_xoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
7293 GLint var_yoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
7294 GLint var_zoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7295 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
7296 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
7297 GLsizei var_depth = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7298 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7299 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7300 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7301 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data);
7302 if (useChecksum) {
7303 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize,
7304 "gles2_decoder_context_t::decode, OP_glTexSubImage3D: GL checksumCalculator failure\n");
7305 }
7306 #ifdef CHECK_GL_ERRORS
7307 GLint err = this->glGetError();
7308 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexSubImage3D\n", err);
7309 #endif
7310 DECODER_DEBUG_LOG("gles2(%p): glTexSubImage3D(target:0x%08x level:%d xoffset:%d yoffset:%d zoffset:%d width:%d height:%d depth:%d format:0x%08x type:0x%08x data:%p(%u) )", stream, var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_type, (const GLvoid*)(inptr_data.get()), size_data);
7311 this->glTexSubImage3D(var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_type, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get()));
7312 SET_LASTCALL("glTexSubImage3D");
7313 android::base::endTrace();
7314 break;
7315 }
7316 case OP_glTexSubImage3DOffsetAEMU: {
7317 android::base::beginTrace("glTexSubImage3DOffsetAEMU decode");
7318 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
7319 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7320 GLint var_xoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
7321 GLint var_yoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
7322 GLint var_zoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7323 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
7324 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
7325 GLsizei var_depth = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7326 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7327 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7328 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7329 if (useChecksum) {
7330 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
7331 "gles2_decoder_context_t::decode, OP_glTexSubImage3DOffsetAEMU: GL checksumCalculator failure\n");
7332 }
7333 #ifdef CHECK_GL_ERRORS
7334 GLint err = this->glGetError();
7335 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexSubImage3DOffsetAEMU\n", err);
7336 #endif
7337 DECODER_DEBUG_LOG("gles2(%p): glTexSubImage3DOffsetAEMU(target:0x%08x level:%d xoffset:%d yoffset:%d zoffset:%d width:%d height:%d depth:%d format:0x%08x type:0x%08x offset:%u )", stream, var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_type, var_offset);
7338 this->glTexSubImage3DOffsetAEMU(this, var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_type, var_offset);
7339 SET_LASTCALL("glTexSubImage3DOffsetAEMU");
7340 android::base::endTrace();
7341 break;
7342 }
7343 case OP_glCompressedTexImage3D: {
7344 android::base::beginTrace("glCompressedTexImage3D decode");
7345 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
7346 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7347 GLenum var_internalformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
7348 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
7349 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7350 GLsizei var_depth = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
7351 GLint var_border = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
7352 GLsizei var_imageSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7353 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7354 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data);
7355 if (useChecksum) {
7356 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize,
7357 "gles2_decoder_context_t::decode, OP_glCompressedTexImage3D: GL checksumCalculator failure\n");
7358 }
7359 #ifdef CHECK_GL_ERRORS
7360 GLint err = this->glGetError();
7361 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCompressedTexImage3D\n", err);
7362 #endif
7363 DECODER_DEBUG_LOG("gles2(%p): glCompressedTexImage3D(target:0x%08x level:%d internalformat:0x%08x width:%d height:%d depth:%d border:%d imageSize:%d data:%p(%u) )", stream, var_target, var_level, var_internalformat, var_width, var_height, var_depth, var_border, var_imageSize, (const GLvoid*)(inptr_data.get()), size_data);
7364 this->glCompressedTexImage3D(var_target, var_level, var_internalformat, var_width, var_height, var_depth, var_border, var_imageSize, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get()));
7365 SET_LASTCALL("glCompressedTexImage3D");
7366 android::base::endTrace();
7367 break;
7368 }
7369 case OP_glCompressedTexImage3DOffsetAEMU: {
7370 android::base::beginTrace("glCompressedTexImage3DOffsetAEMU decode");
7371 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
7372 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7373 GLenum var_internalformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
7374 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
7375 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7376 GLsizei var_depth = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
7377 GLint var_border = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
7378 GLsizei var_imageSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7379 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7380 if (useChecksum) {
7381 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
7382 "gles2_decoder_context_t::decode, OP_glCompressedTexImage3DOffsetAEMU: GL checksumCalculator failure\n");
7383 }
7384 #ifdef CHECK_GL_ERRORS
7385 GLint err = this->glGetError();
7386 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCompressedTexImage3DOffsetAEMU\n", err);
7387 #endif
7388 DECODER_DEBUG_LOG("gles2(%p): glCompressedTexImage3DOffsetAEMU(target:0x%08x level:%d internalformat:0x%08x width:%d height:%d depth:%d border:%d imageSize:%d offset:%u )", stream, var_target, var_level, var_internalformat, var_width, var_height, var_depth, var_border, var_imageSize, var_offset);
7389 this->glCompressedTexImage3DOffsetAEMU(this, var_target, var_level, var_internalformat, var_width, var_height, var_depth, var_border, var_imageSize, var_offset);
7390 SET_LASTCALL("glCompressedTexImage3DOffsetAEMU");
7391 android::base::endTrace();
7392 break;
7393 }
7394 case OP_glCompressedTexSubImage3D: {
7395 android::base::beginTrace("glCompressedTexSubImage3D decode");
7396 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
7397 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7398 GLint var_xoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
7399 GLint var_yoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
7400 GLint var_zoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7401 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
7402 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
7403 GLsizei var_depth = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7404 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7405 GLsizei var_imageSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7406 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7407 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data);
7408 if (useChecksum) {
7409 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize,
7410 "gles2_decoder_context_t::decode, OP_glCompressedTexSubImage3D: GL checksumCalculator failure\n");
7411 }
7412 #ifdef CHECK_GL_ERRORS
7413 GLint err = this->glGetError();
7414 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCompressedTexSubImage3D\n", err);
7415 #endif
7416 DECODER_DEBUG_LOG("gles2(%p): glCompressedTexSubImage3D(target:0x%08x level:%d xoffset:%d yoffset:%d zoffset:%d width:%d height:%d depth:%d format:0x%08x imageSize:%d data:%p(%u) )", stream, var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_imageSize, (const GLvoid*)(inptr_data.get()), size_data);
7417 this->glCompressedTexSubImage3D(var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_imageSize, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get()));
7418 SET_LASTCALL("glCompressedTexSubImage3D");
7419 android::base::endTrace();
7420 break;
7421 }
7422 case OP_glCompressedTexSubImage3DOffsetAEMU: {
7423 android::base::beginTrace("glCompressedTexSubImage3DOffsetAEMU decode");
7424 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
7425 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7426 GLint var_xoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
7427 GLint var_yoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
7428 GLint var_zoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7429 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
7430 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
7431 GLsizei var_depth = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7432 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7433 GLsizei var_imageSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7434 GLuint var_data = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7435 if (useChecksum) {
7436 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
7437 "gles2_decoder_context_t::decode, OP_glCompressedTexSubImage3DOffsetAEMU: GL checksumCalculator failure\n");
7438 }
7439 #ifdef CHECK_GL_ERRORS
7440 GLint err = this->glGetError();
7441 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCompressedTexSubImage3DOffsetAEMU\n", err);
7442 #endif
7443 DECODER_DEBUG_LOG("gles2(%p): glCompressedTexSubImage3DOffsetAEMU(target:0x%08x level:%d xoffset:%d yoffset:%d zoffset:%d width:%d height:%d depth:%d format:0x%08x imageSize:%d data:%u )", stream, var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_imageSize, var_data);
7444 this->glCompressedTexSubImage3DOffsetAEMU(this, var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_imageSize, var_data);
7445 SET_LASTCALL("glCompressedTexSubImage3DOffsetAEMU");
7446 android::base::endTrace();
7447 break;
7448 }
7449 case OP_glCopyTexSubImage3D: {
7450 android::base::beginTrace("glCopyTexSubImage3D decode");
7451 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
7452 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7453 GLint var_xoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
7454 GLint var_yoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
7455 GLint var_zoffset = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7456 GLint var_x = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
7457 GLint var_y = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
7458 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7459 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
7460 if (useChecksum) {
7461 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
7462 "gles2_decoder_context_t::decode, OP_glCopyTexSubImage3D: GL checksumCalculator failure\n");
7463 }
7464 #ifdef CHECK_GL_ERRORS
7465 GLint err = this->glGetError();
7466 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCopyTexSubImage3D\n", err);
7467 #endif
7468 DECODER_DEBUG_LOG("gles2(%p): glCopyTexSubImage3D(target:0x%08x level:%d xoffset:%d yoffset:%d zoffset:%d x:%d y:%d width:%d height:%d )", stream, var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_x, var_y, var_width, var_height);
7469 this->glCopyTexSubImage3D(var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_x, var_y, var_width, var_height);
7470 SET_LASTCALL("glCopyTexSubImage3D");
7471 android::base::endTrace();
7472 break;
7473 }
7474 case OP_glGetStringi: {
7475 android::base::beginTrace("glGetStringi decode");
7476 GLenum var_name = Unpack<GLenum,uint32_t>(ptr + 8);
7477 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
7478 if (useChecksum) {
7479 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
7480 "gles2_decoder_context_t::decode, OP_glGetStringi: GL checksumCalculator failure\n");
7481 }
7482 #ifdef CHECK_GL_ERRORS
7483 GLint err = this->glGetError();
7484 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetStringi\n", err);
7485 #endif
7486 DECODER_DEBUG_LOG("gles2(%p): glGetStringi(name:0x%08x index:%u )", stream, var_name, var_index);
7487 this->glGetStringi(var_name, var_index);
7488 SET_LASTCALL("glGetStringi");
7489 android::base::endTrace();
7490 break;
7491 }
7492 case OP_glGetBooleani_v: {
7493 android::base::beginTrace("glGetBooleani_v decode");
7494 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
7495 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
7496 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
7497 if (useChecksum) {
7498 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
7499 "gles2_decoder_context_t::decode, OP_glGetBooleani_v: GL checksumCalculator failure\n");
7500 }
7501 size_t totalTmpSize = size_data;
7502 totalTmpSize += checksumSize;
7503 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
7504 OutputBuffer outptr_data(&tmpBuf[0], size_data);
7505 #ifdef CHECK_GL_ERRORS
7506 GLint err = this->glGetError();
7507 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetBooleani_v\n", err);
7508 #endif
7509 DECODER_DEBUG_LOG("gles2(%p): glGetBooleani_v(target:0x%08x index:%u data:%p(%u) )", stream, var_target, var_index, (GLboolean*)(outptr_data.get()), size_data);
7510 this->glGetBooleani_v(var_target, var_index, (GLboolean*)(outptr_data.get()));
7511 outptr_data.flush();
7512 if (useChecksum) {
7513 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
7514 }
7515 stream->flush();
7516 SET_LASTCALL("glGetBooleani_v");
7517 android::base::endTrace();
7518 break;
7519 }
7520 case OP_glMemoryBarrier: {
7521 android::base::beginTrace("glMemoryBarrier decode");
7522 GLbitfield var_barriers = Unpack<GLbitfield,uint32_t>(ptr + 8);
7523 if (useChecksum) {
7524 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
7525 "gles2_decoder_context_t::decode, OP_glMemoryBarrier: GL checksumCalculator failure\n");
7526 }
7527 #ifdef CHECK_GL_ERRORS
7528 GLint err = this->glGetError();
7529 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glMemoryBarrier\n", err);
7530 #endif
7531 DECODER_DEBUG_LOG("gles2(%p): glMemoryBarrier(barriers:0x%08x )", stream, var_barriers);
7532 this->glMemoryBarrier(var_barriers);
7533 SET_LASTCALL("glMemoryBarrier");
7534 android::base::endTrace();
7535 break;
7536 }
7537 case OP_glMemoryBarrierByRegion: {
7538 android::base::beginTrace("glMemoryBarrierByRegion decode");
7539 GLbitfield var_barriers = Unpack<GLbitfield,uint32_t>(ptr + 8);
7540 if (useChecksum) {
7541 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
7542 "gles2_decoder_context_t::decode, OP_glMemoryBarrierByRegion: GL checksumCalculator failure\n");
7543 }
7544 #ifdef CHECK_GL_ERRORS
7545 GLint err = this->glGetError();
7546 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glMemoryBarrierByRegion\n", err);
7547 #endif
7548 DECODER_DEBUG_LOG("gles2(%p): glMemoryBarrierByRegion(barriers:0x%08x )", stream, var_barriers);
7549 this->glMemoryBarrierByRegion(var_barriers);
7550 SET_LASTCALL("glMemoryBarrierByRegion");
7551 android::base::endTrace();
7552 break;
7553 }
7554 case OP_glGenProgramPipelines: {
7555 android::base::beginTrace("glGenProgramPipelines decode");
7556 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
7557 uint32_t size_pipelines __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
7558 if (useChecksum) {
7559 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
7560 "gles2_decoder_context_t::decode, OP_glGenProgramPipelines: GL checksumCalculator failure\n");
7561 }
7562 size_t totalTmpSize = size_pipelines;
7563 totalTmpSize += checksumSize;
7564 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
7565 OutputBuffer outptr_pipelines(&tmpBuf[0], size_pipelines);
7566 #ifdef CHECK_GL_ERRORS
7567 GLint err = this->glGetError();
7568 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGenProgramPipelines\n", err);
7569 #endif
7570 DECODER_DEBUG_LOG("gles2(%p): glGenProgramPipelines(n:%d pipelines:%p(%u) )", stream, var_n, (GLuint*)(outptr_pipelines.get()), size_pipelines);
7571 this->glGenProgramPipelines_dec(this, var_n, (GLuint*)(outptr_pipelines.get()));
7572 outptr_pipelines.flush();
7573 if (useChecksum) {
7574 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
7575 }
7576 stream->flush();
7577 SET_LASTCALL("glGenProgramPipelines");
7578 android::base::endTrace();
7579 break;
7580 }
7581 case OP_glDeleteProgramPipelines: {
7582 android::base::beginTrace("glDeleteProgramPipelines decode");
7583 GLsizei var_n = Unpack<GLsizei,uint32_t>(ptr + 8);
7584 uint32_t size_pipelines __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
7585 InputBuffer inptr_pipelines(ptr + 8 + 4 + 4, size_pipelines);
7586 if (useChecksum) {
7587 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_pipelines, ptr + 8 + 4 + 4 + size_pipelines, checksumSize,
7588 "gles2_decoder_context_t::decode, OP_glDeleteProgramPipelines: GL checksumCalculator failure\n");
7589 }
7590 #ifdef CHECK_GL_ERRORS
7591 GLint err = this->glGetError();
7592 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDeleteProgramPipelines\n", err);
7593 #endif
7594 DECODER_DEBUG_LOG("gles2(%p): glDeleteProgramPipelines(n:%d pipelines:%p(%u) )", stream, var_n, (const GLuint*)(inptr_pipelines.get()), size_pipelines);
7595 this->glDeleteProgramPipelines_dec(this, var_n, (const GLuint*)(inptr_pipelines.get()));
7596 SET_LASTCALL("glDeleteProgramPipelines");
7597 android::base::endTrace();
7598 break;
7599 }
7600 case OP_glBindProgramPipeline: {
7601 android::base::beginTrace("glBindProgramPipeline decode");
7602 GLuint var_pipeline = Unpack<GLuint,uint32_t>(ptr + 8);
7603 if (useChecksum) {
7604 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
7605 "gles2_decoder_context_t::decode, OP_glBindProgramPipeline: GL checksumCalculator failure\n");
7606 }
7607 #ifdef CHECK_GL_ERRORS
7608 GLint err = this->glGetError();
7609 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBindProgramPipeline\n", err);
7610 #endif
7611 DECODER_DEBUG_LOG("gles2(%p): glBindProgramPipeline(pipeline:%u )", stream, var_pipeline);
7612 this->glBindProgramPipeline(var_pipeline);
7613 SET_LASTCALL("glBindProgramPipeline");
7614 android::base::endTrace();
7615 break;
7616 }
7617 case OP_glGetProgramPipelineiv: {
7618 android::base::beginTrace("glGetProgramPipelineiv decode");
7619 GLuint var_pipeline = Unpack<GLuint,uint32_t>(ptr + 8);
7620 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
7621 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
7622 if (useChecksum) {
7623 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
7624 "gles2_decoder_context_t::decode, OP_glGetProgramPipelineiv: GL checksumCalculator failure\n");
7625 }
7626 size_t totalTmpSize = size_params;
7627 totalTmpSize += checksumSize;
7628 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
7629 OutputBuffer outptr_params(&tmpBuf[0], size_params);
7630 #ifdef CHECK_GL_ERRORS
7631 GLint err = this->glGetError();
7632 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetProgramPipelineiv\n", err);
7633 #endif
7634 DECODER_DEBUG_LOG("gles2(%p): glGetProgramPipelineiv(pipeline:%u pname:0x%08x params:%p(%u) )", stream, var_pipeline, var_pname, (GLint*)(outptr_params.get()), size_params);
7635 this->glGetProgramPipelineiv(var_pipeline, var_pname, (GLint*)(outptr_params.get()));
7636 outptr_params.flush();
7637 if (useChecksum) {
7638 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
7639 }
7640 stream->flush();
7641 SET_LASTCALL("glGetProgramPipelineiv");
7642 android::base::endTrace();
7643 break;
7644 }
7645 case OP_glGetProgramPipelineInfoLog: {
7646 android::base::beginTrace("glGetProgramPipelineInfoLog decode");
7647 GLuint var_pipeline = Unpack<GLuint,uint32_t>(ptr + 8);
7648 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
7649 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
7650 uint32_t size_infoLog __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
7651 if (useChecksum) {
7652 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
7653 "gles2_decoder_context_t::decode, OP_glGetProgramPipelineInfoLog: GL checksumCalculator failure\n");
7654 }
7655 size_t totalTmpSize = size_length;
7656 totalTmpSize += size_infoLog;
7657 totalTmpSize += checksumSize;
7658 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
7659 OutputBuffer outptr_length(&tmpBuf[0], size_length);
7660 OutputBuffer outptr_infoLog(&tmpBuf[0 + size_length], size_infoLog);
7661 #ifdef CHECK_GL_ERRORS
7662 GLint err = this->glGetError();
7663 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetProgramPipelineInfoLog\n", err);
7664 #endif
7665 DECODER_DEBUG_LOG("gles2(%p): glGetProgramPipelineInfoLog(pipeline:%u bufSize:%d length:%p(%u) infoLog:%p(%u) )", stream, var_pipeline, var_bufSize, (GLsizei*)(outptr_length.get()), size_length, (GLchar*)(outptr_infoLog.get()), size_infoLog);
7666 this->glGetProgramPipelineInfoLog(var_pipeline, var_bufSize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLchar*)(outptr_infoLog.get()));
7667 outptr_length.flush();
7668 outptr_infoLog.flush();
7669 if (useChecksum) {
7670 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
7671 }
7672 stream->flush();
7673 SET_LASTCALL("glGetProgramPipelineInfoLog");
7674 android::base::endTrace();
7675 break;
7676 }
7677 case OP_glValidateProgramPipeline: {
7678 android::base::beginTrace("glValidateProgramPipeline decode");
7679 GLuint var_pipeline = Unpack<GLuint,uint32_t>(ptr + 8);
7680 if (useChecksum) {
7681 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
7682 "gles2_decoder_context_t::decode, OP_glValidateProgramPipeline: GL checksumCalculator failure\n");
7683 }
7684 #ifdef CHECK_GL_ERRORS
7685 GLint err = this->glGetError();
7686 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glValidateProgramPipeline\n", err);
7687 #endif
7688 DECODER_DEBUG_LOG("gles2(%p): glValidateProgramPipeline(pipeline:%u )", stream, var_pipeline);
7689 this->glValidateProgramPipeline(var_pipeline);
7690 SET_LASTCALL("glValidateProgramPipeline");
7691 android::base::endTrace();
7692 break;
7693 }
7694 case OP_glIsProgramPipeline: {
7695 android::base::beginTrace("glIsProgramPipeline decode");
7696 GLuint var_pipeline = Unpack<GLuint,uint32_t>(ptr + 8);
7697 if (useChecksum) {
7698 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
7699 "gles2_decoder_context_t::decode, OP_glIsProgramPipeline: GL checksumCalculator failure\n");
7700 }
7701 size_t totalTmpSize = sizeof(GLboolean);
7702 totalTmpSize += checksumSize;
7703 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
7704 #ifdef CHECK_GL_ERRORS
7705 GLint err = this->glGetError();
7706 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsProgramPipeline\n", err);
7707 #endif
7708 DECODER_DEBUG_LOG("gles2(%p): glIsProgramPipeline(pipeline:%u )", stream, var_pipeline);
7709 *(GLboolean *)(&tmpBuf[0]) = this->glIsProgramPipeline(var_pipeline);
7710 if (useChecksum) {
7711 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
7712 }
7713 stream->flush();
7714 SET_LASTCALL("glIsProgramPipeline");
7715 android::base::endTrace();
7716 break;
7717 }
7718 case OP_glUseProgramStages: {
7719 android::base::beginTrace("glUseProgramStages decode");
7720 GLuint var_pipeline = Unpack<GLuint,uint32_t>(ptr + 8);
7721 GLbitfield var_stages = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4);
7722 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
7723 if (useChecksum) {
7724 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
7725 "gles2_decoder_context_t::decode, OP_glUseProgramStages: GL checksumCalculator failure\n");
7726 }
7727 #ifdef CHECK_GL_ERRORS
7728 GLint err = this->glGetError();
7729 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUseProgramStages\n", err);
7730 #endif
7731 DECODER_DEBUG_LOG("gles2(%p): glUseProgramStages(pipeline:%u stages:0x%08x program:%u )", stream, var_pipeline, var_stages, var_program);
7732 this->glUseProgramStages_dec(this, var_pipeline, var_stages, var_program);
7733 SET_LASTCALL("glUseProgramStages");
7734 android::base::endTrace();
7735 break;
7736 }
7737 case OP_glActiveShaderProgram: {
7738 android::base::beginTrace("glActiveShaderProgram decode");
7739 GLuint var_pipeline = Unpack<GLuint,uint32_t>(ptr + 8);
7740 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
7741 if (useChecksum) {
7742 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
7743 "gles2_decoder_context_t::decode, OP_glActiveShaderProgram: GL checksumCalculator failure\n");
7744 }
7745 #ifdef CHECK_GL_ERRORS
7746 GLint err = this->glGetError();
7747 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glActiveShaderProgram\n", err);
7748 #endif
7749 DECODER_DEBUG_LOG("gles2(%p): glActiveShaderProgram(pipeline:%u program:%u )", stream, var_pipeline, var_program);
7750 this->glActiveShaderProgram_dec(this, var_pipeline, var_program);
7751 SET_LASTCALL("glActiveShaderProgram");
7752 android::base::endTrace();
7753 break;
7754 }
7755 case OP_glCreateShaderProgramv: {
7756 android::base::beginTrace("glCreateShaderProgramv decode");
7757 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8);
7758 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
7759 uint32_t size_strings __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
7760 InputBuffer inptr_strings(ptr + 8 + 4 + 4 + 4, size_strings);
7761 if (useChecksum) {
7762 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_strings, ptr + 8 + 4 + 4 + 4 + size_strings, checksumSize,
7763 "gles2_decoder_context_t::decode, OP_glCreateShaderProgramv: GL checksumCalculator failure\n");
7764 }
7765 size_t totalTmpSize = sizeof(GLuint);
7766 totalTmpSize += checksumSize;
7767 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
7768 #ifdef CHECK_GL_ERRORS
7769 GLint err = this->glGetError();
7770 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCreateShaderProgramv\n", err);
7771 #endif
7772 DECODER_DEBUG_LOG("gles2(%p): glCreateShaderProgramv(type:0x%08x count:%d strings:%p(%u) )", stream, var_type, var_count, (const char**)(inptr_strings.get()), size_strings);
7773 *(GLuint *)(&tmpBuf[0]) = this->glCreateShaderProgramv(var_type, var_count, (const char**)(inptr_strings.get()));
7774 if (useChecksum) {
7775 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
7776 }
7777 stream->flush();
7778 SET_LASTCALL("glCreateShaderProgramv");
7779 android::base::endTrace();
7780 break;
7781 }
7782 case OP_glCreateShaderProgramvAEMU: {
7783 android::base::beginTrace("glCreateShaderProgramvAEMU decode");
7784 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8);
7785 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
7786 uint32_t size_packedStrings __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
7787 InputBuffer inptr_packedStrings(ptr + 8 + 4 + 4 + 4, size_packedStrings);
7788 GLuint var_packedLen = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_packedStrings);
7789 if (useChecksum) {
7790 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_packedStrings + 4, ptr + 8 + 4 + 4 + 4 + size_packedStrings + 4, checksumSize,
7791 "gles2_decoder_context_t::decode, OP_glCreateShaderProgramvAEMU: GL checksumCalculator failure\n");
7792 }
7793 size_t totalTmpSize = sizeof(GLuint);
7794 totalTmpSize += checksumSize;
7795 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
7796 #ifdef CHECK_GL_ERRORS
7797 GLint err = this->glGetError();
7798 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glCreateShaderProgramvAEMU\n", err);
7799 #endif
7800 DECODER_DEBUG_LOG("gles2(%p): glCreateShaderProgramvAEMU(type:0x%08x count:%d packedStrings:%p(%u) packedLen:%u )", stream, var_type, var_count, (const char*)(inptr_packedStrings.get()), size_packedStrings, var_packedLen);
7801 *(GLuint *)(&tmpBuf[0]) = this->glCreateShaderProgramvAEMU(this, var_type, var_count, (const char*)(inptr_packedStrings.get()), var_packedLen);
7802 if (useChecksum) {
7803 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
7804 }
7805 stream->flush();
7806 SET_LASTCALL("glCreateShaderProgramvAEMU");
7807 android::base::endTrace();
7808 break;
7809 }
7810 case OP_glProgramUniform1f: {
7811 android::base::beginTrace("glProgramUniform1f decode");
7812 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
7813 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7814 GLfloat var_v0 = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4);
7815 if (useChecksum) {
7816 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
7817 "gles2_decoder_context_t::decode, OP_glProgramUniform1f: GL checksumCalculator failure\n");
7818 }
7819 #ifdef CHECK_GL_ERRORS
7820 GLint err = this->glGetError();
7821 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform1f\n", err);
7822 #endif
7823 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform1f(program:%u location:%d v0:%f )", stream, var_program, var_location, var_v0);
7824 this->glProgramUniform1f_dec(this, var_program, var_location, var_v0);
7825 SET_LASTCALL("glProgramUniform1f");
7826 android::base::endTrace();
7827 break;
7828 }
7829 case OP_glProgramUniform2f: {
7830 android::base::beginTrace("glProgramUniform2f decode");
7831 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
7832 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7833 GLfloat var_v0 = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4);
7834 GLfloat var_v1 = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4 + 4);
7835 if (useChecksum) {
7836 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
7837 "gles2_decoder_context_t::decode, OP_glProgramUniform2f: GL checksumCalculator failure\n");
7838 }
7839 #ifdef CHECK_GL_ERRORS
7840 GLint err = this->glGetError();
7841 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform2f\n", err);
7842 #endif
7843 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform2f(program:%u location:%d v0:%f v1:%f )", stream, var_program, var_location, var_v0, var_v1);
7844 this->glProgramUniform2f_dec(this, var_program, var_location, var_v0, var_v1);
7845 SET_LASTCALL("glProgramUniform2f");
7846 android::base::endTrace();
7847 break;
7848 }
7849 case OP_glProgramUniform3f: {
7850 android::base::beginTrace("glProgramUniform3f decode");
7851 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
7852 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7853 GLfloat var_v0 = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4);
7854 GLfloat var_v1 = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4 + 4);
7855 GLfloat var_v2 = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7856 if (useChecksum) {
7857 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
7858 "gles2_decoder_context_t::decode, OP_glProgramUniform3f: GL checksumCalculator failure\n");
7859 }
7860 #ifdef CHECK_GL_ERRORS
7861 GLint err = this->glGetError();
7862 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform3f\n", err);
7863 #endif
7864 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform3f(program:%u location:%d v0:%f v1:%f v2:%f )", stream, var_program, var_location, var_v0, var_v1, var_v2);
7865 this->glProgramUniform3f_dec(this, var_program, var_location, var_v0, var_v1, var_v2);
7866 SET_LASTCALL("glProgramUniform3f");
7867 android::base::endTrace();
7868 break;
7869 }
7870 case OP_glProgramUniform4f: {
7871 android::base::beginTrace("glProgramUniform4f decode");
7872 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
7873 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7874 GLfloat var_v0 = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4);
7875 GLfloat var_v1 = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4 + 4);
7876 GLfloat var_v2 = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7877 GLfloat var_v3 = Unpack<GLfloat,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
7878 if (useChecksum) {
7879 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
7880 "gles2_decoder_context_t::decode, OP_glProgramUniform4f: GL checksumCalculator failure\n");
7881 }
7882 #ifdef CHECK_GL_ERRORS
7883 GLint err = this->glGetError();
7884 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform4f\n", err);
7885 #endif
7886 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform4f(program:%u location:%d v0:%f v1:%f v2:%f v3:%f )", stream, var_program, var_location, var_v0, var_v1, var_v2, var_v3);
7887 this->glProgramUniform4f_dec(this, var_program, var_location, var_v0, var_v1, var_v2, var_v3);
7888 SET_LASTCALL("glProgramUniform4f");
7889 android::base::endTrace();
7890 break;
7891 }
7892 case OP_glProgramUniform1i: {
7893 android::base::beginTrace("glProgramUniform1i decode");
7894 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
7895 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7896 GLint var_v0 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
7897 if (useChecksum) {
7898 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
7899 "gles2_decoder_context_t::decode, OP_glProgramUniform1i: GL checksumCalculator failure\n");
7900 }
7901 #ifdef CHECK_GL_ERRORS
7902 GLint err = this->glGetError();
7903 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform1i\n", err);
7904 #endif
7905 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform1i(program:%u location:%d v0:%d )", stream, var_program, var_location, var_v0);
7906 this->glProgramUniform1i_dec(this, var_program, var_location, var_v0);
7907 SET_LASTCALL("glProgramUniform1i");
7908 android::base::endTrace();
7909 break;
7910 }
7911 case OP_glProgramUniform2i: {
7912 android::base::beginTrace("glProgramUniform2i decode");
7913 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
7914 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7915 GLint var_v0 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
7916 GLint var_v1 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
7917 if (useChecksum) {
7918 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
7919 "gles2_decoder_context_t::decode, OP_glProgramUniform2i: GL checksumCalculator failure\n");
7920 }
7921 #ifdef CHECK_GL_ERRORS
7922 GLint err = this->glGetError();
7923 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform2i\n", err);
7924 #endif
7925 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform2i(program:%u location:%d v0:%d v1:%d )", stream, var_program, var_location, var_v0, var_v1);
7926 this->glProgramUniform2i_dec(this, var_program, var_location, var_v0, var_v1);
7927 SET_LASTCALL("glProgramUniform2i");
7928 android::base::endTrace();
7929 break;
7930 }
7931 case OP_glProgramUniform3i: {
7932 android::base::beginTrace("glProgramUniform3i decode");
7933 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
7934 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7935 GLint var_v0 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
7936 GLint var_v1 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
7937 GLint var_v2 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7938 if (useChecksum) {
7939 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
7940 "gles2_decoder_context_t::decode, OP_glProgramUniform3i: GL checksumCalculator failure\n");
7941 }
7942 #ifdef CHECK_GL_ERRORS
7943 GLint err = this->glGetError();
7944 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform3i\n", err);
7945 #endif
7946 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform3i(program:%u location:%d v0:%d v1:%d v2:%d )", stream, var_program, var_location, var_v0, var_v1, var_v2);
7947 this->glProgramUniform3i_dec(this, var_program, var_location, var_v0, var_v1, var_v2);
7948 SET_LASTCALL("glProgramUniform3i");
7949 android::base::endTrace();
7950 break;
7951 }
7952 case OP_glProgramUniform4i: {
7953 android::base::beginTrace("glProgramUniform4i decode");
7954 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
7955 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7956 GLint var_v0 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
7957 GLint var_v1 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
7958 GLint var_v2 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
7959 GLint var_v3 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
7960 if (useChecksum) {
7961 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
7962 "gles2_decoder_context_t::decode, OP_glProgramUniform4i: GL checksumCalculator failure\n");
7963 }
7964 #ifdef CHECK_GL_ERRORS
7965 GLint err = this->glGetError();
7966 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform4i\n", err);
7967 #endif
7968 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform4i(program:%u location:%d v0:%d v1:%d v2:%d v3:%d )", stream, var_program, var_location, var_v0, var_v1, var_v2, var_v3);
7969 this->glProgramUniform4i_dec(this, var_program, var_location, var_v0, var_v1, var_v2, var_v3);
7970 SET_LASTCALL("glProgramUniform4i");
7971 android::base::endTrace();
7972 break;
7973 }
7974 case OP_glProgramUniform1ui: {
7975 android::base::beginTrace("glProgramUniform1ui decode");
7976 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
7977 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7978 GLuint var_v0 = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
7979 if (useChecksum) {
7980 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
7981 "gles2_decoder_context_t::decode, OP_glProgramUniform1ui: GL checksumCalculator failure\n");
7982 }
7983 #ifdef CHECK_GL_ERRORS
7984 GLint err = this->glGetError();
7985 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform1ui\n", err);
7986 #endif
7987 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform1ui(program:%u location:%d v0:%u )", stream, var_program, var_location, var_v0);
7988 this->glProgramUniform1ui_dec(this, var_program, var_location, var_v0);
7989 SET_LASTCALL("glProgramUniform1ui");
7990 android::base::endTrace();
7991 break;
7992 }
7993 case OP_glProgramUniform2ui: {
7994 android::base::beginTrace("glProgramUniform2ui decode");
7995 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
7996 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
7997 GLint var_v0 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
7998 GLuint var_v1 = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4);
7999 if (useChecksum) {
8000 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
8001 "gles2_decoder_context_t::decode, OP_glProgramUniform2ui: GL checksumCalculator failure\n");
8002 }
8003 #ifdef CHECK_GL_ERRORS
8004 GLint err = this->glGetError();
8005 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform2ui\n", err);
8006 #endif
8007 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform2ui(program:%u location:%d v0:%d v1:%u )", stream, var_program, var_location, var_v0, var_v1);
8008 this->glProgramUniform2ui_dec(this, var_program, var_location, var_v0, var_v1);
8009 SET_LASTCALL("glProgramUniform2ui");
8010 android::base::endTrace();
8011 break;
8012 }
8013 case OP_glProgramUniform3ui: {
8014 android::base::beginTrace("glProgramUniform3ui decode");
8015 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8016 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8017 GLint var_v0 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
8018 GLint var_v1 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
8019 GLuint var_v2 = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
8020 if (useChecksum) {
8021 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
8022 "gles2_decoder_context_t::decode, OP_glProgramUniform3ui: GL checksumCalculator failure\n");
8023 }
8024 #ifdef CHECK_GL_ERRORS
8025 GLint err = this->glGetError();
8026 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform3ui\n", err);
8027 #endif
8028 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform3ui(program:%u location:%d v0:%d v1:%d v2:%u )", stream, var_program, var_location, var_v0, var_v1, var_v2);
8029 this->glProgramUniform3ui_dec(this, var_program, var_location, var_v0, var_v1, var_v2);
8030 SET_LASTCALL("glProgramUniform3ui");
8031 android::base::endTrace();
8032 break;
8033 }
8034 case OP_glProgramUniform4ui: {
8035 android::base::beginTrace("glProgramUniform4ui decode");
8036 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8037 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8038 GLint var_v0 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
8039 GLint var_v1 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4);
8040 GLint var_v2 = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
8041 GLuint var_v3 = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
8042 if (useChecksum) {
8043 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
8044 "gles2_decoder_context_t::decode, OP_glProgramUniform4ui: GL checksumCalculator failure\n");
8045 }
8046 #ifdef CHECK_GL_ERRORS
8047 GLint err = this->glGetError();
8048 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform4ui\n", err);
8049 #endif
8050 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform4ui(program:%u location:%d v0:%d v1:%d v2:%d v3:%u )", stream, var_program, var_location, var_v0, var_v1, var_v2, var_v3);
8051 this->glProgramUniform4ui_dec(this, var_program, var_location, var_v0, var_v1, var_v2, var_v3);
8052 SET_LASTCALL("glProgramUniform4ui");
8053 android::base::endTrace();
8054 break;
8055 }
8056 case OP_glProgramUniform1fv: {
8057 android::base::beginTrace("glProgramUniform1fv decode");
8058 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8059 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8060 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8061 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
8062 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value);
8063 if (useChecksum) {
8064 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize,
8065 "gles2_decoder_context_t::decode, OP_glProgramUniform1fv: GL checksumCalculator failure\n");
8066 }
8067 #ifdef CHECK_GL_ERRORS
8068 GLint err = this->glGetError();
8069 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform1fv\n", err);
8070 #endif
8071 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform1fv(program:%u location:%d count:%d value:%p(%u) )", stream, var_program, var_location, var_count, (const GLfloat*)(inptr_value.get()), size_value);
8072 this->glProgramUniform1fv_dec(this, var_program, var_location, var_count, (const GLfloat*)(inptr_value.get()));
8073 SET_LASTCALL("glProgramUniform1fv");
8074 android::base::endTrace();
8075 break;
8076 }
8077 case OP_glProgramUniform2fv: {
8078 android::base::beginTrace("glProgramUniform2fv decode");
8079 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8080 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8081 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8082 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
8083 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value);
8084 if (useChecksum) {
8085 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize,
8086 "gles2_decoder_context_t::decode, OP_glProgramUniform2fv: GL checksumCalculator failure\n");
8087 }
8088 #ifdef CHECK_GL_ERRORS
8089 GLint err = this->glGetError();
8090 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform2fv\n", err);
8091 #endif
8092 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform2fv(program:%u location:%d count:%d value:%p(%u) )", stream, var_program, var_location, var_count, (const GLfloat*)(inptr_value.get()), size_value);
8093 this->glProgramUniform2fv_dec(this, var_program, var_location, var_count, (const GLfloat*)(inptr_value.get()));
8094 SET_LASTCALL("glProgramUniform2fv");
8095 android::base::endTrace();
8096 break;
8097 }
8098 case OP_glProgramUniform3fv: {
8099 android::base::beginTrace("glProgramUniform3fv decode");
8100 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8101 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8102 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8103 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
8104 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value);
8105 if (useChecksum) {
8106 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize,
8107 "gles2_decoder_context_t::decode, OP_glProgramUniform3fv: GL checksumCalculator failure\n");
8108 }
8109 #ifdef CHECK_GL_ERRORS
8110 GLint err = this->glGetError();
8111 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform3fv\n", err);
8112 #endif
8113 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform3fv(program:%u location:%d count:%d value:%p(%u) )", stream, var_program, var_location, var_count, (const GLfloat*)(inptr_value.get()), size_value);
8114 this->glProgramUniform3fv_dec(this, var_program, var_location, var_count, (const GLfloat*)(inptr_value.get()));
8115 SET_LASTCALL("glProgramUniform3fv");
8116 android::base::endTrace();
8117 break;
8118 }
8119 case OP_glProgramUniform4fv: {
8120 android::base::beginTrace("glProgramUniform4fv decode");
8121 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8122 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8123 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8124 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
8125 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value);
8126 if (useChecksum) {
8127 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize,
8128 "gles2_decoder_context_t::decode, OP_glProgramUniform4fv: GL checksumCalculator failure\n");
8129 }
8130 #ifdef CHECK_GL_ERRORS
8131 GLint err = this->glGetError();
8132 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform4fv\n", err);
8133 #endif
8134 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform4fv(program:%u location:%d count:%d value:%p(%u) )", stream, var_program, var_location, var_count, (const GLfloat*)(inptr_value.get()), size_value);
8135 this->glProgramUniform4fv_dec(this, var_program, var_location, var_count, (const GLfloat*)(inptr_value.get()));
8136 SET_LASTCALL("glProgramUniform4fv");
8137 android::base::endTrace();
8138 break;
8139 }
8140 case OP_glProgramUniform1iv: {
8141 android::base::beginTrace("glProgramUniform1iv decode");
8142 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8143 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8144 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8145 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
8146 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value);
8147 if (useChecksum) {
8148 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize,
8149 "gles2_decoder_context_t::decode, OP_glProgramUniform1iv: GL checksumCalculator failure\n");
8150 }
8151 #ifdef CHECK_GL_ERRORS
8152 GLint err = this->glGetError();
8153 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform1iv\n", err);
8154 #endif
8155 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform1iv(program:%u location:%d count:%d value:%p(%u) )", stream, var_program, var_location, var_count, (const GLint*)(inptr_value.get()), size_value);
8156 this->glProgramUniform1iv_dec(this, var_program, var_location, var_count, (const GLint*)(inptr_value.get()));
8157 SET_LASTCALL("glProgramUniform1iv");
8158 android::base::endTrace();
8159 break;
8160 }
8161 case OP_glProgramUniform2iv: {
8162 android::base::beginTrace("glProgramUniform2iv decode");
8163 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8164 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8165 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8166 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
8167 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value);
8168 if (useChecksum) {
8169 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize,
8170 "gles2_decoder_context_t::decode, OP_glProgramUniform2iv: GL checksumCalculator failure\n");
8171 }
8172 #ifdef CHECK_GL_ERRORS
8173 GLint err = this->glGetError();
8174 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform2iv\n", err);
8175 #endif
8176 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform2iv(program:%u location:%d count:%d value:%p(%u) )", stream, var_program, var_location, var_count, (const GLint*)(inptr_value.get()), size_value);
8177 this->glProgramUniform2iv_dec(this, var_program, var_location, var_count, (const GLint*)(inptr_value.get()));
8178 SET_LASTCALL("glProgramUniform2iv");
8179 android::base::endTrace();
8180 break;
8181 }
8182 case OP_glProgramUniform3iv: {
8183 android::base::beginTrace("glProgramUniform3iv decode");
8184 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8185 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8186 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8187 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
8188 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value);
8189 if (useChecksum) {
8190 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize,
8191 "gles2_decoder_context_t::decode, OP_glProgramUniform3iv: GL checksumCalculator failure\n");
8192 }
8193 #ifdef CHECK_GL_ERRORS
8194 GLint err = this->glGetError();
8195 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform3iv\n", err);
8196 #endif
8197 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform3iv(program:%u location:%d count:%d value:%p(%u) )", stream, var_program, var_location, var_count, (const GLint*)(inptr_value.get()), size_value);
8198 this->glProgramUniform3iv_dec(this, var_program, var_location, var_count, (const GLint*)(inptr_value.get()));
8199 SET_LASTCALL("glProgramUniform3iv");
8200 android::base::endTrace();
8201 break;
8202 }
8203 case OP_glProgramUniform4iv: {
8204 android::base::beginTrace("glProgramUniform4iv decode");
8205 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8206 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8207 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8208 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
8209 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value);
8210 if (useChecksum) {
8211 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize,
8212 "gles2_decoder_context_t::decode, OP_glProgramUniform4iv: GL checksumCalculator failure\n");
8213 }
8214 #ifdef CHECK_GL_ERRORS
8215 GLint err = this->glGetError();
8216 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform4iv\n", err);
8217 #endif
8218 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform4iv(program:%u location:%d count:%d value:%p(%u) )", stream, var_program, var_location, var_count, (const GLint*)(inptr_value.get()), size_value);
8219 this->glProgramUniform4iv_dec(this, var_program, var_location, var_count, (const GLint*)(inptr_value.get()));
8220 SET_LASTCALL("glProgramUniform4iv");
8221 android::base::endTrace();
8222 break;
8223 }
8224 case OP_glProgramUniform1uiv: {
8225 android::base::beginTrace("glProgramUniform1uiv decode");
8226 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8227 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8228 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8229 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
8230 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value);
8231 if (useChecksum) {
8232 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize,
8233 "gles2_decoder_context_t::decode, OP_glProgramUniform1uiv: GL checksumCalculator failure\n");
8234 }
8235 #ifdef CHECK_GL_ERRORS
8236 GLint err = this->glGetError();
8237 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform1uiv\n", err);
8238 #endif
8239 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform1uiv(program:%u location:%d count:%d value:%p(%u) )", stream, var_program, var_location, var_count, (const GLuint*)(inptr_value.get()), size_value);
8240 this->glProgramUniform1uiv_dec(this, var_program, var_location, var_count, (const GLuint*)(inptr_value.get()));
8241 SET_LASTCALL("glProgramUniform1uiv");
8242 android::base::endTrace();
8243 break;
8244 }
8245 case OP_glProgramUniform2uiv: {
8246 android::base::beginTrace("glProgramUniform2uiv decode");
8247 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8248 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8249 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8250 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
8251 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value);
8252 if (useChecksum) {
8253 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize,
8254 "gles2_decoder_context_t::decode, OP_glProgramUniform2uiv: GL checksumCalculator failure\n");
8255 }
8256 #ifdef CHECK_GL_ERRORS
8257 GLint err = this->glGetError();
8258 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform2uiv\n", err);
8259 #endif
8260 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform2uiv(program:%u location:%d count:%d value:%p(%u) )", stream, var_program, var_location, var_count, (const GLuint*)(inptr_value.get()), size_value);
8261 this->glProgramUniform2uiv_dec(this, var_program, var_location, var_count, (const GLuint*)(inptr_value.get()));
8262 SET_LASTCALL("glProgramUniform2uiv");
8263 android::base::endTrace();
8264 break;
8265 }
8266 case OP_glProgramUniform3uiv: {
8267 android::base::beginTrace("glProgramUniform3uiv decode");
8268 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8269 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8270 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8271 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
8272 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value);
8273 if (useChecksum) {
8274 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize,
8275 "gles2_decoder_context_t::decode, OP_glProgramUniform3uiv: GL checksumCalculator failure\n");
8276 }
8277 #ifdef CHECK_GL_ERRORS
8278 GLint err = this->glGetError();
8279 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform3uiv\n", err);
8280 #endif
8281 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform3uiv(program:%u location:%d count:%d value:%p(%u) )", stream, var_program, var_location, var_count, (const GLuint*)(inptr_value.get()), size_value);
8282 this->glProgramUniform3uiv_dec(this, var_program, var_location, var_count, (const GLuint*)(inptr_value.get()));
8283 SET_LASTCALL("glProgramUniform3uiv");
8284 android::base::endTrace();
8285 break;
8286 }
8287 case OP_glProgramUniform4uiv: {
8288 android::base::beginTrace("glProgramUniform4uiv decode");
8289 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8290 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8291 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8292 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
8293 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value);
8294 if (useChecksum) {
8295 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize,
8296 "gles2_decoder_context_t::decode, OP_glProgramUniform4uiv: GL checksumCalculator failure\n");
8297 }
8298 #ifdef CHECK_GL_ERRORS
8299 GLint err = this->glGetError();
8300 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniform4uiv\n", err);
8301 #endif
8302 DECODER_DEBUG_LOG("gles2(%p): glProgramUniform4uiv(program:%u location:%d count:%d value:%p(%u) )", stream, var_program, var_location, var_count, (const GLuint*)(inptr_value.get()), size_value);
8303 this->glProgramUniform4uiv_dec(this, var_program, var_location, var_count, (const GLuint*)(inptr_value.get()));
8304 SET_LASTCALL("glProgramUniform4uiv");
8305 android::base::endTrace();
8306 break;
8307 }
8308 case OP_glProgramUniformMatrix2fv: {
8309 android::base::beginTrace("glProgramUniformMatrix2fv decode");
8310 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8311 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8312 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8313 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4);
8314 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1);
8315 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value);
8316 if (useChecksum) {
8317 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize,
8318 "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix2fv: GL checksumCalculator failure\n");
8319 }
8320 #ifdef CHECK_GL_ERRORS
8321 GLint err = this->glGetError();
8322 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniformMatrix2fv\n", err);
8323 #endif
8324 DECODER_DEBUG_LOG("gles2(%p): glProgramUniformMatrix2fv(program:%u location:%d count:%d transpose:%d value:%p(%u) )", stream, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
8325 this->glProgramUniformMatrix2fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
8326 SET_LASTCALL("glProgramUniformMatrix2fv");
8327 android::base::endTrace();
8328 break;
8329 }
8330 case OP_glProgramUniformMatrix3fv: {
8331 android::base::beginTrace("glProgramUniformMatrix3fv decode");
8332 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8333 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8334 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8335 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4);
8336 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1);
8337 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value);
8338 if (useChecksum) {
8339 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize,
8340 "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix3fv: GL checksumCalculator failure\n");
8341 }
8342 #ifdef CHECK_GL_ERRORS
8343 GLint err = this->glGetError();
8344 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniformMatrix3fv\n", err);
8345 #endif
8346 DECODER_DEBUG_LOG("gles2(%p): glProgramUniformMatrix3fv(program:%u location:%d count:%d transpose:%d value:%p(%u) )", stream, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
8347 this->glProgramUniformMatrix3fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
8348 SET_LASTCALL("glProgramUniformMatrix3fv");
8349 android::base::endTrace();
8350 break;
8351 }
8352 case OP_glProgramUniformMatrix4fv: {
8353 android::base::beginTrace("glProgramUniformMatrix4fv decode");
8354 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8355 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8356 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8357 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4);
8358 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1);
8359 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value);
8360 if (useChecksum) {
8361 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize,
8362 "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix4fv: GL checksumCalculator failure\n");
8363 }
8364 #ifdef CHECK_GL_ERRORS
8365 GLint err = this->glGetError();
8366 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniformMatrix4fv\n", err);
8367 #endif
8368 DECODER_DEBUG_LOG("gles2(%p): glProgramUniformMatrix4fv(program:%u location:%d count:%d transpose:%d value:%p(%u) )", stream, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
8369 this->glProgramUniformMatrix4fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
8370 SET_LASTCALL("glProgramUniformMatrix4fv");
8371 android::base::endTrace();
8372 break;
8373 }
8374 case OP_glProgramUniformMatrix2x3fv: {
8375 android::base::beginTrace("glProgramUniformMatrix2x3fv decode");
8376 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8377 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8378 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8379 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4);
8380 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1);
8381 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value);
8382 if (useChecksum) {
8383 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize,
8384 "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix2x3fv: GL checksumCalculator failure\n");
8385 }
8386 #ifdef CHECK_GL_ERRORS
8387 GLint err = this->glGetError();
8388 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniformMatrix2x3fv\n", err);
8389 #endif
8390 DECODER_DEBUG_LOG("gles2(%p): glProgramUniformMatrix2x3fv(program:%u location:%d count:%d transpose:%d value:%p(%u) )", stream, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
8391 this->glProgramUniformMatrix2x3fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
8392 SET_LASTCALL("glProgramUniformMatrix2x3fv");
8393 android::base::endTrace();
8394 break;
8395 }
8396 case OP_glProgramUniformMatrix3x2fv: {
8397 android::base::beginTrace("glProgramUniformMatrix3x2fv decode");
8398 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8399 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8400 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8401 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4);
8402 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1);
8403 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value);
8404 if (useChecksum) {
8405 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize,
8406 "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix3x2fv: GL checksumCalculator failure\n");
8407 }
8408 #ifdef CHECK_GL_ERRORS
8409 GLint err = this->glGetError();
8410 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniformMatrix3x2fv\n", err);
8411 #endif
8412 DECODER_DEBUG_LOG("gles2(%p): glProgramUniformMatrix3x2fv(program:%u location:%d count:%d transpose:%d value:%p(%u) )", stream, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
8413 this->glProgramUniformMatrix3x2fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
8414 SET_LASTCALL("glProgramUniformMatrix3x2fv");
8415 android::base::endTrace();
8416 break;
8417 }
8418 case OP_glProgramUniformMatrix2x4fv: {
8419 android::base::beginTrace("glProgramUniformMatrix2x4fv decode");
8420 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8421 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8422 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8423 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4);
8424 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1);
8425 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value);
8426 if (useChecksum) {
8427 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize,
8428 "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix2x4fv: GL checksumCalculator failure\n");
8429 }
8430 #ifdef CHECK_GL_ERRORS
8431 GLint err = this->glGetError();
8432 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniformMatrix2x4fv\n", err);
8433 #endif
8434 DECODER_DEBUG_LOG("gles2(%p): glProgramUniformMatrix2x4fv(program:%u location:%d count:%d transpose:%d value:%p(%u) )", stream, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
8435 this->glProgramUniformMatrix2x4fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
8436 SET_LASTCALL("glProgramUniformMatrix2x4fv");
8437 android::base::endTrace();
8438 break;
8439 }
8440 case OP_glProgramUniformMatrix4x2fv: {
8441 android::base::beginTrace("glProgramUniformMatrix4x2fv decode");
8442 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8443 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8444 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8445 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4);
8446 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1);
8447 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value);
8448 if (useChecksum) {
8449 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize,
8450 "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix4x2fv: GL checksumCalculator failure\n");
8451 }
8452 #ifdef CHECK_GL_ERRORS
8453 GLint err = this->glGetError();
8454 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniformMatrix4x2fv\n", err);
8455 #endif
8456 DECODER_DEBUG_LOG("gles2(%p): glProgramUniformMatrix4x2fv(program:%u location:%d count:%d transpose:%d value:%p(%u) )", stream, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
8457 this->glProgramUniformMatrix4x2fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
8458 SET_LASTCALL("glProgramUniformMatrix4x2fv");
8459 android::base::endTrace();
8460 break;
8461 }
8462 case OP_glProgramUniformMatrix3x4fv: {
8463 android::base::beginTrace("glProgramUniformMatrix3x4fv decode");
8464 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8465 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8466 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8467 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4);
8468 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1);
8469 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value);
8470 if (useChecksum) {
8471 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize,
8472 "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix3x4fv: GL checksumCalculator failure\n");
8473 }
8474 #ifdef CHECK_GL_ERRORS
8475 GLint err = this->glGetError();
8476 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniformMatrix3x4fv\n", err);
8477 #endif
8478 DECODER_DEBUG_LOG("gles2(%p): glProgramUniformMatrix3x4fv(program:%u location:%d count:%d transpose:%d value:%p(%u) )", stream, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
8479 this->glProgramUniformMatrix3x4fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
8480 SET_LASTCALL("glProgramUniformMatrix3x4fv");
8481 android::base::endTrace();
8482 break;
8483 }
8484 case OP_glProgramUniformMatrix4x3fv: {
8485 android::base::beginTrace("glProgramUniformMatrix4x3fv decode");
8486 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8487 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8488 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
8489 GLboolean var_transpose = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4);
8490 uint32_t size_value __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1);
8491 InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value);
8492 if (useChecksum) {
8493 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize,
8494 "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix4x3fv: GL checksumCalculator failure\n");
8495 }
8496 #ifdef CHECK_GL_ERRORS
8497 GLint err = this->glGetError();
8498 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glProgramUniformMatrix4x3fv\n", err);
8499 #endif
8500 DECODER_DEBUG_LOG("gles2(%p): glProgramUniformMatrix4x3fv(program:%u location:%d count:%d transpose:%d value:%p(%u) )", stream, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()), size_value);
8501 this->glProgramUniformMatrix4x3fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get()));
8502 SET_LASTCALL("glProgramUniformMatrix4x3fv");
8503 android::base::endTrace();
8504 break;
8505 }
8506 case OP_glGetProgramInterfaceiv: {
8507 android::base::beginTrace("glGetProgramInterfaceiv decode");
8508 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8509 GLenum var_programInterface = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
8510 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
8511 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
8512 if (useChecksum) {
8513 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
8514 "gles2_decoder_context_t::decode, OP_glGetProgramInterfaceiv: GL checksumCalculator failure\n");
8515 }
8516 size_t totalTmpSize = size_params;
8517 totalTmpSize += checksumSize;
8518 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
8519 OutputBuffer outptr_params(&tmpBuf[0], size_params);
8520 #ifdef CHECK_GL_ERRORS
8521 GLint err = this->glGetError();
8522 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetProgramInterfaceiv\n", err);
8523 #endif
8524 DECODER_DEBUG_LOG("gles2(%p): glGetProgramInterfaceiv(program:%u programInterface:0x%08x pname:0x%08x params:%p(%u) )", stream, var_program, var_programInterface, var_pname, (GLint*)(outptr_params.get()), size_params);
8525 this->glGetProgramInterfaceiv_dec(this, var_program, var_programInterface, var_pname, (GLint*)(outptr_params.get()));
8526 outptr_params.flush();
8527 if (useChecksum) {
8528 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
8529 }
8530 stream->flush();
8531 SET_LASTCALL("glGetProgramInterfaceiv");
8532 android::base::endTrace();
8533 break;
8534 }
8535 case OP_glGetProgramResourceiv: {
8536 android::base::beginTrace("glGetProgramResourceiv decode");
8537 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8538 GLenum var_programInterface = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
8539 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
8540 GLsizei var_propCount = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
8541 uint32_t size_props __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
8542 InputBuffer inptr_props(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_props);
8543 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_props);
8544 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_props + 4);
8545 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_props + 4 + 4);
8546 if (useChecksum) {
8547 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_props + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_props + 4 + 4 + 4, checksumSize,
8548 "gles2_decoder_context_t::decode, OP_glGetProgramResourceiv: GL checksumCalculator failure\n");
8549 }
8550 size_t totalTmpSize = size_length;
8551 totalTmpSize += size_params;
8552 totalTmpSize += checksumSize;
8553 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
8554 OutputBuffer outptr_length(&tmpBuf[0], size_length);
8555 OutputBuffer outptr_params(&tmpBuf[0 + size_length], size_params);
8556 #ifdef CHECK_GL_ERRORS
8557 GLint err = this->glGetError();
8558 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetProgramResourceiv\n", err);
8559 #endif
8560 DECODER_DEBUG_LOG("gles2(%p): glGetProgramResourceiv(program:%u programInterface:0x%08x index:%u propCount:%d props:%p(%u) bufSize:%d length:%p(%u) params:%p(%u) )", stream, var_program, var_programInterface, var_index, var_propCount, (const GLenum*)(inptr_props.get()), size_props, var_bufSize, (GLsizei*)(outptr_length.get()), size_length, (GLint*)(outptr_params.get()), size_params);
8561 this->glGetProgramResourceiv_dec(this, var_program, var_programInterface, var_index, var_propCount, (const GLenum*)(inptr_props.get()), var_bufSize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLint*)(outptr_params.get()));
8562 outptr_length.flush();
8563 outptr_params.flush();
8564 if (useChecksum) {
8565 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
8566 }
8567 stream->flush();
8568 SET_LASTCALL("glGetProgramResourceiv");
8569 android::base::endTrace();
8570 break;
8571 }
8572 case OP_glGetProgramResourceIndex: {
8573 android::base::beginTrace("glGetProgramResourceIndex decode");
8574 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8575 GLenum var_programInterface = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
8576 uint32_t size_name __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
8577 InputBuffer inptr_name(ptr + 8 + 4 + 4 + 4, size_name);
8578 if (useChecksum) {
8579 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_name, ptr + 8 + 4 + 4 + 4 + size_name, checksumSize,
8580 "gles2_decoder_context_t::decode, OP_glGetProgramResourceIndex: GL checksumCalculator failure\n");
8581 }
8582 size_t totalTmpSize = sizeof(GLuint);
8583 totalTmpSize += checksumSize;
8584 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
8585 #ifdef CHECK_GL_ERRORS
8586 GLint err = this->glGetError();
8587 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetProgramResourceIndex\n", err);
8588 #endif
8589 DECODER_DEBUG_LOG("gles2(%p): glGetProgramResourceIndex(program:%u programInterface:0x%08x name:%p(%u) )", stream, var_program, var_programInterface, (const char*)(inptr_name.get()), size_name);
8590 *(GLuint *)(&tmpBuf[0]) = this->glGetProgramResourceIndex_dec(this, var_program, var_programInterface, (const char*)(inptr_name.get()));
8591 if (useChecksum) {
8592 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
8593 }
8594 stream->flush();
8595 SET_LASTCALL("glGetProgramResourceIndex");
8596 android::base::endTrace();
8597 break;
8598 }
8599 case OP_glGetProgramResourceLocation: {
8600 android::base::beginTrace("glGetProgramResourceLocation decode");
8601 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8602 GLenum var_programInterface = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
8603 uint32_t size_name __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
8604 InputBuffer inptr_name(ptr + 8 + 4 + 4 + 4, size_name);
8605 if (useChecksum) {
8606 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_name, ptr + 8 + 4 + 4 + 4 + size_name, checksumSize,
8607 "gles2_decoder_context_t::decode, OP_glGetProgramResourceLocation: GL checksumCalculator failure\n");
8608 }
8609 size_t totalTmpSize = sizeof(GLint);
8610 totalTmpSize += checksumSize;
8611 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
8612 #ifdef CHECK_GL_ERRORS
8613 GLint err = this->glGetError();
8614 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetProgramResourceLocation\n", err);
8615 #endif
8616 DECODER_DEBUG_LOG("gles2(%p): glGetProgramResourceLocation(program:%u programInterface:0x%08x name:%p(%u) )", stream, var_program, var_programInterface, (const char*)(inptr_name.get()), size_name);
8617 *(GLint *)(&tmpBuf[0]) = this->glGetProgramResourceLocation_dec(this, var_program, var_programInterface, (const char*)(inptr_name.get()));
8618 if (useChecksum) {
8619 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
8620 }
8621 stream->flush();
8622 SET_LASTCALL("glGetProgramResourceLocation");
8623 android::base::endTrace();
8624 break;
8625 }
8626 case OP_glGetProgramResourceName: {
8627 android::base::beginTrace("glGetProgramResourceName decode");
8628 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
8629 GLenum var_programInterface = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
8630 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
8631 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
8632 uint32_t size_length __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
8633 uint32_t size_name __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
8634 if (useChecksum) {
8635 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
8636 "gles2_decoder_context_t::decode, OP_glGetProgramResourceName: GL checksumCalculator failure\n");
8637 }
8638 size_t totalTmpSize = size_length;
8639 totalTmpSize += size_name;
8640 totalTmpSize += checksumSize;
8641 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
8642 OutputBuffer outptr_length(&tmpBuf[0], size_length);
8643 OutputBuffer outptr_name(&tmpBuf[0 + size_length], size_name);
8644 #ifdef CHECK_GL_ERRORS
8645 GLint err = this->glGetError();
8646 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetProgramResourceName\n", err);
8647 #endif
8648 DECODER_DEBUG_LOG("gles2(%p): glGetProgramResourceName(program:%u programInterface:0x%08x index:%u bufSize:%d length:%p(%u) name:%p(%u) )", stream, var_program, var_programInterface, var_index, var_bufSize, (GLsizei*)(outptr_length.get()), size_length, (char*)(outptr_name.get()), size_name);
8649 this->glGetProgramResourceName_dec(this, var_program, var_programInterface, var_index, var_bufSize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (char*)(outptr_name.get()));
8650 outptr_length.flush();
8651 outptr_name.flush();
8652 if (useChecksum) {
8653 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
8654 }
8655 stream->flush();
8656 SET_LASTCALL("glGetProgramResourceName");
8657 android::base::endTrace();
8658 break;
8659 }
8660 case OP_glBindImageTexture: {
8661 android::base::beginTrace("glBindImageTexture decode");
8662 GLuint var_unit = Unpack<GLuint,uint32_t>(ptr + 8);
8663 GLuint var_texture = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
8664 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
8665 GLboolean var_layered = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4);
8666 GLint var_layer = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1);
8667 GLenum var_access = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1 + 4);
8668 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4);
8669 if (useChecksum) {
8670 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4 + 4, checksumSize,
8671 "gles2_decoder_context_t::decode, OP_glBindImageTexture: GL checksumCalculator failure\n");
8672 }
8673 #ifdef CHECK_GL_ERRORS
8674 GLint err = this->glGetError();
8675 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBindImageTexture\n", err);
8676 #endif
8677 DECODER_DEBUG_LOG("gles2(%p): glBindImageTexture(unit:%u texture:%u level:%d layered:%d layer:%d access:0x%08x format:0x%08x )", stream, var_unit, var_texture, var_level, var_layered, var_layer, var_access, var_format);
8678 this->glBindImageTexture(var_unit, var_texture, var_level, var_layered, var_layer, var_access, var_format);
8679 SET_LASTCALL("glBindImageTexture");
8680 android::base::endTrace();
8681 break;
8682 }
8683 case OP_glDispatchCompute: {
8684 android::base::beginTrace("glDispatchCompute decode");
8685 GLuint var_num_groups_x = Unpack<GLuint,uint32_t>(ptr + 8);
8686 GLuint var_num_groups_y = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
8687 GLuint var_num_groups_z = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
8688 if (useChecksum) {
8689 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
8690 "gles2_decoder_context_t::decode, OP_glDispatchCompute: GL checksumCalculator failure\n");
8691 }
8692 #ifdef CHECK_GL_ERRORS
8693 GLint err = this->glGetError();
8694 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDispatchCompute\n", err);
8695 #endif
8696 DECODER_DEBUG_LOG("gles2(%p): glDispatchCompute(num_groups_x:%u num_groups_y:%u num_groups_z:%u )", stream, var_num_groups_x, var_num_groups_y, var_num_groups_z);
8697 this->glDispatchCompute(var_num_groups_x, var_num_groups_y, var_num_groups_z);
8698 SET_LASTCALL("glDispatchCompute");
8699 android::base::endTrace();
8700 break;
8701 }
8702 case OP_glDispatchComputeIndirect: {
8703 android::base::beginTrace("glDispatchComputeIndirect decode");
8704 GLintptr var_indirect = Unpack<GLintptr,uint32_t>(ptr + 8);
8705 if (useChecksum) {
8706 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
8707 "gles2_decoder_context_t::decode, OP_glDispatchComputeIndirect: GL checksumCalculator failure\n");
8708 }
8709 #ifdef CHECK_GL_ERRORS
8710 GLint err = this->glGetError();
8711 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDispatchComputeIndirect\n", err);
8712 #endif
8713 DECODER_DEBUG_LOG("gles2(%p): glDispatchComputeIndirect(indirect:0x%08lx )", stream, var_indirect);
8714 this->glDispatchComputeIndirect(var_indirect);
8715 SET_LASTCALL("glDispatchComputeIndirect");
8716 android::base::endTrace();
8717 break;
8718 }
8719 case OP_glBindVertexBuffer: {
8720 android::base::beginTrace("glBindVertexBuffer decode");
8721 GLuint var_bindingindex = Unpack<GLuint,uint32_t>(ptr + 8);
8722 GLuint var_buffer = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
8723 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4 + 4);
8724 GLintptr var_stride = Unpack<GLintptr,uint32_t>(ptr + 8 + 4 + 4 + 4);
8725 if (useChecksum) {
8726 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
8727 "gles2_decoder_context_t::decode, OP_glBindVertexBuffer: GL checksumCalculator failure\n");
8728 }
8729 #ifdef CHECK_GL_ERRORS
8730 GLint err = this->glGetError();
8731 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBindVertexBuffer\n", err);
8732 #endif
8733 DECODER_DEBUG_LOG("gles2(%p): glBindVertexBuffer(bindingindex:%u buffer:%u offset:0x%08lx stride:0x%08lx )", stream, var_bindingindex, var_buffer, var_offset, var_stride);
8734 this->glBindVertexBuffer(var_bindingindex, var_buffer, var_offset, var_stride);
8735 SET_LASTCALL("glBindVertexBuffer");
8736 android::base::endTrace();
8737 break;
8738 }
8739 case OP_glVertexAttribBinding: {
8740 android::base::beginTrace("glVertexAttribBinding decode");
8741 GLuint var_attribindex = Unpack<GLuint,uint32_t>(ptr + 8);
8742 GLuint var_bindingindex = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
8743 if (useChecksum) {
8744 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
8745 "gles2_decoder_context_t::decode, OP_glVertexAttribBinding: GL checksumCalculator failure\n");
8746 }
8747 #ifdef CHECK_GL_ERRORS
8748 GLint err = this->glGetError();
8749 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttribBinding\n", err);
8750 #endif
8751 DECODER_DEBUG_LOG("gles2(%p): glVertexAttribBinding(attribindex:%u bindingindex:%u )", stream, var_attribindex, var_bindingindex);
8752 this->glVertexAttribBinding(var_attribindex, var_bindingindex);
8753 SET_LASTCALL("glVertexAttribBinding");
8754 android::base::endTrace();
8755 break;
8756 }
8757 case OP_glVertexAttribFormat: {
8758 android::base::beginTrace("glVertexAttribFormat decode");
8759 GLuint var_attribindex = Unpack<GLuint,uint32_t>(ptr + 8);
8760 GLint var_size = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8761 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
8762 GLboolean var_normalized = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4);
8763 GLuint var_relativeoffset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 1);
8764 if (useChecksum) {
8765 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4, ptr + 8 + 4 + 4 + 4 + 1 + 4, checksumSize,
8766 "gles2_decoder_context_t::decode, OP_glVertexAttribFormat: GL checksumCalculator failure\n");
8767 }
8768 #ifdef CHECK_GL_ERRORS
8769 GLint err = this->glGetError();
8770 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttribFormat\n", err);
8771 #endif
8772 DECODER_DEBUG_LOG("gles2(%p): glVertexAttribFormat(attribindex:%u size:%d type:0x%08x normalized:%d relativeoffset:%u )", stream, var_attribindex, var_size, var_type, var_normalized, var_relativeoffset);
8773 this->glVertexAttribFormat(var_attribindex, var_size, var_type, var_normalized, var_relativeoffset);
8774 SET_LASTCALL("glVertexAttribFormat");
8775 android::base::endTrace();
8776 break;
8777 }
8778 case OP_glVertexAttribIFormat: {
8779 android::base::beginTrace("glVertexAttribIFormat decode");
8780 GLuint var_attribindex = Unpack<GLuint,uint32_t>(ptr + 8);
8781 GLint var_size = Unpack<GLint,uint32_t>(ptr + 8 + 4);
8782 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
8783 GLuint var_relativeoffset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4);
8784 if (useChecksum) {
8785 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
8786 "gles2_decoder_context_t::decode, OP_glVertexAttribIFormat: GL checksumCalculator failure\n");
8787 }
8788 #ifdef CHECK_GL_ERRORS
8789 GLint err = this->glGetError();
8790 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexAttribIFormat\n", err);
8791 #endif
8792 DECODER_DEBUG_LOG("gles2(%p): glVertexAttribIFormat(attribindex:%u size:%d type:0x%08x relativeoffset:%u )", stream, var_attribindex, var_size, var_type, var_relativeoffset);
8793 this->glVertexAttribIFormat(var_attribindex, var_size, var_type, var_relativeoffset);
8794 SET_LASTCALL("glVertexAttribIFormat");
8795 android::base::endTrace();
8796 break;
8797 }
8798 case OP_glVertexBindingDivisor: {
8799 android::base::beginTrace("glVertexBindingDivisor decode");
8800 GLuint var_bindingindex = Unpack<GLuint,uint32_t>(ptr + 8);
8801 GLuint var_divisor = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
8802 if (useChecksum) {
8803 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
8804 "gles2_decoder_context_t::decode, OP_glVertexBindingDivisor: GL checksumCalculator failure\n");
8805 }
8806 #ifdef CHECK_GL_ERRORS
8807 GLint err = this->glGetError();
8808 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glVertexBindingDivisor\n", err);
8809 #endif
8810 DECODER_DEBUG_LOG("gles2(%p): glVertexBindingDivisor(bindingindex:%u divisor:%u )", stream, var_bindingindex, var_divisor);
8811 this->glVertexBindingDivisor(var_bindingindex, var_divisor);
8812 SET_LASTCALL("glVertexBindingDivisor");
8813 android::base::endTrace();
8814 break;
8815 }
8816 case OP_glDrawArraysIndirect: {
8817 android::base::beginTrace("glDrawArraysIndirect decode");
8818 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
8819 uint32_t size_indirect __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
8820 InputBuffer inptr_indirect(ptr + 8 + 4 + 4, size_indirect);
8821 if (useChecksum) {
8822 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_indirect, ptr + 8 + 4 + 4 + size_indirect, checksumSize,
8823 "gles2_decoder_context_t::decode, OP_glDrawArraysIndirect: GL checksumCalculator failure\n");
8824 }
8825 #ifdef CHECK_GL_ERRORS
8826 GLint err = this->glGetError();
8827 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawArraysIndirect\n", err);
8828 #endif
8829 DECODER_DEBUG_LOG("gles2(%p): glDrawArraysIndirect(mode:0x%08x indirect:%p(%u) )", stream, var_mode, (const void*)(inptr_indirect.get()), size_indirect);
8830 this->glDrawArraysIndirect(var_mode, (const void*)(inptr_indirect.get()));
8831 SET_LASTCALL("glDrawArraysIndirect");
8832 android::base::endTrace();
8833 break;
8834 }
8835 case OP_glDrawArraysIndirectDataAEMU: {
8836 android::base::beginTrace("glDrawArraysIndirectDataAEMU decode");
8837 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
8838 uint32_t size_indirect __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
8839 InputBuffer inptr_indirect(ptr + 8 + 4 + 4, size_indirect);
8840 GLuint var_datalen = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + size_indirect);
8841 if (useChecksum) {
8842 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_indirect + 4, ptr + 8 + 4 + 4 + size_indirect + 4, checksumSize,
8843 "gles2_decoder_context_t::decode, OP_glDrawArraysIndirectDataAEMU: GL checksumCalculator failure\n");
8844 }
8845 #ifdef CHECK_GL_ERRORS
8846 GLint err = this->glGetError();
8847 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawArraysIndirectDataAEMU\n", err);
8848 #endif
8849 DECODER_DEBUG_LOG("gles2(%p): glDrawArraysIndirectDataAEMU(mode:0x%08x indirect:%p(%u) datalen:%u )", stream, var_mode, (const void*)(inptr_indirect.get()), size_indirect, var_datalen);
8850 this->glDrawArraysIndirectDataAEMU(this, var_mode, (const void*)(inptr_indirect.get()), var_datalen);
8851 SET_LASTCALL("glDrawArraysIndirectDataAEMU");
8852 android::base::endTrace();
8853 break;
8854 }
8855 case OP_glDrawArraysIndirectOffsetAEMU: {
8856 android::base::beginTrace("glDrawArraysIndirectOffsetAEMU decode");
8857 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
8858 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
8859 if (useChecksum) {
8860 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
8861 "gles2_decoder_context_t::decode, OP_glDrawArraysIndirectOffsetAEMU: GL checksumCalculator failure\n");
8862 }
8863 #ifdef CHECK_GL_ERRORS
8864 GLint err = this->glGetError();
8865 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawArraysIndirectOffsetAEMU\n", err);
8866 #endif
8867 DECODER_DEBUG_LOG("gles2(%p): glDrawArraysIndirectOffsetAEMU(mode:0x%08x offset:%u )", stream, var_mode, var_offset);
8868 this->glDrawArraysIndirectOffsetAEMU(this, var_mode, var_offset);
8869 SET_LASTCALL("glDrawArraysIndirectOffsetAEMU");
8870 android::base::endTrace();
8871 break;
8872 }
8873 case OP_glDrawElementsIndirect: {
8874 android::base::beginTrace("glDrawElementsIndirect decode");
8875 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
8876 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
8877 uint32_t size_indirect __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
8878 InputBuffer inptr_indirect(ptr + 8 + 4 + 4 + 4, size_indirect);
8879 if (useChecksum) {
8880 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_indirect, ptr + 8 + 4 + 4 + 4 + size_indirect, checksumSize,
8881 "gles2_decoder_context_t::decode, OP_glDrawElementsIndirect: GL checksumCalculator failure\n");
8882 }
8883 #ifdef CHECK_GL_ERRORS
8884 GLint err = this->glGetError();
8885 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawElementsIndirect\n", err);
8886 #endif
8887 DECODER_DEBUG_LOG("gles2(%p): glDrawElementsIndirect(mode:0x%08x type:0x%08x indirect:%p(%u) )", stream, var_mode, var_type, (const void*)(inptr_indirect.get()), size_indirect);
8888 this->glDrawElementsIndirect(var_mode, var_type, (const void*)(inptr_indirect.get()));
8889 SET_LASTCALL("glDrawElementsIndirect");
8890 android::base::endTrace();
8891 break;
8892 }
8893 case OP_glDrawElementsIndirectDataAEMU: {
8894 android::base::beginTrace("glDrawElementsIndirectDataAEMU decode");
8895 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
8896 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
8897 uint32_t size_indirect __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
8898 InputBuffer inptr_indirect(ptr + 8 + 4 + 4 + 4, size_indirect);
8899 GLuint var_datalen = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_indirect);
8900 if (useChecksum) {
8901 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_indirect + 4, ptr + 8 + 4 + 4 + 4 + size_indirect + 4, checksumSize,
8902 "gles2_decoder_context_t::decode, OP_glDrawElementsIndirectDataAEMU: GL checksumCalculator failure\n");
8903 }
8904 #ifdef CHECK_GL_ERRORS
8905 GLint err = this->glGetError();
8906 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawElementsIndirectDataAEMU\n", err);
8907 #endif
8908 DECODER_DEBUG_LOG("gles2(%p): glDrawElementsIndirectDataAEMU(mode:0x%08x type:0x%08x indirect:%p(%u) datalen:%u )", stream, var_mode, var_type, (const void*)(inptr_indirect.get()), size_indirect, var_datalen);
8909 this->glDrawElementsIndirectDataAEMU(this, var_mode, var_type, (const void*)(inptr_indirect.get()), var_datalen);
8910 SET_LASTCALL("glDrawElementsIndirectDataAEMU");
8911 android::base::endTrace();
8912 break;
8913 }
8914 case OP_glDrawElementsIndirectOffsetAEMU: {
8915 android::base::beginTrace("glDrawElementsIndirectOffsetAEMU decode");
8916 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
8917 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
8918 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
8919 if (useChecksum) {
8920 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
8921 "gles2_decoder_context_t::decode, OP_glDrawElementsIndirectOffsetAEMU: GL checksumCalculator failure\n");
8922 }
8923 #ifdef CHECK_GL_ERRORS
8924 GLint err = this->glGetError();
8925 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawElementsIndirectOffsetAEMU\n", err);
8926 #endif
8927 DECODER_DEBUG_LOG("gles2(%p): glDrawElementsIndirectOffsetAEMU(mode:0x%08x type:0x%08x offset:%u )", stream, var_mode, var_type, var_offset);
8928 this->glDrawElementsIndirectOffsetAEMU(this, var_mode, var_type, var_offset);
8929 SET_LASTCALL("glDrawElementsIndirectOffsetAEMU");
8930 android::base::endTrace();
8931 break;
8932 }
8933 case OP_glTexStorage2DMultisample: {
8934 android::base::beginTrace("glTexStorage2DMultisample decode");
8935 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
8936 GLsizei var_samples = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
8937 GLenum var_internalformat = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
8938 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
8939 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
8940 GLboolean var_fixedsamplelocations = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
8941 if (useChecksum) {
8942 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 1, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 1, checksumSize,
8943 "gles2_decoder_context_t::decode, OP_glTexStorage2DMultisample: GL checksumCalculator failure\n");
8944 }
8945 #ifdef CHECK_GL_ERRORS
8946 GLint err = this->glGetError();
8947 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexStorage2DMultisample\n", err);
8948 #endif
8949 DECODER_DEBUG_LOG("gles2(%p): glTexStorage2DMultisample(target:0x%08x samples:%d internalformat:0x%08x width:%d height:%d fixedsamplelocations:%d )", stream, var_target, var_samples, var_internalformat, var_width, var_height, var_fixedsamplelocations);
8950 this->glTexStorage2DMultisample(var_target, var_samples, var_internalformat, var_width, var_height, var_fixedsamplelocations);
8951 SET_LASTCALL("glTexStorage2DMultisample");
8952 android::base::endTrace();
8953 break;
8954 }
8955 case OP_glSampleMaski: {
8956 android::base::beginTrace("glSampleMaski decode");
8957 GLuint var_maskNumber = Unpack<GLuint,uint32_t>(ptr + 8);
8958 GLbitfield var_mask = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4);
8959 if (useChecksum) {
8960 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
8961 "gles2_decoder_context_t::decode, OP_glSampleMaski: GL checksumCalculator failure\n");
8962 }
8963 #ifdef CHECK_GL_ERRORS
8964 GLint err = this->glGetError();
8965 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glSampleMaski\n", err);
8966 #endif
8967 DECODER_DEBUG_LOG("gles2(%p): glSampleMaski(maskNumber:%u mask:0x%08x )", stream, var_maskNumber, var_mask);
8968 this->glSampleMaski(var_maskNumber, var_mask);
8969 SET_LASTCALL("glSampleMaski");
8970 android::base::endTrace();
8971 break;
8972 }
8973 case OP_glGetMultisamplefv: {
8974 android::base::beginTrace("glGetMultisamplefv decode");
8975 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8);
8976 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
8977 uint32_t size_val __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
8978 if (useChecksum) {
8979 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
8980 "gles2_decoder_context_t::decode, OP_glGetMultisamplefv: GL checksumCalculator failure\n");
8981 }
8982 size_t totalTmpSize = size_val;
8983 totalTmpSize += checksumSize;
8984 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
8985 OutputBuffer outptr_val(&tmpBuf[0], size_val);
8986 #ifdef CHECK_GL_ERRORS
8987 GLint err = this->glGetError();
8988 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetMultisamplefv\n", err);
8989 #endif
8990 DECODER_DEBUG_LOG("gles2(%p): glGetMultisamplefv(pname:0x%08x index:%u val:%p(%u) )", stream, var_pname, var_index, (GLfloat*)(outptr_val.get()), size_val);
8991 this->glGetMultisamplefv(var_pname, var_index, (GLfloat*)(outptr_val.get()));
8992 outptr_val.flush();
8993 if (useChecksum) {
8994 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
8995 }
8996 stream->flush();
8997 SET_LASTCALL("glGetMultisamplefv");
8998 android::base::endTrace();
8999 break;
9000 }
9001 case OP_glFramebufferParameteri: {
9002 android::base::beginTrace("glFramebufferParameteri decode");
9003 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9004 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
9005 GLint var_param = Unpack<GLint,uint32_t>(ptr + 8 + 4 + 4);
9006 if (useChecksum) {
9007 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
9008 "gles2_decoder_context_t::decode, OP_glFramebufferParameteri: GL checksumCalculator failure\n");
9009 }
9010 #ifdef CHECK_GL_ERRORS
9011 GLint err = this->glGetError();
9012 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFramebufferParameteri\n", err);
9013 #endif
9014 DECODER_DEBUG_LOG("gles2(%p): glFramebufferParameteri(target:0x%08x pname:0x%08x param:%d )", stream, var_target, var_pname, var_param);
9015 this->glFramebufferParameteri(var_target, var_pname, var_param);
9016 SET_LASTCALL("glFramebufferParameteri");
9017 android::base::endTrace();
9018 break;
9019 }
9020 case OP_glGetFramebufferParameteriv: {
9021 android::base::beginTrace("glGetFramebufferParameteriv decode");
9022 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9023 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
9024 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
9025 if (useChecksum) {
9026 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
9027 "gles2_decoder_context_t::decode, OP_glGetFramebufferParameteriv: GL checksumCalculator failure\n");
9028 }
9029 size_t totalTmpSize = size_params;
9030 totalTmpSize += checksumSize;
9031 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
9032 OutputBuffer outptr_params(&tmpBuf[0], size_params);
9033 #ifdef CHECK_GL_ERRORS
9034 GLint err = this->glGetError();
9035 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetFramebufferParameteriv\n", err);
9036 #endif
9037 DECODER_DEBUG_LOG("gles2(%p): glGetFramebufferParameteriv(target:0x%08x pname:0x%08x params:%p(%u) )", stream, var_target, var_pname, (GLint*)(outptr_params.get()), size_params);
9038 this->glGetFramebufferParameteriv(var_target, var_pname, (GLint*)(outptr_params.get()));
9039 outptr_params.flush();
9040 if (useChecksum) {
9041 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
9042 }
9043 stream->flush();
9044 SET_LASTCALL("glGetFramebufferParameteriv");
9045 android::base::endTrace();
9046 break;
9047 }
9048 case OP_glGetTexLevelParameterfv: {
9049 android::base::beginTrace("glGetTexLevelParameterfv decode");
9050 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9051 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
9052 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
9053 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
9054 if (useChecksum) {
9055 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
9056 "gles2_decoder_context_t::decode, OP_glGetTexLevelParameterfv: GL checksumCalculator failure\n");
9057 }
9058 size_t totalTmpSize = size_params;
9059 totalTmpSize += checksumSize;
9060 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
9061 OutputBuffer outptr_params(&tmpBuf[0], size_params);
9062 #ifdef CHECK_GL_ERRORS
9063 GLint err = this->glGetError();
9064 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetTexLevelParameterfv\n", err);
9065 #endif
9066 DECODER_DEBUG_LOG("gles2(%p): glGetTexLevelParameterfv(target:0x%08x level:%d pname:0x%08x params:%p(%u) )", stream, var_target, var_level, var_pname, (GLfloat*)(outptr_params.get()), size_params);
9067 this->glGetTexLevelParameterfv(var_target, var_level, var_pname, (GLfloat*)(outptr_params.get()));
9068 outptr_params.flush();
9069 if (useChecksum) {
9070 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
9071 }
9072 stream->flush();
9073 SET_LASTCALL("glGetTexLevelParameterfv");
9074 android::base::endTrace();
9075 break;
9076 }
9077 case OP_glGetTexLevelParameteriv: {
9078 android::base::beginTrace("glGetTexLevelParameteriv decode");
9079 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9080 GLint var_level = Unpack<GLint,uint32_t>(ptr + 8 + 4);
9081 GLenum var_pname = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
9082 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
9083 if (useChecksum) {
9084 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
9085 "gles2_decoder_context_t::decode, OP_glGetTexLevelParameteriv: GL checksumCalculator failure\n");
9086 }
9087 size_t totalTmpSize = size_params;
9088 totalTmpSize += checksumSize;
9089 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
9090 OutputBuffer outptr_params(&tmpBuf[0], size_params);
9091 #ifdef CHECK_GL_ERRORS
9092 GLint err = this->glGetError();
9093 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetTexLevelParameteriv\n", err);
9094 #endif
9095 DECODER_DEBUG_LOG("gles2(%p): glGetTexLevelParameteriv(target:0x%08x level:%d pname:0x%08x params:%p(%u) )", stream, var_target, var_level, var_pname, (GLint*)(outptr_params.get()), size_params);
9096 this->glGetTexLevelParameteriv(var_target, var_level, var_pname, (GLint*)(outptr_params.get()));
9097 outptr_params.flush();
9098 if (useChecksum) {
9099 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
9100 }
9101 stream->flush();
9102 SET_LASTCALL("glGetTexLevelParameteriv");
9103 android::base::endTrace();
9104 break;
9105 }
9106 case OP_glMapBufferRangeDMA: {
9107 android::base::beginTrace("glMapBufferRangeDMA decode");
9108 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9109 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4);
9110 GLsizeiptr var_length = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4);
9111 GLbitfield var_access = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4 + 4 + 4);
9112 uint64_t var_paddr = Unpack<uint64_t,uint64_t>(ptr + 8 + 4 + 4 + 4 + 4);
9113 if (useChecksum) {
9114 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 8, ptr + 8 + 4 + 4 + 4 + 4 + 8, checksumSize,
9115 "gles2_decoder_context_t::decode, OP_glMapBufferRangeDMA: GL checksumCalculator failure\n");
9116 }
9117 #ifdef CHECK_GL_ERRORS
9118 GLint err = this->glGetError();
9119 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glMapBufferRangeDMA\n", err);
9120 #endif
9121 DECODER_DEBUG_LOG("gles2(%p): glMapBufferRangeDMA(target:0x%08x offset:0x%08lx length:0x%08lx access:0x%08x paddr:0x%016lx )", stream, var_target, var_offset, var_length, var_access, var_paddr);
9122 this->glMapBufferRangeDMA(this, var_target, var_offset, var_length, var_access, var_paddr);
9123 SET_LASTCALL("glMapBufferRangeDMA");
9124 android::base::endTrace();
9125 break;
9126 }
9127 case OP_glUnmapBufferDMA: {
9128 android::base::beginTrace("glUnmapBufferDMA decode");
9129 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9130 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4);
9131 GLsizeiptr var_length = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4);
9132 GLbitfield var_access = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4 + 4 + 4);
9133 uint64_t var_paddr = Unpack<uint64_t,uint64_t>(ptr + 8 + 4 + 4 + 4 + 4);
9134 uint32_t size_out_res __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 8);
9135 if (useChecksum) {
9136 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 8 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 8 + 4, checksumSize,
9137 "gles2_decoder_context_t::decode, OP_glUnmapBufferDMA: GL checksumCalculator failure\n");
9138 }
9139 size_t totalTmpSize = size_out_res;
9140 totalTmpSize += checksumSize;
9141 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
9142 OutputBuffer outptr_out_res(&tmpBuf[0], size_out_res);
9143 #ifdef CHECK_GL_ERRORS
9144 GLint err = this->glGetError();
9145 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUnmapBufferDMA\n", err);
9146 #endif
9147 DECODER_DEBUG_LOG("gles2(%p): glUnmapBufferDMA(target:0x%08x offset:0x%08lx length:0x%08lx access:0x%08x paddr:0x%016lx out_res:%p(%u) )", stream, var_target, var_offset, var_length, var_access, var_paddr, (GLboolean*)(outptr_out_res.get()), size_out_res);
9148 this->glUnmapBufferDMA(this, var_target, var_offset, var_length, var_access, var_paddr, (GLboolean*)(outptr_out_res.get()));
9149 outptr_out_res.flush();
9150 if (useChecksum) {
9151 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
9152 }
9153 stream->flush();
9154 SET_LASTCALL("glUnmapBufferDMA");
9155 android::base::endTrace();
9156 break;
9157 }
9158 case OP_glMapBufferRangeDirect: {
9159 android::base::beginTrace("glMapBufferRangeDirect decode");
9160 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9161 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4);
9162 GLsizeiptr var_length = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4);
9163 GLbitfield var_access = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4 + 4 + 4);
9164 uint64_t var_paddr = Unpack<uint64_t,uint64_t>(ptr + 8 + 4 + 4 + 4 + 4);
9165 if (useChecksum) {
9166 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 8, ptr + 8 + 4 + 4 + 4 + 4 + 8, checksumSize,
9167 "gles2_decoder_context_t::decode, OP_glMapBufferRangeDirect: GL checksumCalculator failure\n");
9168 }
9169 size_t totalTmpSize = sizeof(uint64_t);
9170 totalTmpSize += checksumSize;
9171 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
9172 #ifdef CHECK_GL_ERRORS
9173 GLint err = this->glGetError();
9174 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glMapBufferRangeDirect\n", err);
9175 #endif
9176 DECODER_DEBUG_LOG("gles2(%p): glMapBufferRangeDirect(target:0x%08x offset:0x%08lx length:0x%08lx access:0x%08x paddr:0x%016lx )", stream, var_target, var_offset, var_length, var_access, var_paddr);
9177 *(uint64_t *)(&tmpBuf[0]) = this->glMapBufferRangeDirect(this, var_target, var_offset, var_length, var_access, var_paddr);
9178 if (useChecksum) {
9179 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
9180 }
9181 stream->flush();
9182 SET_LASTCALL("glMapBufferRangeDirect");
9183 android::base::endTrace();
9184 break;
9185 }
9186 case OP_glUnmapBufferDirect: {
9187 android::base::beginTrace("glUnmapBufferDirect decode");
9188 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9189 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4);
9190 GLsizeiptr var_length = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4);
9191 GLbitfield var_access = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4 + 4 + 4);
9192 uint64_t var_paddr = Unpack<uint64_t,uint64_t>(ptr + 8 + 4 + 4 + 4 + 4);
9193 uint64_t var_guest_ptr = Unpack<uint64_t,uint64_t>(ptr + 8 + 4 + 4 + 4 + 4 + 8);
9194 uint32_t size_out_res __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 8 + 8);
9195 if (useChecksum) {
9196 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 8 + 8 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 8 + 8 + 4, checksumSize,
9197 "gles2_decoder_context_t::decode, OP_glUnmapBufferDirect: GL checksumCalculator failure\n");
9198 }
9199 size_t totalTmpSize = size_out_res;
9200 totalTmpSize += checksumSize;
9201 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
9202 OutputBuffer outptr_out_res(&tmpBuf[0], size_out_res);
9203 #ifdef CHECK_GL_ERRORS
9204 GLint err = this->glGetError();
9205 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUnmapBufferDirect\n", err);
9206 #endif
9207 DECODER_DEBUG_LOG("gles2(%p): glUnmapBufferDirect(target:0x%08x offset:0x%08lx length:0x%08lx access:0x%08x paddr:0x%016lx guest_ptr:0x%016lx out_res:%p(%u) )", stream, var_target, var_offset, var_length, var_access, var_paddr, var_guest_ptr, (GLboolean*)(outptr_out_res.get()), size_out_res);
9208 this->glUnmapBufferDirect(this, var_target, var_offset, var_length, var_access, var_paddr, var_guest_ptr, (GLboolean*)(outptr_out_res.get()));
9209 outptr_out_res.flush();
9210 if (useChecksum) {
9211 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
9212 }
9213 stream->flush();
9214 SET_LASTCALL("glUnmapBufferDirect");
9215 android::base::endTrace();
9216 break;
9217 }
9218 case OP_glFlushMappedBufferRangeDirect: {
9219 android::base::beginTrace("glFlushMappedBufferRangeDirect decode");
9220 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9221 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4);
9222 GLsizeiptr var_length = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4);
9223 GLbitfield var_access = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4 + 4 + 4);
9224 if (useChecksum) {
9225 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
9226 "gles2_decoder_context_t::decode, OP_glFlushMappedBufferRangeDirect: GL checksumCalculator failure\n");
9227 }
9228 #ifdef CHECK_GL_ERRORS
9229 GLint err = this->glGetError();
9230 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFlushMappedBufferRangeDirect\n", err);
9231 #endif
9232 DECODER_DEBUG_LOG("gles2(%p): glFlushMappedBufferRangeDirect(target:0x%08x offset:0x%08lx length:0x%08lx access:0x%08x )", stream, var_target, var_offset, var_length, var_access);
9233 this->glFlushMappedBufferRangeDirect(this, var_target, var_offset, var_length, var_access);
9234 SET_LASTCALL("glFlushMappedBufferRangeDirect");
9235 android::base::endTrace();
9236 break;
9237 }
9238 case OP_glGetGraphicsResetStatusEXT: {
9239 android::base::beginTrace("glGetGraphicsResetStatusEXT decode");
9240 if (useChecksum) {
9241 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize,
9242 "gles2_decoder_context_t::decode, OP_glGetGraphicsResetStatusEXT: GL checksumCalculator failure\n");
9243 }
9244 size_t totalTmpSize = sizeof(GLenum);
9245 totalTmpSize += checksumSize;
9246 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
9247 #ifdef CHECK_GL_ERRORS
9248 GLint err = this->glGetError();
9249 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetGraphicsResetStatusEXT\n", err);
9250 #endif
9251 DECODER_DEBUG_LOG("gles2(%p): glGetGraphicsResetStatusEXT()", stream);
9252 *(GLenum *)(&tmpBuf[0]) = this->glGetGraphicsResetStatusEXT();
9253 if (useChecksum) {
9254 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
9255 }
9256 stream->flush();
9257 SET_LASTCALL("glGetGraphicsResetStatusEXT");
9258 android::base::endTrace();
9259 break;
9260 }
9261 case OP_glReadnPixelsEXT: {
9262 android::base::beginTrace("glReadnPixelsEXT decode");
9263 GLint var_x = Unpack<GLint,uint32_t>(ptr + 8);
9264 GLint var_y = Unpack<GLint,uint32_t>(ptr + 8 + 4);
9265 GLsizei var_width = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
9266 GLsizei var_height = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4);
9267 GLenum var_format = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
9268 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4);
9269 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4);
9270 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9271 if (useChecksum) {
9272 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize,
9273 "gles2_decoder_context_t::decode, OP_glReadnPixelsEXT: GL checksumCalculator failure\n");
9274 }
9275 size_t totalTmpSize = size_data;
9276 totalTmpSize += checksumSize;
9277 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
9278 OutputBuffer outptr_data(&tmpBuf[0], size_data);
9279 #ifdef CHECK_GL_ERRORS
9280 GLint err = this->glGetError();
9281 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glReadnPixelsEXT\n", err);
9282 #endif
9283 DECODER_DEBUG_LOG("gles2(%p): glReadnPixelsEXT(x:%d y:%d width:%d height:%d format:0x%08x type:0x%08x bufSize:%d data:%p(%u) )", stream, var_x, var_y, var_width, var_height, var_format, var_type, var_bufSize, (GLvoid*)(outptr_data.get()), size_data);
9284 this->glReadnPixelsEXT(var_x, var_y, var_width, var_height, var_format, var_type, var_bufSize, (GLvoid*)(outptr_data.get()));
9285 outptr_data.flush();
9286 if (useChecksum) {
9287 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
9288 }
9289 stream->flush();
9290 SET_LASTCALL("glReadnPixelsEXT");
9291 android::base::endTrace();
9292 break;
9293 }
9294 case OP_glGetnUniformfvEXT: {
9295 android::base::beginTrace("glGetnUniformfvEXT decode");
9296 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
9297 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
9298 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
9299 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
9300 if (useChecksum) {
9301 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
9302 "gles2_decoder_context_t::decode, OP_glGetnUniformfvEXT: GL checksumCalculator failure\n");
9303 }
9304 size_t totalTmpSize = size_params;
9305 totalTmpSize += checksumSize;
9306 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
9307 OutputBuffer outptr_params(&tmpBuf[0], size_params);
9308 #ifdef CHECK_GL_ERRORS
9309 GLint err = this->glGetError();
9310 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetnUniformfvEXT\n", err);
9311 #endif
9312 DECODER_DEBUG_LOG("gles2(%p): glGetnUniformfvEXT(program:%u location:%d bufSize:%d params:%p(%u) )", stream, var_program, var_location, var_bufSize, (GLfloat*)(outptr_params.get()), size_params);
9313 this->glGetnUniformfvEXT(var_program, var_location, var_bufSize, (GLfloat*)(outptr_params.get()));
9314 outptr_params.flush();
9315 if (useChecksum) {
9316 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
9317 }
9318 stream->flush();
9319 SET_LASTCALL("glGetnUniformfvEXT");
9320 android::base::endTrace();
9321 break;
9322 }
9323 case OP_glGetnUniformivEXT: {
9324 android::base::beginTrace("glGetnUniformivEXT decode");
9325 GLuint var_program = Unpack<GLuint,uint32_t>(ptr + 8);
9326 GLint var_location = Unpack<GLint,uint32_t>(ptr + 8 + 4);
9327 GLsizei var_bufSize = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
9328 uint32_t size_params __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
9329 if (useChecksum) {
9330 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
9331 "gles2_decoder_context_t::decode, OP_glGetnUniformivEXT: GL checksumCalculator failure\n");
9332 }
9333 size_t totalTmpSize = size_params;
9334 totalTmpSize += checksumSize;
9335 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
9336 OutputBuffer outptr_params(&tmpBuf[0], size_params);
9337 #ifdef CHECK_GL_ERRORS
9338 GLint err = this->glGetError();
9339 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glGetnUniformivEXT\n", err);
9340 #endif
9341 DECODER_DEBUG_LOG("gles2(%p): glGetnUniformivEXT(program:%u location:%d bufSize:%d params:%p(%u) )", stream, var_program, var_location, var_bufSize, (GLint*)(outptr_params.get()), size_params);
9342 this->glGetnUniformivEXT(var_program, var_location, var_bufSize, (GLint*)(outptr_params.get()));
9343 outptr_params.flush();
9344 if (useChecksum) {
9345 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
9346 }
9347 stream->flush();
9348 SET_LASTCALL("glGetnUniformivEXT");
9349 android::base::endTrace();
9350 break;
9351 }
9352 case OP_glDrawArraysNullAEMU: {
9353 android::base::beginTrace("glDrawArraysNullAEMU decode");
9354 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
9355 GLint var_first = Unpack<GLint,uint32_t>(ptr + 8 + 4);
9356 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4 + 4);
9357 if (useChecksum) {
9358 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
9359 "gles2_decoder_context_t::decode, OP_glDrawArraysNullAEMU: GL checksumCalculator failure\n");
9360 }
9361 #ifdef CHECK_GL_ERRORS
9362 GLint err = this->glGetError();
9363 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawArraysNullAEMU\n", err);
9364 #endif
9365 DECODER_DEBUG_LOG("gles2(%p): glDrawArraysNullAEMU(mode:0x%08x first:%d count:%d )", stream, var_mode, var_first, var_count);
9366 this->glDrawArraysNullAEMU(var_mode, var_first, var_count);
9367 SET_LASTCALL("glDrawArraysNullAEMU");
9368 android::base::endTrace();
9369 break;
9370 }
9371 case OP_glDrawElementsNullAEMU: {
9372 android::base::beginTrace("glDrawElementsNullAEMU decode");
9373 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
9374 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
9375 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
9376 uint32_t size_indices __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
9377 InputBuffer inptr_indices(ptr + 8 + 4 + 4 + 4 + 4, size_indices);
9378 if (useChecksum) {
9379 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_indices, ptr + 8 + 4 + 4 + 4 + 4 + size_indices, checksumSize,
9380 "gles2_decoder_context_t::decode, OP_glDrawElementsNullAEMU: GL checksumCalculator failure\n");
9381 }
9382 #ifdef CHECK_GL_ERRORS
9383 GLint err = this->glGetError();
9384 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawElementsNullAEMU\n", err);
9385 #endif
9386 DECODER_DEBUG_LOG("gles2(%p): glDrawElementsNullAEMU(mode:0x%08x count:%d type:0x%08x indices:%p(%u) )", stream, var_mode, var_count, var_type, (const GLvoid*)(inptr_indices.get()), size_indices);
9387 this->glDrawElementsNullAEMU(var_mode, var_count, var_type, (const GLvoid*)(inptr_indices.get()));
9388 SET_LASTCALL("glDrawElementsNullAEMU");
9389 android::base::endTrace();
9390 break;
9391 }
9392 case OP_glDrawElementsOffsetNullAEMU: {
9393 android::base::beginTrace("glDrawElementsOffsetNullAEMU decode");
9394 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
9395 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
9396 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
9397 GLuint var_offset = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4);
9398 if (useChecksum) {
9399 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize,
9400 "gles2_decoder_context_t::decode, OP_glDrawElementsOffsetNullAEMU: GL checksumCalculator failure\n");
9401 }
9402 #ifdef CHECK_GL_ERRORS
9403 GLint err = this->glGetError();
9404 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawElementsOffsetNullAEMU\n", err);
9405 #endif
9406 DECODER_DEBUG_LOG("gles2(%p): glDrawElementsOffsetNullAEMU(mode:0x%08x count:%d type:0x%08x offset:%u )", stream, var_mode, var_count, var_type, var_offset);
9407 this->glDrawElementsOffsetNullAEMU(this, var_mode, var_count, var_type, var_offset);
9408 SET_LASTCALL("glDrawElementsOffsetNullAEMU");
9409 android::base::endTrace();
9410 break;
9411 }
9412 case OP_glDrawElementsDataNullAEMU: {
9413 android::base::beginTrace("glDrawElementsDataNullAEMU decode");
9414 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8);
9415 GLsizei var_count = Unpack<GLsizei,uint32_t>(ptr + 8 + 4);
9416 GLenum var_type = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
9417 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4);
9418 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4, size_data);
9419 GLuint var_datalen = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + size_data);
9420 if (useChecksum) {
9421 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_data + 4, ptr + 8 + 4 + 4 + 4 + 4 + size_data + 4, checksumSize,
9422 "gles2_decoder_context_t::decode, OP_glDrawElementsDataNullAEMU: GL checksumCalculator failure\n");
9423 }
9424 #ifdef CHECK_GL_ERRORS
9425 GLint err = this->glGetError();
9426 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDrawElementsDataNullAEMU\n", err);
9427 #endif
9428 DECODER_DEBUG_LOG("gles2(%p): glDrawElementsDataNullAEMU(mode:0x%08x count:%d type:0x%08x data:%p(%u) datalen:%u )", stream, var_mode, var_count, var_type, (void*)(inptr_data.get()), size_data, var_datalen);
9429 this->glDrawElementsDataNullAEMU(this, var_mode, var_count, var_type, (void*)(inptr_data.get()), var_datalen);
9430 SET_LASTCALL("glDrawElementsDataNullAEMU");
9431 android::base::endTrace();
9432 break;
9433 }
9434 case OP_glUnmapBufferAsyncAEMU: {
9435 android::base::beginTrace("glUnmapBufferAsyncAEMU decode");
9436 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9437 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4);
9438 GLsizeiptr var_length = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4);
9439 GLbitfield var_access = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4 + 4 + 4);
9440 uint32_t size_guest_buffer __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
9441 InputBuffer inptr_guest_buffer(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_guest_buffer);
9442 uint32_t size_out_res __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer);
9443 InputBuffer inptr_out_res(ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer + 4, size_out_res);
9444 if (useChecksum) {
9445 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer + 4 + size_out_res, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer + 4 + size_out_res, checksumSize,
9446 "gles2_decoder_context_t::decode, OP_glUnmapBufferAsyncAEMU: GL checksumCalculator failure\n");
9447 }
9448 #ifdef CHECK_GL_ERRORS
9449 GLint err = this->glGetError();
9450 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glUnmapBufferAsyncAEMU\n", err);
9451 #endif
9452 DECODER_DEBUG_LOG("gles2(%p): glUnmapBufferAsyncAEMU(target:0x%08x offset:0x%08lx length:0x%08lx access:0x%08x guest_buffer:%p(%u) out_res:%p(%u) )", stream, var_target, var_offset, var_length, var_access, (void*)(inptr_guest_buffer.get()), size_guest_buffer, (GLboolean*)(inptr_out_res.get()), size_out_res);
9453 this->glUnmapBufferAEMU(this, var_target, var_offset, var_length, var_access, size_guest_buffer == 0 ? nullptr : (void*)(inptr_guest_buffer.get()), (GLboolean*)(inptr_out_res.get()));
9454 SET_LASTCALL("glUnmapBufferAsyncAEMU");
9455 android::base::endTrace();
9456 break;
9457 }
9458 case OP_glFlushMappedBufferRangeAEMU2: {
9459 android::base::beginTrace("glFlushMappedBufferRangeAEMU2 decode");
9460 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9461 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4);
9462 GLsizeiptr var_length = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4);
9463 GLbitfield var_access = Unpack<GLbitfield,uint32_t>(ptr + 8 + 4 + 4 + 4);
9464 uint32_t size_guest_buffer __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
9465 InputBuffer inptr_guest_buffer(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_guest_buffer);
9466 if (useChecksum) {
9467 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer, checksumSize,
9468 "gles2_decoder_context_t::decode, OP_glFlushMappedBufferRangeAEMU2: GL checksumCalculator failure\n");
9469 }
9470 #ifdef CHECK_GL_ERRORS
9471 GLint err = this->glGetError();
9472 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glFlushMappedBufferRangeAEMU2\n", err);
9473 #endif
9474 DECODER_DEBUG_LOG("gles2(%p): glFlushMappedBufferRangeAEMU2(target:0x%08x offset:0x%08lx length:0x%08lx access:0x%08x guest_buffer:%p(%u) )", stream, var_target, var_offset, var_length, var_access, (void*)(inptr_guest_buffer.get()), size_guest_buffer);
9475 this->glFlushMappedBufferRangeAEMU(this, var_target, var_offset, var_length, var_access, size_guest_buffer == 0 ? nullptr : (void*)(inptr_guest_buffer.get()));
9476 SET_LASTCALL("glFlushMappedBufferRangeAEMU2");
9477 android::base::endTrace();
9478 break;
9479 }
9480 case OP_glBufferDataSyncAEMU: {
9481 android::base::beginTrace("glBufferDataSyncAEMU decode");
9482 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9483 GLsizeiptr var_size = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4);
9484 uint32_t size_data __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + 4);
9485 InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4, size_data);
9486 GLenum var_usage = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + size_data);
9487 if (useChecksum) {
9488 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_data + 4, ptr + 8 + 4 + 4 + 4 + size_data + 4, checksumSize,
9489 "gles2_decoder_context_t::decode, OP_glBufferDataSyncAEMU: GL checksumCalculator failure\n");
9490 }
9491 size_t totalTmpSize = sizeof(GLboolean);
9492 totalTmpSize += checksumSize;
9493 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
9494 #ifdef CHECK_GL_ERRORS
9495 GLint err = this->glGetError();
9496 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBufferDataSyncAEMU\n", err);
9497 #endif
9498 DECODER_DEBUG_LOG("gles2(%p): glBufferDataSyncAEMU(target:0x%08x size:0x%08lx data:%p(%u) usage:0x%08x )", stream, var_target, var_size, (const GLvoid*)(inptr_data.get()), size_data, var_usage);
9499 *(GLboolean *)(&tmpBuf[0]) = this->glBufferDataSyncAEMU(this, var_target, var_size, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get()), var_usage);
9500 if (useChecksum) {
9501 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
9502 }
9503 stream->flush();
9504 SET_LASTCALL("glBufferDataSyncAEMU");
9505 android::base::endTrace();
9506 break;
9507 }
9508 case OP_glTexBufferOES: {
9509 android::base::beginTrace("glTexBufferOES decode");
9510 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9511 GLenum var_internalFormat = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
9512 GLuint var_buffer = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
9513 if (useChecksum) {
9514 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
9515 "gles2_decoder_context_t::decode, OP_glTexBufferOES: GL checksumCalculator failure\n");
9516 }
9517 #ifdef CHECK_GL_ERRORS
9518 GLint err = this->glGetError();
9519 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexBufferOES\n", err);
9520 #endif
9521 DECODER_DEBUG_LOG("gles2(%p): glTexBufferOES(target:0x%08x internalFormat:0x%08x buffer:%u )", stream, var_target, var_internalFormat, var_buffer);
9522 this->glTexBufferOES_dec(this, var_target, var_internalFormat, var_buffer);
9523 SET_LASTCALL("glTexBufferOES");
9524 android::base::endTrace();
9525 break;
9526 }
9527 case OP_glTexBufferRangeOES: {
9528 android::base::beginTrace("glTexBufferRangeOES decode");
9529 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9530 GLenum var_internalFormat = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
9531 GLuint var_buffer = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
9532 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4 + 4 + 4);
9533 GLsizeiptr var_size = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
9534 if (useChecksum) {
9535 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
9536 "gles2_decoder_context_t::decode, OP_glTexBufferRangeOES: GL checksumCalculator failure\n");
9537 }
9538 #ifdef CHECK_GL_ERRORS
9539 GLint err = this->glGetError();
9540 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexBufferRangeOES\n", err);
9541 #endif
9542 DECODER_DEBUG_LOG("gles2(%p): glTexBufferRangeOES(target:0x%08x internalFormat:0x%08x buffer:%u offset:0x%08lx size:0x%08lx )", stream, var_target, var_internalFormat, var_buffer, var_offset, var_size);
9543 this->glTexBufferRangeOES_dec(this, var_target, var_internalFormat, var_buffer, var_offset, var_size);
9544 SET_LASTCALL("glTexBufferRangeOES");
9545 android::base::endTrace();
9546 break;
9547 }
9548 case OP_glTexBufferEXT: {
9549 android::base::beginTrace("glTexBufferEXT decode");
9550 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9551 GLenum var_internalFormat = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
9552 GLuint var_buffer = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
9553 if (useChecksum) {
9554 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
9555 "gles2_decoder_context_t::decode, OP_glTexBufferEXT: GL checksumCalculator failure\n");
9556 }
9557 #ifdef CHECK_GL_ERRORS
9558 GLint err = this->glGetError();
9559 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexBufferEXT\n", err);
9560 #endif
9561 DECODER_DEBUG_LOG("gles2(%p): glTexBufferEXT(target:0x%08x internalFormat:0x%08x buffer:%u )", stream, var_target, var_internalFormat, var_buffer);
9562 this->glTexBufferEXT_dec(this, var_target, var_internalFormat, var_buffer);
9563 SET_LASTCALL("glTexBufferEXT");
9564 android::base::endTrace();
9565 break;
9566 }
9567 case OP_glTexBufferRangeEXT: {
9568 android::base::beginTrace("glTexBufferRangeEXT decode");
9569 GLenum var_target = Unpack<GLenum,uint32_t>(ptr + 8);
9570 GLenum var_internalFormat = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
9571 GLuint var_buffer = Unpack<GLuint,uint32_t>(ptr + 8 + 4 + 4);
9572 GLintptr var_offset = Unpack<GLintptr,uint32_t>(ptr + 8 + 4 + 4 + 4);
9573 GLsizeiptr var_size = Unpack<GLsizeiptr,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
9574 if (useChecksum) {
9575 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
9576 "gles2_decoder_context_t::decode, OP_glTexBufferRangeEXT: GL checksumCalculator failure\n");
9577 }
9578 #ifdef CHECK_GL_ERRORS
9579 GLint err = this->glGetError();
9580 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glTexBufferRangeEXT\n", err);
9581 #endif
9582 DECODER_DEBUG_LOG("gles2(%p): glTexBufferRangeEXT(target:0x%08x internalFormat:0x%08x buffer:%u offset:0x%08lx size:0x%08lx )", stream, var_target, var_internalFormat, var_buffer, var_offset, var_size);
9583 this->glTexBufferRangeEXT_dec(this, var_target, var_internalFormat, var_buffer, var_offset, var_size);
9584 SET_LASTCALL("glTexBufferRangeEXT");
9585 android::base::endTrace();
9586 break;
9587 }
9588 case OP_glEnableiEXT: {
9589 android::base::beginTrace("glEnableiEXT decode");
9590 GLenum var_cap = Unpack<GLenum,uint32_t>(ptr + 8);
9591 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
9592 if (useChecksum) {
9593 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
9594 "gles2_decoder_context_t::decode, OP_glEnableiEXT: GL checksumCalculator failure\n");
9595 }
9596 #ifdef CHECK_GL_ERRORS
9597 GLint err = this->glGetError();
9598 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glEnableiEXT\n", err);
9599 #endif
9600 DECODER_DEBUG_LOG("gles2(%p): glEnableiEXT(cap:0x%08x index:%u )", stream, var_cap, var_index);
9601 this->glEnableiEXT_dec(this, var_cap, var_index);
9602 SET_LASTCALL("glEnableiEXT");
9603 android::base::endTrace();
9604 break;
9605 }
9606 case OP_glDisableiEXT: {
9607 android::base::beginTrace("glDisableiEXT decode");
9608 GLenum var_cap = Unpack<GLenum,uint32_t>(ptr + 8);
9609 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
9610 if (useChecksum) {
9611 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
9612 "gles2_decoder_context_t::decode, OP_glDisableiEXT: GL checksumCalculator failure\n");
9613 }
9614 #ifdef CHECK_GL_ERRORS
9615 GLint err = this->glGetError();
9616 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glDisableiEXT\n", err);
9617 #endif
9618 DECODER_DEBUG_LOG("gles2(%p): glDisableiEXT(cap:0x%08x index:%u )", stream, var_cap, var_index);
9619 this->glDisableiEXT_dec(this, var_cap, var_index);
9620 SET_LASTCALL("glDisableiEXT");
9621 android::base::endTrace();
9622 break;
9623 }
9624 case OP_glBlendEquationiEXT: {
9625 android::base::beginTrace("glBlendEquationiEXT decode");
9626 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
9627 GLenum var_mode = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
9628 if (useChecksum) {
9629 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
9630 "gles2_decoder_context_t::decode, OP_glBlendEquationiEXT: GL checksumCalculator failure\n");
9631 }
9632 #ifdef CHECK_GL_ERRORS
9633 GLint err = this->glGetError();
9634 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBlendEquationiEXT\n", err);
9635 #endif
9636 DECODER_DEBUG_LOG("gles2(%p): glBlendEquationiEXT(index:%u mode:0x%08x )", stream, var_index, var_mode);
9637 this->glBlendEquationiEXT_dec(this, var_index, var_mode);
9638 SET_LASTCALL("glBlendEquationiEXT");
9639 android::base::endTrace();
9640 break;
9641 }
9642 case OP_glBlendEquationSeparateiEXT: {
9643 android::base::beginTrace("glBlendEquationSeparateiEXT decode");
9644 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
9645 GLenum var_modeRGB = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
9646 GLenum var_modeAlpha = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
9647 if (useChecksum) {
9648 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
9649 "gles2_decoder_context_t::decode, OP_glBlendEquationSeparateiEXT: GL checksumCalculator failure\n");
9650 }
9651 #ifdef CHECK_GL_ERRORS
9652 GLint err = this->glGetError();
9653 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBlendEquationSeparateiEXT\n", err);
9654 #endif
9655 DECODER_DEBUG_LOG("gles2(%p): glBlendEquationSeparateiEXT(index:%u modeRGB:0x%08x modeAlpha:0x%08x )", stream, var_index, var_modeRGB, var_modeAlpha);
9656 this->glBlendEquationSeparateiEXT_dec(this, var_index, var_modeRGB, var_modeAlpha);
9657 SET_LASTCALL("glBlendEquationSeparateiEXT");
9658 android::base::endTrace();
9659 break;
9660 }
9661 case OP_glBlendFunciEXT: {
9662 android::base::beginTrace("glBlendFunciEXT decode");
9663 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
9664 GLenum var_sfactor = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
9665 GLenum var_dfactor = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
9666 if (useChecksum) {
9667 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize,
9668 "gles2_decoder_context_t::decode, OP_glBlendFunciEXT: GL checksumCalculator failure\n");
9669 }
9670 #ifdef CHECK_GL_ERRORS
9671 GLint err = this->glGetError();
9672 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBlendFunciEXT\n", err);
9673 #endif
9674 DECODER_DEBUG_LOG("gles2(%p): glBlendFunciEXT(index:%u sfactor:0x%08x dfactor:0x%08x )", stream, var_index, var_sfactor, var_dfactor);
9675 this->glBlendFunciEXT_dec(this, var_index, var_sfactor, var_dfactor);
9676 SET_LASTCALL("glBlendFunciEXT");
9677 android::base::endTrace();
9678 break;
9679 }
9680 case OP_glBlendFuncSeparateiEXT: {
9681 android::base::beginTrace("glBlendFuncSeparateiEXT decode");
9682 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
9683 GLenum var_srcRGB = Unpack<GLenum,uint32_t>(ptr + 8 + 4);
9684 GLenum var_dstRGB = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4);
9685 GLenum var_srcAlpha = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4);
9686 GLenum var_dstAlpha = Unpack<GLenum,uint32_t>(ptr + 8 + 4 + 4 + 4 + 4);
9687 if (useChecksum) {
9688 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
9689 "gles2_decoder_context_t::decode, OP_glBlendFuncSeparateiEXT: GL checksumCalculator failure\n");
9690 }
9691 #ifdef CHECK_GL_ERRORS
9692 GLint err = this->glGetError();
9693 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glBlendFuncSeparateiEXT\n", err);
9694 #endif
9695 DECODER_DEBUG_LOG("gles2(%p): glBlendFuncSeparateiEXT(index:%u srcRGB:0x%08x dstRGB:0x%08x srcAlpha:0x%08x dstAlpha:0x%08x )", stream, var_index, var_srcRGB, var_dstRGB, var_srcAlpha, var_dstAlpha);
9696 this->glBlendFuncSeparateiEXT_dec(this, var_index, var_srcRGB, var_dstRGB, var_srcAlpha, var_dstAlpha);
9697 SET_LASTCALL("glBlendFuncSeparateiEXT");
9698 android::base::endTrace();
9699 break;
9700 }
9701 case OP_glColorMaskiEXT: {
9702 android::base::beginTrace("glColorMaskiEXT decode");
9703 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8);
9704 GLboolean var_red = Unpack<GLboolean,uint8_t>(ptr + 8 + 4);
9705 GLboolean var_green = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 1);
9706 GLboolean var_blue = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 1 + 1);
9707 GLboolean var_alpha = Unpack<GLboolean,uint8_t>(ptr + 8 + 4 + 1 + 1 + 1);
9708 if (useChecksum) {
9709 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 1 + 1 + 1 + 1, ptr + 8 + 4 + 1 + 1 + 1 + 1, checksumSize,
9710 "gles2_decoder_context_t::decode, OP_glColorMaskiEXT: GL checksumCalculator failure\n");
9711 }
9712 #ifdef CHECK_GL_ERRORS
9713 GLint err = this->glGetError();
9714 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glColorMaskiEXT\n", err);
9715 #endif
9716 DECODER_DEBUG_LOG("gles2(%p): glColorMaskiEXT(index:%u red:%d green:%d blue:%d alpha:%d )", stream, var_index, var_red, var_green, var_blue, var_alpha);
9717 this->glColorMaskiEXT_dec(this, var_index, var_red, var_green, var_blue, var_alpha);
9718 SET_LASTCALL("glColorMaskiEXT");
9719 android::base::endTrace();
9720 break;
9721 }
9722 case OP_glIsEnablediEXT: {
9723 android::base::beginTrace("glIsEnablediEXT decode");
9724 GLenum var_cap = Unpack<GLenum,uint32_t>(ptr + 8);
9725 GLuint var_index = Unpack<GLuint,uint32_t>(ptr + 8 + 4);
9726 if (useChecksum) {
9727 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
9728 "gles2_decoder_context_t::decode, OP_glIsEnablediEXT: GL checksumCalculator failure\n");
9729 }
9730 size_t totalTmpSize = sizeof(GLboolean);
9731 totalTmpSize += checksumSize;
9732 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
9733 #ifdef CHECK_GL_ERRORS
9734 GLint err = this->glGetError();
9735 if (err) fprintf(stderr, "gles2 Error (pre-call): 0x%X before glIsEnablediEXT\n", err);
9736 #endif
9737 DECODER_DEBUG_LOG("gles2(%p): glIsEnablediEXT(cap:0x%08x index:%u )", stream, var_cap, var_index);
9738 *(GLboolean *)(&tmpBuf[0]) = this->glIsEnablediEXT_dec(this, var_cap, var_index);
9739 if (useChecksum) {
9740 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
9741 }
9742 stream->flush();
9743 SET_LASTCALL("glIsEnablediEXT");
9744 android::base::endTrace();
9745 break;
9746 }
9747 default:
9748 return ptr - (unsigned char*)buf;
9749 } //switch
9750 #ifdef CHECK_GL_ERRORS
9751 GLint err = this->glGetError();
9752 if (err) fprintf(stderr, "gles2 Error (post-call): 0x%X in %s\n", err, lastCall);
9753 #endif
9754 ptr += packetLen;
9755 } // while
9756 return ptr - (unsigned char*)buf;
9757 }
9758 } // namespace gfxstream
9759
9760