1 // Generated Code - DO NOT EDIT !!
2 // generated by 'emugen'
3
4
5 #include <string.h>
6 #include "gl2_opcodes.h"
7
8 #include "gl2_enc.h"
9
10
11 #include <vector>
12
13 #include <stdio.h>
14
15 #include "android/base/Tracing.h"
16
17 #include "EncoderDebug.h"
18
19 namespace {
20
enc_unsupported()21 void enc_unsupported()
22 {
23 ALOGE("Function is unsupported\n");
24 }
25
glActiveTexture_enc(void * self,GLenum texture)26 void glActiveTexture_enc(void *self , GLenum texture)
27 {
28 ENCODER_DEBUG_LOG("glActiveTexture(texture:0x%08x)", texture);
29 AEMU_SCOPED_TRACE("glActiveTexture encode");
30
31 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
32 IOStream *stream = ctx->m_stream;
33 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
34 bool useChecksum = checksumCalculator->getVersion() > 0;
35
36 unsigned char *ptr;
37 unsigned char *buf;
38 const size_t sizeWithoutChecksum = 8 + 4;
39 const size_t checksumSize = checksumCalculator->checksumByteSize();
40 const size_t totalSize = sizeWithoutChecksum + checksumSize;
41 buf = stream->alloc(totalSize);
42 ptr = buf;
43 int tmp = OP_glActiveTexture;memcpy(ptr, &tmp, 4); ptr += 4;
44 memcpy(ptr, &totalSize, 4); ptr += 4;
45
46 memcpy(ptr, &texture, 4); ptr += 4;
47
48 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
49 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
50
51 }
52
glAttachShader_enc(void * self,GLuint program,GLuint shader)53 void glAttachShader_enc(void *self , GLuint program, GLuint shader)
54 {
55 ENCODER_DEBUG_LOG("glAttachShader(program:%u, shader:%u)", program, shader);
56 AEMU_SCOPED_TRACE("glAttachShader encode");
57
58 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
59 IOStream *stream = ctx->m_stream;
60 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
61 bool useChecksum = checksumCalculator->getVersion() > 0;
62
63 unsigned char *ptr;
64 unsigned char *buf;
65 const size_t sizeWithoutChecksum = 8 + 4 + 4;
66 const size_t checksumSize = checksumCalculator->checksumByteSize();
67 const size_t totalSize = sizeWithoutChecksum + checksumSize;
68 buf = stream->alloc(totalSize);
69 ptr = buf;
70 int tmp = OP_glAttachShader;memcpy(ptr, &tmp, 4); ptr += 4;
71 memcpy(ptr, &totalSize, 4); ptr += 4;
72
73 memcpy(ptr, &program, 4); ptr += 4;
74 memcpy(ptr, &shader, 4); ptr += 4;
75
76 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
77 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
78
79 }
80
glBindAttribLocation_enc(void * self,GLuint program,GLuint index,const GLchar * name)81 void glBindAttribLocation_enc(void *self , GLuint program, GLuint index, const GLchar* name)
82 {
83 ENCODER_DEBUG_LOG("glBindAttribLocation(program:%u, index:%u, name:0x%08x)", program, index, name);
84 AEMU_SCOPED_TRACE("glBindAttribLocation encode");
85
86 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
87 IOStream *stream = ctx->m_stream;
88 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
89 bool useChecksum = checksumCalculator->getVersion() > 0;
90
91 const unsigned int __size_name = (strlen(name) + 1);
92 unsigned char *ptr;
93 unsigned char *buf;
94 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
95 const size_t checksumSize = checksumCalculator->checksumByteSize();
96 const size_t totalSize = sizeWithoutChecksum + checksumSize;
97 buf = stream->alloc(totalSize);
98 ptr = buf;
99 int tmp = OP_glBindAttribLocation;memcpy(ptr, &tmp, 4); ptr += 4;
100 memcpy(ptr, &totalSize, 4); ptr += 4;
101
102 memcpy(ptr, &program, 4); ptr += 4;
103 memcpy(ptr, &index, 4); ptr += 4;
104 memcpy(ptr, &__size_name, 4); ptr += 4;
105 memcpy(ptr, name, __size_name);ptr += __size_name;
106
107 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
108 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
109
110 }
111
glBindBuffer_enc(void * self,GLenum target,GLuint buffer)112 void glBindBuffer_enc(void *self , GLenum target, GLuint buffer)
113 {
114 ENCODER_DEBUG_LOG("glBindBuffer(target:0x%08x, buffer:%u)", target, buffer);
115 AEMU_SCOPED_TRACE("glBindBuffer encode");
116
117 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
118 IOStream *stream = ctx->m_stream;
119 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
120 bool useChecksum = checksumCalculator->getVersion() > 0;
121
122 unsigned char *ptr;
123 unsigned char *buf;
124 const size_t sizeWithoutChecksum = 8 + 4 + 4;
125 const size_t checksumSize = checksumCalculator->checksumByteSize();
126 const size_t totalSize = sizeWithoutChecksum + checksumSize;
127 buf = stream->alloc(totalSize);
128 ptr = buf;
129 int tmp = OP_glBindBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
130 memcpy(ptr, &totalSize, 4); ptr += 4;
131
132 memcpy(ptr, &target, 4); ptr += 4;
133 memcpy(ptr, &buffer, 4); ptr += 4;
134
135 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
136 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
137
138 }
139
glBindFramebuffer_enc(void * self,GLenum target,GLuint framebuffer)140 void glBindFramebuffer_enc(void *self , GLenum target, GLuint framebuffer)
141 {
142 ENCODER_DEBUG_LOG("glBindFramebuffer(target:0x%08x, framebuffer:%u)", target, framebuffer);
143 AEMU_SCOPED_TRACE("glBindFramebuffer encode");
144
145 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
146 IOStream *stream = ctx->m_stream;
147 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
148 bool useChecksum = checksumCalculator->getVersion() > 0;
149
150 unsigned char *ptr;
151 unsigned char *buf;
152 const size_t sizeWithoutChecksum = 8 + 4 + 4;
153 const size_t checksumSize = checksumCalculator->checksumByteSize();
154 const size_t totalSize = sizeWithoutChecksum + checksumSize;
155 buf = stream->alloc(totalSize);
156 ptr = buf;
157 int tmp = OP_glBindFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
158 memcpy(ptr, &totalSize, 4); ptr += 4;
159
160 memcpy(ptr, &target, 4); ptr += 4;
161 memcpy(ptr, &framebuffer, 4); ptr += 4;
162
163 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
164 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
165
166 }
167
glBindRenderbuffer_enc(void * self,GLenum target,GLuint renderbuffer)168 void glBindRenderbuffer_enc(void *self , GLenum target, GLuint renderbuffer)
169 {
170 ENCODER_DEBUG_LOG("glBindRenderbuffer(target:0x%08x, renderbuffer:%u)", target, renderbuffer);
171 AEMU_SCOPED_TRACE("glBindRenderbuffer encode");
172
173 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
174 IOStream *stream = ctx->m_stream;
175 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
176 bool useChecksum = checksumCalculator->getVersion() > 0;
177
178 unsigned char *ptr;
179 unsigned char *buf;
180 const size_t sizeWithoutChecksum = 8 + 4 + 4;
181 const size_t checksumSize = checksumCalculator->checksumByteSize();
182 const size_t totalSize = sizeWithoutChecksum + checksumSize;
183 buf = stream->alloc(totalSize);
184 ptr = buf;
185 int tmp = OP_glBindRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
186 memcpy(ptr, &totalSize, 4); ptr += 4;
187
188 memcpy(ptr, &target, 4); ptr += 4;
189 memcpy(ptr, &renderbuffer, 4); ptr += 4;
190
191 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
192 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
193
194 }
195
glBindTexture_enc(void * self,GLenum target,GLuint texture)196 void glBindTexture_enc(void *self , GLenum target, GLuint texture)
197 {
198 ENCODER_DEBUG_LOG("glBindTexture(target:0x%08x, texture:%u)", target, texture);
199 AEMU_SCOPED_TRACE("glBindTexture encode");
200
201 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
202 IOStream *stream = ctx->m_stream;
203 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
204 bool useChecksum = checksumCalculator->getVersion() > 0;
205
206 unsigned char *ptr;
207 unsigned char *buf;
208 const size_t sizeWithoutChecksum = 8 + 4 + 4;
209 const size_t checksumSize = checksumCalculator->checksumByteSize();
210 const size_t totalSize = sizeWithoutChecksum + checksumSize;
211 buf = stream->alloc(totalSize);
212 ptr = buf;
213 int tmp = OP_glBindTexture;memcpy(ptr, &tmp, 4); ptr += 4;
214 memcpy(ptr, &totalSize, 4); ptr += 4;
215
216 memcpy(ptr, &target, 4); ptr += 4;
217 memcpy(ptr, &texture, 4); ptr += 4;
218
219 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
220 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
221
222 }
223
glBlendColor_enc(void * self,GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)224 void glBlendColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
225 {
226 ENCODER_DEBUG_LOG("glBlendColor(red:%f, green:%f, blue:%f, alpha:%f)", red, green, blue, alpha);
227 AEMU_SCOPED_TRACE("glBlendColor encode");
228
229 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
230 IOStream *stream = ctx->m_stream;
231 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
232 bool useChecksum = checksumCalculator->getVersion() > 0;
233
234 unsigned char *ptr;
235 unsigned char *buf;
236 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
237 const size_t checksumSize = checksumCalculator->checksumByteSize();
238 const size_t totalSize = sizeWithoutChecksum + checksumSize;
239 buf = stream->alloc(totalSize);
240 ptr = buf;
241 int tmp = OP_glBlendColor;memcpy(ptr, &tmp, 4); ptr += 4;
242 memcpy(ptr, &totalSize, 4); ptr += 4;
243
244 memcpy(ptr, &red, 4); ptr += 4;
245 memcpy(ptr, &green, 4); ptr += 4;
246 memcpy(ptr, &blue, 4); ptr += 4;
247 memcpy(ptr, &alpha, 4); ptr += 4;
248
249 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
250 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
251
252 }
253
glBlendEquation_enc(void * self,GLenum mode)254 void glBlendEquation_enc(void *self , GLenum mode)
255 {
256 ENCODER_DEBUG_LOG("glBlendEquation(mode:0x%08x)", mode);
257 AEMU_SCOPED_TRACE("glBlendEquation encode");
258
259 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
260 IOStream *stream = ctx->m_stream;
261 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
262 bool useChecksum = checksumCalculator->getVersion() > 0;
263
264 unsigned char *ptr;
265 unsigned char *buf;
266 const size_t sizeWithoutChecksum = 8 + 4;
267 const size_t checksumSize = checksumCalculator->checksumByteSize();
268 const size_t totalSize = sizeWithoutChecksum + checksumSize;
269 buf = stream->alloc(totalSize);
270 ptr = buf;
271 int tmp = OP_glBlendEquation;memcpy(ptr, &tmp, 4); ptr += 4;
272 memcpy(ptr, &totalSize, 4); ptr += 4;
273
274 memcpy(ptr, &mode, 4); ptr += 4;
275
276 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
277 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
278
279 }
280
glBlendEquationSeparate_enc(void * self,GLenum modeRGB,GLenum modeAlpha)281 void glBlendEquationSeparate_enc(void *self , GLenum modeRGB, GLenum modeAlpha)
282 {
283 ENCODER_DEBUG_LOG("glBlendEquationSeparate(modeRGB:0x%08x, modeAlpha:0x%08x)", modeRGB, modeAlpha);
284 AEMU_SCOPED_TRACE("glBlendEquationSeparate encode");
285
286 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
287 IOStream *stream = ctx->m_stream;
288 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
289 bool useChecksum = checksumCalculator->getVersion() > 0;
290
291 unsigned char *ptr;
292 unsigned char *buf;
293 const size_t sizeWithoutChecksum = 8 + 4 + 4;
294 const size_t checksumSize = checksumCalculator->checksumByteSize();
295 const size_t totalSize = sizeWithoutChecksum + checksumSize;
296 buf = stream->alloc(totalSize);
297 ptr = buf;
298 int tmp = OP_glBlendEquationSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
299 memcpy(ptr, &totalSize, 4); ptr += 4;
300
301 memcpy(ptr, &modeRGB, 4); ptr += 4;
302 memcpy(ptr, &modeAlpha, 4); ptr += 4;
303
304 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
305 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
306
307 }
308
glBlendFunc_enc(void * self,GLenum sfactor,GLenum dfactor)309 void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor)
310 {
311 ENCODER_DEBUG_LOG("glBlendFunc(sfactor:0x%08x, dfactor:0x%08x)", sfactor, dfactor);
312 AEMU_SCOPED_TRACE("glBlendFunc encode");
313
314 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
315 IOStream *stream = ctx->m_stream;
316 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
317 bool useChecksum = checksumCalculator->getVersion() > 0;
318
319 unsigned char *ptr;
320 unsigned char *buf;
321 const size_t sizeWithoutChecksum = 8 + 4 + 4;
322 const size_t checksumSize = checksumCalculator->checksumByteSize();
323 const size_t totalSize = sizeWithoutChecksum + checksumSize;
324 buf = stream->alloc(totalSize);
325 ptr = buf;
326 int tmp = OP_glBlendFunc;memcpy(ptr, &tmp, 4); ptr += 4;
327 memcpy(ptr, &totalSize, 4); ptr += 4;
328
329 memcpy(ptr, &sfactor, 4); ptr += 4;
330 memcpy(ptr, &dfactor, 4); ptr += 4;
331
332 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
333 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
334
335 }
336
glBlendFuncSeparate_enc(void * self,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)337 void glBlendFuncSeparate_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
338 {
339 ENCODER_DEBUG_LOG("glBlendFuncSeparate(srcRGB:0x%08x, dstRGB:0x%08x, srcAlpha:0x%08x, dstAlpha:0x%08x)", srcRGB, dstRGB, srcAlpha, dstAlpha);
340 AEMU_SCOPED_TRACE("glBlendFuncSeparate encode");
341
342 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
343 IOStream *stream = ctx->m_stream;
344 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
345 bool useChecksum = checksumCalculator->getVersion() > 0;
346
347 unsigned char *ptr;
348 unsigned char *buf;
349 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
350 const size_t checksumSize = checksumCalculator->checksumByteSize();
351 const size_t totalSize = sizeWithoutChecksum + checksumSize;
352 buf = stream->alloc(totalSize);
353 ptr = buf;
354 int tmp = OP_glBlendFuncSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
355 memcpy(ptr, &totalSize, 4); ptr += 4;
356
357 memcpy(ptr, &srcRGB, 4); ptr += 4;
358 memcpy(ptr, &dstRGB, 4); ptr += 4;
359 memcpy(ptr, &srcAlpha, 4); ptr += 4;
360 memcpy(ptr, &dstAlpha, 4); ptr += 4;
361
362 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
363 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
364
365 }
366
glBufferData_enc(void * self,GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)367 void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
368 {
369 ENCODER_DEBUG_LOG("glBufferData(target:0x%08x, size:0x%08lx, data:0x%08x, usage:0x%08x)", target, size, data, usage);
370 AEMU_SCOPED_TRACE("glBufferData encode");
371
372 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
373 IOStream *stream = ctx->m_stream;
374 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
375 bool useChecksum = checksumCalculator->getVersion() > 0;
376
377 const unsigned int __size_data = ((data != NULL) ? size : 0);
378 unsigned char *ptr;
379 unsigned char *buf;
380 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
381 const size_t checksumSize = checksumCalculator->checksumByteSize();
382 const size_t totalSize = sizeWithoutChecksum + checksumSize;
383 buf = stream->alloc(8 + 4 + 4);
384 ptr = buf;
385 int tmp = OP_glBufferData;memcpy(ptr, &tmp, 4); ptr += 4;
386 memcpy(ptr, &totalSize, 4); ptr += 4;
387
388 memcpy(ptr, &target, 4); ptr += 4;
389 memcpy(ptr, &size, 4); ptr += 4;
390
391 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
392 stream->flush();
393 stream->writeFully(&__size_data,4);
394 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
395 if (data != NULL) {
396 stream->writeFully(data, __size_data);
397 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
398 }
399 buf = stream->alloc(4);
400 ptr = buf;
401 memcpy(ptr, &usage, 4); ptr += 4;
402
403 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
404 buf = stream->alloc(checksumSize);
405 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
406
407 }
408
glBufferSubData_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)409 void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
410 {
411 ENCODER_DEBUG_LOG("glBufferSubData(target:0x%08x, offset:0x%08lx, size:0x%08lx, data:0x%08x)", target, offset, size, data);
412 AEMU_SCOPED_TRACE("glBufferSubData encode");
413
414 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
415 IOStream *stream = ctx->m_stream;
416 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
417 bool useChecksum = checksumCalculator->getVersion() > 0;
418
419 const unsigned int __size_data = ((data != NULL) ? size : 0);
420 unsigned char *ptr;
421 unsigned char *buf;
422 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 1*4;
423 const size_t checksumSize = checksumCalculator->checksumByteSize();
424 const size_t totalSize = sizeWithoutChecksum + checksumSize;
425 buf = stream->alloc(8 + 4 + 4 + 4);
426 ptr = buf;
427 int tmp = OP_glBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
428 memcpy(ptr, &totalSize, 4); ptr += 4;
429
430 memcpy(ptr, &target, 4); ptr += 4;
431 memcpy(ptr, &offset, 4); ptr += 4;
432 memcpy(ptr, &size, 4); ptr += 4;
433
434 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
435 stream->flush();
436 stream->writeFully(&__size_data,4);
437 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
438 if (data != NULL) {
439 stream->writeFully(data, __size_data);
440 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
441 }
442 buf = stream->alloc(checksumSize);
443 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
444
445 }
446
glCheckFramebufferStatus_enc(void * self,GLenum target)447 GLenum glCheckFramebufferStatus_enc(void *self , GLenum target)
448 {
449 ENCODER_DEBUG_LOG("glCheckFramebufferStatus(target:0x%08x)", target);
450 AEMU_SCOPED_TRACE("glCheckFramebufferStatus encode");
451
452 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
453 IOStream *stream = ctx->m_stream;
454 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
455 bool useChecksum = checksumCalculator->getVersion() > 0;
456
457 unsigned char *ptr;
458 unsigned char *buf;
459 const size_t sizeWithoutChecksum = 8 + 4;
460 const size_t checksumSize = checksumCalculator->checksumByteSize();
461 const size_t totalSize = sizeWithoutChecksum + checksumSize;
462 buf = stream->alloc(totalSize);
463 ptr = buf;
464 int tmp = OP_glCheckFramebufferStatus;memcpy(ptr, &tmp, 4); ptr += 4;
465 memcpy(ptr, &totalSize, 4); ptr += 4;
466
467 memcpy(ptr, &target, 4); ptr += 4;
468
469 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
470 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
471
472
473 GLenum retval;
474 stream->readback(&retval, 4);
475 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
476 if (useChecksum) {
477 unsigned char *checksumBufPtr = NULL;
478 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
479 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
480 stream->readback(checksumBufPtr, checksumSize);
481 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
482 ALOGE("glCheckFramebufferStatus: GL communication error, please report this issue to b.android.com.\n");
483 abort();
484 }
485 }
486 return retval;
487 }
488
glClear_enc(void * self,GLbitfield mask)489 void glClear_enc(void *self , GLbitfield mask)
490 {
491 ENCODER_DEBUG_LOG("glClear(mask:0x%08x)", mask);
492 AEMU_SCOPED_TRACE("glClear encode");
493
494 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
495 IOStream *stream = ctx->m_stream;
496 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
497 bool useChecksum = checksumCalculator->getVersion() > 0;
498
499 unsigned char *ptr;
500 unsigned char *buf;
501 const size_t sizeWithoutChecksum = 8 + 4;
502 const size_t checksumSize = checksumCalculator->checksumByteSize();
503 const size_t totalSize = sizeWithoutChecksum + checksumSize;
504 buf = stream->alloc(totalSize);
505 ptr = buf;
506 int tmp = OP_glClear;memcpy(ptr, &tmp, 4); ptr += 4;
507 memcpy(ptr, &totalSize, 4); ptr += 4;
508
509 memcpy(ptr, &mask, 4); ptr += 4;
510
511 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
512 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
513
514 }
515
glClearColor_enc(void * self,GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)516 void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
517 {
518 ENCODER_DEBUG_LOG("glClearColor(red:%f, green:%f, blue:%f, alpha:%f)", red, green, blue, alpha);
519 AEMU_SCOPED_TRACE("glClearColor encode");
520
521 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
522 IOStream *stream = ctx->m_stream;
523 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
524 bool useChecksum = checksumCalculator->getVersion() > 0;
525
526 unsigned char *ptr;
527 unsigned char *buf;
528 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
529 const size_t checksumSize = checksumCalculator->checksumByteSize();
530 const size_t totalSize = sizeWithoutChecksum + checksumSize;
531 buf = stream->alloc(totalSize);
532 ptr = buf;
533 int tmp = OP_glClearColor;memcpy(ptr, &tmp, 4); ptr += 4;
534 memcpy(ptr, &totalSize, 4); ptr += 4;
535
536 memcpy(ptr, &red, 4); ptr += 4;
537 memcpy(ptr, &green, 4); ptr += 4;
538 memcpy(ptr, &blue, 4); ptr += 4;
539 memcpy(ptr, &alpha, 4); ptr += 4;
540
541 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
542 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
543
544 }
545
glClearDepthf_enc(void * self,GLclampf depth)546 void glClearDepthf_enc(void *self , GLclampf depth)
547 {
548 ENCODER_DEBUG_LOG("glClearDepthf(depth:%f)", depth);
549 AEMU_SCOPED_TRACE("glClearDepthf encode");
550
551 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
552 IOStream *stream = ctx->m_stream;
553 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
554 bool useChecksum = checksumCalculator->getVersion() > 0;
555
556 unsigned char *ptr;
557 unsigned char *buf;
558 const size_t sizeWithoutChecksum = 8 + 4;
559 const size_t checksumSize = checksumCalculator->checksumByteSize();
560 const size_t totalSize = sizeWithoutChecksum + checksumSize;
561 buf = stream->alloc(totalSize);
562 ptr = buf;
563 int tmp = OP_glClearDepthf;memcpy(ptr, &tmp, 4); ptr += 4;
564 memcpy(ptr, &totalSize, 4); ptr += 4;
565
566 memcpy(ptr, &depth, 4); ptr += 4;
567
568 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
569 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
570
571 }
572
glClearStencil_enc(void * self,GLint s)573 void glClearStencil_enc(void *self , GLint s)
574 {
575 ENCODER_DEBUG_LOG("glClearStencil(s:%d)", s);
576 AEMU_SCOPED_TRACE("glClearStencil encode");
577
578 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
579 IOStream *stream = ctx->m_stream;
580 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
581 bool useChecksum = checksumCalculator->getVersion() > 0;
582
583 unsigned char *ptr;
584 unsigned char *buf;
585 const size_t sizeWithoutChecksum = 8 + 4;
586 const size_t checksumSize = checksumCalculator->checksumByteSize();
587 const size_t totalSize = sizeWithoutChecksum + checksumSize;
588 buf = stream->alloc(totalSize);
589 ptr = buf;
590 int tmp = OP_glClearStencil;memcpy(ptr, &tmp, 4); ptr += 4;
591 memcpy(ptr, &totalSize, 4); ptr += 4;
592
593 memcpy(ptr, &s, 4); ptr += 4;
594
595 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
596 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
597
598 }
599
glColorMask_enc(void * self,GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)600 void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
601 {
602 ENCODER_DEBUG_LOG("glColorMask(red:%d, green:%d, blue:%d, alpha:%d)", red, green, blue, alpha);
603 AEMU_SCOPED_TRACE("glColorMask encode");
604
605 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
606 IOStream *stream = ctx->m_stream;
607 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
608 bool useChecksum = checksumCalculator->getVersion() > 0;
609
610 unsigned char *ptr;
611 unsigned char *buf;
612 const size_t sizeWithoutChecksum = 8 + 1 + 1 + 1 + 1;
613 const size_t checksumSize = checksumCalculator->checksumByteSize();
614 const size_t totalSize = sizeWithoutChecksum + checksumSize;
615 buf = stream->alloc(totalSize);
616 ptr = buf;
617 int tmp = OP_glColorMask;memcpy(ptr, &tmp, 4); ptr += 4;
618 memcpy(ptr, &totalSize, 4); ptr += 4;
619
620 memcpy(ptr, &red, 1); ptr += 1;
621 memcpy(ptr, &green, 1); ptr += 1;
622 memcpy(ptr, &blue, 1); ptr += 1;
623 memcpy(ptr, &alpha, 1); ptr += 1;
624
625 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
626 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
627
628 }
629
glCompileShader_enc(void * self,GLuint shader)630 void glCompileShader_enc(void *self , GLuint shader)
631 {
632 ENCODER_DEBUG_LOG("glCompileShader(shader:%u)", shader);
633 AEMU_SCOPED_TRACE("glCompileShader encode");
634
635 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
636 IOStream *stream = ctx->m_stream;
637 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
638 bool useChecksum = checksumCalculator->getVersion() > 0;
639
640 unsigned char *ptr;
641 unsigned char *buf;
642 const size_t sizeWithoutChecksum = 8 + 4;
643 const size_t checksumSize = checksumCalculator->checksumByteSize();
644 const size_t totalSize = sizeWithoutChecksum + checksumSize;
645 buf = stream->alloc(totalSize);
646 ptr = buf;
647 int tmp = OP_glCompileShader;memcpy(ptr, &tmp, 4); ptr += 4;
648 memcpy(ptr, &totalSize, 4); ptr += 4;
649
650 memcpy(ptr, &shader, 4); ptr += 4;
651
652 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
653 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
654
655 }
656
glCompressedTexImage2D_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)657 void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
658 {
659 ENCODER_DEBUG_LOG("glCompressedTexImage2D(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, border:%d, imageSize:%d, data:0x%08x)", target, level, internalformat, width, height, border, imageSize, data);
660 AEMU_SCOPED_TRACE("glCompressedTexImage2D encode");
661
662 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
663 IOStream *stream = ctx->m_stream;
664 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
665 bool useChecksum = checksumCalculator->getVersion() > 0;
666
667 const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
668 unsigned char *ptr;
669 unsigned char *buf;
670 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
671 const size_t checksumSize = checksumCalculator->checksumByteSize();
672 const size_t totalSize = sizeWithoutChecksum + checksumSize;
673 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
674 ptr = buf;
675 int tmp = OP_glCompressedTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
676 memcpy(ptr, &totalSize, 4); ptr += 4;
677
678 memcpy(ptr, &target, 4); ptr += 4;
679 memcpy(ptr, &level, 4); ptr += 4;
680 memcpy(ptr, &internalformat, 4); ptr += 4;
681 memcpy(ptr, &width, 4); ptr += 4;
682 memcpy(ptr, &height, 4); ptr += 4;
683 memcpy(ptr, &border, 4); ptr += 4;
684 memcpy(ptr, &imageSize, 4); ptr += 4;
685
686 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
687 stream->flush();
688 stream->writeFully(&__size_data,4);
689 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
690 if (data != NULL) {
691 stream->writeFully(data, __size_data);
692 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
693 }
694 buf = stream->alloc(checksumSize);
695 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
696
697 }
698
glCompressedTexSubImage2D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)699 void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
700 {
701 ENCODER_DEBUG_LOG("glCompressedTexSubImage2D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, width:%d, height:%d, format:0x%08x, imageSize:%d, data:0x%08x)", target, level, xoffset, yoffset, width, height, format, imageSize, data);
702 AEMU_SCOPED_TRACE("glCompressedTexSubImage2D encode");
703
704 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
705 IOStream *stream = ctx->m_stream;
706 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
707 bool useChecksum = checksumCalculator->getVersion() > 0;
708
709 const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
710 unsigned char *ptr;
711 unsigned char *buf;
712 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
713 const size_t checksumSize = checksumCalculator->checksumByteSize();
714 const size_t totalSize = sizeWithoutChecksum + checksumSize;
715 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
716 ptr = buf;
717 int tmp = OP_glCompressedTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
718 memcpy(ptr, &totalSize, 4); ptr += 4;
719
720 memcpy(ptr, &target, 4); ptr += 4;
721 memcpy(ptr, &level, 4); ptr += 4;
722 memcpy(ptr, &xoffset, 4); ptr += 4;
723 memcpy(ptr, &yoffset, 4); ptr += 4;
724 memcpy(ptr, &width, 4); ptr += 4;
725 memcpy(ptr, &height, 4); ptr += 4;
726 memcpy(ptr, &format, 4); ptr += 4;
727 memcpy(ptr, &imageSize, 4); ptr += 4;
728
729 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
730 stream->flush();
731 stream->writeFully(&__size_data,4);
732 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
733 if (data != NULL) {
734 stream->writeFully(data, __size_data);
735 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
736 }
737 buf = stream->alloc(checksumSize);
738 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
739
740 }
741
glCopyTexImage2D_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)742 void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
743 {
744 ENCODER_DEBUG_LOG("glCopyTexImage2D(target:0x%08x, level:%d, internalformat:0x%08x, x:%d, y:%d, width:%d, height:%d, border:%d)", target, level, internalformat, x, y, width, height, border);
745 AEMU_SCOPED_TRACE("glCopyTexImage2D encode");
746
747 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
748 IOStream *stream = ctx->m_stream;
749 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
750 bool useChecksum = checksumCalculator->getVersion() > 0;
751
752 unsigned char *ptr;
753 unsigned char *buf;
754 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
755 const size_t checksumSize = checksumCalculator->checksumByteSize();
756 const size_t totalSize = sizeWithoutChecksum + checksumSize;
757 buf = stream->alloc(totalSize);
758 ptr = buf;
759 int tmp = OP_glCopyTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
760 memcpy(ptr, &totalSize, 4); ptr += 4;
761
762 memcpy(ptr, &target, 4); ptr += 4;
763 memcpy(ptr, &level, 4); ptr += 4;
764 memcpy(ptr, &internalformat, 4); ptr += 4;
765 memcpy(ptr, &x, 4); ptr += 4;
766 memcpy(ptr, &y, 4); ptr += 4;
767 memcpy(ptr, &width, 4); ptr += 4;
768 memcpy(ptr, &height, 4); ptr += 4;
769 memcpy(ptr, &border, 4); ptr += 4;
770
771 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
772 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
773
774 }
775
glCopyTexSubImage2D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)776 void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
777 {
778 ENCODER_DEBUG_LOG("glCopyTexSubImage2D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, x:%d, y:%d, width:%d, height:%d)", target, level, xoffset, yoffset, x, y, width, height);
779 AEMU_SCOPED_TRACE("glCopyTexSubImage2D encode");
780
781 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
782 IOStream *stream = ctx->m_stream;
783 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
784 bool useChecksum = checksumCalculator->getVersion() > 0;
785
786 unsigned char *ptr;
787 unsigned char *buf;
788 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
789 const size_t checksumSize = checksumCalculator->checksumByteSize();
790 const size_t totalSize = sizeWithoutChecksum + checksumSize;
791 buf = stream->alloc(totalSize);
792 ptr = buf;
793 int tmp = OP_glCopyTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
794 memcpy(ptr, &totalSize, 4); ptr += 4;
795
796 memcpy(ptr, &target, 4); ptr += 4;
797 memcpy(ptr, &level, 4); ptr += 4;
798 memcpy(ptr, &xoffset, 4); ptr += 4;
799 memcpy(ptr, &yoffset, 4); ptr += 4;
800 memcpy(ptr, &x, 4); ptr += 4;
801 memcpy(ptr, &y, 4); ptr += 4;
802 memcpy(ptr, &width, 4); ptr += 4;
803 memcpy(ptr, &height, 4); ptr += 4;
804
805 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
806 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
807
808 }
809
glCreateProgram_enc(void * self)810 GLuint glCreateProgram_enc(void *self )
811 {
812 ENCODER_DEBUG_LOG("glCreateProgram()");
813 AEMU_SCOPED_TRACE("glCreateProgram encode");
814
815 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
816 IOStream *stream = ctx->m_stream;
817 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
818 bool useChecksum = checksumCalculator->getVersion() > 0;
819
820 unsigned char *ptr;
821 unsigned char *buf;
822 const size_t sizeWithoutChecksum = 8;
823 const size_t checksumSize = checksumCalculator->checksumByteSize();
824 const size_t totalSize = sizeWithoutChecksum + checksumSize;
825 buf = stream->alloc(totalSize);
826 ptr = buf;
827 int tmp = OP_glCreateProgram;memcpy(ptr, &tmp, 4); ptr += 4;
828 memcpy(ptr, &totalSize, 4); ptr += 4;
829
830
831 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
832 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
833
834
835 GLuint retval;
836 stream->readback(&retval, 4);
837 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
838 if (useChecksum) {
839 unsigned char *checksumBufPtr = NULL;
840 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
841 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
842 stream->readback(checksumBufPtr, checksumSize);
843 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
844 ALOGE("glCreateProgram: GL communication error, please report this issue to b.android.com.\n");
845 abort();
846 }
847 }
848 return retval;
849 }
850
glCreateShader_enc(void * self,GLenum type)851 GLuint glCreateShader_enc(void *self , GLenum type)
852 {
853 ENCODER_DEBUG_LOG("glCreateShader(type:0x%08x)", type);
854 AEMU_SCOPED_TRACE("glCreateShader encode");
855
856 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
857 IOStream *stream = ctx->m_stream;
858 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
859 bool useChecksum = checksumCalculator->getVersion() > 0;
860
861 unsigned char *ptr;
862 unsigned char *buf;
863 const size_t sizeWithoutChecksum = 8 + 4;
864 const size_t checksumSize = checksumCalculator->checksumByteSize();
865 const size_t totalSize = sizeWithoutChecksum + checksumSize;
866 buf = stream->alloc(totalSize);
867 ptr = buf;
868 int tmp = OP_glCreateShader;memcpy(ptr, &tmp, 4); ptr += 4;
869 memcpy(ptr, &totalSize, 4); ptr += 4;
870
871 memcpy(ptr, &type, 4); ptr += 4;
872
873 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
874 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
875
876
877 GLuint retval;
878 stream->readback(&retval, 4);
879 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
880 if (useChecksum) {
881 unsigned char *checksumBufPtr = NULL;
882 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
883 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
884 stream->readback(checksumBufPtr, checksumSize);
885 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
886 ALOGE("glCreateShader: GL communication error, please report this issue to b.android.com.\n");
887 abort();
888 }
889 }
890 return retval;
891 }
892
glCullFace_enc(void * self,GLenum mode)893 void glCullFace_enc(void *self , GLenum mode)
894 {
895 ENCODER_DEBUG_LOG("glCullFace(mode:0x%08x)", mode);
896 AEMU_SCOPED_TRACE("glCullFace encode");
897
898 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
899 IOStream *stream = ctx->m_stream;
900 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
901 bool useChecksum = checksumCalculator->getVersion() > 0;
902
903 unsigned char *ptr;
904 unsigned char *buf;
905 const size_t sizeWithoutChecksum = 8 + 4;
906 const size_t checksumSize = checksumCalculator->checksumByteSize();
907 const size_t totalSize = sizeWithoutChecksum + checksumSize;
908 buf = stream->alloc(totalSize);
909 ptr = buf;
910 int tmp = OP_glCullFace;memcpy(ptr, &tmp, 4); ptr += 4;
911 memcpy(ptr, &totalSize, 4); ptr += 4;
912
913 memcpy(ptr, &mode, 4); ptr += 4;
914
915 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
916 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
917
918 }
919
glDeleteBuffers_enc(void * self,GLsizei n,const GLuint * buffers)920 void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers)
921 {
922 ENCODER_DEBUG_LOG("glDeleteBuffers(n:%d, buffers:0x%08x)", n, buffers);
923 AEMU_SCOPED_TRACE("glDeleteBuffers encode");
924
925 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
926 IOStream *stream = ctx->m_stream;
927 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
928 bool useChecksum = checksumCalculator->getVersion() > 0;
929
930 const unsigned int __size_buffers = (n * sizeof(GLuint));
931 unsigned char *ptr;
932 unsigned char *buf;
933 const size_t sizeWithoutChecksum = 8 + 4 + __size_buffers + 1*4;
934 const size_t checksumSize = checksumCalculator->checksumByteSize();
935 const size_t totalSize = sizeWithoutChecksum + checksumSize;
936 buf = stream->alloc(totalSize);
937 ptr = buf;
938 int tmp = OP_glDeleteBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
939 memcpy(ptr, &totalSize, 4); ptr += 4;
940
941 memcpy(ptr, &n, 4); ptr += 4;
942 memcpy(ptr, &__size_buffers, 4); ptr += 4;
943 memcpy(ptr, buffers, __size_buffers);ptr += __size_buffers;
944
945 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
946 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
947
948 }
949
glDeleteFramebuffers_enc(void * self,GLsizei n,const GLuint * framebuffers)950 void glDeleteFramebuffers_enc(void *self , GLsizei n, const GLuint* framebuffers)
951 {
952 ENCODER_DEBUG_LOG("glDeleteFramebuffers(n:%d, framebuffers:0x%08x)", n, framebuffers);
953 AEMU_SCOPED_TRACE("glDeleteFramebuffers encode");
954
955 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
956 IOStream *stream = ctx->m_stream;
957 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
958 bool useChecksum = checksumCalculator->getVersion() > 0;
959
960 const unsigned int __size_framebuffers = (n * sizeof(GLuint));
961 unsigned char *ptr;
962 unsigned char *buf;
963 const size_t sizeWithoutChecksum = 8 + 4 + __size_framebuffers + 1*4;
964 const size_t checksumSize = checksumCalculator->checksumByteSize();
965 const size_t totalSize = sizeWithoutChecksum + checksumSize;
966 buf = stream->alloc(totalSize);
967 ptr = buf;
968 int tmp = OP_glDeleteFramebuffers;memcpy(ptr, &tmp, 4); ptr += 4;
969 memcpy(ptr, &totalSize, 4); ptr += 4;
970
971 memcpy(ptr, &n, 4); ptr += 4;
972 memcpy(ptr, &__size_framebuffers, 4); ptr += 4;
973 memcpy(ptr, framebuffers, __size_framebuffers);ptr += __size_framebuffers;
974
975 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
976 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
977
978 }
979
glDeleteProgram_enc(void * self,GLuint program)980 void glDeleteProgram_enc(void *self , GLuint program)
981 {
982 ENCODER_DEBUG_LOG("glDeleteProgram(program:%u)", program);
983 AEMU_SCOPED_TRACE("glDeleteProgram encode");
984
985 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
986 IOStream *stream = ctx->m_stream;
987 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
988 bool useChecksum = checksumCalculator->getVersion() > 0;
989
990 unsigned char *ptr;
991 unsigned char *buf;
992 const size_t sizeWithoutChecksum = 8 + 4;
993 const size_t checksumSize = checksumCalculator->checksumByteSize();
994 const size_t totalSize = sizeWithoutChecksum + checksumSize;
995 buf = stream->alloc(totalSize);
996 ptr = buf;
997 int tmp = OP_glDeleteProgram;memcpy(ptr, &tmp, 4); ptr += 4;
998 memcpy(ptr, &totalSize, 4); ptr += 4;
999
1000 memcpy(ptr, &program, 4); ptr += 4;
1001
1002 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1003 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1004
1005 }
1006
glDeleteRenderbuffers_enc(void * self,GLsizei n,const GLuint * renderbuffers)1007 void glDeleteRenderbuffers_enc(void *self , GLsizei n, const GLuint* renderbuffers)
1008 {
1009 ENCODER_DEBUG_LOG("glDeleteRenderbuffers(n:%d, renderbuffers:0x%08x)", n, renderbuffers);
1010 AEMU_SCOPED_TRACE("glDeleteRenderbuffers encode");
1011
1012 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1013 IOStream *stream = ctx->m_stream;
1014 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1015 bool useChecksum = checksumCalculator->getVersion() > 0;
1016
1017 const unsigned int __size_renderbuffers = (n * sizeof(GLuint));
1018 unsigned char *ptr;
1019 unsigned char *buf;
1020 const size_t sizeWithoutChecksum = 8 + 4 + __size_renderbuffers + 1*4;
1021 const size_t checksumSize = checksumCalculator->checksumByteSize();
1022 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1023 buf = stream->alloc(totalSize);
1024 ptr = buf;
1025 int tmp = OP_glDeleteRenderbuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1026 memcpy(ptr, &totalSize, 4); ptr += 4;
1027
1028 memcpy(ptr, &n, 4); ptr += 4;
1029 memcpy(ptr, &__size_renderbuffers, 4); ptr += 4;
1030 memcpy(ptr, renderbuffers, __size_renderbuffers);ptr += __size_renderbuffers;
1031
1032 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1033 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1034
1035 }
1036
glDeleteShader_enc(void * self,GLuint shader)1037 void glDeleteShader_enc(void *self , GLuint shader)
1038 {
1039 ENCODER_DEBUG_LOG("glDeleteShader(shader:%u)", shader);
1040 AEMU_SCOPED_TRACE("glDeleteShader encode");
1041
1042 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1043 IOStream *stream = ctx->m_stream;
1044 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1045 bool useChecksum = checksumCalculator->getVersion() > 0;
1046
1047 unsigned char *ptr;
1048 unsigned char *buf;
1049 const size_t sizeWithoutChecksum = 8 + 4;
1050 const size_t checksumSize = checksumCalculator->checksumByteSize();
1051 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1052 buf = stream->alloc(totalSize);
1053 ptr = buf;
1054 int tmp = OP_glDeleteShader;memcpy(ptr, &tmp, 4); ptr += 4;
1055 memcpy(ptr, &totalSize, 4); ptr += 4;
1056
1057 memcpy(ptr, &shader, 4); ptr += 4;
1058
1059 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1060 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1061
1062 }
1063
glDeleteTextures_enc(void * self,GLsizei n,const GLuint * textures)1064 void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures)
1065 {
1066 ENCODER_DEBUG_LOG("glDeleteTextures(n:%d, textures:0x%08x)", n, textures);
1067 AEMU_SCOPED_TRACE("glDeleteTextures encode");
1068
1069 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1070 IOStream *stream = ctx->m_stream;
1071 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1072 bool useChecksum = checksumCalculator->getVersion() > 0;
1073
1074 const unsigned int __size_textures = (n * sizeof(GLuint));
1075 unsigned char *ptr;
1076 unsigned char *buf;
1077 const size_t sizeWithoutChecksum = 8 + 4 + __size_textures + 1*4;
1078 const size_t checksumSize = checksumCalculator->checksumByteSize();
1079 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1080 buf = stream->alloc(totalSize);
1081 ptr = buf;
1082 int tmp = OP_glDeleteTextures;memcpy(ptr, &tmp, 4); ptr += 4;
1083 memcpy(ptr, &totalSize, 4); ptr += 4;
1084
1085 memcpy(ptr, &n, 4); ptr += 4;
1086 memcpy(ptr, &__size_textures, 4); ptr += 4;
1087 memcpy(ptr, textures, __size_textures);ptr += __size_textures;
1088
1089 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1090 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1091
1092 }
1093
glDepthFunc_enc(void * self,GLenum func)1094 void glDepthFunc_enc(void *self , GLenum func)
1095 {
1096 ENCODER_DEBUG_LOG("glDepthFunc(func:0x%08x)", func);
1097 AEMU_SCOPED_TRACE("glDepthFunc encode");
1098
1099 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1100 IOStream *stream = ctx->m_stream;
1101 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1102 bool useChecksum = checksumCalculator->getVersion() > 0;
1103
1104 unsigned char *ptr;
1105 unsigned char *buf;
1106 const size_t sizeWithoutChecksum = 8 + 4;
1107 const size_t checksumSize = checksumCalculator->checksumByteSize();
1108 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1109 buf = stream->alloc(totalSize);
1110 ptr = buf;
1111 int tmp = OP_glDepthFunc;memcpy(ptr, &tmp, 4); ptr += 4;
1112 memcpy(ptr, &totalSize, 4); ptr += 4;
1113
1114 memcpy(ptr, &func, 4); ptr += 4;
1115
1116 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1117 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1118
1119 }
1120
glDepthMask_enc(void * self,GLboolean flag)1121 void glDepthMask_enc(void *self , GLboolean flag)
1122 {
1123 ENCODER_DEBUG_LOG("glDepthMask(flag:%d)", flag);
1124 AEMU_SCOPED_TRACE("glDepthMask encode");
1125
1126 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1127 IOStream *stream = ctx->m_stream;
1128 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1129 bool useChecksum = checksumCalculator->getVersion() > 0;
1130
1131 unsigned char *ptr;
1132 unsigned char *buf;
1133 const size_t sizeWithoutChecksum = 8 + 1;
1134 const size_t checksumSize = checksumCalculator->checksumByteSize();
1135 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1136 buf = stream->alloc(totalSize);
1137 ptr = buf;
1138 int tmp = OP_glDepthMask;memcpy(ptr, &tmp, 4); ptr += 4;
1139 memcpy(ptr, &totalSize, 4); ptr += 4;
1140
1141 memcpy(ptr, &flag, 1); ptr += 1;
1142
1143 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1144 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1145
1146 }
1147
glDepthRangef_enc(void * self,GLclampf zNear,GLclampf zFar)1148 void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar)
1149 {
1150 ENCODER_DEBUG_LOG("glDepthRangef(zNear:%f, zFar:%f)", zNear, zFar);
1151 AEMU_SCOPED_TRACE("glDepthRangef encode");
1152
1153 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1154 IOStream *stream = ctx->m_stream;
1155 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1156 bool useChecksum = checksumCalculator->getVersion() > 0;
1157
1158 unsigned char *ptr;
1159 unsigned char *buf;
1160 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1161 const size_t checksumSize = checksumCalculator->checksumByteSize();
1162 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1163 buf = stream->alloc(totalSize);
1164 ptr = buf;
1165 int tmp = OP_glDepthRangef;memcpy(ptr, &tmp, 4); ptr += 4;
1166 memcpy(ptr, &totalSize, 4); ptr += 4;
1167
1168 memcpy(ptr, &zNear, 4); ptr += 4;
1169 memcpy(ptr, &zFar, 4); ptr += 4;
1170
1171 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1172 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1173
1174 }
1175
glDetachShader_enc(void * self,GLuint program,GLuint shader)1176 void glDetachShader_enc(void *self , GLuint program, GLuint shader)
1177 {
1178 ENCODER_DEBUG_LOG("glDetachShader(program:%u, shader:%u)", program, shader);
1179 AEMU_SCOPED_TRACE("glDetachShader encode");
1180
1181 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1182 IOStream *stream = ctx->m_stream;
1183 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1184 bool useChecksum = checksumCalculator->getVersion() > 0;
1185
1186 unsigned char *ptr;
1187 unsigned char *buf;
1188 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1189 const size_t checksumSize = checksumCalculator->checksumByteSize();
1190 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1191 buf = stream->alloc(totalSize);
1192 ptr = buf;
1193 int tmp = OP_glDetachShader;memcpy(ptr, &tmp, 4); ptr += 4;
1194 memcpy(ptr, &totalSize, 4); ptr += 4;
1195
1196 memcpy(ptr, &program, 4); ptr += 4;
1197 memcpy(ptr, &shader, 4); ptr += 4;
1198
1199 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1200 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1201
1202 }
1203
glDisable_enc(void * self,GLenum cap)1204 void glDisable_enc(void *self , GLenum cap)
1205 {
1206 ENCODER_DEBUG_LOG("glDisable(cap:0x%08x)", cap);
1207 AEMU_SCOPED_TRACE("glDisable encode");
1208
1209 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1210 IOStream *stream = ctx->m_stream;
1211 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1212 bool useChecksum = checksumCalculator->getVersion() > 0;
1213
1214 unsigned char *ptr;
1215 unsigned char *buf;
1216 const size_t sizeWithoutChecksum = 8 + 4;
1217 const size_t checksumSize = checksumCalculator->checksumByteSize();
1218 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1219 buf = stream->alloc(totalSize);
1220 ptr = buf;
1221 int tmp = OP_glDisable;memcpy(ptr, &tmp, 4); ptr += 4;
1222 memcpy(ptr, &totalSize, 4); ptr += 4;
1223
1224 memcpy(ptr, &cap, 4); ptr += 4;
1225
1226 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1227 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1228
1229 }
1230
glDisableVertexAttribArray_enc(void * self,GLuint index)1231 void glDisableVertexAttribArray_enc(void *self , GLuint index)
1232 {
1233 ENCODER_DEBUG_LOG("glDisableVertexAttribArray(index:%u)", index);
1234 AEMU_SCOPED_TRACE("glDisableVertexAttribArray encode");
1235
1236 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1237 IOStream *stream = ctx->m_stream;
1238 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1239 bool useChecksum = checksumCalculator->getVersion() > 0;
1240
1241 unsigned char *ptr;
1242 unsigned char *buf;
1243 const size_t sizeWithoutChecksum = 8 + 4;
1244 const size_t checksumSize = checksumCalculator->checksumByteSize();
1245 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1246 buf = stream->alloc(totalSize);
1247 ptr = buf;
1248 int tmp = OP_glDisableVertexAttribArray;memcpy(ptr, &tmp, 4); ptr += 4;
1249 memcpy(ptr, &totalSize, 4); ptr += 4;
1250
1251 memcpy(ptr, &index, 4); ptr += 4;
1252
1253 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1254 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1255
1256 }
1257
glDrawArrays_enc(void * self,GLenum mode,GLint first,GLsizei count)1258 void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count)
1259 {
1260 ENCODER_DEBUG_LOG("glDrawArrays(mode:0x%08x, first:%d, count:%d)", mode, first, count);
1261 AEMU_SCOPED_TRACE("glDrawArrays encode");
1262
1263 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1264 IOStream *stream = ctx->m_stream;
1265 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1266 bool useChecksum = checksumCalculator->getVersion() > 0;
1267
1268 unsigned char *ptr;
1269 unsigned char *buf;
1270 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
1271 const size_t checksumSize = checksumCalculator->checksumByteSize();
1272 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1273 buf = stream->alloc(totalSize);
1274 ptr = buf;
1275 int tmp = OP_glDrawArrays;memcpy(ptr, &tmp, 4); ptr += 4;
1276 memcpy(ptr, &totalSize, 4); ptr += 4;
1277
1278 memcpy(ptr, &mode, 4); ptr += 4;
1279 memcpy(ptr, &first, 4); ptr += 4;
1280 memcpy(ptr, &count, 4); ptr += 4;
1281
1282 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1283 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1284
1285 }
1286
glEnable_enc(void * self,GLenum cap)1287 void glEnable_enc(void *self , GLenum cap)
1288 {
1289 ENCODER_DEBUG_LOG("glEnable(cap:0x%08x)", cap);
1290 AEMU_SCOPED_TRACE("glEnable encode");
1291
1292 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1293 IOStream *stream = ctx->m_stream;
1294 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1295 bool useChecksum = checksumCalculator->getVersion() > 0;
1296
1297 unsigned char *ptr;
1298 unsigned char *buf;
1299 const size_t sizeWithoutChecksum = 8 + 4;
1300 const size_t checksumSize = checksumCalculator->checksumByteSize();
1301 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1302 buf = stream->alloc(totalSize);
1303 ptr = buf;
1304 int tmp = OP_glEnable;memcpy(ptr, &tmp, 4); ptr += 4;
1305 memcpy(ptr, &totalSize, 4); ptr += 4;
1306
1307 memcpy(ptr, &cap, 4); ptr += 4;
1308
1309 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1310 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1311
1312 }
1313
glEnableVertexAttribArray_enc(void * self,GLuint index)1314 void glEnableVertexAttribArray_enc(void *self , GLuint index)
1315 {
1316 ENCODER_DEBUG_LOG("glEnableVertexAttribArray(index:%u)", index);
1317 AEMU_SCOPED_TRACE("glEnableVertexAttribArray encode");
1318
1319 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1320 IOStream *stream = ctx->m_stream;
1321 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1322 bool useChecksum = checksumCalculator->getVersion() > 0;
1323
1324 unsigned char *ptr;
1325 unsigned char *buf;
1326 const size_t sizeWithoutChecksum = 8 + 4;
1327 const size_t checksumSize = checksumCalculator->checksumByteSize();
1328 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1329 buf = stream->alloc(totalSize);
1330 ptr = buf;
1331 int tmp = OP_glEnableVertexAttribArray;memcpy(ptr, &tmp, 4); ptr += 4;
1332 memcpy(ptr, &totalSize, 4); ptr += 4;
1333
1334 memcpy(ptr, &index, 4); ptr += 4;
1335
1336 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1337 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1338
1339 }
1340
glFinish_enc(void * self)1341 void glFinish_enc(void *self )
1342 {
1343 ENCODER_DEBUG_LOG("glFinish()");
1344 AEMU_SCOPED_TRACE("glFinish encode");
1345
1346 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1347 IOStream *stream = ctx->m_stream;
1348 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1349 bool useChecksum = checksumCalculator->getVersion() > 0;
1350
1351 unsigned char *ptr;
1352 unsigned char *buf;
1353 const size_t sizeWithoutChecksum = 8;
1354 const size_t checksumSize = checksumCalculator->checksumByteSize();
1355 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1356 buf = stream->alloc(totalSize);
1357 ptr = buf;
1358 int tmp = OP_glFinish;memcpy(ptr, &tmp, 4); ptr += 4;
1359 memcpy(ptr, &totalSize, 4); ptr += 4;
1360
1361
1362 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1363 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1364
1365 }
1366
glFlush_enc(void * self)1367 void glFlush_enc(void *self )
1368 {
1369 ENCODER_DEBUG_LOG("glFlush()");
1370 AEMU_SCOPED_TRACE("glFlush encode");
1371
1372 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1373 IOStream *stream = ctx->m_stream;
1374 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1375 bool useChecksum = checksumCalculator->getVersion() > 0;
1376
1377 unsigned char *ptr;
1378 unsigned char *buf;
1379 const size_t sizeWithoutChecksum = 8;
1380 const size_t checksumSize = checksumCalculator->checksumByteSize();
1381 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1382 buf = stream->alloc(totalSize);
1383 ptr = buf;
1384 int tmp = OP_glFlush;memcpy(ptr, &tmp, 4); ptr += 4;
1385 memcpy(ptr, &totalSize, 4); ptr += 4;
1386
1387
1388 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1389 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1390
1391 }
1392
glFramebufferRenderbuffer_enc(void * self,GLenum target,GLenum attachment,GLenum renderbuffertarget,GLuint renderbuffer)1393 void glFramebufferRenderbuffer_enc(void *self , GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
1394 {
1395 ENCODER_DEBUG_LOG("glFramebufferRenderbuffer(target:0x%08x, attachment:0x%08x, renderbuffertarget:0x%08x, renderbuffer:%u)", target, attachment, renderbuffertarget, renderbuffer);
1396 AEMU_SCOPED_TRACE("glFramebufferRenderbuffer encode");
1397
1398 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1399 IOStream *stream = ctx->m_stream;
1400 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1401 bool useChecksum = checksumCalculator->getVersion() > 0;
1402
1403 unsigned char *ptr;
1404 unsigned char *buf;
1405 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
1406 const size_t checksumSize = checksumCalculator->checksumByteSize();
1407 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1408 buf = stream->alloc(totalSize);
1409 ptr = buf;
1410 int tmp = OP_glFramebufferRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
1411 memcpy(ptr, &totalSize, 4); ptr += 4;
1412
1413 memcpy(ptr, &target, 4); ptr += 4;
1414 memcpy(ptr, &attachment, 4); ptr += 4;
1415 memcpy(ptr, &renderbuffertarget, 4); ptr += 4;
1416 memcpy(ptr, &renderbuffer, 4); ptr += 4;
1417
1418 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1419 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1420
1421 }
1422
glFramebufferTexture2D_enc(void * self,GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level)1423 void glFramebufferTexture2D_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
1424 {
1425 ENCODER_DEBUG_LOG("glFramebufferTexture2D(target:0x%08x, attachment:0x%08x, textarget:0x%08x, texture:%u, level:%d)", target, attachment, textarget, texture, level);
1426 AEMU_SCOPED_TRACE("glFramebufferTexture2D encode");
1427
1428 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1429 IOStream *stream = ctx->m_stream;
1430 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1431 bool useChecksum = checksumCalculator->getVersion() > 0;
1432
1433 unsigned char *ptr;
1434 unsigned char *buf;
1435 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
1436 const size_t checksumSize = checksumCalculator->checksumByteSize();
1437 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1438 buf = stream->alloc(totalSize);
1439 ptr = buf;
1440 int tmp = OP_glFramebufferTexture2D;memcpy(ptr, &tmp, 4); ptr += 4;
1441 memcpy(ptr, &totalSize, 4); ptr += 4;
1442
1443 memcpy(ptr, &target, 4); ptr += 4;
1444 memcpy(ptr, &attachment, 4); ptr += 4;
1445 memcpy(ptr, &textarget, 4); ptr += 4;
1446 memcpy(ptr, &texture, 4); ptr += 4;
1447 memcpy(ptr, &level, 4); ptr += 4;
1448
1449 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1450 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1451
1452 }
1453
glFrontFace_enc(void * self,GLenum mode)1454 void glFrontFace_enc(void *self , GLenum mode)
1455 {
1456 ENCODER_DEBUG_LOG("glFrontFace(mode:0x%08x)", mode);
1457 AEMU_SCOPED_TRACE("glFrontFace encode");
1458
1459 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1460 IOStream *stream = ctx->m_stream;
1461 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1462 bool useChecksum = checksumCalculator->getVersion() > 0;
1463
1464 unsigned char *ptr;
1465 unsigned char *buf;
1466 const size_t sizeWithoutChecksum = 8 + 4;
1467 const size_t checksumSize = checksumCalculator->checksumByteSize();
1468 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1469 buf = stream->alloc(totalSize);
1470 ptr = buf;
1471 int tmp = OP_glFrontFace;memcpy(ptr, &tmp, 4); ptr += 4;
1472 memcpy(ptr, &totalSize, 4); ptr += 4;
1473
1474 memcpy(ptr, &mode, 4); ptr += 4;
1475
1476 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1477 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1478
1479 }
1480
glGenBuffers_enc(void * self,GLsizei n,GLuint * buffers)1481 void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers)
1482 {
1483 ENCODER_DEBUG_LOG("glGenBuffers(n:%d, buffers:0x%08x)", n, buffers);
1484 AEMU_SCOPED_TRACE("glGenBuffers encode");
1485
1486 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1487 IOStream *stream = ctx->m_stream;
1488 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1489 bool useChecksum = checksumCalculator->getVersion() > 0;
1490
1491 const unsigned int __size_buffers = (n * sizeof(GLuint));
1492 unsigned char *ptr;
1493 unsigned char *buf;
1494 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1495 const size_t checksumSize = checksumCalculator->checksumByteSize();
1496 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1497 buf = stream->alloc(totalSize);
1498 ptr = buf;
1499 int tmp = OP_glGenBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1500 memcpy(ptr, &totalSize, 4); ptr += 4;
1501
1502 memcpy(ptr, &n, 4); ptr += 4;
1503 memcpy(ptr, &__size_buffers, 4); ptr += 4;
1504
1505 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1506 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1507
1508 stream->readback(buffers, __size_buffers);
1509 if (useChecksum) checksumCalculator->addBuffer(buffers, __size_buffers);
1510 if (useChecksum) {
1511 unsigned char *checksumBufPtr = NULL;
1512 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1513 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1514 stream->readback(checksumBufPtr, checksumSize);
1515 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1516 ALOGE("glGenBuffers: GL communication error, please report this issue to b.android.com.\n");
1517 abort();
1518 }
1519 }
1520 }
1521
glGenerateMipmap_enc(void * self,GLenum target)1522 void glGenerateMipmap_enc(void *self , GLenum target)
1523 {
1524 ENCODER_DEBUG_LOG("glGenerateMipmap(target:0x%08x)", target);
1525 AEMU_SCOPED_TRACE("glGenerateMipmap encode");
1526
1527 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1528 IOStream *stream = ctx->m_stream;
1529 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1530 bool useChecksum = checksumCalculator->getVersion() > 0;
1531
1532 unsigned char *ptr;
1533 unsigned char *buf;
1534 const size_t sizeWithoutChecksum = 8 + 4;
1535 const size_t checksumSize = checksumCalculator->checksumByteSize();
1536 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1537 buf = stream->alloc(totalSize);
1538 ptr = buf;
1539 int tmp = OP_glGenerateMipmap;memcpy(ptr, &tmp, 4); ptr += 4;
1540 memcpy(ptr, &totalSize, 4); ptr += 4;
1541
1542 memcpy(ptr, &target, 4); ptr += 4;
1543
1544 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1545 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1546
1547 }
1548
glGenFramebuffers_enc(void * self,GLsizei n,GLuint * framebuffers)1549 void glGenFramebuffers_enc(void *self , GLsizei n, GLuint* framebuffers)
1550 {
1551 ENCODER_DEBUG_LOG("glGenFramebuffers(n:%d, framebuffers:0x%08x)", n, framebuffers);
1552 AEMU_SCOPED_TRACE("glGenFramebuffers encode");
1553
1554 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1555 IOStream *stream = ctx->m_stream;
1556 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1557 bool useChecksum = checksumCalculator->getVersion() > 0;
1558
1559 const unsigned int __size_framebuffers = (n * sizeof(GLuint));
1560 unsigned char *ptr;
1561 unsigned char *buf;
1562 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1563 const size_t checksumSize = checksumCalculator->checksumByteSize();
1564 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1565 buf = stream->alloc(totalSize);
1566 ptr = buf;
1567 int tmp = OP_glGenFramebuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1568 memcpy(ptr, &totalSize, 4); ptr += 4;
1569
1570 memcpy(ptr, &n, 4); ptr += 4;
1571 memcpy(ptr, &__size_framebuffers, 4); ptr += 4;
1572
1573 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1574 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1575
1576 stream->readback(framebuffers, __size_framebuffers);
1577 if (useChecksum) checksumCalculator->addBuffer(framebuffers, __size_framebuffers);
1578 if (useChecksum) {
1579 unsigned char *checksumBufPtr = NULL;
1580 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1581 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1582 stream->readback(checksumBufPtr, checksumSize);
1583 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1584 ALOGE("glGenFramebuffers: GL communication error, please report this issue to b.android.com.\n");
1585 abort();
1586 }
1587 }
1588 }
1589
glGenRenderbuffers_enc(void * self,GLsizei n,GLuint * renderbuffers)1590 void glGenRenderbuffers_enc(void *self , GLsizei n, GLuint* renderbuffers)
1591 {
1592 ENCODER_DEBUG_LOG("glGenRenderbuffers(n:%d, renderbuffers:0x%08x)", n, renderbuffers);
1593 AEMU_SCOPED_TRACE("glGenRenderbuffers encode");
1594
1595 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1596 IOStream *stream = ctx->m_stream;
1597 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1598 bool useChecksum = checksumCalculator->getVersion() > 0;
1599
1600 const unsigned int __size_renderbuffers = (n * sizeof(GLuint));
1601 unsigned char *ptr;
1602 unsigned char *buf;
1603 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1604 const size_t checksumSize = checksumCalculator->checksumByteSize();
1605 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1606 buf = stream->alloc(totalSize);
1607 ptr = buf;
1608 int tmp = OP_glGenRenderbuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1609 memcpy(ptr, &totalSize, 4); ptr += 4;
1610
1611 memcpy(ptr, &n, 4); ptr += 4;
1612 memcpy(ptr, &__size_renderbuffers, 4); ptr += 4;
1613
1614 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1615 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1616
1617 stream->readback(renderbuffers, __size_renderbuffers);
1618 if (useChecksum) checksumCalculator->addBuffer(renderbuffers, __size_renderbuffers);
1619 if (useChecksum) {
1620 unsigned char *checksumBufPtr = NULL;
1621 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1622 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1623 stream->readback(checksumBufPtr, checksumSize);
1624 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1625 ALOGE("glGenRenderbuffers: GL communication error, please report this issue to b.android.com.\n");
1626 abort();
1627 }
1628 }
1629 }
1630
glGenTextures_enc(void * self,GLsizei n,GLuint * textures)1631 void glGenTextures_enc(void *self , GLsizei n, GLuint* textures)
1632 {
1633 ENCODER_DEBUG_LOG("glGenTextures(n:%d, textures:0x%08x)", n, textures);
1634 AEMU_SCOPED_TRACE("glGenTextures encode");
1635
1636 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1637 IOStream *stream = ctx->m_stream;
1638 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1639 bool useChecksum = checksumCalculator->getVersion() > 0;
1640
1641 const unsigned int __size_textures = (n * sizeof(GLuint));
1642 unsigned char *ptr;
1643 unsigned char *buf;
1644 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1645 const size_t checksumSize = checksumCalculator->checksumByteSize();
1646 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1647 buf = stream->alloc(totalSize);
1648 ptr = buf;
1649 int tmp = OP_glGenTextures;memcpy(ptr, &tmp, 4); ptr += 4;
1650 memcpy(ptr, &totalSize, 4); ptr += 4;
1651
1652 memcpy(ptr, &n, 4); ptr += 4;
1653 memcpy(ptr, &__size_textures, 4); ptr += 4;
1654
1655 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1656 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1657
1658 stream->readback(textures, __size_textures);
1659 if (useChecksum) checksumCalculator->addBuffer(textures, __size_textures);
1660 if (useChecksum) {
1661 unsigned char *checksumBufPtr = NULL;
1662 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1663 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1664 stream->readback(checksumBufPtr, checksumSize);
1665 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1666 ALOGE("glGenTextures: GL communication error, please report this issue to b.android.com.\n");
1667 abort();
1668 }
1669 }
1670 }
1671
glGetActiveAttrib_enc(void * self,GLuint program,GLuint index,GLsizei bufsize,GLsizei * length,GLint * size,GLenum * type,GLchar * name)1672 void glGetActiveAttrib_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
1673 {
1674 ENCODER_DEBUG_LOG("glGetActiveAttrib(program:%u, index:%u, bufsize:%d, length:0x%08x, size:0x%08x, type:0x%08x, name:0x%08x)", program, index, bufsize, length, size, type, name);
1675 AEMU_SCOPED_TRACE("glGetActiveAttrib encode");
1676
1677 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1678 IOStream *stream = ctx->m_stream;
1679 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1680 bool useChecksum = checksumCalculator->getVersion() > 0;
1681
1682 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
1683 const unsigned int __size_size = ((size != NULL) ? (sizeof(GLint)) : 0);
1684 const unsigned int __size_type = ((type != NULL) ? (sizeof(GLenum)) : 0);
1685 const unsigned int __size_name = ((name != NULL) ? bufsize : 0);
1686 unsigned char *ptr;
1687 unsigned char *buf;
1688 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
1689 const size_t checksumSize = checksumCalculator->checksumByteSize();
1690 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1691 buf = stream->alloc(totalSize);
1692 ptr = buf;
1693 int tmp = OP_glGetActiveAttrib;memcpy(ptr, &tmp, 4); ptr += 4;
1694 memcpy(ptr, &totalSize, 4); ptr += 4;
1695
1696 memcpy(ptr, &program, 4); ptr += 4;
1697 memcpy(ptr, &index, 4); ptr += 4;
1698 memcpy(ptr, &bufsize, 4); ptr += 4;
1699 memcpy(ptr, &__size_length, 4); ptr += 4;
1700 memcpy(ptr, &__size_size, 4); ptr += 4;
1701 memcpy(ptr, &__size_type, 4); ptr += 4;
1702 memcpy(ptr, &__size_name, 4); ptr += 4;
1703
1704 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1705 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1706
1707 if (length != NULL) {
1708 stream->readback(length, __size_length);
1709 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
1710 }
1711 if (size != NULL) {
1712 stream->readback(size, __size_size);
1713 if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
1714 }
1715 if (type != NULL) {
1716 stream->readback(type, __size_type);
1717 if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
1718 }
1719 if (name != NULL) {
1720 stream->readback(name, __size_name);
1721 if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
1722 }
1723 if (useChecksum) {
1724 unsigned char *checksumBufPtr = NULL;
1725 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1726 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1727 stream->readback(checksumBufPtr, checksumSize);
1728 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1729 ALOGE("glGetActiveAttrib: GL communication error, please report this issue to b.android.com.\n");
1730 abort();
1731 }
1732 }
1733 }
1734
glGetActiveUniform_enc(void * self,GLuint program,GLuint index,GLsizei bufsize,GLsizei * length,GLint * size,GLenum * type,GLchar * name)1735 void glGetActiveUniform_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
1736 {
1737 ENCODER_DEBUG_LOG("glGetActiveUniform(program:%u, index:%u, bufsize:%d, length:0x%08x, size:0x%08x, type:0x%08x, name:0x%08x)", program, index, bufsize, length, size, type, name);
1738 AEMU_SCOPED_TRACE("glGetActiveUniform encode");
1739
1740 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1741 IOStream *stream = ctx->m_stream;
1742 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1743 bool useChecksum = checksumCalculator->getVersion() > 0;
1744
1745 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
1746 const unsigned int __size_size = ((size != NULL) ? (sizeof(GLint)) : 0);
1747 const unsigned int __size_type = ((type != NULL) ? (sizeof(GLenum)) : 0);
1748 const unsigned int __size_name = ((name != NULL) ? bufsize : 0);
1749 unsigned char *ptr;
1750 unsigned char *buf;
1751 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
1752 const size_t checksumSize = checksumCalculator->checksumByteSize();
1753 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1754 buf = stream->alloc(totalSize);
1755 ptr = buf;
1756 int tmp = OP_glGetActiveUniform;memcpy(ptr, &tmp, 4); ptr += 4;
1757 memcpy(ptr, &totalSize, 4); ptr += 4;
1758
1759 memcpy(ptr, &program, 4); ptr += 4;
1760 memcpy(ptr, &index, 4); ptr += 4;
1761 memcpy(ptr, &bufsize, 4); ptr += 4;
1762 memcpy(ptr, &__size_length, 4); ptr += 4;
1763 memcpy(ptr, &__size_size, 4); ptr += 4;
1764 memcpy(ptr, &__size_type, 4); ptr += 4;
1765 memcpy(ptr, &__size_name, 4); ptr += 4;
1766
1767 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1768 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1769
1770 if (length != NULL) {
1771 stream->readback(length, __size_length);
1772 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
1773 }
1774 if (size != NULL) {
1775 stream->readback(size, __size_size);
1776 if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
1777 }
1778 if (type != NULL) {
1779 stream->readback(type, __size_type);
1780 if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
1781 }
1782 if (name != NULL) {
1783 stream->readback(name, __size_name);
1784 if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
1785 }
1786 if (useChecksum) {
1787 unsigned char *checksumBufPtr = NULL;
1788 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1789 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1790 stream->readback(checksumBufPtr, checksumSize);
1791 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1792 ALOGE("glGetActiveUniform: GL communication error, please report this issue to b.android.com.\n");
1793 abort();
1794 }
1795 }
1796 }
1797
glGetAttachedShaders_enc(void * self,GLuint program,GLsizei maxcount,GLsizei * count,GLuint * shaders)1798 void glGetAttachedShaders_enc(void *self , GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
1799 {
1800 ENCODER_DEBUG_LOG("glGetAttachedShaders(program:%u, maxcount:%d, count:0x%08x, shaders:0x%08x)", program, maxcount, count, shaders);
1801 AEMU_SCOPED_TRACE("glGetAttachedShaders encode");
1802
1803 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1804 IOStream *stream = ctx->m_stream;
1805 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1806 bool useChecksum = checksumCalculator->getVersion() > 0;
1807
1808 const unsigned int __size_count = ((count != NULL) ? (sizeof(GLsizei)) : 0);
1809 const unsigned int __size_shaders = (maxcount*sizeof(GLuint));
1810 unsigned char *ptr;
1811 unsigned char *buf;
1812 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
1813 const size_t checksumSize = checksumCalculator->checksumByteSize();
1814 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1815 buf = stream->alloc(totalSize);
1816 ptr = buf;
1817 int tmp = OP_glGetAttachedShaders;memcpy(ptr, &tmp, 4); ptr += 4;
1818 memcpy(ptr, &totalSize, 4); ptr += 4;
1819
1820 memcpy(ptr, &program, 4); ptr += 4;
1821 memcpy(ptr, &maxcount, 4); ptr += 4;
1822 memcpy(ptr, &__size_count, 4); ptr += 4;
1823 memcpy(ptr, &__size_shaders, 4); ptr += 4;
1824
1825 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1826 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1827
1828 if (count != NULL) {
1829 stream->readback(count, __size_count);
1830 if (useChecksum) checksumCalculator->addBuffer(count, __size_count);
1831 }
1832 stream->readback(shaders, __size_shaders);
1833 if (useChecksum) checksumCalculator->addBuffer(shaders, __size_shaders);
1834 if (useChecksum) {
1835 unsigned char *checksumBufPtr = NULL;
1836 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1837 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1838 stream->readback(checksumBufPtr, checksumSize);
1839 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1840 ALOGE("glGetAttachedShaders: GL communication error, please report this issue to b.android.com.\n");
1841 abort();
1842 }
1843 }
1844 }
1845
glGetAttribLocation_enc(void * self,GLuint program,const GLchar * name)1846 int glGetAttribLocation_enc(void *self , GLuint program, const GLchar* name)
1847 {
1848 ENCODER_DEBUG_LOG("glGetAttribLocation(program:%u, name:0x%08x)", program, name);
1849 AEMU_SCOPED_TRACE("glGetAttribLocation encode");
1850
1851 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1852 IOStream *stream = ctx->m_stream;
1853 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1854 bool useChecksum = checksumCalculator->getVersion() > 0;
1855
1856 const unsigned int __size_name = (strlen(name) + 1);
1857 unsigned char *ptr;
1858 unsigned char *buf;
1859 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
1860 const size_t checksumSize = checksumCalculator->checksumByteSize();
1861 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1862 buf = stream->alloc(totalSize);
1863 ptr = buf;
1864 int tmp = OP_glGetAttribLocation;memcpy(ptr, &tmp, 4); ptr += 4;
1865 memcpy(ptr, &totalSize, 4); ptr += 4;
1866
1867 memcpy(ptr, &program, 4); ptr += 4;
1868 memcpy(ptr, &__size_name, 4); ptr += 4;
1869 memcpy(ptr, name, __size_name);ptr += __size_name;
1870
1871 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1872 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1873
1874
1875 int retval;
1876 stream->readback(&retval, 4);
1877 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
1878 if (useChecksum) {
1879 unsigned char *checksumBufPtr = NULL;
1880 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1881 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1882 stream->readback(checksumBufPtr, checksumSize);
1883 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1884 ALOGE("glGetAttribLocation: GL communication error, please report this issue to b.android.com.\n");
1885 abort();
1886 }
1887 }
1888 return retval;
1889 }
1890
glGetBooleanv_enc(void * self,GLenum pname,GLboolean * params)1891 void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params)
1892 {
1893 ENCODER_DEBUG_LOG("glGetBooleanv(pname:0x%08x, params:0x%08x)", pname, params);
1894 AEMU_SCOPED_TRACE("glGetBooleanv encode");
1895
1896 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1897 IOStream *stream = ctx->m_stream;
1898 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1899 bool useChecksum = checksumCalculator->getVersion() > 0;
1900
1901 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLboolean));
1902 unsigned char *ptr;
1903 unsigned char *buf;
1904 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1905 const size_t checksumSize = checksumCalculator->checksumByteSize();
1906 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1907 buf = stream->alloc(totalSize);
1908 ptr = buf;
1909 int tmp = OP_glGetBooleanv;memcpy(ptr, &tmp, 4); ptr += 4;
1910 memcpy(ptr, &totalSize, 4); ptr += 4;
1911
1912 memcpy(ptr, &pname, 4); ptr += 4;
1913 memcpy(ptr, &__size_params, 4); ptr += 4;
1914
1915 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1916 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1917
1918 stream->readback(params, __size_params);
1919 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
1920 if (useChecksum) {
1921 unsigned char *checksumBufPtr = NULL;
1922 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1923 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1924 stream->readback(checksumBufPtr, checksumSize);
1925 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1926 ALOGE("glGetBooleanv: GL communication error, please report this issue to b.android.com.\n");
1927 abort();
1928 }
1929 }
1930 }
1931
glGetBufferParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)1932 void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
1933 {
1934 ENCODER_DEBUG_LOG("glGetBufferParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
1935 AEMU_SCOPED_TRACE("glGetBufferParameteriv encode");
1936
1937 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1938 IOStream *stream = ctx->m_stream;
1939 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1940 bool useChecksum = checksumCalculator->getVersion() > 0;
1941
1942 const unsigned int __size_params = (sizeof(GLint));
1943 unsigned char *ptr;
1944 unsigned char *buf;
1945 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
1946 const size_t checksumSize = checksumCalculator->checksumByteSize();
1947 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1948 buf = stream->alloc(totalSize);
1949 ptr = buf;
1950 int tmp = OP_glGetBufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
1951 memcpy(ptr, &totalSize, 4); ptr += 4;
1952
1953 memcpy(ptr, &target, 4); ptr += 4;
1954 memcpy(ptr, &pname, 4); ptr += 4;
1955 memcpy(ptr, &__size_params, 4); ptr += 4;
1956
1957 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1958 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1959
1960 stream->readback(params, __size_params);
1961 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
1962 if (useChecksum) {
1963 unsigned char *checksumBufPtr = NULL;
1964 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1965 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1966 stream->readback(checksumBufPtr, checksumSize);
1967 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1968 ALOGE("glGetBufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
1969 abort();
1970 }
1971 }
1972 }
1973
glGetError_enc(void * self)1974 GLenum glGetError_enc(void *self )
1975 {
1976 ENCODER_DEBUG_LOG("glGetError()");
1977 AEMU_SCOPED_TRACE("glGetError encode");
1978
1979 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1980 IOStream *stream = ctx->m_stream;
1981 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1982 bool useChecksum = checksumCalculator->getVersion() > 0;
1983
1984 unsigned char *ptr;
1985 unsigned char *buf;
1986 const size_t sizeWithoutChecksum = 8;
1987 const size_t checksumSize = checksumCalculator->checksumByteSize();
1988 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1989 buf = stream->alloc(totalSize);
1990 ptr = buf;
1991 int tmp = OP_glGetError;memcpy(ptr, &tmp, 4); ptr += 4;
1992 memcpy(ptr, &totalSize, 4); ptr += 4;
1993
1994
1995 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1996 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1997
1998
1999 GLenum retval;
2000 stream->readback(&retval, 4);
2001 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
2002 if (useChecksum) {
2003 unsigned char *checksumBufPtr = NULL;
2004 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2005 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2006 stream->readback(checksumBufPtr, checksumSize);
2007 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2008 ALOGE("glGetError: GL communication error, please report this issue to b.android.com.\n");
2009 abort();
2010 }
2011 }
2012 return retval;
2013 }
2014
glGetFloatv_enc(void * self,GLenum pname,GLfloat * params)2015 void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params)
2016 {
2017 ENCODER_DEBUG_LOG("glGetFloatv(pname:0x%08x, params:0x%08x)", pname, params);
2018 AEMU_SCOPED_TRACE("glGetFloatv encode");
2019
2020 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2021 IOStream *stream = ctx->m_stream;
2022 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2023 bool useChecksum = checksumCalculator->getVersion() > 0;
2024
2025 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
2026 unsigned char *ptr;
2027 unsigned char *buf;
2028 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
2029 const size_t checksumSize = checksumCalculator->checksumByteSize();
2030 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2031 buf = stream->alloc(totalSize);
2032 ptr = buf;
2033 int tmp = OP_glGetFloatv;memcpy(ptr, &tmp, 4); ptr += 4;
2034 memcpy(ptr, &totalSize, 4); ptr += 4;
2035
2036 memcpy(ptr, &pname, 4); ptr += 4;
2037 memcpy(ptr, &__size_params, 4); ptr += 4;
2038
2039 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2040 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2041
2042 stream->readback(params, __size_params);
2043 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2044 if (useChecksum) {
2045 unsigned char *checksumBufPtr = NULL;
2046 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2047 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2048 stream->readback(checksumBufPtr, checksumSize);
2049 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2050 ALOGE("glGetFloatv: GL communication error, please report this issue to b.android.com.\n");
2051 abort();
2052 }
2053 }
2054 }
2055
glGetFramebufferAttachmentParameteriv_enc(void * self,GLenum target,GLenum attachment,GLenum pname,GLint * params)2056 void glGetFramebufferAttachmentParameteriv_enc(void *self , GLenum target, GLenum attachment, GLenum pname, GLint* params)
2057 {
2058 ENCODER_DEBUG_LOG("glGetFramebufferAttachmentParameteriv(target:0x%08x, attachment:0x%08x, pname:0x%08x, params:0x%08x)", target, attachment, pname, params);
2059 AEMU_SCOPED_TRACE("glGetFramebufferAttachmentParameteriv encode");
2060
2061 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2062 IOStream *stream = ctx->m_stream;
2063 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2064 bool useChecksum = checksumCalculator->getVersion() > 0;
2065
2066 const unsigned int __size_params = (sizeof(GLint));
2067 unsigned char *ptr;
2068 unsigned char *buf;
2069 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
2070 const size_t checksumSize = checksumCalculator->checksumByteSize();
2071 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2072 buf = stream->alloc(totalSize);
2073 ptr = buf;
2074 int tmp = OP_glGetFramebufferAttachmentParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2075 memcpy(ptr, &totalSize, 4); ptr += 4;
2076
2077 memcpy(ptr, &target, 4); ptr += 4;
2078 memcpy(ptr, &attachment, 4); ptr += 4;
2079 memcpy(ptr, &pname, 4); ptr += 4;
2080 memcpy(ptr, &__size_params, 4); ptr += 4;
2081
2082 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2083 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2084
2085 stream->readback(params, __size_params);
2086 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2087 if (useChecksum) {
2088 unsigned char *checksumBufPtr = NULL;
2089 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2090 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2091 stream->readback(checksumBufPtr, checksumSize);
2092 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2093 ALOGE("glGetFramebufferAttachmentParameteriv: GL communication error, please report this issue to b.android.com.\n");
2094 abort();
2095 }
2096 }
2097 }
2098
glGetIntegerv_enc(void * self,GLenum pname,GLint * params)2099 void glGetIntegerv_enc(void *self , GLenum pname, GLint* params)
2100 {
2101 ENCODER_DEBUG_LOG("glGetIntegerv(pname:0x%08x, params:0x%08x)", pname, params);
2102 AEMU_SCOPED_TRACE("glGetIntegerv encode");
2103
2104 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2105 IOStream *stream = ctx->m_stream;
2106 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2107 bool useChecksum = checksumCalculator->getVersion() > 0;
2108
2109 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
2110 unsigned char *ptr;
2111 unsigned char *buf;
2112 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
2113 const size_t checksumSize = checksumCalculator->checksumByteSize();
2114 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2115 buf = stream->alloc(totalSize);
2116 ptr = buf;
2117 int tmp = OP_glGetIntegerv;memcpy(ptr, &tmp, 4); ptr += 4;
2118 memcpy(ptr, &totalSize, 4); ptr += 4;
2119
2120 memcpy(ptr, &pname, 4); ptr += 4;
2121 memcpy(ptr, &__size_params, 4); ptr += 4;
2122
2123 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2124 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2125
2126 stream->readback(params, __size_params);
2127 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2128 if (useChecksum) {
2129 unsigned char *checksumBufPtr = NULL;
2130 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2131 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2132 stream->readback(checksumBufPtr, checksumSize);
2133 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2134 ALOGE("glGetIntegerv: GL communication error, please report this issue to b.android.com.\n");
2135 abort();
2136 }
2137 }
2138 }
2139
glGetProgramiv_enc(void * self,GLuint program,GLenum pname,GLint * params)2140 void glGetProgramiv_enc(void *self , GLuint program, GLenum pname, GLint* params)
2141 {
2142 ENCODER_DEBUG_LOG("glGetProgramiv(program:%u, pname:0x%08x, params:0x%08x)", program, pname, params);
2143 AEMU_SCOPED_TRACE("glGetProgramiv encode");
2144
2145 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2146 IOStream *stream = ctx->m_stream;
2147 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2148 bool useChecksum = checksumCalculator->getVersion() > 0;
2149
2150 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
2151 unsigned char *ptr;
2152 unsigned char *buf;
2153 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2154 const size_t checksumSize = checksumCalculator->checksumByteSize();
2155 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2156 buf = stream->alloc(totalSize);
2157 ptr = buf;
2158 int tmp = OP_glGetProgramiv;memcpy(ptr, &tmp, 4); ptr += 4;
2159 memcpy(ptr, &totalSize, 4); ptr += 4;
2160
2161 memcpy(ptr, &program, 4); ptr += 4;
2162 memcpy(ptr, &pname, 4); ptr += 4;
2163 memcpy(ptr, &__size_params, 4); ptr += 4;
2164
2165 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2166 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2167
2168 stream->readback(params, __size_params);
2169 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2170 if (useChecksum) {
2171 unsigned char *checksumBufPtr = NULL;
2172 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2173 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2174 stream->readback(checksumBufPtr, checksumSize);
2175 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2176 ALOGE("glGetProgramiv: GL communication error, please report this issue to b.android.com.\n");
2177 abort();
2178 }
2179 }
2180 }
2181
glGetProgramInfoLog_enc(void * self,GLuint program,GLsizei bufsize,GLsizei * length,GLchar * infolog)2182 void glGetProgramInfoLog_enc(void *self , GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
2183 {
2184 ENCODER_DEBUG_LOG("glGetProgramInfoLog(program:%u, bufsize:%d, length:0x%08x, infolog:0x%08x)", program, bufsize, length, infolog);
2185 AEMU_SCOPED_TRACE("glGetProgramInfoLog encode");
2186
2187 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2188 IOStream *stream = ctx->m_stream;
2189 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2190 bool useChecksum = checksumCalculator->getVersion() > 0;
2191
2192 const unsigned int __size_length = ((length != NULL) ? sizeof(GLsizei) : 0);
2193 const unsigned int __size_infolog = bufsize;
2194 unsigned char *ptr;
2195 unsigned char *buf;
2196 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2197 const size_t checksumSize = checksumCalculator->checksumByteSize();
2198 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2199 buf = stream->alloc(totalSize);
2200 ptr = buf;
2201 int tmp = OP_glGetProgramInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
2202 memcpy(ptr, &totalSize, 4); ptr += 4;
2203
2204 memcpy(ptr, &program, 4); ptr += 4;
2205 memcpy(ptr, &bufsize, 4); ptr += 4;
2206 memcpy(ptr, &__size_length, 4); ptr += 4;
2207 memcpy(ptr, &__size_infolog, 4); ptr += 4;
2208
2209 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2210 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2211
2212 if (length != NULL) {
2213 stream->readback(length, __size_length);
2214 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2215 }
2216 stream->readback(infolog, __size_infolog);
2217 if (useChecksum) checksumCalculator->addBuffer(infolog, __size_infolog);
2218 if (useChecksum) {
2219 unsigned char *checksumBufPtr = NULL;
2220 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2221 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2222 stream->readback(checksumBufPtr, checksumSize);
2223 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2224 ALOGE("glGetProgramInfoLog: GL communication error, please report this issue to b.android.com.\n");
2225 abort();
2226 }
2227 }
2228 }
2229
glGetRenderbufferParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)2230 void glGetRenderbufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
2231 {
2232 ENCODER_DEBUG_LOG("glGetRenderbufferParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
2233 AEMU_SCOPED_TRACE("glGetRenderbufferParameteriv encode");
2234
2235 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2236 IOStream *stream = ctx->m_stream;
2237 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2238 bool useChecksum = checksumCalculator->getVersion() > 0;
2239
2240 const unsigned int __size_params = sizeof(GLint);
2241 unsigned char *ptr;
2242 unsigned char *buf;
2243 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2244 const size_t checksumSize = checksumCalculator->checksumByteSize();
2245 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2246 buf = stream->alloc(totalSize);
2247 ptr = buf;
2248 int tmp = OP_glGetRenderbufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2249 memcpy(ptr, &totalSize, 4); ptr += 4;
2250
2251 memcpy(ptr, &target, 4); ptr += 4;
2252 memcpy(ptr, &pname, 4); ptr += 4;
2253 memcpy(ptr, &__size_params, 4); ptr += 4;
2254
2255 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2256 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2257
2258 stream->readback(params, __size_params);
2259 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2260 if (useChecksum) {
2261 unsigned char *checksumBufPtr = NULL;
2262 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2263 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2264 stream->readback(checksumBufPtr, checksumSize);
2265 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2266 ALOGE("glGetRenderbufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
2267 abort();
2268 }
2269 }
2270 }
2271
glGetShaderiv_enc(void * self,GLuint shader,GLenum pname,GLint * params)2272 void glGetShaderiv_enc(void *self , GLuint shader, GLenum pname, GLint* params)
2273 {
2274 ENCODER_DEBUG_LOG("glGetShaderiv(shader:%u, pname:0x%08x, params:0x%08x)", shader, pname, params);
2275 AEMU_SCOPED_TRACE("glGetShaderiv encode");
2276
2277 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2278 IOStream *stream = ctx->m_stream;
2279 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2280 bool useChecksum = checksumCalculator->getVersion() > 0;
2281
2282 const unsigned int __size_params = sizeof(GLint);
2283 unsigned char *ptr;
2284 unsigned char *buf;
2285 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2286 const size_t checksumSize = checksumCalculator->checksumByteSize();
2287 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2288 buf = stream->alloc(totalSize);
2289 ptr = buf;
2290 int tmp = OP_glGetShaderiv;memcpy(ptr, &tmp, 4); ptr += 4;
2291 memcpy(ptr, &totalSize, 4); ptr += 4;
2292
2293 memcpy(ptr, &shader, 4); ptr += 4;
2294 memcpy(ptr, &pname, 4); ptr += 4;
2295 memcpy(ptr, &__size_params, 4); ptr += 4;
2296
2297 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2298 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2299
2300 stream->readback(params, __size_params);
2301 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2302 if (useChecksum) {
2303 unsigned char *checksumBufPtr = NULL;
2304 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2305 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2306 stream->readback(checksumBufPtr, checksumSize);
2307 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2308 ALOGE("glGetShaderiv: GL communication error, please report this issue to b.android.com.\n");
2309 abort();
2310 }
2311 }
2312 }
2313
glGetShaderInfoLog_enc(void * self,GLuint shader,GLsizei bufsize,GLsizei * length,GLchar * infolog)2314 void glGetShaderInfoLog_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
2315 {
2316 ENCODER_DEBUG_LOG("glGetShaderInfoLog(shader:%u, bufsize:%d, length:0x%08x, infolog:0x%08x)", shader, bufsize, length, infolog);
2317 AEMU_SCOPED_TRACE("glGetShaderInfoLog encode");
2318
2319 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2320 IOStream *stream = ctx->m_stream;
2321 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2322 bool useChecksum = checksumCalculator->getVersion() > 0;
2323
2324 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
2325 const unsigned int __size_infolog = bufsize;
2326 unsigned char *ptr;
2327 unsigned char *buf;
2328 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2329 const size_t checksumSize = checksumCalculator->checksumByteSize();
2330 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2331 buf = stream->alloc(totalSize);
2332 ptr = buf;
2333 int tmp = OP_glGetShaderInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
2334 memcpy(ptr, &totalSize, 4); ptr += 4;
2335
2336 memcpy(ptr, &shader, 4); ptr += 4;
2337 memcpy(ptr, &bufsize, 4); ptr += 4;
2338 memcpy(ptr, &__size_length, 4); ptr += 4;
2339 memcpy(ptr, &__size_infolog, 4); ptr += 4;
2340
2341 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2342 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2343
2344 if (length != NULL) {
2345 stream->readback(length, __size_length);
2346 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2347 }
2348 stream->readback(infolog, __size_infolog);
2349 if (useChecksum) checksumCalculator->addBuffer(infolog, __size_infolog);
2350 if (useChecksum) {
2351 unsigned char *checksumBufPtr = NULL;
2352 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2353 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2354 stream->readback(checksumBufPtr, checksumSize);
2355 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2356 ALOGE("glGetShaderInfoLog: GL communication error, please report this issue to b.android.com.\n");
2357 abort();
2358 }
2359 }
2360 }
2361
glGetShaderPrecisionFormat_enc(void * self,GLenum shadertype,GLenum precisiontype,GLint * range,GLint * precision)2362 void glGetShaderPrecisionFormat_enc(void *self , GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
2363 {
2364 ENCODER_DEBUG_LOG("glGetShaderPrecisionFormat(shadertype:0x%08x, precisiontype:0x%08x, range:0x%08x, precision:0x%08x)", shadertype, precisiontype, range, precision);
2365 AEMU_SCOPED_TRACE("glGetShaderPrecisionFormat encode");
2366
2367 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2368 IOStream *stream = ctx->m_stream;
2369 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2370 bool useChecksum = checksumCalculator->getVersion() > 0;
2371
2372 const unsigned int __size_range = (2 * sizeof(GLint));
2373 const unsigned int __size_precision = (sizeof(GLint));
2374 unsigned char *ptr;
2375 unsigned char *buf;
2376 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2377 const size_t checksumSize = checksumCalculator->checksumByteSize();
2378 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2379 buf = stream->alloc(totalSize);
2380 ptr = buf;
2381 int tmp = OP_glGetShaderPrecisionFormat;memcpy(ptr, &tmp, 4); ptr += 4;
2382 memcpy(ptr, &totalSize, 4); ptr += 4;
2383
2384 memcpy(ptr, &shadertype, 4); ptr += 4;
2385 memcpy(ptr, &precisiontype, 4); ptr += 4;
2386 memcpy(ptr, &__size_range, 4); ptr += 4;
2387 memcpy(ptr, &__size_precision, 4); ptr += 4;
2388
2389 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2390 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2391
2392 stream->readback(range, __size_range);
2393 if (useChecksum) checksumCalculator->addBuffer(range, __size_range);
2394 stream->readback(precision, __size_precision);
2395 if (useChecksum) checksumCalculator->addBuffer(precision, __size_precision);
2396 if (useChecksum) {
2397 unsigned char *checksumBufPtr = NULL;
2398 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2399 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2400 stream->readback(checksumBufPtr, checksumSize);
2401 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2402 ALOGE("glGetShaderPrecisionFormat: GL communication error, please report this issue to b.android.com.\n");
2403 abort();
2404 }
2405 }
2406 }
2407
glGetShaderSource_enc(void * self,GLuint shader,GLsizei bufsize,GLsizei * length,GLchar * source)2408 void glGetShaderSource_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
2409 {
2410 ENCODER_DEBUG_LOG("glGetShaderSource(shader:%u, bufsize:%d, length:0x%08x, source:0x%08x)", shader, bufsize, length, source);
2411 AEMU_SCOPED_TRACE("glGetShaderSource encode");
2412
2413 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2414 IOStream *stream = ctx->m_stream;
2415 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2416 bool useChecksum = checksumCalculator->getVersion() > 0;
2417
2418 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
2419 const unsigned int __size_source = bufsize;
2420 unsigned char *ptr;
2421 unsigned char *buf;
2422 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2423 const size_t checksumSize = checksumCalculator->checksumByteSize();
2424 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2425 buf = stream->alloc(totalSize);
2426 ptr = buf;
2427 int tmp = OP_glGetShaderSource;memcpy(ptr, &tmp, 4); ptr += 4;
2428 memcpy(ptr, &totalSize, 4); ptr += 4;
2429
2430 memcpy(ptr, &shader, 4); ptr += 4;
2431 memcpy(ptr, &bufsize, 4); ptr += 4;
2432 memcpy(ptr, &__size_length, 4); ptr += 4;
2433 memcpy(ptr, &__size_source, 4); ptr += 4;
2434
2435 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2436 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2437
2438 if (length != NULL) {
2439 stream->readback(length, __size_length);
2440 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2441 }
2442 stream->readback(source, __size_source);
2443 if (useChecksum) checksumCalculator->addBuffer(source, __size_source);
2444 if (useChecksum) {
2445 unsigned char *checksumBufPtr = NULL;
2446 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2447 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2448 stream->readback(checksumBufPtr, checksumSize);
2449 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2450 ALOGE("glGetShaderSource: GL communication error, please report this issue to b.android.com.\n");
2451 abort();
2452 }
2453 }
2454 }
2455
glGetTexParameterfv_enc(void * self,GLenum target,GLenum pname,GLfloat * params)2456 void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* params)
2457 {
2458 ENCODER_DEBUG_LOG("glGetTexParameterfv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
2459 AEMU_SCOPED_TRACE("glGetTexParameterfv encode");
2460
2461 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2462 IOStream *stream = ctx->m_stream;
2463 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2464 bool useChecksum = checksumCalculator->getVersion() > 0;
2465
2466 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
2467 unsigned char *ptr;
2468 unsigned char *buf;
2469 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2470 const size_t checksumSize = checksumCalculator->checksumByteSize();
2471 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2472 buf = stream->alloc(totalSize);
2473 ptr = buf;
2474 int tmp = OP_glGetTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
2475 memcpy(ptr, &totalSize, 4); ptr += 4;
2476
2477 memcpy(ptr, &target, 4); ptr += 4;
2478 memcpy(ptr, &pname, 4); ptr += 4;
2479 memcpy(ptr, &__size_params, 4); ptr += 4;
2480
2481 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2482 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2483
2484 stream->readback(params, __size_params);
2485 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2486 if (useChecksum) {
2487 unsigned char *checksumBufPtr = NULL;
2488 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2489 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2490 stream->readback(checksumBufPtr, checksumSize);
2491 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2492 ALOGE("glGetTexParameterfv: GL communication error, please report this issue to b.android.com.\n");
2493 abort();
2494 }
2495 }
2496 }
2497
glGetTexParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)2498 void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
2499 {
2500 ENCODER_DEBUG_LOG("glGetTexParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
2501 AEMU_SCOPED_TRACE("glGetTexParameteriv encode");
2502
2503 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2504 IOStream *stream = ctx->m_stream;
2505 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2506 bool useChecksum = checksumCalculator->getVersion() > 0;
2507
2508 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
2509 unsigned char *ptr;
2510 unsigned char *buf;
2511 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2512 const size_t checksumSize = checksumCalculator->checksumByteSize();
2513 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2514 buf = stream->alloc(totalSize);
2515 ptr = buf;
2516 int tmp = OP_glGetTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2517 memcpy(ptr, &totalSize, 4); ptr += 4;
2518
2519 memcpy(ptr, &target, 4); ptr += 4;
2520 memcpy(ptr, &pname, 4); ptr += 4;
2521 memcpy(ptr, &__size_params, 4); ptr += 4;
2522
2523 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2524 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2525
2526 stream->readback(params, __size_params);
2527 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2528 if (useChecksum) {
2529 unsigned char *checksumBufPtr = NULL;
2530 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2531 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2532 stream->readback(checksumBufPtr, checksumSize);
2533 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2534 ALOGE("glGetTexParameteriv: GL communication error, please report this issue to b.android.com.\n");
2535 abort();
2536 }
2537 }
2538 }
2539
glGetUniformfv_enc(void * self,GLuint program,GLint location,GLfloat * params)2540 void glGetUniformfv_enc(void *self , GLuint program, GLint location, GLfloat* params)
2541 {
2542 ENCODER_DEBUG_LOG("glGetUniformfv(program:%u, location:%d, params:0x%08x)", program, location, params);
2543 AEMU_SCOPED_TRACE("glGetUniformfv encode");
2544
2545 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2546 IOStream *stream = ctx->m_stream;
2547 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2548 bool useChecksum = checksumCalculator->getVersion() > 0;
2549
2550 const unsigned int __size_params = glSizeof(glesv2_enc::uniformType(self, program, location));
2551 unsigned char *ptr;
2552 unsigned char *buf;
2553 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2554 const size_t checksumSize = checksumCalculator->checksumByteSize();
2555 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2556 buf = stream->alloc(totalSize);
2557 ptr = buf;
2558 int tmp = OP_glGetUniformfv;memcpy(ptr, &tmp, 4); ptr += 4;
2559 memcpy(ptr, &totalSize, 4); ptr += 4;
2560
2561 memcpy(ptr, &program, 4); ptr += 4;
2562 memcpy(ptr, &location, 4); ptr += 4;
2563 memcpy(ptr, &__size_params, 4); ptr += 4;
2564
2565 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2566 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2567
2568 stream->readback(params, __size_params);
2569 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2570 if (useChecksum) {
2571 unsigned char *checksumBufPtr = NULL;
2572 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2573 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2574 stream->readback(checksumBufPtr, checksumSize);
2575 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2576 ALOGE("glGetUniformfv: GL communication error, please report this issue to b.android.com.\n");
2577 abort();
2578 }
2579 }
2580 }
2581
glGetUniformiv_enc(void * self,GLuint program,GLint location,GLint * params)2582 void glGetUniformiv_enc(void *self , GLuint program, GLint location, GLint* params)
2583 {
2584 ENCODER_DEBUG_LOG("glGetUniformiv(program:%u, location:%d, params:0x%08x)", program, location, params);
2585 AEMU_SCOPED_TRACE("glGetUniformiv encode");
2586
2587 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2588 IOStream *stream = ctx->m_stream;
2589 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2590 bool useChecksum = checksumCalculator->getVersion() > 0;
2591
2592 const unsigned int __size_params = glSizeof(glesv2_enc::uniformType(self, program, location));
2593 unsigned char *ptr;
2594 unsigned char *buf;
2595 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2596 const size_t checksumSize = checksumCalculator->checksumByteSize();
2597 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2598 buf = stream->alloc(totalSize);
2599 ptr = buf;
2600 int tmp = OP_glGetUniformiv;memcpy(ptr, &tmp, 4); ptr += 4;
2601 memcpy(ptr, &totalSize, 4); ptr += 4;
2602
2603 memcpy(ptr, &program, 4); ptr += 4;
2604 memcpy(ptr, &location, 4); ptr += 4;
2605 memcpy(ptr, &__size_params, 4); ptr += 4;
2606
2607 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2608 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2609
2610 stream->readback(params, __size_params);
2611 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2612 if (useChecksum) {
2613 unsigned char *checksumBufPtr = NULL;
2614 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2615 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2616 stream->readback(checksumBufPtr, checksumSize);
2617 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2618 ALOGE("glGetUniformiv: GL communication error, please report this issue to b.android.com.\n");
2619 abort();
2620 }
2621 }
2622 }
2623
glGetUniformLocation_enc(void * self,GLuint program,const GLchar * name)2624 int glGetUniformLocation_enc(void *self , GLuint program, const GLchar* name)
2625 {
2626 ENCODER_DEBUG_LOG("glGetUniformLocation(program:%u, name:0x%08x)", program, name);
2627 AEMU_SCOPED_TRACE("glGetUniformLocation encode");
2628
2629 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2630 IOStream *stream = ctx->m_stream;
2631 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2632 bool useChecksum = checksumCalculator->getVersion() > 0;
2633
2634 const unsigned int __size_name = (strlen(name) + 1);
2635 unsigned char *ptr;
2636 unsigned char *buf;
2637 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
2638 const size_t checksumSize = checksumCalculator->checksumByteSize();
2639 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2640 buf = stream->alloc(totalSize);
2641 ptr = buf;
2642 int tmp = OP_glGetUniformLocation;memcpy(ptr, &tmp, 4); ptr += 4;
2643 memcpy(ptr, &totalSize, 4); ptr += 4;
2644
2645 memcpy(ptr, &program, 4); ptr += 4;
2646 memcpy(ptr, &__size_name, 4); ptr += 4;
2647 memcpy(ptr, name, __size_name);ptr += __size_name;
2648
2649 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2650 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2651
2652
2653 int retval;
2654 stream->readback(&retval, 4);
2655 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
2656 if (useChecksum) {
2657 unsigned char *checksumBufPtr = NULL;
2658 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2659 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2660 stream->readback(checksumBufPtr, checksumSize);
2661 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2662 ALOGE("glGetUniformLocation: GL communication error, please report this issue to b.android.com.\n");
2663 abort();
2664 }
2665 }
2666 return retval;
2667 }
2668
glGetVertexAttribfv_enc(void * self,GLuint index,GLenum pname,GLfloat * params)2669 void glGetVertexAttribfv_enc(void *self , GLuint index, GLenum pname, GLfloat* params)
2670 {
2671 ENCODER_DEBUG_LOG("glGetVertexAttribfv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
2672 AEMU_SCOPED_TRACE("glGetVertexAttribfv encode");
2673
2674 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2675 IOStream *stream = ctx->m_stream;
2676 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2677 bool useChecksum = checksumCalculator->getVersion() > 0;
2678
2679 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
2680 unsigned char *ptr;
2681 unsigned char *buf;
2682 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2683 const size_t checksumSize = checksumCalculator->checksumByteSize();
2684 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2685 buf = stream->alloc(totalSize);
2686 ptr = buf;
2687 int tmp = OP_glGetVertexAttribfv;memcpy(ptr, &tmp, 4); ptr += 4;
2688 memcpy(ptr, &totalSize, 4); ptr += 4;
2689
2690 memcpy(ptr, &index, 4); ptr += 4;
2691 memcpy(ptr, &pname, 4); ptr += 4;
2692 memcpy(ptr, &__size_params, 4); ptr += 4;
2693
2694 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2695 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2696
2697 stream->readback(params, __size_params);
2698 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2699 if (useChecksum) {
2700 unsigned char *checksumBufPtr = NULL;
2701 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2702 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2703 stream->readback(checksumBufPtr, checksumSize);
2704 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2705 ALOGE("glGetVertexAttribfv: GL communication error, please report this issue to b.android.com.\n");
2706 abort();
2707 }
2708 }
2709 }
2710
glGetVertexAttribiv_enc(void * self,GLuint index,GLenum pname,GLint * params)2711 void glGetVertexAttribiv_enc(void *self , GLuint index, GLenum pname, GLint* params)
2712 {
2713 ENCODER_DEBUG_LOG("glGetVertexAttribiv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
2714 AEMU_SCOPED_TRACE("glGetVertexAttribiv encode");
2715
2716 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2717 IOStream *stream = ctx->m_stream;
2718 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2719 bool useChecksum = checksumCalculator->getVersion() > 0;
2720
2721 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
2722 unsigned char *ptr;
2723 unsigned char *buf;
2724 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2725 const size_t checksumSize = checksumCalculator->checksumByteSize();
2726 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2727 buf = stream->alloc(totalSize);
2728 ptr = buf;
2729 int tmp = OP_glGetVertexAttribiv;memcpy(ptr, &tmp, 4); ptr += 4;
2730 memcpy(ptr, &totalSize, 4); ptr += 4;
2731
2732 memcpy(ptr, &index, 4); ptr += 4;
2733 memcpy(ptr, &pname, 4); ptr += 4;
2734 memcpy(ptr, &__size_params, 4); ptr += 4;
2735
2736 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2737 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2738
2739 stream->readback(params, __size_params);
2740 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2741 if (useChecksum) {
2742 unsigned char *checksumBufPtr = NULL;
2743 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2744 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2745 stream->readback(checksumBufPtr, checksumSize);
2746 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2747 ALOGE("glGetVertexAttribiv: GL communication error, please report this issue to b.android.com.\n");
2748 abort();
2749 }
2750 }
2751 }
2752
glHint_enc(void * self,GLenum target,GLenum mode)2753 void glHint_enc(void *self , GLenum target, GLenum mode)
2754 {
2755 ENCODER_DEBUG_LOG("glHint(target:0x%08x, mode:0x%08x)", target, mode);
2756 AEMU_SCOPED_TRACE("glHint encode");
2757
2758 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2759 IOStream *stream = ctx->m_stream;
2760 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2761 bool useChecksum = checksumCalculator->getVersion() > 0;
2762
2763 unsigned char *ptr;
2764 unsigned char *buf;
2765 const size_t sizeWithoutChecksum = 8 + 4 + 4;
2766 const size_t checksumSize = checksumCalculator->checksumByteSize();
2767 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2768 buf = stream->alloc(totalSize);
2769 ptr = buf;
2770 int tmp = OP_glHint;memcpy(ptr, &tmp, 4); ptr += 4;
2771 memcpy(ptr, &totalSize, 4); ptr += 4;
2772
2773 memcpy(ptr, &target, 4); ptr += 4;
2774 memcpy(ptr, &mode, 4); ptr += 4;
2775
2776 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2777 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2778
2779 }
2780
glIsBuffer_enc(void * self,GLuint buffer)2781 GLboolean glIsBuffer_enc(void *self , GLuint buffer)
2782 {
2783 ENCODER_DEBUG_LOG("glIsBuffer(buffer:%u)", buffer);
2784 AEMU_SCOPED_TRACE("glIsBuffer encode");
2785
2786 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2787 IOStream *stream = ctx->m_stream;
2788 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2789 bool useChecksum = checksumCalculator->getVersion() > 0;
2790
2791 unsigned char *ptr;
2792 unsigned char *buf;
2793 const size_t sizeWithoutChecksum = 8 + 4;
2794 const size_t checksumSize = checksumCalculator->checksumByteSize();
2795 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2796 buf = stream->alloc(totalSize);
2797 ptr = buf;
2798 int tmp = OP_glIsBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2799 memcpy(ptr, &totalSize, 4); ptr += 4;
2800
2801 memcpy(ptr, &buffer, 4); ptr += 4;
2802
2803 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2804 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2805
2806
2807 GLboolean retval;
2808 stream->readback(&retval, 1);
2809 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2810 if (useChecksum) {
2811 unsigned char *checksumBufPtr = NULL;
2812 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2813 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2814 stream->readback(checksumBufPtr, checksumSize);
2815 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2816 ALOGE("glIsBuffer: GL communication error, please report this issue to b.android.com.\n");
2817 abort();
2818 }
2819 }
2820 return retval;
2821 }
2822
glIsEnabled_enc(void * self,GLenum cap)2823 GLboolean glIsEnabled_enc(void *self , GLenum cap)
2824 {
2825 ENCODER_DEBUG_LOG("glIsEnabled(cap:0x%08x)", cap);
2826 AEMU_SCOPED_TRACE("glIsEnabled encode");
2827
2828 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2829 IOStream *stream = ctx->m_stream;
2830 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2831 bool useChecksum = checksumCalculator->getVersion() > 0;
2832
2833 unsigned char *ptr;
2834 unsigned char *buf;
2835 const size_t sizeWithoutChecksum = 8 + 4;
2836 const size_t checksumSize = checksumCalculator->checksumByteSize();
2837 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2838 buf = stream->alloc(totalSize);
2839 ptr = buf;
2840 int tmp = OP_glIsEnabled;memcpy(ptr, &tmp, 4); ptr += 4;
2841 memcpy(ptr, &totalSize, 4); ptr += 4;
2842
2843 memcpy(ptr, &cap, 4); ptr += 4;
2844
2845 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2846 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2847
2848
2849 GLboolean retval;
2850 stream->readback(&retval, 1);
2851 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2852 if (useChecksum) {
2853 unsigned char *checksumBufPtr = NULL;
2854 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2855 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2856 stream->readback(checksumBufPtr, checksumSize);
2857 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2858 ALOGE("glIsEnabled: GL communication error, please report this issue to b.android.com.\n");
2859 abort();
2860 }
2861 }
2862 return retval;
2863 }
2864
glIsFramebuffer_enc(void * self,GLuint framebuffer)2865 GLboolean glIsFramebuffer_enc(void *self , GLuint framebuffer)
2866 {
2867 ENCODER_DEBUG_LOG("glIsFramebuffer(framebuffer:%u)", framebuffer);
2868 AEMU_SCOPED_TRACE("glIsFramebuffer encode");
2869
2870 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2871 IOStream *stream = ctx->m_stream;
2872 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2873 bool useChecksum = checksumCalculator->getVersion() > 0;
2874
2875 unsigned char *ptr;
2876 unsigned char *buf;
2877 const size_t sizeWithoutChecksum = 8 + 4;
2878 const size_t checksumSize = checksumCalculator->checksumByteSize();
2879 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2880 buf = stream->alloc(totalSize);
2881 ptr = buf;
2882 int tmp = OP_glIsFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2883 memcpy(ptr, &totalSize, 4); ptr += 4;
2884
2885 memcpy(ptr, &framebuffer, 4); ptr += 4;
2886
2887 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2888 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2889
2890
2891 GLboolean retval;
2892 stream->readback(&retval, 1);
2893 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2894 if (useChecksum) {
2895 unsigned char *checksumBufPtr = NULL;
2896 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2897 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2898 stream->readback(checksumBufPtr, checksumSize);
2899 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2900 ALOGE("glIsFramebuffer: GL communication error, please report this issue to b.android.com.\n");
2901 abort();
2902 }
2903 }
2904 return retval;
2905 }
2906
glIsProgram_enc(void * self,GLuint program)2907 GLboolean glIsProgram_enc(void *self , GLuint program)
2908 {
2909 ENCODER_DEBUG_LOG("glIsProgram(program:%u)", program);
2910 AEMU_SCOPED_TRACE("glIsProgram encode");
2911
2912 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2913 IOStream *stream = ctx->m_stream;
2914 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2915 bool useChecksum = checksumCalculator->getVersion() > 0;
2916
2917 unsigned char *ptr;
2918 unsigned char *buf;
2919 const size_t sizeWithoutChecksum = 8 + 4;
2920 const size_t checksumSize = checksumCalculator->checksumByteSize();
2921 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2922 buf = stream->alloc(totalSize);
2923 ptr = buf;
2924 int tmp = OP_glIsProgram;memcpy(ptr, &tmp, 4); ptr += 4;
2925 memcpy(ptr, &totalSize, 4); ptr += 4;
2926
2927 memcpy(ptr, &program, 4); ptr += 4;
2928
2929 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2930 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2931
2932
2933 GLboolean retval;
2934 stream->readback(&retval, 1);
2935 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2936 if (useChecksum) {
2937 unsigned char *checksumBufPtr = NULL;
2938 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2939 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2940 stream->readback(checksumBufPtr, checksumSize);
2941 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2942 ALOGE("glIsProgram: GL communication error, please report this issue to b.android.com.\n");
2943 abort();
2944 }
2945 }
2946 return retval;
2947 }
2948
glIsRenderbuffer_enc(void * self,GLuint renderbuffer)2949 GLboolean glIsRenderbuffer_enc(void *self , GLuint renderbuffer)
2950 {
2951 ENCODER_DEBUG_LOG("glIsRenderbuffer(renderbuffer:%u)", renderbuffer);
2952 AEMU_SCOPED_TRACE("glIsRenderbuffer encode");
2953
2954 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2955 IOStream *stream = ctx->m_stream;
2956 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2957 bool useChecksum = checksumCalculator->getVersion() > 0;
2958
2959 unsigned char *ptr;
2960 unsigned char *buf;
2961 const size_t sizeWithoutChecksum = 8 + 4;
2962 const size_t checksumSize = checksumCalculator->checksumByteSize();
2963 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2964 buf = stream->alloc(totalSize);
2965 ptr = buf;
2966 int tmp = OP_glIsRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2967 memcpy(ptr, &totalSize, 4); ptr += 4;
2968
2969 memcpy(ptr, &renderbuffer, 4); ptr += 4;
2970
2971 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2972 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2973
2974
2975 GLboolean retval;
2976 stream->readback(&retval, 1);
2977 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2978 if (useChecksum) {
2979 unsigned char *checksumBufPtr = NULL;
2980 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2981 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2982 stream->readback(checksumBufPtr, checksumSize);
2983 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2984 ALOGE("glIsRenderbuffer: GL communication error, please report this issue to b.android.com.\n");
2985 abort();
2986 }
2987 }
2988 return retval;
2989 }
2990
glIsShader_enc(void * self,GLuint shader)2991 GLboolean glIsShader_enc(void *self , GLuint shader)
2992 {
2993 ENCODER_DEBUG_LOG("glIsShader(shader:%u)", shader);
2994 AEMU_SCOPED_TRACE("glIsShader encode");
2995
2996 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2997 IOStream *stream = ctx->m_stream;
2998 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2999 bool useChecksum = checksumCalculator->getVersion() > 0;
3000
3001 unsigned char *ptr;
3002 unsigned char *buf;
3003 const size_t sizeWithoutChecksum = 8 + 4;
3004 const size_t checksumSize = checksumCalculator->checksumByteSize();
3005 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3006 buf = stream->alloc(totalSize);
3007 ptr = buf;
3008 int tmp = OP_glIsShader;memcpy(ptr, &tmp, 4); ptr += 4;
3009 memcpy(ptr, &totalSize, 4); ptr += 4;
3010
3011 memcpy(ptr, &shader, 4); ptr += 4;
3012
3013 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3014 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3015
3016
3017 GLboolean retval;
3018 stream->readback(&retval, 1);
3019 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
3020 if (useChecksum) {
3021 unsigned char *checksumBufPtr = NULL;
3022 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
3023 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
3024 stream->readback(checksumBufPtr, checksumSize);
3025 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
3026 ALOGE("glIsShader: GL communication error, please report this issue to b.android.com.\n");
3027 abort();
3028 }
3029 }
3030 return retval;
3031 }
3032
glIsTexture_enc(void * self,GLuint texture)3033 GLboolean glIsTexture_enc(void *self , GLuint texture)
3034 {
3035 ENCODER_DEBUG_LOG("glIsTexture(texture:%u)", texture);
3036 AEMU_SCOPED_TRACE("glIsTexture encode");
3037
3038 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3039 IOStream *stream = ctx->m_stream;
3040 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3041 bool useChecksum = checksumCalculator->getVersion() > 0;
3042
3043 unsigned char *ptr;
3044 unsigned char *buf;
3045 const size_t sizeWithoutChecksum = 8 + 4;
3046 const size_t checksumSize = checksumCalculator->checksumByteSize();
3047 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3048 buf = stream->alloc(totalSize);
3049 ptr = buf;
3050 int tmp = OP_glIsTexture;memcpy(ptr, &tmp, 4); ptr += 4;
3051 memcpy(ptr, &totalSize, 4); ptr += 4;
3052
3053 memcpy(ptr, &texture, 4); ptr += 4;
3054
3055 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3056 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3057
3058
3059 GLboolean retval;
3060 stream->readback(&retval, 1);
3061 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
3062 if (useChecksum) {
3063 unsigned char *checksumBufPtr = NULL;
3064 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
3065 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
3066 stream->readback(checksumBufPtr, checksumSize);
3067 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
3068 ALOGE("glIsTexture: GL communication error, please report this issue to b.android.com.\n");
3069 abort();
3070 }
3071 }
3072 return retval;
3073 }
3074
glLineWidth_enc(void * self,GLfloat width)3075 void glLineWidth_enc(void *self , GLfloat width)
3076 {
3077 ENCODER_DEBUG_LOG("glLineWidth(width:%f)", width);
3078 AEMU_SCOPED_TRACE("glLineWidth encode");
3079
3080 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3081 IOStream *stream = ctx->m_stream;
3082 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3083 bool useChecksum = checksumCalculator->getVersion() > 0;
3084
3085 unsigned char *ptr;
3086 unsigned char *buf;
3087 const size_t sizeWithoutChecksum = 8 + 4;
3088 const size_t checksumSize = checksumCalculator->checksumByteSize();
3089 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3090 buf = stream->alloc(totalSize);
3091 ptr = buf;
3092 int tmp = OP_glLineWidth;memcpy(ptr, &tmp, 4); ptr += 4;
3093 memcpy(ptr, &totalSize, 4); ptr += 4;
3094
3095 memcpy(ptr, &width, 4); ptr += 4;
3096
3097 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3098 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3099
3100 }
3101
glLinkProgram_enc(void * self,GLuint program)3102 void glLinkProgram_enc(void *self , GLuint program)
3103 {
3104 ENCODER_DEBUG_LOG("glLinkProgram(program:%u)", program);
3105 AEMU_SCOPED_TRACE("glLinkProgram encode");
3106
3107 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3108 IOStream *stream = ctx->m_stream;
3109 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3110 bool useChecksum = checksumCalculator->getVersion() > 0;
3111
3112 unsigned char *ptr;
3113 unsigned char *buf;
3114 const size_t sizeWithoutChecksum = 8 + 4;
3115 const size_t checksumSize = checksumCalculator->checksumByteSize();
3116 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3117 buf = stream->alloc(totalSize);
3118 ptr = buf;
3119 int tmp = OP_glLinkProgram;memcpy(ptr, &tmp, 4); ptr += 4;
3120 memcpy(ptr, &totalSize, 4); ptr += 4;
3121
3122 memcpy(ptr, &program, 4); ptr += 4;
3123
3124 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3125 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3126
3127 }
3128
glPixelStorei_enc(void * self,GLenum pname,GLint param)3129 void glPixelStorei_enc(void *self , GLenum pname, GLint param)
3130 {
3131 ENCODER_DEBUG_LOG("glPixelStorei(pname:0x%08x, param:%d)", pname, param);
3132 AEMU_SCOPED_TRACE("glPixelStorei encode");
3133
3134 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3135 IOStream *stream = ctx->m_stream;
3136 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3137 bool useChecksum = checksumCalculator->getVersion() > 0;
3138
3139 unsigned char *ptr;
3140 unsigned char *buf;
3141 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3142 const size_t checksumSize = checksumCalculator->checksumByteSize();
3143 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3144 buf = stream->alloc(totalSize);
3145 ptr = buf;
3146 int tmp = OP_glPixelStorei;memcpy(ptr, &tmp, 4); ptr += 4;
3147 memcpy(ptr, &totalSize, 4); ptr += 4;
3148
3149 memcpy(ptr, &pname, 4); ptr += 4;
3150 memcpy(ptr, ¶m, 4); ptr += 4;
3151
3152 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3153 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3154
3155 }
3156
glPolygonOffset_enc(void * self,GLfloat factor,GLfloat units)3157 void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units)
3158 {
3159 ENCODER_DEBUG_LOG("glPolygonOffset(factor:%f, units:%f)", factor, units);
3160 AEMU_SCOPED_TRACE("glPolygonOffset encode");
3161
3162 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3163 IOStream *stream = ctx->m_stream;
3164 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3165 bool useChecksum = checksumCalculator->getVersion() > 0;
3166
3167 unsigned char *ptr;
3168 unsigned char *buf;
3169 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3170 const size_t checksumSize = checksumCalculator->checksumByteSize();
3171 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3172 buf = stream->alloc(totalSize);
3173 ptr = buf;
3174 int tmp = OP_glPolygonOffset;memcpy(ptr, &tmp, 4); ptr += 4;
3175 memcpy(ptr, &totalSize, 4); ptr += 4;
3176
3177 memcpy(ptr, &factor, 4); ptr += 4;
3178 memcpy(ptr, &units, 4); ptr += 4;
3179
3180 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3181 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3182
3183 }
3184
glReadPixels_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * pixels)3185 void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
3186 {
3187 ENCODER_DEBUG_LOG("glReadPixels(x:%d, y:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, pixels:0x%08x)", x, y, width, height, format, type, pixels);
3188 AEMU_SCOPED_TRACE("glReadPixels encode");
3189
3190 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3191 IOStream *stream = ctx->m_stream;
3192 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3193 bool useChecksum = checksumCalculator->getVersion() > 0;
3194
3195 const unsigned int __size_pixels = glesv2_enc::pixelDataSize(self, width, height, format, type, 1);
3196 unsigned char *ptr;
3197 unsigned char *buf;
3198 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 0 + 1*4;
3199 const size_t checksumSize = checksumCalculator->checksumByteSize();
3200 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3201 buf = stream->alloc(totalSize);
3202 ptr = buf;
3203 int tmp = OP_glReadPixels;memcpy(ptr, &tmp, 4); ptr += 4;
3204 memcpy(ptr, &totalSize, 4); ptr += 4;
3205
3206 memcpy(ptr, &x, 4); ptr += 4;
3207 memcpy(ptr, &y, 4); ptr += 4;
3208 memcpy(ptr, &width, 4); ptr += 4;
3209 memcpy(ptr, &height, 4); ptr += 4;
3210 memcpy(ptr, &format, 4); ptr += 4;
3211 memcpy(ptr, &type, 4); ptr += 4;
3212 memcpy(ptr, &__size_pixels, 4); ptr += 4;
3213
3214 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3215 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3216
3217 stream->readbackPixels(self, width, height, format, type, pixels);
3218 if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3219 if (useChecksum) {
3220 unsigned char *checksumBufPtr = NULL;
3221 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
3222 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
3223 stream->readback(checksumBufPtr, checksumSize);
3224 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
3225 ALOGE("glReadPixels: GL communication error, please report this issue to b.android.com.\n");
3226 abort();
3227 }
3228 }
3229 }
3230
glReleaseShaderCompiler_enc(void * self)3231 void glReleaseShaderCompiler_enc(void *self )
3232 {
3233 ENCODER_DEBUG_LOG("glReleaseShaderCompiler()");
3234 AEMU_SCOPED_TRACE("glReleaseShaderCompiler encode");
3235
3236 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3237 IOStream *stream = ctx->m_stream;
3238 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3239 bool useChecksum = checksumCalculator->getVersion() > 0;
3240
3241 unsigned char *ptr;
3242 unsigned char *buf;
3243 const size_t sizeWithoutChecksum = 8;
3244 const size_t checksumSize = checksumCalculator->checksumByteSize();
3245 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3246 buf = stream->alloc(totalSize);
3247 ptr = buf;
3248 int tmp = OP_glReleaseShaderCompiler;memcpy(ptr, &tmp, 4); ptr += 4;
3249 memcpy(ptr, &totalSize, 4); ptr += 4;
3250
3251
3252 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3253 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3254
3255 }
3256
glRenderbufferStorage_enc(void * self,GLenum target,GLenum internalformat,GLsizei width,GLsizei height)3257 void glRenderbufferStorage_enc(void *self , GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
3258 {
3259 ENCODER_DEBUG_LOG("glRenderbufferStorage(target:0x%08x, internalformat:0x%08x, width:%d, height:%d)", target, internalformat, width, height);
3260 AEMU_SCOPED_TRACE("glRenderbufferStorage encode");
3261
3262 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3263 IOStream *stream = ctx->m_stream;
3264 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3265 bool useChecksum = checksumCalculator->getVersion() > 0;
3266
3267 unsigned char *ptr;
3268 unsigned char *buf;
3269 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3270 const size_t checksumSize = checksumCalculator->checksumByteSize();
3271 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3272 buf = stream->alloc(totalSize);
3273 ptr = buf;
3274 int tmp = OP_glRenderbufferStorage;memcpy(ptr, &tmp, 4); ptr += 4;
3275 memcpy(ptr, &totalSize, 4); ptr += 4;
3276
3277 memcpy(ptr, &target, 4); ptr += 4;
3278 memcpy(ptr, &internalformat, 4); ptr += 4;
3279 memcpy(ptr, &width, 4); ptr += 4;
3280 memcpy(ptr, &height, 4); ptr += 4;
3281
3282 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3283 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3284
3285 }
3286
glSampleCoverage_enc(void * self,GLclampf value,GLboolean invert)3287 void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert)
3288 {
3289 ENCODER_DEBUG_LOG("glSampleCoverage(value:%f, invert:%d)", value, invert);
3290 AEMU_SCOPED_TRACE("glSampleCoverage encode");
3291
3292 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3293 IOStream *stream = ctx->m_stream;
3294 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3295 bool useChecksum = checksumCalculator->getVersion() > 0;
3296
3297 unsigned char *ptr;
3298 unsigned char *buf;
3299 const size_t sizeWithoutChecksum = 8 + 4 + 1;
3300 const size_t checksumSize = checksumCalculator->checksumByteSize();
3301 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3302 buf = stream->alloc(totalSize);
3303 ptr = buf;
3304 int tmp = OP_glSampleCoverage;memcpy(ptr, &tmp, 4); ptr += 4;
3305 memcpy(ptr, &totalSize, 4); ptr += 4;
3306
3307 memcpy(ptr, &value, 4); ptr += 4;
3308 memcpy(ptr, &invert, 1); ptr += 1;
3309
3310 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3311 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3312
3313 }
3314
glScissor_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height)3315 void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
3316 {
3317 ENCODER_DEBUG_LOG("glScissor(x:%d, y:%d, width:%d, height:%d)", x, y, width, height);
3318 AEMU_SCOPED_TRACE("glScissor encode");
3319
3320 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3321 IOStream *stream = ctx->m_stream;
3322 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3323 bool useChecksum = checksumCalculator->getVersion() > 0;
3324
3325 unsigned char *ptr;
3326 unsigned char *buf;
3327 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3328 const size_t checksumSize = checksumCalculator->checksumByteSize();
3329 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3330 buf = stream->alloc(totalSize);
3331 ptr = buf;
3332 int tmp = OP_glScissor;memcpy(ptr, &tmp, 4); ptr += 4;
3333 memcpy(ptr, &totalSize, 4); ptr += 4;
3334
3335 memcpy(ptr, &x, 4); ptr += 4;
3336 memcpy(ptr, &y, 4); ptr += 4;
3337 memcpy(ptr, &width, 4); ptr += 4;
3338 memcpy(ptr, &height, 4); ptr += 4;
3339
3340 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3341 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3342
3343 }
3344
glStencilFunc_enc(void * self,GLenum func,GLint ref,GLuint mask)3345 void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask)
3346 {
3347 ENCODER_DEBUG_LOG("glStencilFunc(func:0x%08x, ref:%d, mask:%u)", func, ref, mask);
3348 AEMU_SCOPED_TRACE("glStencilFunc encode");
3349
3350 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3351 IOStream *stream = ctx->m_stream;
3352 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3353 bool useChecksum = checksumCalculator->getVersion() > 0;
3354
3355 unsigned char *ptr;
3356 unsigned char *buf;
3357 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3358 const size_t checksumSize = checksumCalculator->checksumByteSize();
3359 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3360 buf = stream->alloc(totalSize);
3361 ptr = buf;
3362 int tmp = OP_glStencilFunc;memcpy(ptr, &tmp, 4); ptr += 4;
3363 memcpy(ptr, &totalSize, 4); ptr += 4;
3364
3365 memcpy(ptr, &func, 4); ptr += 4;
3366 memcpy(ptr, &ref, 4); ptr += 4;
3367 memcpy(ptr, &mask, 4); ptr += 4;
3368
3369 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3370 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3371
3372 }
3373
glStencilFuncSeparate_enc(void * self,GLenum face,GLenum func,GLint ref,GLuint mask)3374 void glStencilFuncSeparate_enc(void *self , GLenum face, GLenum func, GLint ref, GLuint mask)
3375 {
3376 ENCODER_DEBUG_LOG("glStencilFuncSeparate(face:0x%08x, func:0x%08x, ref:%d, mask:%u)", face, func, ref, mask);
3377 AEMU_SCOPED_TRACE("glStencilFuncSeparate encode");
3378
3379 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3380 IOStream *stream = ctx->m_stream;
3381 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3382 bool useChecksum = checksumCalculator->getVersion() > 0;
3383
3384 unsigned char *ptr;
3385 unsigned char *buf;
3386 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3387 const size_t checksumSize = checksumCalculator->checksumByteSize();
3388 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3389 buf = stream->alloc(totalSize);
3390 ptr = buf;
3391 int tmp = OP_glStencilFuncSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3392 memcpy(ptr, &totalSize, 4); ptr += 4;
3393
3394 memcpy(ptr, &face, 4); ptr += 4;
3395 memcpy(ptr, &func, 4); ptr += 4;
3396 memcpy(ptr, &ref, 4); ptr += 4;
3397 memcpy(ptr, &mask, 4); ptr += 4;
3398
3399 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3400 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3401
3402 }
3403
glStencilMask_enc(void * self,GLuint mask)3404 void glStencilMask_enc(void *self , GLuint mask)
3405 {
3406 ENCODER_DEBUG_LOG("glStencilMask(mask:%u)", mask);
3407 AEMU_SCOPED_TRACE("glStencilMask encode");
3408
3409 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3410 IOStream *stream = ctx->m_stream;
3411 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3412 bool useChecksum = checksumCalculator->getVersion() > 0;
3413
3414 unsigned char *ptr;
3415 unsigned char *buf;
3416 const size_t sizeWithoutChecksum = 8 + 4;
3417 const size_t checksumSize = checksumCalculator->checksumByteSize();
3418 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3419 buf = stream->alloc(totalSize);
3420 ptr = buf;
3421 int tmp = OP_glStencilMask;memcpy(ptr, &tmp, 4); ptr += 4;
3422 memcpy(ptr, &totalSize, 4); ptr += 4;
3423
3424 memcpy(ptr, &mask, 4); ptr += 4;
3425
3426 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3427 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3428
3429 }
3430
glStencilMaskSeparate_enc(void * self,GLenum face,GLuint mask)3431 void glStencilMaskSeparate_enc(void *self , GLenum face, GLuint mask)
3432 {
3433 ENCODER_DEBUG_LOG("glStencilMaskSeparate(face:0x%08x, mask:%u)", face, mask);
3434 AEMU_SCOPED_TRACE("glStencilMaskSeparate encode");
3435
3436 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3437 IOStream *stream = ctx->m_stream;
3438 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3439 bool useChecksum = checksumCalculator->getVersion() > 0;
3440
3441 unsigned char *ptr;
3442 unsigned char *buf;
3443 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3444 const size_t checksumSize = checksumCalculator->checksumByteSize();
3445 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3446 buf = stream->alloc(totalSize);
3447 ptr = buf;
3448 int tmp = OP_glStencilMaskSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3449 memcpy(ptr, &totalSize, 4); ptr += 4;
3450
3451 memcpy(ptr, &face, 4); ptr += 4;
3452 memcpy(ptr, &mask, 4); ptr += 4;
3453
3454 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3455 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3456
3457 }
3458
glStencilOp_enc(void * self,GLenum fail,GLenum zfail,GLenum zpass)3459 void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass)
3460 {
3461 ENCODER_DEBUG_LOG("glStencilOp(fail:0x%08x, zfail:0x%08x, zpass:0x%08x)", fail, zfail, zpass);
3462 AEMU_SCOPED_TRACE("glStencilOp encode");
3463
3464 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3465 IOStream *stream = ctx->m_stream;
3466 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3467 bool useChecksum = checksumCalculator->getVersion() > 0;
3468
3469 unsigned char *ptr;
3470 unsigned char *buf;
3471 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3472 const size_t checksumSize = checksumCalculator->checksumByteSize();
3473 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3474 buf = stream->alloc(totalSize);
3475 ptr = buf;
3476 int tmp = OP_glStencilOp;memcpy(ptr, &tmp, 4); ptr += 4;
3477 memcpy(ptr, &totalSize, 4); ptr += 4;
3478
3479 memcpy(ptr, &fail, 4); ptr += 4;
3480 memcpy(ptr, &zfail, 4); ptr += 4;
3481 memcpy(ptr, &zpass, 4); ptr += 4;
3482
3483 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3484 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3485
3486 }
3487
glStencilOpSeparate_enc(void * self,GLenum face,GLenum fail,GLenum zfail,GLenum zpass)3488 void glStencilOpSeparate_enc(void *self , GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
3489 {
3490 ENCODER_DEBUG_LOG("glStencilOpSeparate(face:0x%08x, fail:0x%08x, zfail:0x%08x, zpass:0x%08x)", face, fail, zfail, zpass);
3491 AEMU_SCOPED_TRACE("glStencilOpSeparate encode");
3492
3493 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3494 IOStream *stream = ctx->m_stream;
3495 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3496 bool useChecksum = checksumCalculator->getVersion() > 0;
3497
3498 unsigned char *ptr;
3499 unsigned char *buf;
3500 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3501 const size_t checksumSize = checksumCalculator->checksumByteSize();
3502 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3503 buf = stream->alloc(totalSize);
3504 ptr = buf;
3505 int tmp = OP_glStencilOpSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3506 memcpy(ptr, &totalSize, 4); ptr += 4;
3507
3508 memcpy(ptr, &face, 4); ptr += 4;
3509 memcpy(ptr, &fail, 4); ptr += 4;
3510 memcpy(ptr, &zfail, 4); ptr += 4;
3511 memcpy(ptr, &zpass, 4); ptr += 4;
3512
3513 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3514 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3515
3516 }
3517
glTexImage2D_enc(void * self,GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * pixels)3518 void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
3519 {
3520 ENCODER_DEBUG_LOG("glTexImage2D(target:0x%08x, level:%d, internalformat:%d, width:%d, height:%d, border:%d, format:0x%08x, type:0x%08x, pixels:0x%08x)", target, level, internalformat, width, height, border, format, type, pixels);
3521 AEMU_SCOPED_TRACE("glTexImage2D encode");
3522
3523 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3524 IOStream *stream = ctx->m_stream;
3525 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3526 bool useChecksum = checksumCalculator->getVersion() > 0;
3527
3528 const unsigned int __size_pixels = ((pixels != NULL) ? glesv2_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
3529 unsigned char *ptr;
3530 unsigned char *buf;
3531 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
3532 const size_t checksumSize = checksumCalculator->checksumByteSize();
3533 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3534 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3535 ptr = buf;
3536 int tmp = OP_glTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
3537 memcpy(ptr, &totalSize, 4); ptr += 4;
3538
3539 memcpy(ptr, &target, 4); ptr += 4;
3540 memcpy(ptr, &level, 4); ptr += 4;
3541 memcpy(ptr, &internalformat, 4); ptr += 4;
3542 memcpy(ptr, &width, 4); ptr += 4;
3543 memcpy(ptr, &height, 4); ptr += 4;
3544 memcpy(ptr, &border, 4); ptr += 4;
3545 memcpy(ptr, &format, 4); ptr += 4;
3546 memcpy(ptr, &type, 4); ptr += 4;
3547
3548 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3549 stream->flush();
3550 stream->writeFully(&__size_pixels,4);
3551 if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
3552 if (pixels != NULL) {
3553 stream->uploadPixels(self, width, height, 1, format, type, pixels);
3554 if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3555 }
3556 buf = stream->alloc(checksumSize);
3557 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
3558
3559 }
3560
glTexParameterf_enc(void * self,GLenum target,GLenum pname,GLfloat param)3561 void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param)
3562 {
3563 ENCODER_DEBUG_LOG("glTexParameterf(target:0x%08x, pname:0x%08x, param:%f)", target, pname, param);
3564 AEMU_SCOPED_TRACE("glTexParameterf encode");
3565
3566 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3567 IOStream *stream = ctx->m_stream;
3568 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3569 bool useChecksum = checksumCalculator->getVersion() > 0;
3570
3571 unsigned char *ptr;
3572 unsigned char *buf;
3573 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3574 const size_t checksumSize = checksumCalculator->checksumByteSize();
3575 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3576 buf = stream->alloc(totalSize);
3577 ptr = buf;
3578 int tmp = OP_glTexParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
3579 memcpy(ptr, &totalSize, 4); ptr += 4;
3580
3581 memcpy(ptr, &target, 4); ptr += 4;
3582 memcpy(ptr, &pname, 4); ptr += 4;
3583 memcpy(ptr, ¶m, 4); ptr += 4;
3584
3585 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3586 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3587
3588 }
3589
glTexParameterfv_enc(void * self,GLenum target,GLenum pname,const GLfloat * params)3590 void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params)
3591 {
3592 ENCODER_DEBUG_LOG("glTexParameterfv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
3593 AEMU_SCOPED_TRACE("glTexParameterfv encode");
3594
3595 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3596 IOStream *stream = ctx->m_stream;
3597 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3598 bool useChecksum = checksumCalculator->getVersion() > 0;
3599
3600 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
3601 unsigned char *ptr;
3602 unsigned char *buf;
3603 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
3604 const size_t checksumSize = checksumCalculator->checksumByteSize();
3605 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3606 buf = stream->alloc(totalSize);
3607 ptr = buf;
3608 int tmp = OP_glTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
3609 memcpy(ptr, &totalSize, 4); ptr += 4;
3610
3611 memcpy(ptr, &target, 4); ptr += 4;
3612 memcpy(ptr, &pname, 4); ptr += 4;
3613 memcpy(ptr, &__size_params, 4); ptr += 4;
3614 memcpy(ptr, params, __size_params);ptr += __size_params;
3615
3616 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3617 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3618
3619 }
3620
glTexParameteri_enc(void * self,GLenum target,GLenum pname,GLint param)3621 void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
3622 {
3623 ENCODER_DEBUG_LOG("glTexParameteri(target:0x%08x, pname:0x%08x, param:%d)", target, pname, param);
3624 AEMU_SCOPED_TRACE("glTexParameteri encode");
3625
3626 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3627 IOStream *stream = ctx->m_stream;
3628 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3629 bool useChecksum = checksumCalculator->getVersion() > 0;
3630
3631 unsigned char *ptr;
3632 unsigned char *buf;
3633 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3634 const size_t checksumSize = checksumCalculator->checksumByteSize();
3635 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3636 buf = stream->alloc(totalSize);
3637 ptr = buf;
3638 int tmp = OP_glTexParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
3639 memcpy(ptr, &totalSize, 4); ptr += 4;
3640
3641 memcpy(ptr, &target, 4); ptr += 4;
3642 memcpy(ptr, &pname, 4); ptr += 4;
3643 memcpy(ptr, ¶m, 4); ptr += 4;
3644
3645 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3646 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3647
3648 }
3649
glTexParameteriv_enc(void * self,GLenum target,GLenum pname,const GLint * params)3650 void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* params)
3651 {
3652 ENCODER_DEBUG_LOG("glTexParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
3653 AEMU_SCOPED_TRACE("glTexParameteriv encode");
3654
3655 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3656 IOStream *stream = ctx->m_stream;
3657 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3658 bool useChecksum = checksumCalculator->getVersion() > 0;
3659
3660 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
3661 unsigned char *ptr;
3662 unsigned char *buf;
3663 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
3664 const size_t checksumSize = checksumCalculator->checksumByteSize();
3665 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3666 buf = stream->alloc(totalSize);
3667 ptr = buf;
3668 int tmp = OP_glTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
3669 memcpy(ptr, &totalSize, 4); ptr += 4;
3670
3671 memcpy(ptr, &target, 4); ptr += 4;
3672 memcpy(ptr, &pname, 4); ptr += 4;
3673 memcpy(ptr, &__size_params, 4); ptr += 4;
3674 memcpy(ptr, params, __size_params);ptr += __size_params;
3675
3676 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3677 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3678
3679 }
3680
glTexSubImage2D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * pixels)3681 void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
3682 {
3683 ENCODER_DEBUG_LOG("glTexSubImage2D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, pixels:0x%08x)", target, level, xoffset, yoffset, width, height, format, type, pixels);
3684 AEMU_SCOPED_TRACE("glTexSubImage2D encode");
3685
3686 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3687 IOStream *stream = ctx->m_stream;
3688 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3689 bool useChecksum = checksumCalculator->getVersion() > 0;
3690
3691 const unsigned int __size_pixels = ((pixels != NULL) ? glesv2_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
3692 unsigned char *ptr;
3693 unsigned char *buf;
3694 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
3695 const size_t checksumSize = checksumCalculator->checksumByteSize();
3696 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3697 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3698 ptr = buf;
3699 int tmp = OP_glTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
3700 memcpy(ptr, &totalSize, 4); ptr += 4;
3701
3702 memcpy(ptr, &target, 4); ptr += 4;
3703 memcpy(ptr, &level, 4); ptr += 4;
3704 memcpy(ptr, &xoffset, 4); ptr += 4;
3705 memcpy(ptr, &yoffset, 4); ptr += 4;
3706 memcpy(ptr, &width, 4); ptr += 4;
3707 memcpy(ptr, &height, 4); ptr += 4;
3708 memcpy(ptr, &format, 4); ptr += 4;
3709 memcpy(ptr, &type, 4); ptr += 4;
3710
3711 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3712 stream->flush();
3713 stream->writeFully(&__size_pixels,4);
3714 if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
3715 if (pixels != NULL) {
3716 stream->uploadPixels(self, width, height, 1, format, type, pixels);
3717 if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3718 }
3719 buf = stream->alloc(checksumSize);
3720 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
3721
3722 }
3723
glUniform1f_enc(void * self,GLint location,GLfloat x)3724 void glUniform1f_enc(void *self , GLint location, GLfloat x)
3725 {
3726 ENCODER_DEBUG_LOG("glUniform1f(location:%d, x:%f)", location, x);
3727 AEMU_SCOPED_TRACE("glUniform1f encode");
3728
3729 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3730 IOStream *stream = ctx->m_stream;
3731 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3732 bool useChecksum = checksumCalculator->getVersion() > 0;
3733
3734 unsigned char *ptr;
3735 unsigned char *buf;
3736 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3737 const size_t checksumSize = checksumCalculator->checksumByteSize();
3738 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3739 buf = stream->alloc(totalSize);
3740 ptr = buf;
3741 int tmp = OP_glUniform1f;memcpy(ptr, &tmp, 4); ptr += 4;
3742 memcpy(ptr, &totalSize, 4); ptr += 4;
3743
3744 memcpy(ptr, &location, 4); ptr += 4;
3745 memcpy(ptr, &x, 4); ptr += 4;
3746
3747 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3748 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3749
3750 }
3751
glUniform1fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)3752 void glUniform1fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3753 {
3754 ENCODER_DEBUG_LOG("glUniform1fv(location:%d, count:%d, v:0x%08x)", location, count, v);
3755 AEMU_SCOPED_TRACE("glUniform1fv encode");
3756
3757 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3758 IOStream *stream = ctx->m_stream;
3759 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3760 bool useChecksum = checksumCalculator->getVersion() > 0;
3761
3762 const unsigned int __size_v = (count * sizeof(GLfloat));
3763 unsigned char *ptr;
3764 unsigned char *buf;
3765 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3766 const size_t checksumSize = checksumCalculator->checksumByteSize();
3767 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3768 buf = stream->alloc(totalSize);
3769 ptr = buf;
3770 int tmp = OP_glUniform1fv;memcpy(ptr, &tmp, 4); ptr += 4;
3771 memcpy(ptr, &totalSize, 4); ptr += 4;
3772
3773 memcpy(ptr, &location, 4); ptr += 4;
3774 memcpy(ptr, &count, 4); ptr += 4;
3775 memcpy(ptr, &__size_v, 4); ptr += 4;
3776 memcpy(ptr, v, __size_v);ptr += __size_v;
3777
3778 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3779 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3780
3781 }
3782
glUniform1i_enc(void * self,GLint location,GLint x)3783 void glUniform1i_enc(void *self , GLint location, GLint x)
3784 {
3785 ENCODER_DEBUG_LOG("glUniform1i(location:%d, x:%d)", location, x);
3786 AEMU_SCOPED_TRACE("glUniform1i encode");
3787
3788 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3789 IOStream *stream = ctx->m_stream;
3790 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3791 bool useChecksum = checksumCalculator->getVersion() > 0;
3792
3793 unsigned char *ptr;
3794 unsigned char *buf;
3795 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3796 const size_t checksumSize = checksumCalculator->checksumByteSize();
3797 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3798 buf = stream->alloc(totalSize);
3799 ptr = buf;
3800 int tmp = OP_glUniform1i;memcpy(ptr, &tmp, 4); ptr += 4;
3801 memcpy(ptr, &totalSize, 4); ptr += 4;
3802
3803 memcpy(ptr, &location, 4); ptr += 4;
3804 memcpy(ptr, &x, 4); ptr += 4;
3805
3806 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3807 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3808
3809 }
3810
glUniform1iv_enc(void * self,GLint location,GLsizei count,const GLint * v)3811 void glUniform1iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
3812 {
3813 ENCODER_DEBUG_LOG("glUniform1iv(location:%d, count:%d, v:0x%08x)", location, count, v);
3814 AEMU_SCOPED_TRACE("glUniform1iv encode");
3815
3816 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3817 IOStream *stream = ctx->m_stream;
3818 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3819 bool useChecksum = checksumCalculator->getVersion() > 0;
3820
3821 const unsigned int __size_v = (count * sizeof(GLint));
3822 unsigned char *ptr;
3823 unsigned char *buf;
3824 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3825 const size_t checksumSize = checksumCalculator->checksumByteSize();
3826 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3827 buf = stream->alloc(totalSize);
3828 ptr = buf;
3829 int tmp = OP_glUniform1iv;memcpy(ptr, &tmp, 4); ptr += 4;
3830 memcpy(ptr, &totalSize, 4); ptr += 4;
3831
3832 memcpy(ptr, &location, 4); ptr += 4;
3833 memcpy(ptr, &count, 4); ptr += 4;
3834 memcpy(ptr, &__size_v, 4); ptr += 4;
3835 memcpy(ptr, v, __size_v);ptr += __size_v;
3836
3837 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3838 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3839
3840 }
3841
glUniform2f_enc(void * self,GLint location,GLfloat x,GLfloat y)3842 void glUniform2f_enc(void *self , GLint location, GLfloat x, GLfloat y)
3843 {
3844 ENCODER_DEBUG_LOG("glUniform2f(location:%d, x:%f, y:%f)", location, x, y);
3845 AEMU_SCOPED_TRACE("glUniform2f encode");
3846
3847 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3848 IOStream *stream = ctx->m_stream;
3849 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3850 bool useChecksum = checksumCalculator->getVersion() > 0;
3851
3852 unsigned char *ptr;
3853 unsigned char *buf;
3854 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3855 const size_t checksumSize = checksumCalculator->checksumByteSize();
3856 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3857 buf = stream->alloc(totalSize);
3858 ptr = buf;
3859 int tmp = OP_glUniform2f;memcpy(ptr, &tmp, 4); ptr += 4;
3860 memcpy(ptr, &totalSize, 4); ptr += 4;
3861
3862 memcpy(ptr, &location, 4); ptr += 4;
3863 memcpy(ptr, &x, 4); ptr += 4;
3864 memcpy(ptr, &y, 4); ptr += 4;
3865
3866 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3867 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3868
3869 }
3870
glUniform2fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)3871 void glUniform2fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3872 {
3873 ENCODER_DEBUG_LOG("glUniform2fv(location:%d, count:%d, v:0x%08x)", location, count, v);
3874 AEMU_SCOPED_TRACE("glUniform2fv encode");
3875
3876 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3877 IOStream *stream = ctx->m_stream;
3878 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3879 bool useChecksum = checksumCalculator->getVersion() > 0;
3880
3881 const unsigned int __size_v = (count * 2 * sizeof(GLfloat));
3882 unsigned char *ptr;
3883 unsigned char *buf;
3884 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3885 const size_t checksumSize = checksumCalculator->checksumByteSize();
3886 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3887 buf = stream->alloc(totalSize);
3888 ptr = buf;
3889 int tmp = OP_glUniform2fv;memcpy(ptr, &tmp, 4); ptr += 4;
3890 memcpy(ptr, &totalSize, 4); ptr += 4;
3891
3892 memcpy(ptr, &location, 4); ptr += 4;
3893 memcpy(ptr, &count, 4); ptr += 4;
3894 memcpy(ptr, &__size_v, 4); ptr += 4;
3895 memcpy(ptr, v, __size_v);ptr += __size_v;
3896
3897 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3898 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3899
3900 }
3901
glUniform2i_enc(void * self,GLint location,GLint x,GLint y)3902 void glUniform2i_enc(void *self , GLint location, GLint x, GLint y)
3903 {
3904 ENCODER_DEBUG_LOG("glUniform2i(location:%d, x:%d, y:%d)", location, x, y);
3905 AEMU_SCOPED_TRACE("glUniform2i encode");
3906
3907 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3908 IOStream *stream = ctx->m_stream;
3909 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3910 bool useChecksum = checksumCalculator->getVersion() > 0;
3911
3912 unsigned char *ptr;
3913 unsigned char *buf;
3914 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3915 const size_t checksumSize = checksumCalculator->checksumByteSize();
3916 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3917 buf = stream->alloc(totalSize);
3918 ptr = buf;
3919 int tmp = OP_glUniform2i;memcpy(ptr, &tmp, 4); ptr += 4;
3920 memcpy(ptr, &totalSize, 4); ptr += 4;
3921
3922 memcpy(ptr, &location, 4); ptr += 4;
3923 memcpy(ptr, &x, 4); ptr += 4;
3924 memcpy(ptr, &y, 4); ptr += 4;
3925
3926 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3927 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3928
3929 }
3930
glUniform2iv_enc(void * self,GLint location,GLsizei count,const GLint * v)3931 void glUniform2iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
3932 {
3933 ENCODER_DEBUG_LOG("glUniform2iv(location:%d, count:%d, v:0x%08x)", location, count, v);
3934 AEMU_SCOPED_TRACE("glUniform2iv encode");
3935
3936 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3937 IOStream *stream = ctx->m_stream;
3938 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3939 bool useChecksum = checksumCalculator->getVersion() > 0;
3940
3941 const unsigned int __size_v = (count * 2 * sizeof(GLint));
3942 unsigned char *ptr;
3943 unsigned char *buf;
3944 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3945 const size_t checksumSize = checksumCalculator->checksumByteSize();
3946 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3947 buf = stream->alloc(totalSize);
3948 ptr = buf;
3949 int tmp = OP_glUniform2iv;memcpy(ptr, &tmp, 4); ptr += 4;
3950 memcpy(ptr, &totalSize, 4); ptr += 4;
3951
3952 memcpy(ptr, &location, 4); ptr += 4;
3953 memcpy(ptr, &count, 4); ptr += 4;
3954 memcpy(ptr, &__size_v, 4); ptr += 4;
3955 memcpy(ptr, v, __size_v);ptr += __size_v;
3956
3957 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3958 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3959
3960 }
3961
glUniform3f_enc(void * self,GLint location,GLfloat x,GLfloat y,GLfloat z)3962 void glUniform3f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z)
3963 {
3964 ENCODER_DEBUG_LOG("glUniform3f(location:%d, x:%f, y:%f, z:%f)", location, x, y, z);
3965 AEMU_SCOPED_TRACE("glUniform3f encode");
3966
3967 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3968 IOStream *stream = ctx->m_stream;
3969 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3970 bool useChecksum = checksumCalculator->getVersion() > 0;
3971
3972 unsigned char *ptr;
3973 unsigned char *buf;
3974 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3975 const size_t checksumSize = checksumCalculator->checksumByteSize();
3976 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3977 buf = stream->alloc(totalSize);
3978 ptr = buf;
3979 int tmp = OP_glUniform3f;memcpy(ptr, &tmp, 4); ptr += 4;
3980 memcpy(ptr, &totalSize, 4); ptr += 4;
3981
3982 memcpy(ptr, &location, 4); ptr += 4;
3983 memcpy(ptr, &x, 4); ptr += 4;
3984 memcpy(ptr, &y, 4); ptr += 4;
3985 memcpy(ptr, &z, 4); ptr += 4;
3986
3987 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3988 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3989
3990 }
3991
glUniform3fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)3992 void glUniform3fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3993 {
3994 ENCODER_DEBUG_LOG("glUniform3fv(location:%d, count:%d, v:0x%08x)", location, count, v);
3995 AEMU_SCOPED_TRACE("glUniform3fv encode");
3996
3997 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3998 IOStream *stream = ctx->m_stream;
3999 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4000 bool useChecksum = checksumCalculator->getVersion() > 0;
4001
4002 const unsigned int __size_v = (count * 3 * sizeof(GLfloat));
4003 unsigned char *ptr;
4004 unsigned char *buf;
4005 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4006 const size_t checksumSize = checksumCalculator->checksumByteSize();
4007 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4008 buf = stream->alloc(totalSize);
4009 ptr = buf;
4010 int tmp = OP_glUniform3fv;memcpy(ptr, &tmp, 4); ptr += 4;
4011 memcpy(ptr, &totalSize, 4); ptr += 4;
4012
4013 memcpy(ptr, &location, 4); ptr += 4;
4014 memcpy(ptr, &count, 4); ptr += 4;
4015 memcpy(ptr, &__size_v, 4); ptr += 4;
4016 memcpy(ptr, v, __size_v);ptr += __size_v;
4017
4018 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4019 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4020
4021 }
4022
glUniform3i_enc(void * self,GLint location,GLint x,GLint y,GLint z)4023 void glUniform3i_enc(void *self , GLint location, GLint x, GLint y, GLint z)
4024 {
4025 ENCODER_DEBUG_LOG("glUniform3i(location:%d, x:%d, y:%d, z:%d)", location, x, y, z);
4026 AEMU_SCOPED_TRACE("glUniform3i encode");
4027
4028 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4029 IOStream *stream = ctx->m_stream;
4030 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4031 bool useChecksum = checksumCalculator->getVersion() > 0;
4032
4033 unsigned char *ptr;
4034 unsigned char *buf;
4035 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4036 const size_t checksumSize = checksumCalculator->checksumByteSize();
4037 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4038 buf = stream->alloc(totalSize);
4039 ptr = buf;
4040 int tmp = OP_glUniform3i;memcpy(ptr, &tmp, 4); ptr += 4;
4041 memcpy(ptr, &totalSize, 4); ptr += 4;
4042
4043 memcpy(ptr, &location, 4); ptr += 4;
4044 memcpy(ptr, &x, 4); ptr += 4;
4045 memcpy(ptr, &y, 4); ptr += 4;
4046 memcpy(ptr, &z, 4); ptr += 4;
4047
4048 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4049 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4050
4051 }
4052
glUniform3iv_enc(void * self,GLint location,GLsizei count,const GLint * v)4053 void glUniform3iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
4054 {
4055 ENCODER_DEBUG_LOG("glUniform3iv(location:%d, count:%d, v:0x%08x)", location, count, v);
4056 AEMU_SCOPED_TRACE("glUniform3iv encode");
4057
4058 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4059 IOStream *stream = ctx->m_stream;
4060 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4061 bool useChecksum = checksumCalculator->getVersion() > 0;
4062
4063 const unsigned int __size_v = (3 * count * sizeof(GLint));
4064 unsigned char *ptr;
4065 unsigned char *buf;
4066 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4067 const size_t checksumSize = checksumCalculator->checksumByteSize();
4068 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4069 buf = stream->alloc(totalSize);
4070 ptr = buf;
4071 int tmp = OP_glUniform3iv;memcpy(ptr, &tmp, 4); ptr += 4;
4072 memcpy(ptr, &totalSize, 4); ptr += 4;
4073
4074 memcpy(ptr, &location, 4); ptr += 4;
4075 memcpy(ptr, &count, 4); ptr += 4;
4076 memcpy(ptr, &__size_v, 4); ptr += 4;
4077 memcpy(ptr, v, __size_v);ptr += __size_v;
4078
4079 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4080 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4081
4082 }
4083
glUniform4f_enc(void * self,GLint location,GLfloat x,GLfloat y,GLfloat z,GLfloat w)4084 void glUniform4f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
4085 {
4086 ENCODER_DEBUG_LOG("glUniform4f(location:%d, x:%f, y:%f, z:%f, w:%f)", location, x, y, z, w);
4087 AEMU_SCOPED_TRACE("glUniform4f encode");
4088
4089 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4090 IOStream *stream = ctx->m_stream;
4091 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4092 bool useChecksum = checksumCalculator->getVersion() > 0;
4093
4094 unsigned char *ptr;
4095 unsigned char *buf;
4096 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4097 const size_t checksumSize = checksumCalculator->checksumByteSize();
4098 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4099 buf = stream->alloc(totalSize);
4100 ptr = buf;
4101 int tmp = OP_glUniform4f;memcpy(ptr, &tmp, 4); ptr += 4;
4102 memcpy(ptr, &totalSize, 4); ptr += 4;
4103
4104 memcpy(ptr, &location, 4); ptr += 4;
4105 memcpy(ptr, &x, 4); ptr += 4;
4106 memcpy(ptr, &y, 4); ptr += 4;
4107 memcpy(ptr, &z, 4); ptr += 4;
4108 memcpy(ptr, &w, 4); ptr += 4;
4109
4110 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4111 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4112
4113 }
4114
glUniform4fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)4115 void glUniform4fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
4116 {
4117 ENCODER_DEBUG_LOG("glUniform4fv(location:%d, count:%d, v:0x%08x)", location, count, v);
4118 AEMU_SCOPED_TRACE("glUniform4fv encode");
4119
4120 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4121 IOStream *stream = ctx->m_stream;
4122 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4123 bool useChecksum = checksumCalculator->getVersion() > 0;
4124
4125 const unsigned int __size_v = (4 * count * sizeof(GLfloat));
4126 unsigned char *ptr;
4127 unsigned char *buf;
4128 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4129 const size_t checksumSize = checksumCalculator->checksumByteSize();
4130 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4131 buf = stream->alloc(totalSize);
4132 ptr = buf;
4133 int tmp = OP_glUniform4fv;memcpy(ptr, &tmp, 4); ptr += 4;
4134 memcpy(ptr, &totalSize, 4); ptr += 4;
4135
4136 memcpy(ptr, &location, 4); ptr += 4;
4137 memcpy(ptr, &count, 4); ptr += 4;
4138 memcpy(ptr, &__size_v, 4); ptr += 4;
4139 memcpy(ptr, v, __size_v);ptr += __size_v;
4140
4141 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4142 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4143
4144 }
4145
glUniform4i_enc(void * self,GLint location,GLint x,GLint y,GLint z,GLint w)4146 void glUniform4i_enc(void *self , GLint location, GLint x, GLint y, GLint z, GLint w)
4147 {
4148 ENCODER_DEBUG_LOG("glUniform4i(location:%d, x:%d, y:%d, z:%d, w:%d)", location, x, y, z, w);
4149 AEMU_SCOPED_TRACE("glUniform4i encode");
4150
4151 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4152 IOStream *stream = ctx->m_stream;
4153 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4154 bool useChecksum = checksumCalculator->getVersion() > 0;
4155
4156 unsigned char *ptr;
4157 unsigned char *buf;
4158 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4159 const size_t checksumSize = checksumCalculator->checksumByteSize();
4160 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4161 buf = stream->alloc(totalSize);
4162 ptr = buf;
4163 int tmp = OP_glUniform4i;memcpy(ptr, &tmp, 4); ptr += 4;
4164 memcpy(ptr, &totalSize, 4); ptr += 4;
4165
4166 memcpy(ptr, &location, 4); ptr += 4;
4167 memcpy(ptr, &x, 4); ptr += 4;
4168 memcpy(ptr, &y, 4); ptr += 4;
4169 memcpy(ptr, &z, 4); ptr += 4;
4170 memcpy(ptr, &w, 4); ptr += 4;
4171
4172 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4173 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4174
4175 }
4176
glUniform4iv_enc(void * self,GLint location,GLsizei count,const GLint * v)4177 void glUniform4iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
4178 {
4179 ENCODER_DEBUG_LOG("glUniform4iv(location:%d, count:%d, v:0x%08x)", location, count, v);
4180 AEMU_SCOPED_TRACE("glUniform4iv encode");
4181
4182 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4183 IOStream *stream = ctx->m_stream;
4184 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4185 bool useChecksum = checksumCalculator->getVersion() > 0;
4186
4187 const unsigned int __size_v = (4 * count * sizeof(GLint));
4188 unsigned char *ptr;
4189 unsigned char *buf;
4190 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4191 const size_t checksumSize = checksumCalculator->checksumByteSize();
4192 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4193 buf = stream->alloc(totalSize);
4194 ptr = buf;
4195 int tmp = OP_glUniform4iv;memcpy(ptr, &tmp, 4); ptr += 4;
4196 memcpy(ptr, &totalSize, 4); ptr += 4;
4197
4198 memcpy(ptr, &location, 4); ptr += 4;
4199 memcpy(ptr, &count, 4); ptr += 4;
4200 memcpy(ptr, &__size_v, 4); ptr += 4;
4201 memcpy(ptr, v, __size_v);ptr += __size_v;
4202
4203 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4204 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4205
4206 }
4207
glUniformMatrix2fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)4208 void glUniformMatrix2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
4209 {
4210 ENCODER_DEBUG_LOG("glUniformMatrix2fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
4211 AEMU_SCOPED_TRACE("glUniformMatrix2fv encode");
4212
4213 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4214 IOStream *stream = ctx->m_stream;
4215 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4216 bool useChecksum = checksumCalculator->getVersion() > 0;
4217
4218 const unsigned int __size_value = (count * 4 * sizeof(GLfloat));
4219 unsigned char *ptr;
4220 unsigned char *buf;
4221 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
4222 const size_t checksumSize = checksumCalculator->checksumByteSize();
4223 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4224 buf = stream->alloc(totalSize);
4225 ptr = buf;
4226 int tmp = OP_glUniformMatrix2fv;memcpy(ptr, &tmp, 4); ptr += 4;
4227 memcpy(ptr, &totalSize, 4); ptr += 4;
4228
4229 memcpy(ptr, &location, 4); ptr += 4;
4230 memcpy(ptr, &count, 4); ptr += 4;
4231 memcpy(ptr, &transpose, 1); ptr += 1;
4232 memcpy(ptr, &__size_value, 4); ptr += 4;
4233 memcpy(ptr, value, __size_value);ptr += __size_value;
4234
4235 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4236 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4237
4238 }
4239
glUniformMatrix3fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)4240 void glUniformMatrix3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
4241 {
4242 ENCODER_DEBUG_LOG("glUniformMatrix3fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
4243 AEMU_SCOPED_TRACE("glUniformMatrix3fv encode");
4244
4245 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4246 IOStream *stream = ctx->m_stream;
4247 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4248 bool useChecksum = checksumCalculator->getVersion() > 0;
4249
4250 const unsigned int __size_value = (count * 9 * sizeof(GLfloat));
4251 unsigned char *ptr;
4252 unsigned char *buf;
4253 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
4254 const size_t checksumSize = checksumCalculator->checksumByteSize();
4255 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4256 buf = stream->alloc(totalSize);
4257 ptr = buf;
4258 int tmp = OP_glUniformMatrix3fv;memcpy(ptr, &tmp, 4); ptr += 4;
4259 memcpy(ptr, &totalSize, 4); ptr += 4;
4260
4261 memcpy(ptr, &location, 4); ptr += 4;
4262 memcpy(ptr, &count, 4); ptr += 4;
4263 memcpy(ptr, &transpose, 1); ptr += 1;
4264 memcpy(ptr, &__size_value, 4); ptr += 4;
4265 memcpy(ptr, value, __size_value);ptr += __size_value;
4266
4267 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4268 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4269
4270 }
4271
glUniformMatrix4fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)4272 void glUniformMatrix4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
4273 {
4274 ENCODER_DEBUG_LOG("glUniformMatrix4fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
4275 AEMU_SCOPED_TRACE("glUniformMatrix4fv encode");
4276
4277 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4278 IOStream *stream = ctx->m_stream;
4279 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4280 bool useChecksum = checksumCalculator->getVersion() > 0;
4281
4282 const unsigned int __size_value = (count * 16 * sizeof(GLfloat));
4283 unsigned char *ptr;
4284 unsigned char *buf;
4285 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
4286 const size_t checksumSize = checksumCalculator->checksumByteSize();
4287 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4288 buf = stream->alloc(totalSize);
4289 ptr = buf;
4290 int tmp = OP_glUniformMatrix4fv;memcpy(ptr, &tmp, 4); ptr += 4;
4291 memcpy(ptr, &totalSize, 4); ptr += 4;
4292
4293 memcpy(ptr, &location, 4); ptr += 4;
4294 memcpy(ptr, &count, 4); ptr += 4;
4295 memcpy(ptr, &transpose, 1); ptr += 1;
4296 memcpy(ptr, &__size_value, 4); ptr += 4;
4297 memcpy(ptr, value, __size_value);ptr += __size_value;
4298
4299 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4300 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4301
4302 }
4303
glUseProgram_enc(void * self,GLuint program)4304 void glUseProgram_enc(void *self , GLuint program)
4305 {
4306 ENCODER_DEBUG_LOG("glUseProgram(program:%u)", program);
4307 AEMU_SCOPED_TRACE("glUseProgram encode");
4308
4309 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4310 IOStream *stream = ctx->m_stream;
4311 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4312 bool useChecksum = checksumCalculator->getVersion() > 0;
4313
4314 unsigned char *ptr;
4315 unsigned char *buf;
4316 const size_t sizeWithoutChecksum = 8 + 4;
4317 const size_t checksumSize = checksumCalculator->checksumByteSize();
4318 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4319 buf = stream->alloc(totalSize);
4320 ptr = buf;
4321 int tmp = OP_glUseProgram;memcpy(ptr, &tmp, 4); ptr += 4;
4322 memcpy(ptr, &totalSize, 4); ptr += 4;
4323
4324 memcpy(ptr, &program, 4); ptr += 4;
4325
4326 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4327 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4328
4329 }
4330
glValidateProgram_enc(void * self,GLuint program)4331 void glValidateProgram_enc(void *self , GLuint program)
4332 {
4333 ENCODER_DEBUG_LOG("glValidateProgram(program:%u)", program);
4334 AEMU_SCOPED_TRACE("glValidateProgram encode");
4335
4336 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4337 IOStream *stream = ctx->m_stream;
4338 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4339 bool useChecksum = checksumCalculator->getVersion() > 0;
4340
4341 unsigned char *ptr;
4342 unsigned char *buf;
4343 const size_t sizeWithoutChecksum = 8 + 4;
4344 const size_t checksumSize = checksumCalculator->checksumByteSize();
4345 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4346 buf = stream->alloc(totalSize);
4347 ptr = buf;
4348 int tmp = OP_glValidateProgram;memcpy(ptr, &tmp, 4); ptr += 4;
4349 memcpy(ptr, &totalSize, 4); ptr += 4;
4350
4351 memcpy(ptr, &program, 4); ptr += 4;
4352
4353 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4354 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4355
4356 }
4357
glVertexAttrib1f_enc(void * self,GLuint indx,GLfloat x)4358 void glVertexAttrib1f_enc(void *self , GLuint indx, GLfloat x)
4359 {
4360 ENCODER_DEBUG_LOG("glVertexAttrib1f(indx:%u, x:%f)", indx, x);
4361 AEMU_SCOPED_TRACE("glVertexAttrib1f encode");
4362
4363 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4364 IOStream *stream = ctx->m_stream;
4365 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4366 bool useChecksum = checksumCalculator->getVersion() > 0;
4367
4368 unsigned char *ptr;
4369 unsigned char *buf;
4370 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4371 const size_t checksumSize = checksumCalculator->checksumByteSize();
4372 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4373 buf = stream->alloc(totalSize);
4374 ptr = buf;
4375 int tmp = OP_glVertexAttrib1f;memcpy(ptr, &tmp, 4); ptr += 4;
4376 memcpy(ptr, &totalSize, 4); ptr += 4;
4377
4378 memcpy(ptr, &indx, 4); ptr += 4;
4379 memcpy(ptr, &x, 4); ptr += 4;
4380
4381 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4382 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4383
4384 }
4385
glVertexAttrib1fv_enc(void * self,GLuint indx,const GLfloat * values)4386 void glVertexAttrib1fv_enc(void *self , GLuint indx, const GLfloat* values)
4387 {
4388 ENCODER_DEBUG_LOG("glVertexAttrib1fv(indx:%u, values:0x%08x)", indx, values);
4389 AEMU_SCOPED_TRACE("glVertexAttrib1fv encode");
4390
4391 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4392 IOStream *stream = ctx->m_stream;
4393 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4394 bool useChecksum = checksumCalculator->getVersion() > 0;
4395
4396 const unsigned int __size_values = (sizeof(GLfloat));
4397 unsigned char *ptr;
4398 unsigned char *buf;
4399 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4400 const size_t checksumSize = checksumCalculator->checksumByteSize();
4401 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4402 buf = stream->alloc(totalSize);
4403 ptr = buf;
4404 int tmp = OP_glVertexAttrib1fv;memcpy(ptr, &tmp, 4); ptr += 4;
4405 memcpy(ptr, &totalSize, 4); ptr += 4;
4406
4407 memcpy(ptr, &indx, 4); ptr += 4;
4408 memcpy(ptr, &__size_values, 4); ptr += 4;
4409 memcpy(ptr, values, __size_values);ptr += __size_values;
4410
4411 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4412 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4413
4414 }
4415
glVertexAttrib2f_enc(void * self,GLuint indx,GLfloat x,GLfloat y)4416 void glVertexAttrib2f_enc(void *self , GLuint indx, GLfloat x, GLfloat y)
4417 {
4418 ENCODER_DEBUG_LOG("glVertexAttrib2f(indx:%u, x:%f, y:%f)", indx, x, y);
4419 AEMU_SCOPED_TRACE("glVertexAttrib2f encode");
4420
4421 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4422 IOStream *stream = ctx->m_stream;
4423 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4424 bool useChecksum = checksumCalculator->getVersion() > 0;
4425
4426 unsigned char *ptr;
4427 unsigned char *buf;
4428 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
4429 const size_t checksumSize = checksumCalculator->checksumByteSize();
4430 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4431 buf = stream->alloc(totalSize);
4432 ptr = buf;
4433 int tmp = OP_glVertexAttrib2f;memcpy(ptr, &tmp, 4); ptr += 4;
4434 memcpy(ptr, &totalSize, 4); ptr += 4;
4435
4436 memcpy(ptr, &indx, 4); ptr += 4;
4437 memcpy(ptr, &x, 4); ptr += 4;
4438 memcpy(ptr, &y, 4); ptr += 4;
4439
4440 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4441 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4442
4443 }
4444
glVertexAttrib2fv_enc(void * self,GLuint indx,const GLfloat * values)4445 void glVertexAttrib2fv_enc(void *self , GLuint indx, const GLfloat* values)
4446 {
4447 ENCODER_DEBUG_LOG("glVertexAttrib2fv(indx:%u, values:0x%08x)", indx, values);
4448 AEMU_SCOPED_TRACE("glVertexAttrib2fv encode");
4449
4450 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4451 IOStream *stream = ctx->m_stream;
4452 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4453 bool useChecksum = checksumCalculator->getVersion() > 0;
4454
4455 const unsigned int __size_values = (2 * sizeof(GLfloat));
4456 unsigned char *ptr;
4457 unsigned char *buf;
4458 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4459 const size_t checksumSize = checksumCalculator->checksumByteSize();
4460 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4461 buf = stream->alloc(totalSize);
4462 ptr = buf;
4463 int tmp = OP_glVertexAttrib2fv;memcpy(ptr, &tmp, 4); ptr += 4;
4464 memcpy(ptr, &totalSize, 4); ptr += 4;
4465
4466 memcpy(ptr, &indx, 4); ptr += 4;
4467 memcpy(ptr, &__size_values, 4); ptr += 4;
4468 memcpy(ptr, values, __size_values);ptr += __size_values;
4469
4470 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4471 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4472
4473 }
4474
glVertexAttrib3f_enc(void * self,GLuint indx,GLfloat x,GLfloat y,GLfloat z)4475 void glVertexAttrib3f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z)
4476 {
4477 ENCODER_DEBUG_LOG("glVertexAttrib3f(indx:%u, x:%f, y:%f, z:%f)", indx, x, y, z);
4478 AEMU_SCOPED_TRACE("glVertexAttrib3f encode");
4479
4480 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4481 IOStream *stream = ctx->m_stream;
4482 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4483 bool useChecksum = checksumCalculator->getVersion() > 0;
4484
4485 unsigned char *ptr;
4486 unsigned char *buf;
4487 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4488 const size_t checksumSize = checksumCalculator->checksumByteSize();
4489 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4490 buf = stream->alloc(totalSize);
4491 ptr = buf;
4492 int tmp = OP_glVertexAttrib3f;memcpy(ptr, &tmp, 4); ptr += 4;
4493 memcpy(ptr, &totalSize, 4); ptr += 4;
4494
4495 memcpy(ptr, &indx, 4); ptr += 4;
4496 memcpy(ptr, &x, 4); ptr += 4;
4497 memcpy(ptr, &y, 4); ptr += 4;
4498 memcpy(ptr, &z, 4); ptr += 4;
4499
4500 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4501 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4502
4503 }
4504
glVertexAttrib3fv_enc(void * self,GLuint indx,const GLfloat * values)4505 void glVertexAttrib3fv_enc(void *self , GLuint indx, const GLfloat* values)
4506 {
4507 ENCODER_DEBUG_LOG("glVertexAttrib3fv(indx:%u, values:0x%08x)", indx, values);
4508 AEMU_SCOPED_TRACE("glVertexAttrib3fv encode");
4509
4510 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4511 IOStream *stream = ctx->m_stream;
4512 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4513 bool useChecksum = checksumCalculator->getVersion() > 0;
4514
4515 const unsigned int __size_values = (3 * sizeof(GLfloat));
4516 unsigned char *ptr;
4517 unsigned char *buf;
4518 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4519 const size_t checksumSize = checksumCalculator->checksumByteSize();
4520 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4521 buf = stream->alloc(totalSize);
4522 ptr = buf;
4523 int tmp = OP_glVertexAttrib3fv;memcpy(ptr, &tmp, 4); ptr += 4;
4524 memcpy(ptr, &totalSize, 4); ptr += 4;
4525
4526 memcpy(ptr, &indx, 4); ptr += 4;
4527 memcpy(ptr, &__size_values, 4); ptr += 4;
4528 memcpy(ptr, values, __size_values);ptr += __size_values;
4529
4530 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4531 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4532
4533 }
4534
glVertexAttrib4f_enc(void * self,GLuint indx,GLfloat x,GLfloat y,GLfloat z,GLfloat w)4535 void glVertexAttrib4f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
4536 {
4537 ENCODER_DEBUG_LOG("glVertexAttrib4f(indx:%u, x:%f, y:%f, z:%f, w:%f)", indx, x, y, z, w);
4538 AEMU_SCOPED_TRACE("glVertexAttrib4f encode");
4539
4540 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4541 IOStream *stream = ctx->m_stream;
4542 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4543 bool useChecksum = checksumCalculator->getVersion() > 0;
4544
4545 unsigned char *ptr;
4546 unsigned char *buf;
4547 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4548 const size_t checksumSize = checksumCalculator->checksumByteSize();
4549 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4550 buf = stream->alloc(totalSize);
4551 ptr = buf;
4552 int tmp = OP_glVertexAttrib4f;memcpy(ptr, &tmp, 4); ptr += 4;
4553 memcpy(ptr, &totalSize, 4); ptr += 4;
4554
4555 memcpy(ptr, &indx, 4); ptr += 4;
4556 memcpy(ptr, &x, 4); ptr += 4;
4557 memcpy(ptr, &y, 4); ptr += 4;
4558 memcpy(ptr, &z, 4); ptr += 4;
4559 memcpy(ptr, &w, 4); ptr += 4;
4560
4561 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4562 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4563
4564 }
4565
glVertexAttrib4fv_enc(void * self,GLuint indx,const GLfloat * values)4566 void glVertexAttrib4fv_enc(void *self , GLuint indx, const GLfloat* values)
4567 {
4568 ENCODER_DEBUG_LOG("glVertexAttrib4fv(indx:%u, values:0x%08x)", indx, values);
4569 AEMU_SCOPED_TRACE("glVertexAttrib4fv encode");
4570
4571 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4572 IOStream *stream = ctx->m_stream;
4573 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4574 bool useChecksum = checksumCalculator->getVersion() > 0;
4575
4576 const unsigned int __size_values = (4 * sizeof(GLfloat));
4577 unsigned char *ptr;
4578 unsigned char *buf;
4579 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4580 const size_t checksumSize = checksumCalculator->checksumByteSize();
4581 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4582 buf = stream->alloc(totalSize);
4583 ptr = buf;
4584 int tmp = OP_glVertexAttrib4fv;memcpy(ptr, &tmp, 4); ptr += 4;
4585 memcpy(ptr, &totalSize, 4); ptr += 4;
4586
4587 memcpy(ptr, &indx, 4); ptr += 4;
4588 memcpy(ptr, &__size_values, 4); ptr += 4;
4589 memcpy(ptr, values, __size_values);ptr += __size_values;
4590
4591 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4592 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4593
4594 }
4595
glViewport_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height)4596 void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
4597 {
4598 ENCODER_DEBUG_LOG("glViewport(x:%d, y:%d, width:%d, height:%d)", x, y, width, height);
4599 AEMU_SCOPED_TRACE("glViewport encode");
4600
4601 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4602 IOStream *stream = ctx->m_stream;
4603 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4604 bool useChecksum = checksumCalculator->getVersion() > 0;
4605
4606 unsigned char *ptr;
4607 unsigned char *buf;
4608 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4609 const size_t checksumSize = checksumCalculator->checksumByteSize();
4610 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4611 buf = stream->alloc(totalSize);
4612 ptr = buf;
4613 int tmp = OP_glViewport;memcpy(ptr, &tmp, 4); ptr += 4;
4614 memcpy(ptr, &totalSize, 4); ptr += 4;
4615
4616 memcpy(ptr, &x, 4); ptr += 4;
4617 memcpy(ptr, &y, 4); ptr += 4;
4618 memcpy(ptr, &width, 4); ptr += 4;
4619 memcpy(ptr, &height, 4); ptr += 4;
4620
4621 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4622 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4623
4624 }
4625
glEGLImageTargetTexture2DOES_enc(void * self,GLenum target,GLeglImageOES image)4626 void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES image)
4627 {
4628 ENCODER_DEBUG_LOG("glEGLImageTargetTexture2DOES(target:0x%08x, image:%p)", target, image);
4629 AEMU_SCOPED_TRACE("glEGLImageTargetTexture2DOES encode");
4630
4631 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4632 IOStream *stream = ctx->m_stream;
4633 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4634 bool useChecksum = checksumCalculator->getVersion() > 0;
4635
4636 unsigned char *ptr;
4637 unsigned char *buf;
4638 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4639 const size_t checksumSize = checksumCalculator->checksumByteSize();
4640 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4641 buf = stream->alloc(totalSize);
4642 ptr = buf;
4643 int tmp = OP_glEGLImageTargetTexture2DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4644 memcpy(ptr, &totalSize, 4); ptr += 4;
4645
4646 memcpy(ptr, &target, 4); ptr += 4;
4647 memcpy(ptr, &image, 4); ptr += 4;
4648
4649 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4650 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4651
4652 }
4653
glEGLImageTargetRenderbufferStorageOES_enc(void * self,GLenum target,GLeglImageOES image)4654 void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeglImageOES image)
4655 {
4656 ENCODER_DEBUG_LOG("glEGLImageTargetRenderbufferStorageOES(target:0x%08x, image:%p)", target, image);
4657 AEMU_SCOPED_TRACE("glEGLImageTargetRenderbufferStorageOES encode");
4658
4659 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4660 IOStream *stream = ctx->m_stream;
4661 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4662 bool useChecksum = checksumCalculator->getVersion() > 0;
4663
4664 unsigned char *ptr;
4665 unsigned char *buf;
4666 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4667 const size_t checksumSize = checksumCalculator->checksumByteSize();
4668 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4669 buf = stream->alloc(totalSize);
4670 ptr = buf;
4671 int tmp = OP_glEGLImageTargetRenderbufferStorageOES;memcpy(ptr, &tmp, 4); ptr += 4;
4672 memcpy(ptr, &totalSize, 4); ptr += 4;
4673
4674 memcpy(ptr, &target, 4); ptr += 4;
4675 memcpy(ptr, &image, 4); ptr += 4;
4676
4677 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4678 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4679
4680 }
4681
glUnmapBufferOES_enc(void * self,GLenum target)4682 GLboolean glUnmapBufferOES_enc(void *self , GLenum target)
4683 {
4684 ENCODER_DEBUG_LOG("glUnmapBufferOES(target:0x%08x)", target);
4685 AEMU_SCOPED_TRACE("glUnmapBufferOES encode");
4686
4687 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4688 IOStream *stream = ctx->m_stream;
4689 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4690 bool useChecksum = checksumCalculator->getVersion() > 0;
4691
4692 unsigned char *ptr;
4693 unsigned char *buf;
4694 const size_t sizeWithoutChecksum = 8 + 4;
4695 const size_t checksumSize = checksumCalculator->checksumByteSize();
4696 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4697 buf = stream->alloc(totalSize);
4698 ptr = buf;
4699 int tmp = OP_glUnmapBufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
4700 memcpy(ptr, &totalSize, 4); ptr += 4;
4701
4702 memcpy(ptr, &target, 4); ptr += 4;
4703
4704 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4705 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4706
4707
4708 GLboolean retval;
4709 stream->readback(&retval, 1);
4710 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
4711 if (useChecksum) {
4712 unsigned char *checksumBufPtr = NULL;
4713 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
4714 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
4715 stream->readback(checksumBufPtr, checksumSize);
4716 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
4717 ALOGE("glUnmapBufferOES: GL communication error, please report this issue to b.android.com.\n");
4718 abort();
4719 }
4720 }
4721 return retval;
4722 }
4723
glTexImage3DOES_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * pixels)4724 void glTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
4725 {
4726 ENCODER_DEBUG_LOG("glTexImage3DOES(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d, border:%d, format:0x%08x, type:0x%08x, pixels:0x%08x)", target, level, internalformat, width, height, depth, border, format, type, pixels);
4727 AEMU_SCOPED_TRACE("glTexImage3DOES encode");
4728
4729 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4730 IOStream *stream = ctx->m_stream;
4731 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4732 bool useChecksum = checksumCalculator->getVersion() > 0;
4733
4734 const unsigned int __size_pixels = ((pixels != NULL) ? glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
4735 unsigned char *ptr;
4736 unsigned char *buf;
4737 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
4738 const size_t checksumSize = checksumCalculator->checksumByteSize();
4739 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4740 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4741 ptr = buf;
4742 int tmp = OP_glTexImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4743 memcpy(ptr, &totalSize, 4); ptr += 4;
4744
4745 memcpy(ptr, &target, 4); ptr += 4;
4746 memcpy(ptr, &level, 4); ptr += 4;
4747 memcpy(ptr, &internalformat, 4); ptr += 4;
4748 memcpy(ptr, &width, 4); ptr += 4;
4749 memcpy(ptr, &height, 4); ptr += 4;
4750 memcpy(ptr, &depth, 4); ptr += 4;
4751 memcpy(ptr, &border, 4); ptr += 4;
4752 memcpy(ptr, &format, 4); ptr += 4;
4753 memcpy(ptr, &type, 4); ptr += 4;
4754
4755 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4756 stream->flush();
4757 stream->writeFully(&__size_pixels,4);
4758 if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
4759 if (pixels != NULL) {
4760 stream->writeFully(pixels, __size_pixels);
4761 if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
4762 }
4763 buf = stream->alloc(checksumSize);
4764 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4765
4766 }
4767
glTexSubImage3DOES_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * pixels)4768 void glTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels)
4769 {
4770 ENCODER_DEBUG_LOG("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:0x%08x)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
4771 AEMU_SCOPED_TRACE("glTexSubImage3DOES encode");
4772
4773 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4774 IOStream *stream = ctx->m_stream;
4775 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4776 bool useChecksum = checksumCalculator->getVersion() > 0;
4777
4778 const unsigned int __size_pixels = ((pixels != NULL) ? glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
4779 unsigned char *ptr;
4780 unsigned char *buf;
4781 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
4782 const size_t checksumSize = checksumCalculator->checksumByteSize();
4783 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4784 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4785 ptr = buf;
4786 int tmp = OP_glTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4787 memcpy(ptr, &totalSize, 4); ptr += 4;
4788
4789 memcpy(ptr, &target, 4); ptr += 4;
4790 memcpy(ptr, &level, 4); ptr += 4;
4791 memcpy(ptr, &xoffset, 4); ptr += 4;
4792 memcpy(ptr, &yoffset, 4); ptr += 4;
4793 memcpy(ptr, &zoffset, 4); ptr += 4;
4794 memcpy(ptr, &width, 4); ptr += 4;
4795 memcpy(ptr, &height, 4); ptr += 4;
4796 memcpy(ptr, &depth, 4); ptr += 4;
4797 memcpy(ptr, &format, 4); ptr += 4;
4798 memcpy(ptr, &type, 4); ptr += 4;
4799
4800 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4801 stream->flush();
4802 stream->writeFully(&__size_pixels,4);
4803 if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
4804 if (pixels != NULL) {
4805 stream->writeFully(pixels, __size_pixels);
4806 if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
4807 }
4808 buf = stream->alloc(checksumSize);
4809 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4810
4811 }
4812
glCopyTexSubImage3DOES_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)4813 void glCopyTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
4814 {
4815 ENCODER_DEBUG_LOG("glCopyTexSubImage3DOES(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, x:%d, y:%d, width:%d, height:%d)", target, level, xoffset, yoffset, zoffset, x, y, width, height);
4816 AEMU_SCOPED_TRACE("glCopyTexSubImage3DOES encode");
4817
4818 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4819 IOStream *stream = ctx->m_stream;
4820 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4821 bool useChecksum = checksumCalculator->getVersion() > 0;
4822
4823 unsigned char *ptr;
4824 unsigned char *buf;
4825 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
4826 const size_t checksumSize = checksumCalculator->checksumByteSize();
4827 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4828 buf = stream->alloc(totalSize);
4829 ptr = buf;
4830 int tmp = OP_glCopyTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4831 memcpy(ptr, &totalSize, 4); ptr += 4;
4832
4833 memcpy(ptr, &target, 4); ptr += 4;
4834 memcpy(ptr, &level, 4); ptr += 4;
4835 memcpy(ptr, &xoffset, 4); ptr += 4;
4836 memcpy(ptr, &yoffset, 4); ptr += 4;
4837 memcpy(ptr, &zoffset, 4); ptr += 4;
4838 memcpy(ptr, &x, 4); ptr += 4;
4839 memcpy(ptr, &y, 4); ptr += 4;
4840 memcpy(ptr, &width, 4); ptr += 4;
4841 memcpy(ptr, &height, 4); ptr += 4;
4842
4843 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4844 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4845
4846 }
4847
glCompressedTexImage3DOES_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)4848 void glCompressedTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
4849 {
4850 ENCODER_DEBUG_LOG("glCompressedTexImage3DOES(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d, border:%d, imageSize:%d, data:0x%08x)", target, level, internalformat, width, height, depth, border, imageSize, data);
4851 AEMU_SCOPED_TRACE("glCompressedTexImage3DOES encode");
4852
4853 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4854 IOStream *stream = ctx->m_stream;
4855 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4856 bool useChecksum = checksumCalculator->getVersion() > 0;
4857
4858 const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
4859 unsigned char *ptr;
4860 unsigned char *buf;
4861 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
4862 const size_t checksumSize = checksumCalculator->checksumByteSize();
4863 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4864 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4865 ptr = buf;
4866 int tmp = OP_glCompressedTexImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4867 memcpy(ptr, &totalSize, 4); ptr += 4;
4868
4869 memcpy(ptr, &target, 4); ptr += 4;
4870 memcpy(ptr, &level, 4); ptr += 4;
4871 memcpy(ptr, &internalformat, 4); ptr += 4;
4872 memcpy(ptr, &width, 4); ptr += 4;
4873 memcpy(ptr, &height, 4); ptr += 4;
4874 memcpy(ptr, &depth, 4); ptr += 4;
4875 memcpy(ptr, &border, 4); ptr += 4;
4876 memcpy(ptr, &imageSize, 4); ptr += 4;
4877
4878 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4879 stream->flush();
4880 stream->writeFully(&__size_data,4);
4881 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
4882 if (data != NULL) {
4883 stream->writeFully(data, __size_data);
4884 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
4885 }
4886 buf = stream->alloc(checksumSize);
4887 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4888
4889 }
4890
glCompressedTexSubImage3DOES_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)4891 void glCompressedTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
4892 {
4893 ENCODER_DEBUG_LOG("glCompressedTexSubImage3DOES(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, width:%d, height:%d, depth:%d, format:0x%08x, imageSize:%d, data:0x%08x)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
4894 AEMU_SCOPED_TRACE("glCompressedTexSubImage3DOES encode");
4895
4896 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4897 IOStream *stream = ctx->m_stream;
4898 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4899 bool useChecksum = checksumCalculator->getVersion() > 0;
4900
4901 const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
4902 unsigned char *ptr;
4903 unsigned char *buf;
4904 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
4905 const size_t checksumSize = checksumCalculator->checksumByteSize();
4906 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4907 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4908 ptr = buf;
4909 int tmp = OP_glCompressedTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4910 memcpy(ptr, &totalSize, 4); ptr += 4;
4911
4912 memcpy(ptr, &target, 4); ptr += 4;
4913 memcpy(ptr, &level, 4); ptr += 4;
4914 memcpy(ptr, &xoffset, 4); ptr += 4;
4915 memcpy(ptr, &yoffset, 4); ptr += 4;
4916 memcpy(ptr, &zoffset, 4); ptr += 4;
4917 memcpy(ptr, &width, 4); ptr += 4;
4918 memcpy(ptr, &height, 4); ptr += 4;
4919 memcpy(ptr, &depth, 4); ptr += 4;
4920 memcpy(ptr, &format, 4); ptr += 4;
4921 memcpy(ptr, &imageSize, 4); ptr += 4;
4922
4923 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4924 stream->flush();
4925 stream->writeFully(&__size_data,4);
4926 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
4927 if (data != NULL) {
4928 stream->writeFully(data, __size_data);
4929 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
4930 }
4931 buf = stream->alloc(checksumSize);
4932 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4933
4934 }
4935
glFramebufferTexture3DOES_enc(void * self,GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level,GLint zoffset)4936 void glFramebufferTexture3DOES_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
4937 {
4938 ENCODER_DEBUG_LOG("glFramebufferTexture3DOES(target:0x%08x, attachment:0x%08x, textarget:0x%08x, texture:%u, level:%d, zoffset:%d)", target, attachment, textarget, texture, level, zoffset);
4939 AEMU_SCOPED_TRACE("glFramebufferTexture3DOES encode");
4940
4941 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4942 IOStream *stream = ctx->m_stream;
4943 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4944 bool useChecksum = checksumCalculator->getVersion() > 0;
4945
4946 unsigned char *ptr;
4947 unsigned char *buf;
4948 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
4949 const size_t checksumSize = checksumCalculator->checksumByteSize();
4950 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4951 buf = stream->alloc(totalSize);
4952 ptr = buf;
4953 int tmp = OP_glFramebufferTexture3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4954 memcpy(ptr, &totalSize, 4); ptr += 4;
4955
4956 memcpy(ptr, &target, 4); ptr += 4;
4957 memcpy(ptr, &attachment, 4); ptr += 4;
4958 memcpy(ptr, &textarget, 4); ptr += 4;
4959 memcpy(ptr, &texture, 4); ptr += 4;
4960 memcpy(ptr, &level, 4); ptr += 4;
4961 memcpy(ptr, &zoffset, 4); ptr += 4;
4962
4963 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4964 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4965
4966 }
4967
glBindVertexArrayOES_enc(void * self,GLuint array)4968 void glBindVertexArrayOES_enc(void *self , GLuint array)
4969 {
4970 ENCODER_DEBUG_LOG("glBindVertexArrayOES(array:%u)", array);
4971 AEMU_SCOPED_TRACE("glBindVertexArrayOES encode");
4972
4973 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4974 IOStream *stream = ctx->m_stream;
4975 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4976 bool useChecksum = checksumCalculator->getVersion() > 0;
4977
4978 unsigned char *ptr;
4979 unsigned char *buf;
4980 const size_t sizeWithoutChecksum = 8 + 4;
4981 const size_t checksumSize = checksumCalculator->checksumByteSize();
4982 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4983 buf = stream->alloc(totalSize);
4984 ptr = buf;
4985 int tmp = OP_glBindVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
4986 memcpy(ptr, &totalSize, 4); ptr += 4;
4987
4988 memcpy(ptr, &array, 4); ptr += 4;
4989
4990 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4991 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4992
4993 }
4994
glDeleteVertexArraysOES_enc(void * self,GLsizei n,const GLuint * arrays)4995 void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays)
4996 {
4997 ENCODER_DEBUG_LOG("glDeleteVertexArraysOES(n:%d, arrays:0x%08x)", n, arrays);
4998 AEMU_SCOPED_TRACE("glDeleteVertexArraysOES encode");
4999
5000 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5001 IOStream *stream = ctx->m_stream;
5002 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5003 bool useChecksum = checksumCalculator->getVersion() > 0;
5004
5005 const unsigned int __size_arrays = (n * sizeof(GLuint));
5006 unsigned char *ptr;
5007 unsigned char *buf;
5008 const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
5009 const size_t checksumSize = checksumCalculator->checksumByteSize();
5010 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5011 buf = stream->alloc(totalSize);
5012 ptr = buf;
5013 int tmp = OP_glDeleteVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
5014 memcpy(ptr, &totalSize, 4); ptr += 4;
5015
5016 memcpy(ptr, &n, 4); ptr += 4;
5017 memcpy(ptr, &__size_arrays, 4); ptr += 4;
5018 memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
5019
5020 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5021 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5022
5023 }
5024
glGenVertexArraysOES_enc(void * self,GLsizei n,GLuint * arrays)5025 void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays)
5026 {
5027 ENCODER_DEBUG_LOG("glGenVertexArraysOES(n:%d, arrays:0x%08x)", n, arrays);
5028 AEMU_SCOPED_TRACE("glGenVertexArraysOES encode");
5029
5030 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5031 IOStream *stream = ctx->m_stream;
5032 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5033 bool useChecksum = checksumCalculator->getVersion() > 0;
5034
5035 const unsigned int __size_arrays = (n * sizeof(GLuint));
5036 unsigned char *ptr;
5037 unsigned char *buf;
5038 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5039 const size_t checksumSize = checksumCalculator->checksumByteSize();
5040 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5041 buf = stream->alloc(totalSize);
5042 ptr = buf;
5043 int tmp = OP_glGenVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
5044 memcpy(ptr, &totalSize, 4); ptr += 4;
5045
5046 memcpy(ptr, &n, 4); ptr += 4;
5047 memcpy(ptr, &__size_arrays, 4); ptr += 4;
5048
5049 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5050 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5051
5052 stream->readback(arrays, __size_arrays);
5053 if (useChecksum) checksumCalculator->addBuffer(arrays, __size_arrays);
5054 if (useChecksum) {
5055 unsigned char *checksumBufPtr = NULL;
5056 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5057 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5058 stream->readback(checksumBufPtr, checksumSize);
5059 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5060 ALOGE("glGenVertexArraysOES: GL communication error, please report this issue to b.android.com.\n");
5061 abort();
5062 }
5063 }
5064 }
5065
glIsVertexArrayOES_enc(void * self,GLuint array)5066 GLboolean glIsVertexArrayOES_enc(void *self , GLuint array)
5067 {
5068 ENCODER_DEBUG_LOG("glIsVertexArrayOES(array:%u)", array);
5069 AEMU_SCOPED_TRACE("glIsVertexArrayOES encode");
5070
5071 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5072 IOStream *stream = ctx->m_stream;
5073 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5074 bool useChecksum = checksumCalculator->getVersion() > 0;
5075
5076 unsigned char *ptr;
5077 unsigned char *buf;
5078 const size_t sizeWithoutChecksum = 8 + 4;
5079 const size_t checksumSize = checksumCalculator->checksumByteSize();
5080 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5081 buf = stream->alloc(totalSize);
5082 ptr = buf;
5083 int tmp = OP_glIsVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
5084 memcpy(ptr, &totalSize, 4); ptr += 4;
5085
5086 memcpy(ptr, &array, 4); ptr += 4;
5087
5088 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5089 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5090
5091
5092 GLboolean retval;
5093 stream->readback(&retval, 1);
5094 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
5095 if (useChecksum) {
5096 unsigned char *checksumBufPtr = NULL;
5097 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5098 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5099 stream->readback(checksumBufPtr, checksumSize);
5100 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5101 ALOGE("glIsVertexArrayOES: GL communication error, please report this issue to b.android.com.\n");
5102 abort();
5103 }
5104 }
5105 return retval;
5106 }
5107
glDiscardFramebufferEXT_enc(void * self,GLenum target,GLsizei numAttachments,const GLenum * attachments)5108 void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments)
5109 {
5110 ENCODER_DEBUG_LOG("glDiscardFramebufferEXT(target:0x%08x, numAttachments:%d, attachments:0x%08x)", target, numAttachments, attachments);
5111 AEMU_SCOPED_TRACE("glDiscardFramebufferEXT encode");
5112
5113 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5114 IOStream *stream = ctx->m_stream;
5115 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5116 bool useChecksum = checksumCalculator->getVersion() > 0;
5117
5118 const unsigned int __size_attachments = (numAttachments * sizeof(GLenum));
5119 unsigned char *ptr;
5120 unsigned char *buf;
5121 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 1*4;
5122 const size_t checksumSize = checksumCalculator->checksumByteSize();
5123 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5124 buf = stream->alloc(totalSize);
5125 ptr = buf;
5126 int tmp = OP_glDiscardFramebufferEXT;memcpy(ptr, &tmp, 4); ptr += 4;
5127 memcpy(ptr, &totalSize, 4); ptr += 4;
5128
5129 memcpy(ptr, &target, 4); ptr += 4;
5130 memcpy(ptr, &numAttachments, 4); ptr += 4;
5131 memcpy(ptr, &__size_attachments, 4); ptr += 4;
5132 memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
5133
5134 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5135 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5136
5137 }
5138
glVertexAttribPointerData_enc(void * self,GLuint indx,GLint size,GLenum type,GLboolean normalized,GLsizei stride,void * data,GLuint datalen)5139 void glVertexAttribPointerData_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void* data, GLuint datalen)
5140 {
5141 ENCODER_DEBUG_LOG("glVertexAttribPointerData(indx:%u, size:%d, type:0x%08x, normalized:%d, stride:%d, data:0x%08x, datalen:%u)", indx, size, type, normalized, stride, data, datalen);
5142 AEMU_SCOPED_TRACE("glVertexAttribPointerData encode");
5143
5144 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5145 IOStream *stream = ctx->m_stream;
5146 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5147 bool useChecksum = checksumCalculator->getVersion() > 0;
5148
5149 const unsigned int __size_data = datalen;
5150 unsigned char *ptr;
5151 unsigned char *buf;
5152 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + __size_data + 4 + 1*4;
5153 const size_t checksumSize = checksumCalculator->checksumByteSize();
5154 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5155 buf = stream->alloc(totalSize);
5156 ptr = buf;
5157 int tmp = OP_glVertexAttribPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
5158 memcpy(ptr, &totalSize, 4); ptr += 4;
5159
5160 memcpy(ptr, &indx, 4); ptr += 4;
5161 memcpy(ptr, &size, 4); ptr += 4;
5162 memcpy(ptr, &type, 4); ptr += 4;
5163 memcpy(ptr, &normalized, 1); ptr += 1;
5164 memcpy(ptr, &stride, 4); ptr += 4;
5165 memcpy(ptr, &__size_data, 4); ptr += 4;
5166 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
5167 memcpy(ptr, &datalen, 4); ptr += 4;
5168
5169 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5170 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5171
5172 }
5173
glVertexAttribPointerOffset_enc(void * self,GLuint indx,GLint size,GLenum type,GLboolean normalized,GLsizei stride,GLuint offset)5174 void glVertexAttribPointerOffset_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint offset)
5175 {
5176 ENCODER_DEBUG_LOG("glVertexAttribPointerOffset(indx:%u, size:%d, type:0x%08x, normalized:%d, stride:%d, offset:%u)", indx, size, type, normalized, stride, offset);
5177 AEMU_SCOPED_TRACE("glVertexAttribPointerOffset encode");
5178
5179 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5180 IOStream *stream = ctx->m_stream;
5181 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5182 bool useChecksum = checksumCalculator->getVersion() > 0;
5183
5184 unsigned char *ptr;
5185 unsigned char *buf;
5186 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + 4;
5187 const size_t checksumSize = checksumCalculator->checksumByteSize();
5188 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5189 buf = stream->alloc(totalSize);
5190 ptr = buf;
5191 int tmp = OP_glVertexAttribPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
5192 memcpy(ptr, &totalSize, 4); ptr += 4;
5193
5194 memcpy(ptr, &indx, 4); ptr += 4;
5195 memcpy(ptr, &size, 4); ptr += 4;
5196 memcpy(ptr, &type, 4); ptr += 4;
5197 memcpy(ptr, &normalized, 1); ptr += 1;
5198 memcpy(ptr, &stride, 4); ptr += 4;
5199 memcpy(ptr, &offset, 4); ptr += 4;
5200
5201 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5202 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5203
5204 }
5205
glDrawElementsOffset_enc(void * self,GLenum mode,GLsizei count,GLenum type,GLuint offset)5206 void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset)
5207 {
5208 ENCODER_DEBUG_LOG("glDrawElementsOffset(mode:0x%08x, count:%d, type:0x%08x, offset:%u)", mode, count, type, offset);
5209 AEMU_SCOPED_TRACE("glDrawElementsOffset encode");
5210
5211 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5212 IOStream *stream = ctx->m_stream;
5213 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5214 bool useChecksum = checksumCalculator->getVersion() > 0;
5215
5216 unsigned char *ptr;
5217 unsigned char *buf;
5218 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
5219 const size_t checksumSize = checksumCalculator->checksumByteSize();
5220 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5221 buf = stream->alloc(totalSize);
5222 ptr = buf;
5223 int tmp = OP_glDrawElementsOffset;memcpy(ptr, &tmp, 4); ptr += 4;
5224 memcpy(ptr, &totalSize, 4); ptr += 4;
5225
5226 memcpy(ptr, &mode, 4); ptr += 4;
5227 memcpy(ptr, &count, 4); ptr += 4;
5228 memcpy(ptr, &type, 4); ptr += 4;
5229 memcpy(ptr, &offset, 4); ptr += 4;
5230
5231 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5232 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5233
5234 }
5235
glDrawElementsData_enc(void * self,GLenum mode,GLsizei count,GLenum type,void * data,GLuint datalen)5236 void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
5237 {
5238 ENCODER_DEBUG_LOG("glDrawElementsData(mode:0x%08x, count:%d, type:0x%08x, data:0x%08x, datalen:%u)", mode, count, type, data, datalen);
5239 AEMU_SCOPED_TRACE("glDrawElementsData encode");
5240
5241 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5242 IOStream *stream = ctx->m_stream;
5243 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5244 bool useChecksum = checksumCalculator->getVersion() > 0;
5245
5246 const unsigned int __size_data = datalen;
5247 unsigned char *ptr;
5248 unsigned char *buf;
5249 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
5250 const size_t checksumSize = checksumCalculator->checksumByteSize();
5251 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5252 buf = stream->alloc(totalSize);
5253 ptr = buf;
5254 int tmp = OP_glDrawElementsData;memcpy(ptr, &tmp, 4); ptr += 4;
5255 memcpy(ptr, &totalSize, 4); ptr += 4;
5256
5257 memcpy(ptr, &mode, 4); ptr += 4;
5258 memcpy(ptr, &count, 4); ptr += 4;
5259 memcpy(ptr, &type, 4); ptr += 4;
5260 memcpy(ptr, &__size_data, 4); ptr += 4;
5261 memcpy(ptr, data, __size_data);ptr += __size_data;
5262 memcpy(ptr, &datalen, 4); ptr += 4;
5263
5264 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5265 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5266
5267 }
5268
glGetCompressedTextureFormats_enc(void * self,int count,GLint * formats)5269 void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats)
5270 {
5271 ENCODER_DEBUG_LOG("glGetCompressedTextureFormats(count:%d, formats:0x%08x)", count, formats);
5272 AEMU_SCOPED_TRACE("glGetCompressedTextureFormats encode");
5273
5274 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5275 IOStream *stream = ctx->m_stream;
5276 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5277 bool useChecksum = checksumCalculator->getVersion() > 0;
5278
5279 const unsigned int __size_formats = (count * sizeof(GLint));
5280 unsigned char *ptr;
5281 unsigned char *buf;
5282 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5283 const size_t checksumSize = checksumCalculator->checksumByteSize();
5284 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5285 buf = stream->alloc(totalSize);
5286 ptr = buf;
5287 int tmp = OP_glGetCompressedTextureFormats;memcpy(ptr, &tmp, 4); ptr += 4;
5288 memcpy(ptr, &totalSize, 4); ptr += 4;
5289
5290 memcpy(ptr, &count, 4); ptr += 4;
5291 memcpy(ptr, &__size_formats, 4); ptr += 4;
5292
5293 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5294 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5295
5296 stream->readback(formats, __size_formats);
5297 if (useChecksum) checksumCalculator->addBuffer(formats, __size_formats);
5298 if (useChecksum) {
5299 unsigned char *checksumBufPtr = NULL;
5300 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5301 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5302 stream->readback(checksumBufPtr, checksumSize);
5303 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5304 ALOGE("glGetCompressedTextureFormats: GL communication error, please report this issue to b.android.com.\n");
5305 abort();
5306 }
5307 }
5308 }
5309
glShaderString_enc(void * self,GLuint shader,const GLchar * string,GLsizei len)5310 void glShaderString_enc(void *self , GLuint shader, const GLchar* string, GLsizei len)
5311 {
5312 ENCODER_DEBUG_LOG("glShaderString(shader:%u, string:0x%08x, len:%d)", shader, string, len);
5313 AEMU_SCOPED_TRACE("glShaderString encode");
5314
5315 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5316 IOStream *stream = ctx->m_stream;
5317 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5318 bool useChecksum = checksumCalculator->getVersion() > 0;
5319
5320 const unsigned int __size_string = len;
5321 unsigned char *ptr;
5322 unsigned char *buf;
5323 const size_t sizeWithoutChecksum = 8 + 4 + __size_string + 4 + 1*4;
5324 const size_t checksumSize = checksumCalculator->checksumByteSize();
5325 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5326 buf = stream->alloc(totalSize);
5327 ptr = buf;
5328 int tmp = OP_glShaderString;memcpy(ptr, &tmp, 4); ptr += 4;
5329 memcpy(ptr, &totalSize, 4); ptr += 4;
5330
5331 memcpy(ptr, &shader, 4); ptr += 4;
5332 memcpy(ptr, &__size_string, 4); ptr += 4;
5333 memcpy(ptr, string, __size_string);ptr += __size_string;
5334 memcpy(ptr, &len, 4); ptr += 4;
5335
5336 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5337 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5338
5339 }
5340
glFinishRoundTrip_enc(void * self)5341 int glFinishRoundTrip_enc(void *self )
5342 {
5343 ENCODER_DEBUG_LOG("glFinishRoundTrip()");
5344 AEMU_SCOPED_TRACE("glFinishRoundTrip encode");
5345
5346 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5347 IOStream *stream = ctx->m_stream;
5348 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5349 bool useChecksum = checksumCalculator->getVersion() > 0;
5350
5351 unsigned char *ptr;
5352 unsigned char *buf;
5353 const size_t sizeWithoutChecksum = 8;
5354 const size_t checksumSize = checksumCalculator->checksumByteSize();
5355 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5356 buf = stream->alloc(totalSize);
5357 ptr = buf;
5358 int tmp = OP_glFinishRoundTrip;memcpy(ptr, &tmp, 4); ptr += 4;
5359 memcpy(ptr, &totalSize, 4); ptr += 4;
5360
5361
5362 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5363 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5364
5365
5366 int retval;
5367 stream->readback(&retval, 4);
5368 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
5369 if (useChecksum) {
5370 unsigned char *checksumBufPtr = NULL;
5371 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5372 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5373 stream->readback(checksumBufPtr, checksumSize);
5374 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5375 ALOGE("glFinishRoundTrip: GL communication error, please report this issue to b.android.com.\n");
5376 abort();
5377 }
5378 }
5379 return retval;
5380 }
5381
glGenVertexArrays_enc(void * self,GLsizei n,GLuint * arrays)5382 void glGenVertexArrays_enc(void *self , GLsizei n, GLuint* arrays)
5383 {
5384 ENCODER_DEBUG_LOG("glGenVertexArrays(n:%d, arrays:0x%08x)", n, arrays);
5385 AEMU_SCOPED_TRACE("glGenVertexArrays encode");
5386
5387 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5388 IOStream *stream = ctx->m_stream;
5389 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5390 bool useChecksum = checksumCalculator->getVersion() > 0;
5391
5392 const unsigned int __size_arrays = (n * sizeof(GLuint));
5393 unsigned char *ptr;
5394 unsigned char *buf;
5395 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5396 const size_t checksumSize = checksumCalculator->checksumByteSize();
5397 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5398 buf = stream->alloc(totalSize);
5399 ptr = buf;
5400 int tmp = OP_glGenVertexArrays;memcpy(ptr, &tmp, 4); ptr += 4;
5401 memcpy(ptr, &totalSize, 4); ptr += 4;
5402
5403 memcpy(ptr, &n, 4); ptr += 4;
5404 memcpy(ptr, &__size_arrays, 4); ptr += 4;
5405
5406 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5407 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5408
5409 stream->readback(arrays, __size_arrays);
5410 if (useChecksum) checksumCalculator->addBuffer(arrays, __size_arrays);
5411 if (useChecksum) {
5412 unsigned char *checksumBufPtr = NULL;
5413 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5414 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5415 stream->readback(checksumBufPtr, checksumSize);
5416 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5417 ALOGE("glGenVertexArrays: GL communication error, please report this issue to b.android.com.\n");
5418 abort();
5419 }
5420 }
5421 }
5422
glBindVertexArray_enc(void * self,GLuint array)5423 void glBindVertexArray_enc(void *self , GLuint array)
5424 {
5425 ENCODER_DEBUG_LOG("glBindVertexArray(array:%u)", array);
5426 AEMU_SCOPED_TRACE("glBindVertexArray encode");
5427
5428 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5429 IOStream *stream = ctx->m_stream;
5430 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5431 bool useChecksum = checksumCalculator->getVersion() > 0;
5432
5433 unsigned char *ptr;
5434 unsigned char *buf;
5435 const size_t sizeWithoutChecksum = 8 + 4;
5436 const size_t checksumSize = checksumCalculator->checksumByteSize();
5437 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5438 buf = stream->alloc(totalSize);
5439 ptr = buf;
5440 int tmp = OP_glBindVertexArray;memcpy(ptr, &tmp, 4); ptr += 4;
5441 memcpy(ptr, &totalSize, 4); ptr += 4;
5442
5443 memcpy(ptr, &array, 4); ptr += 4;
5444
5445 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5446 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5447
5448 }
5449
glDeleteVertexArrays_enc(void * self,GLsizei n,const GLuint * arrays)5450 void glDeleteVertexArrays_enc(void *self , GLsizei n, const GLuint* arrays)
5451 {
5452 ENCODER_DEBUG_LOG("glDeleteVertexArrays(n:%d, arrays:0x%08x)", n, arrays);
5453 AEMU_SCOPED_TRACE("glDeleteVertexArrays encode");
5454
5455 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5456 IOStream *stream = ctx->m_stream;
5457 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5458 bool useChecksum = checksumCalculator->getVersion() > 0;
5459
5460 const unsigned int __size_arrays = (n * sizeof(GLuint));
5461 unsigned char *ptr;
5462 unsigned char *buf;
5463 const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
5464 const size_t checksumSize = checksumCalculator->checksumByteSize();
5465 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5466 buf = stream->alloc(totalSize);
5467 ptr = buf;
5468 int tmp = OP_glDeleteVertexArrays;memcpy(ptr, &tmp, 4); ptr += 4;
5469 memcpy(ptr, &totalSize, 4); ptr += 4;
5470
5471 memcpy(ptr, &n, 4); ptr += 4;
5472 memcpy(ptr, &__size_arrays, 4); ptr += 4;
5473 memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
5474
5475 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5476 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5477
5478 }
5479
glIsVertexArray_enc(void * self,GLuint array)5480 GLboolean glIsVertexArray_enc(void *self , GLuint array)
5481 {
5482 ENCODER_DEBUG_LOG("glIsVertexArray(array:%u)", array);
5483 AEMU_SCOPED_TRACE("glIsVertexArray encode");
5484
5485 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5486 IOStream *stream = ctx->m_stream;
5487 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5488 bool useChecksum = checksumCalculator->getVersion() > 0;
5489
5490 unsigned char *ptr;
5491 unsigned char *buf;
5492 const size_t sizeWithoutChecksum = 8 + 4;
5493 const size_t checksumSize = checksumCalculator->checksumByteSize();
5494 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5495 buf = stream->alloc(totalSize);
5496 ptr = buf;
5497 int tmp = OP_glIsVertexArray;memcpy(ptr, &tmp, 4); ptr += 4;
5498 memcpy(ptr, &totalSize, 4); ptr += 4;
5499
5500 memcpy(ptr, &array, 4); ptr += 4;
5501
5502 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5503 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5504
5505
5506 GLboolean retval;
5507 stream->readback(&retval, 1);
5508 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
5509 if (useChecksum) {
5510 unsigned char *checksumBufPtr = NULL;
5511 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5512 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5513 stream->readback(checksumBufPtr, checksumSize);
5514 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5515 ALOGE("glIsVertexArray: GL communication error, please report this issue to b.android.com.\n");
5516 abort();
5517 }
5518 }
5519 return retval;
5520 }
5521
glMapBufferRangeAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * mapped)5522 void glMapBufferRangeAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* mapped)
5523 {
5524 ENCODER_DEBUG_LOG("glMapBufferRangeAEMU(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, mapped:0x%08x)", target, offset, length, access, mapped);
5525 AEMU_SCOPED_TRACE("glMapBufferRangeAEMU encode");
5526
5527 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5528 IOStream *stream = ctx->m_stream;
5529 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5530 bool useChecksum = checksumCalculator->getVersion() > 0;
5531
5532 const unsigned int __size_mapped = ((mapped != NULL) ? length : 0);
5533 unsigned char *ptr;
5534 unsigned char *buf;
5535 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 1*4;
5536 const size_t checksumSize = checksumCalculator->checksumByteSize();
5537 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5538 buf = stream->alloc(totalSize);
5539 ptr = buf;
5540 int tmp = OP_glMapBufferRangeAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5541 memcpy(ptr, &totalSize, 4); ptr += 4;
5542
5543 memcpy(ptr, &target, 4); ptr += 4;
5544 memcpy(ptr, &offset, 4); ptr += 4;
5545 memcpy(ptr, &length, 4); ptr += 4;
5546 memcpy(ptr, &access, 4); ptr += 4;
5547 memcpy(ptr, &__size_mapped, 4); ptr += 4;
5548
5549 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5550 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5551
5552 if (mapped != NULL) {
5553 stream->readback(mapped, __size_mapped);
5554 if (useChecksum) checksumCalculator->addBuffer(mapped, __size_mapped);
5555 }
5556 if (useChecksum) {
5557 unsigned char *checksumBufPtr = NULL;
5558 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5559 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5560 stream->readback(checksumBufPtr, checksumSize);
5561 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5562 ALOGE("glMapBufferRangeAEMU: GL communication error, please report this issue to b.android.com.\n");
5563 abort();
5564 }
5565 }
5566 }
5567
glUnmapBufferAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer,GLboolean * out_res)5568 void glUnmapBufferAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer, GLboolean* out_res)
5569 {
5570 ENCODER_DEBUG_LOG("glUnmapBufferAEMU(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, guest_buffer:0x%08x, out_res:0x%08x)", target, offset, length, access, guest_buffer, out_res);
5571 AEMU_SCOPED_TRACE("glUnmapBufferAEMU encode");
5572
5573 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5574 IOStream *stream = ctx->m_stream;
5575 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5576 bool useChecksum = checksumCalculator->getVersion() > 0;
5577
5578 const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ? length : 0);
5579 const unsigned int __size_out_res = (sizeof(GLboolean));
5580 unsigned char *ptr;
5581 unsigned char *buf;
5582 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + 0 + 2*4;
5583 const size_t checksumSize = checksumCalculator->checksumByteSize();
5584 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5585 buf = stream->alloc(totalSize);
5586 ptr = buf;
5587 int tmp = OP_glUnmapBufferAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5588 memcpy(ptr, &totalSize, 4); ptr += 4;
5589
5590 memcpy(ptr, &target, 4); ptr += 4;
5591 memcpy(ptr, &offset, 4); ptr += 4;
5592 memcpy(ptr, &length, 4); ptr += 4;
5593 memcpy(ptr, &access, 4); ptr += 4;
5594 memcpy(ptr, &__size_guest_buffer, 4); ptr += 4;
5595 if (guest_buffer != NULL) memcpy(ptr, guest_buffer, __size_guest_buffer);ptr += __size_guest_buffer;
5596 memcpy(ptr, &__size_out_res, 4); ptr += 4;
5597
5598 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5599 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5600
5601 stream->readback(out_res, __size_out_res);
5602 if (useChecksum) checksumCalculator->addBuffer(out_res, __size_out_res);
5603 if (useChecksum) {
5604 unsigned char *checksumBufPtr = NULL;
5605 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5606 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5607 stream->readback(checksumBufPtr, checksumSize);
5608 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5609 ALOGE("glUnmapBufferAEMU: GL communication error, please report this issue to b.android.com.\n");
5610 abort();
5611 }
5612 }
5613 }
5614
glFlushMappedBufferRangeAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer)5615 void glFlushMappedBufferRangeAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer)
5616 {
5617 ENCODER_DEBUG_LOG("glFlushMappedBufferRangeAEMU(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, guest_buffer:0x%08x)", target, offset, length, access, guest_buffer);
5618 AEMU_SCOPED_TRACE("glFlushMappedBufferRangeAEMU encode");
5619
5620 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5621 IOStream *stream = ctx->m_stream;
5622 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5623 bool useChecksum = checksumCalculator->getVersion() > 0;
5624
5625 const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ? length : 0);
5626 unsigned char *ptr;
5627 unsigned char *buf;
5628 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + 1*4;
5629 const size_t checksumSize = checksumCalculator->checksumByteSize();
5630 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5631 buf = stream->alloc(totalSize);
5632 ptr = buf;
5633 int tmp = OP_glFlushMappedBufferRangeAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5634 memcpy(ptr, &totalSize, 4); ptr += 4;
5635
5636 memcpy(ptr, &target, 4); ptr += 4;
5637 memcpy(ptr, &offset, 4); ptr += 4;
5638 memcpy(ptr, &length, 4); ptr += 4;
5639 memcpy(ptr, &access, 4); ptr += 4;
5640 memcpy(ptr, &__size_guest_buffer, 4); ptr += 4;
5641 if (guest_buffer != NULL) memcpy(ptr, guest_buffer, __size_guest_buffer);ptr += __size_guest_buffer;
5642
5643 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5644 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5645
5646 }
5647
glReadPixelsOffsetAEMU_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLuint offset)5648 void glReadPixelsOffsetAEMU_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLuint offset)
5649 {
5650 ENCODER_DEBUG_LOG("glReadPixelsOffsetAEMU(x:%d, y:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, offset:%u)", x, y, width, height, format, type, offset);
5651 AEMU_SCOPED_TRACE("glReadPixelsOffsetAEMU encode");
5652
5653 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5654 IOStream *stream = ctx->m_stream;
5655 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5656 bool useChecksum = checksumCalculator->getVersion() > 0;
5657
5658 unsigned char *ptr;
5659 unsigned char *buf;
5660 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5661 const size_t checksumSize = checksumCalculator->checksumByteSize();
5662 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5663 buf = stream->alloc(totalSize);
5664 ptr = buf;
5665 int tmp = OP_glReadPixelsOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5666 memcpy(ptr, &totalSize, 4); ptr += 4;
5667
5668 memcpy(ptr, &x, 4); ptr += 4;
5669 memcpy(ptr, &y, 4); ptr += 4;
5670 memcpy(ptr, &width, 4); ptr += 4;
5671 memcpy(ptr, &height, 4); ptr += 4;
5672 memcpy(ptr, &format, 4); ptr += 4;
5673 memcpy(ptr, &type, 4); ptr += 4;
5674 memcpy(ptr, &offset, 4); ptr += 4;
5675
5676 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5677 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5678
5679 }
5680
glCompressedTexImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,GLuint offset)5681 void glCompressedTexImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, GLuint offset)
5682 {
5683 ENCODER_DEBUG_LOG("glCompressedTexImage2DOffsetAEMU(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, border:%d, imageSize:%d, offset:%u)", target, level, internalformat, width, height, border, imageSize, offset);
5684 AEMU_SCOPED_TRACE("glCompressedTexImage2DOffsetAEMU encode");
5685
5686 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5687 IOStream *stream = ctx->m_stream;
5688 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5689 bool useChecksum = checksumCalculator->getVersion() > 0;
5690
5691 unsigned char *ptr;
5692 unsigned char *buf;
5693 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5694 const size_t checksumSize = checksumCalculator->checksumByteSize();
5695 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5696 buf = stream->alloc(totalSize);
5697 ptr = buf;
5698 int tmp = OP_glCompressedTexImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5699 memcpy(ptr, &totalSize, 4); ptr += 4;
5700
5701 memcpy(ptr, &target, 4); ptr += 4;
5702 memcpy(ptr, &level, 4); ptr += 4;
5703 memcpy(ptr, &internalformat, 4); ptr += 4;
5704 memcpy(ptr, &width, 4); ptr += 4;
5705 memcpy(ptr, &height, 4); ptr += 4;
5706 memcpy(ptr, &border, 4); ptr += 4;
5707 memcpy(ptr, &imageSize, 4); ptr += 4;
5708 memcpy(ptr, &offset, 4); ptr += 4;
5709
5710 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5711 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5712
5713 }
5714
glCompressedTexSubImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,GLuint offset)5715 void glCompressedTexSubImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLuint offset)
5716 {
5717 ENCODER_DEBUG_LOG("glCompressedTexSubImage2DOffsetAEMU(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, width:%d, height:%d, format:0x%08x, imageSize:%d, offset:%u)", target, level, xoffset, yoffset, width, height, format, imageSize, offset);
5718 AEMU_SCOPED_TRACE("glCompressedTexSubImage2DOffsetAEMU encode");
5719
5720 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5721 IOStream *stream = ctx->m_stream;
5722 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5723 bool useChecksum = checksumCalculator->getVersion() > 0;
5724
5725 unsigned char *ptr;
5726 unsigned char *buf;
5727 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5728 const size_t checksumSize = checksumCalculator->checksumByteSize();
5729 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5730 buf = stream->alloc(totalSize);
5731 ptr = buf;
5732 int tmp = OP_glCompressedTexSubImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5733 memcpy(ptr, &totalSize, 4); ptr += 4;
5734
5735 memcpy(ptr, &target, 4); ptr += 4;
5736 memcpy(ptr, &level, 4); ptr += 4;
5737 memcpy(ptr, &xoffset, 4); ptr += 4;
5738 memcpy(ptr, &yoffset, 4); ptr += 4;
5739 memcpy(ptr, &width, 4); ptr += 4;
5740 memcpy(ptr, &height, 4); ptr += 4;
5741 memcpy(ptr, &format, 4); ptr += 4;
5742 memcpy(ptr, &imageSize, 4); ptr += 4;
5743 memcpy(ptr, &offset, 4); ptr += 4;
5744
5745 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5746 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5747
5748 }
5749
glTexImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,GLuint offset)5750 void glTexImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLuint offset)
5751 {
5752 ENCODER_DEBUG_LOG("glTexImage2DOffsetAEMU(target:0x%08x, level:%d, internalformat:%d, width:%d, height:%d, border:%d, format:0x%08x, type:0x%08x, offset:%u)", target, level, internalformat, width, height, border, format, type, offset);
5753 AEMU_SCOPED_TRACE("glTexImage2DOffsetAEMU encode");
5754
5755 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5756 IOStream *stream = ctx->m_stream;
5757 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5758 bool useChecksum = checksumCalculator->getVersion() > 0;
5759
5760 unsigned char *ptr;
5761 unsigned char *buf;
5762 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5763 const size_t checksumSize = checksumCalculator->checksumByteSize();
5764 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5765 buf = stream->alloc(totalSize);
5766 ptr = buf;
5767 int tmp = OP_glTexImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5768 memcpy(ptr, &totalSize, 4); ptr += 4;
5769
5770 memcpy(ptr, &target, 4); ptr += 4;
5771 memcpy(ptr, &level, 4); ptr += 4;
5772 memcpy(ptr, &internalformat, 4); ptr += 4;
5773 memcpy(ptr, &width, 4); ptr += 4;
5774 memcpy(ptr, &height, 4); ptr += 4;
5775 memcpy(ptr, &border, 4); ptr += 4;
5776 memcpy(ptr, &format, 4); ptr += 4;
5777 memcpy(ptr, &type, 4); ptr += 4;
5778 memcpy(ptr, &offset, 4); ptr += 4;
5779
5780 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5781 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5782
5783 }
5784
glTexSubImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,GLuint offset)5785 void glTexSubImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLuint offset)
5786 {
5787 ENCODER_DEBUG_LOG("glTexSubImage2DOffsetAEMU(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, offset:%u)", target, level, xoffset, yoffset, width, height, format, type, offset);
5788 AEMU_SCOPED_TRACE("glTexSubImage2DOffsetAEMU encode");
5789
5790 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5791 IOStream *stream = ctx->m_stream;
5792 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5793 bool useChecksum = checksumCalculator->getVersion() > 0;
5794
5795 unsigned char *ptr;
5796 unsigned char *buf;
5797 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5798 const size_t checksumSize = checksumCalculator->checksumByteSize();
5799 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5800 buf = stream->alloc(totalSize);
5801 ptr = buf;
5802 int tmp = OP_glTexSubImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5803 memcpy(ptr, &totalSize, 4); ptr += 4;
5804
5805 memcpy(ptr, &target, 4); ptr += 4;
5806 memcpy(ptr, &level, 4); ptr += 4;
5807 memcpy(ptr, &xoffset, 4); ptr += 4;
5808 memcpy(ptr, &yoffset, 4); ptr += 4;
5809 memcpy(ptr, &width, 4); ptr += 4;
5810 memcpy(ptr, &height, 4); ptr += 4;
5811 memcpy(ptr, &format, 4); ptr += 4;
5812 memcpy(ptr, &type, 4); ptr += 4;
5813 memcpy(ptr, &offset, 4); ptr += 4;
5814
5815 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5816 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5817
5818 }
5819
glBindBufferRange_enc(void * self,GLenum target,GLuint index,GLuint buffer,GLintptr offset,GLsizeiptr size)5820 void glBindBufferRange_enc(void *self , GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
5821 {
5822 ENCODER_DEBUG_LOG("glBindBufferRange(target:0x%08x, index:%u, buffer:%u, offset:0x%08lx, size:0x%08lx)", target, index, buffer, offset, size);
5823 AEMU_SCOPED_TRACE("glBindBufferRange encode");
5824
5825 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5826 IOStream *stream = ctx->m_stream;
5827 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5828 bool useChecksum = checksumCalculator->getVersion() > 0;
5829
5830 unsigned char *ptr;
5831 unsigned char *buf;
5832 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
5833 const size_t checksumSize = checksumCalculator->checksumByteSize();
5834 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5835 buf = stream->alloc(totalSize);
5836 ptr = buf;
5837 int tmp = OP_glBindBufferRange;memcpy(ptr, &tmp, 4); ptr += 4;
5838 memcpy(ptr, &totalSize, 4); ptr += 4;
5839
5840 memcpy(ptr, &target, 4); ptr += 4;
5841 memcpy(ptr, &index, 4); ptr += 4;
5842 memcpy(ptr, &buffer, 4); ptr += 4;
5843 memcpy(ptr, &offset, 4); ptr += 4;
5844 memcpy(ptr, &size, 4); ptr += 4;
5845
5846 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5847 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5848
5849 }
5850
glBindBufferBase_enc(void * self,GLenum target,GLuint index,GLuint buffer)5851 void glBindBufferBase_enc(void *self , GLenum target, GLuint index, GLuint buffer)
5852 {
5853 ENCODER_DEBUG_LOG("glBindBufferBase(target:0x%08x, index:%u, buffer:%u)", target, index, buffer);
5854 AEMU_SCOPED_TRACE("glBindBufferBase encode");
5855
5856 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5857 IOStream *stream = ctx->m_stream;
5858 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5859 bool useChecksum = checksumCalculator->getVersion() > 0;
5860
5861 unsigned char *ptr;
5862 unsigned char *buf;
5863 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
5864 const size_t checksumSize = checksumCalculator->checksumByteSize();
5865 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5866 buf = stream->alloc(totalSize);
5867 ptr = buf;
5868 int tmp = OP_glBindBufferBase;memcpy(ptr, &tmp, 4); ptr += 4;
5869 memcpy(ptr, &totalSize, 4); ptr += 4;
5870
5871 memcpy(ptr, &target, 4); ptr += 4;
5872 memcpy(ptr, &index, 4); ptr += 4;
5873 memcpy(ptr, &buffer, 4); ptr += 4;
5874
5875 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5876 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5877
5878 }
5879
glCopyBufferSubData_enc(void * self,GLenum readtarget,GLenum writetarget,GLintptr readoffset,GLintptr writeoffset,GLsizeiptr size)5880 void glCopyBufferSubData_enc(void *self , GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size)
5881 {
5882 ENCODER_DEBUG_LOG("glCopyBufferSubData(readtarget:0x%08x, writetarget:0x%08x, readoffset:0x%08lx, writeoffset:0x%08lx, size:0x%08lx)", readtarget, writetarget, readoffset, writeoffset, size);
5883 AEMU_SCOPED_TRACE("glCopyBufferSubData encode");
5884
5885 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5886 IOStream *stream = ctx->m_stream;
5887 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5888 bool useChecksum = checksumCalculator->getVersion() > 0;
5889
5890 unsigned char *ptr;
5891 unsigned char *buf;
5892 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
5893 const size_t checksumSize = checksumCalculator->checksumByteSize();
5894 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5895 buf = stream->alloc(totalSize);
5896 ptr = buf;
5897 int tmp = OP_glCopyBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
5898 memcpy(ptr, &totalSize, 4); ptr += 4;
5899
5900 memcpy(ptr, &readtarget, 4); ptr += 4;
5901 memcpy(ptr, &writetarget, 4); ptr += 4;
5902 memcpy(ptr, &readoffset, 4); ptr += 4;
5903 memcpy(ptr, &writeoffset, 4); ptr += 4;
5904 memcpy(ptr, &size, 4); ptr += 4;
5905
5906 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5907 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5908
5909 stream->flush();
5910 }
5911
glClearBufferiv_enc(void * self,GLenum buffer,GLint drawBuffer,const GLint * value)5912 void glClearBufferiv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLint* value)
5913 {
5914 ENCODER_DEBUG_LOG("glClearBufferiv(buffer:0x%08x, drawBuffer:%d, value:0x%08x)", buffer, drawBuffer, value);
5915 AEMU_SCOPED_TRACE("glClearBufferiv encode");
5916
5917 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5918 IOStream *stream = ctx->m_stream;
5919 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5920 bool useChecksum = checksumCalculator->getVersion() > 0;
5921
5922 const unsigned int __size_value = (sizeof(GLint) * glesv2_enc::clearBufferNumElts(self, buffer));
5923 unsigned char *ptr;
5924 unsigned char *buf;
5925 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5926 const size_t checksumSize = checksumCalculator->checksumByteSize();
5927 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5928 buf = stream->alloc(totalSize);
5929 ptr = buf;
5930 int tmp = OP_glClearBufferiv;memcpy(ptr, &tmp, 4); ptr += 4;
5931 memcpy(ptr, &totalSize, 4); ptr += 4;
5932
5933 memcpy(ptr, &buffer, 4); ptr += 4;
5934 memcpy(ptr, &drawBuffer, 4); ptr += 4;
5935 memcpy(ptr, &__size_value, 4); ptr += 4;
5936 memcpy(ptr, value, __size_value);ptr += __size_value;
5937
5938 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5939 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5940
5941 }
5942
glClearBufferuiv_enc(void * self,GLenum buffer,GLint drawBuffer,const GLuint * value)5943 void glClearBufferuiv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLuint* value)
5944 {
5945 ENCODER_DEBUG_LOG("glClearBufferuiv(buffer:0x%08x, drawBuffer:%d, value:0x%08x)", buffer, drawBuffer, value);
5946 AEMU_SCOPED_TRACE("glClearBufferuiv encode");
5947
5948 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5949 IOStream *stream = ctx->m_stream;
5950 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5951 bool useChecksum = checksumCalculator->getVersion() > 0;
5952
5953 const unsigned int __size_value = (sizeof(GLuint) * glesv2_enc::clearBufferNumElts(self, buffer));
5954 unsigned char *ptr;
5955 unsigned char *buf;
5956 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5957 const size_t checksumSize = checksumCalculator->checksumByteSize();
5958 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5959 buf = stream->alloc(totalSize);
5960 ptr = buf;
5961 int tmp = OP_glClearBufferuiv;memcpy(ptr, &tmp, 4); ptr += 4;
5962 memcpy(ptr, &totalSize, 4); ptr += 4;
5963
5964 memcpy(ptr, &buffer, 4); ptr += 4;
5965 memcpy(ptr, &drawBuffer, 4); ptr += 4;
5966 memcpy(ptr, &__size_value, 4); ptr += 4;
5967 memcpy(ptr, value, __size_value);ptr += __size_value;
5968
5969 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5970 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5971
5972 }
5973
glClearBufferfv_enc(void * self,GLenum buffer,GLint drawBuffer,const GLfloat * value)5974 void glClearBufferfv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLfloat* value)
5975 {
5976 ENCODER_DEBUG_LOG("glClearBufferfv(buffer:0x%08x, drawBuffer:%d, value:0x%08x)", buffer, drawBuffer, value);
5977 AEMU_SCOPED_TRACE("glClearBufferfv encode");
5978
5979 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5980 IOStream *stream = ctx->m_stream;
5981 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5982 bool useChecksum = checksumCalculator->getVersion() > 0;
5983
5984 const unsigned int __size_value = (sizeof(GLfloat) * glesv2_enc::clearBufferNumElts(self, buffer));
5985 unsigned char *ptr;
5986 unsigned char *buf;
5987 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5988 const size_t checksumSize = checksumCalculator->checksumByteSize();
5989 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5990 buf = stream->alloc(totalSize);
5991 ptr = buf;
5992 int tmp = OP_glClearBufferfv;memcpy(ptr, &tmp, 4); ptr += 4;
5993 memcpy(ptr, &totalSize, 4); ptr += 4;
5994
5995 memcpy(ptr, &buffer, 4); ptr += 4;
5996 memcpy(ptr, &drawBuffer, 4); ptr += 4;
5997 memcpy(ptr, &__size_value, 4); ptr += 4;
5998 memcpy(ptr, value, __size_value);ptr += __size_value;
5999
6000 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6001 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6002
6003 }
6004
glClearBufferfi_enc(void * self,GLenum buffer,GLint drawBuffer,GLfloat depth,GLint stencil)6005 void glClearBufferfi_enc(void *self , GLenum buffer, GLint drawBuffer, GLfloat depth, GLint stencil)
6006 {
6007 ENCODER_DEBUG_LOG("glClearBufferfi(buffer:0x%08x, drawBuffer:%d, depth:%f, stencil:%d)", buffer, drawBuffer, depth, stencil);
6008 AEMU_SCOPED_TRACE("glClearBufferfi encode");
6009
6010 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6011 IOStream *stream = ctx->m_stream;
6012 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6013 bool useChecksum = checksumCalculator->getVersion() > 0;
6014
6015 unsigned char *ptr;
6016 unsigned char *buf;
6017 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
6018 const size_t checksumSize = checksumCalculator->checksumByteSize();
6019 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6020 buf = stream->alloc(totalSize);
6021 ptr = buf;
6022 int tmp = OP_glClearBufferfi;memcpy(ptr, &tmp, 4); ptr += 4;
6023 memcpy(ptr, &totalSize, 4); ptr += 4;
6024
6025 memcpy(ptr, &buffer, 4); ptr += 4;
6026 memcpy(ptr, &drawBuffer, 4); ptr += 4;
6027 memcpy(ptr, &depth, 4); ptr += 4;
6028 memcpy(ptr, &stencil, 4); ptr += 4;
6029
6030 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6031 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6032
6033 }
6034
glUniformBlockBinding_enc(void * self,GLuint program,GLuint uniformBlockIndex,GLuint uniformBlockBinding)6035 void glUniformBlockBinding_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
6036 {
6037 ENCODER_DEBUG_LOG("glUniformBlockBinding(program:%u, uniformBlockIndex:%u, uniformBlockBinding:%u)", program, uniformBlockIndex, uniformBlockBinding);
6038 AEMU_SCOPED_TRACE("glUniformBlockBinding encode");
6039
6040 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6041 IOStream *stream = ctx->m_stream;
6042 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6043 bool useChecksum = checksumCalculator->getVersion() > 0;
6044
6045 unsigned char *ptr;
6046 unsigned char *buf;
6047 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
6048 const size_t checksumSize = checksumCalculator->checksumByteSize();
6049 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6050 buf = stream->alloc(totalSize);
6051 ptr = buf;
6052 int tmp = OP_glUniformBlockBinding;memcpy(ptr, &tmp, 4); ptr += 4;
6053 memcpy(ptr, &totalSize, 4); ptr += 4;
6054
6055 memcpy(ptr, &program, 4); ptr += 4;
6056 memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
6057 memcpy(ptr, &uniformBlockBinding, 4); ptr += 4;
6058
6059 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6060 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6061
6062 }
6063
glGetUniformBlockIndex_enc(void * self,GLuint program,const GLchar * uniformBlockName)6064 GLuint glGetUniformBlockIndex_enc(void *self , GLuint program, const GLchar* uniformBlockName)
6065 {
6066 ENCODER_DEBUG_LOG("glGetUniformBlockIndex(program:%u, uniformBlockName:0x%08x)", program, uniformBlockName);
6067 AEMU_SCOPED_TRACE("glGetUniformBlockIndex encode");
6068
6069 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6070 IOStream *stream = ctx->m_stream;
6071 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6072 bool useChecksum = checksumCalculator->getVersion() > 0;
6073
6074 const unsigned int __size_uniformBlockName = (strlen(uniformBlockName) + 1);
6075 unsigned char *ptr;
6076 unsigned char *buf;
6077 const size_t sizeWithoutChecksum = 8 + 4 + __size_uniformBlockName + 1*4;
6078 const size_t checksumSize = checksumCalculator->checksumByteSize();
6079 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6080 buf = stream->alloc(totalSize);
6081 ptr = buf;
6082 int tmp = OP_glGetUniformBlockIndex;memcpy(ptr, &tmp, 4); ptr += 4;
6083 memcpy(ptr, &totalSize, 4); ptr += 4;
6084
6085 memcpy(ptr, &program, 4); ptr += 4;
6086 memcpy(ptr, &__size_uniformBlockName, 4); ptr += 4;
6087 memcpy(ptr, uniformBlockName, __size_uniformBlockName);ptr += __size_uniformBlockName;
6088
6089 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6090 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6091
6092
6093 GLuint retval;
6094 stream->readback(&retval, 4);
6095 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
6096 if (useChecksum) {
6097 unsigned char *checksumBufPtr = NULL;
6098 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6099 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6100 stream->readback(checksumBufPtr, checksumSize);
6101 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6102 ALOGE("glGetUniformBlockIndex: GL communication error, please report this issue to b.android.com.\n");
6103 abort();
6104 }
6105 }
6106 return retval;
6107 }
6108
glGetUniformIndicesAEMU_enc(void * self,GLuint program,GLsizei uniformCount,const GLchar * packedUniformNames,GLsizei packedLen,GLuint * uniformIndices)6109 void glGetUniformIndicesAEMU_enc(void *self , GLuint program, GLsizei uniformCount, const GLchar* packedUniformNames, GLsizei packedLen, GLuint* uniformIndices)
6110 {
6111 ENCODER_DEBUG_LOG("glGetUniformIndicesAEMU(program:%u, uniformCount:%d, packedUniformNames:0x%08x, packedLen:%d, uniformIndices:0x%08x)", program, uniformCount, packedUniformNames, packedLen, uniformIndices);
6112 AEMU_SCOPED_TRACE("glGetUniformIndicesAEMU encode");
6113
6114 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6115 IOStream *stream = ctx->m_stream;
6116 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6117 bool useChecksum = checksumCalculator->getVersion() > 0;
6118
6119 const unsigned int __size_packedUniformNames = packedLen;
6120 const unsigned int __size_uniformIndices = (uniformCount * sizeof(GLuint));
6121 unsigned char *ptr;
6122 unsigned char *buf;
6123 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedUniformNames + 4 + 0 + 2*4;
6124 const size_t checksumSize = checksumCalculator->checksumByteSize();
6125 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6126 buf = stream->alloc(totalSize);
6127 ptr = buf;
6128 int tmp = OP_glGetUniformIndicesAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6129 memcpy(ptr, &totalSize, 4); ptr += 4;
6130
6131 memcpy(ptr, &program, 4); ptr += 4;
6132 memcpy(ptr, &uniformCount, 4); ptr += 4;
6133 memcpy(ptr, &__size_packedUniformNames, 4); ptr += 4;
6134 memcpy(ptr, packedUniformNames, __size_packedUniformNames);ptr += __size_packedUniformNames;
6135 memcpy(ptr, &packedLen, 4); ptr += 4;
6136 memcpy(ptr, &__size_uniformIndices, 4); ptr += 4;
6137
6138 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6139 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6140
6141 stream->readback(uniformIndices, __size_uniformIndices);
6142 if (useChecksum) checksumCalculator->addBuffer(uniformIndices, __size_uniformIndices);
6143 if (useChecksum) {
6144 unsigned char *checksumBufPtr = NULL;
6145 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6146 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6147 stream->readback(checksumBufPtr, checksumSize);
6148 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6149 ALOGE("glGetUniformIndicesAEMU: GL communication error, please report this issue to b.android.com.\n");
6150 abort();
6151 }
6152 }
6153 }
6154
glGetActiveUniformBlockiv_enc(void * self,GLuint program,GLuint uniformBlockIndex,GLenum pname,GLint * params)6155 void glGetActiveUniformBlockiv_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params)
6156 {
6157 ENCODER_DEBUG_LOG("glGetActiveUniformBlockiv(program:%u, uniformBlockIndex:%u, pname:0x%08x, params:0x%08x)", program, uniformBlockIndex, pname, params);
6158 AEMU_SCOPED_TRACE("glGetActiveUniformBlockiv encode");
6159
6160 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6161 IOStream *stream = ctx->m_stream;
6162 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6163 bool useChecksum = checksumCalculator->getVersion() > 0;
6164
6165 const unsigned int __size_params = (glesv2_enc::glActiveUniformBlockivParamSize(self, program, uniformBlockIndex, pname) * sizeof(GLint));
6166 unsigned char *ptr;
6167 unsigned char *buf;
6168 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
6169 const size_t checksumSize = checksumCalculator->checksumByteSize();
6170 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6171 buf = stream->alloc(totalSize);
6172 ptr = buf;
6173 int tmp = OP_glGetActiveUniformBlockiv;memcpy(ptr, &tmp, 4); ptr += 4;
6174 memcpy(ptr, &totalSize, 4); ptr += 4;
6175
6176 memcpy(ptr, &program, 4); ptr += 4;
6177 memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
6178 memcpy(ptr, &pname, 4); ptr += 4;
6179 memcpy(ptr, &__size_params, 4); ptr += 4;
6180
6181 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6182 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6183
6184 stream->readback(params, __size_params);
6185 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6186 if (useChecksum) {
6187 unsigned char *checksumBufPtr = NULL;
6188 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6189 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6190 stream->readback(checksumBufPtr, checksumSize);
6191 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6192 ALOGE("glGetActiveUniformBlockiv: GL communication error, please report this issue to b.android.com.\n");
6193 abort();
6194 }
6195 }
6196 }
6197
glGetActiveUniformBlockName_enc(void * self,GLuint program,GLuint uniformBlockIndex,GLsizei bufSize,GLsizei * length,GLchar * uniformBlockName)6198 void glGetActiveUniformBlockName_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName)
6199 {
6200 ENCODER_DEBUG_LOG("glGetActiveUniformBlockName(program:%u, uniformBlockIndex:%u, bufSize:%d, length:0x%08x, uniformBlockName:0x%08x)", program, uniformBlockIndex, bufSize, length, uniformBlockName);
6201 AEMU_SCOPED_TRACE("glGetActiveUniformBlockName encode");
6202
6203 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6204 IOStream *stream = ctx->m_stream;
6205 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6206 bool useChecksum = checksumCalculator->getVersion() > 0;
6207
6208 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
6209 const unsigned int __size_uniformBlockName = ((uniformBlockName != NULL) ? bufSize : 0);
6210 unsigned char *ptr;
6211 unsigned char *buf;
6212 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 2*4;
6213 const size_t checksumSize = checksumCalculator->checksumByteSize();
6214 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6215 buf = stream->alloc(totalSize);
6216 ptr = buf;
6217 int tmp = OP_glGetActiveUniformBlockName;memcpy(ptr, &tmp, 4); ptr += 4;
6218 memcpy(ptr, &totalSize, 4); ptr += 4;
6219
6220 memcpy(ptr, &program, 4); ptr += 4;
6221 memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
6222 memcpy(ptr, &bufSize, 4); ptr += 4;
6223 memcpy(ptr, &__size_length, 4); ptr += 4;
6224 memcpy(ptr, &__size_uniformBlockName, 4); ptr += 4;
6225
6226 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6227 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6228
6229 if (length != NULL) {
6230 stream->readback(length, __size_length);
6231 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
6232 }
6233 if (uniformBlockName != NULL) {
6234 stream->readback(uniformBlockName, __size_uniformBlockName);
6235 if (useChecksum) checksumCalculator->addBuffer(uniformBlockName, __size_uniformBlockName);
6236 }
6237 if (useChecksum) {
6238 unsigned char *checksumBufPtr = NULL;
6239 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6240 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6241 stream->readback(checksumBufPtr, checksumSize);
6242 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6243 ALOGE("glGetActiveUniformBlockName: GL communication error, please report this issue to b.android.com.\n");
6244 abort();
6245 }
6246 }
6247 }
6248
glUniform1ui_enc(void * self,GLint location,GLuint v0)6249 void glUniform1ui_enc(void *self , GLint location, GLuint v0)
6250 {
6251 ENCODER_DEBUG_LOG("glUniform1ui(location:%d, v0:%u)", location, v0);
6252 AEMU_SCOPED_TRACE("glUniform1ui encode");
6253
6254 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6255 IOStream *stream = ctx->m_stream;
6256 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6257 bool useChecksum = checksumCalculator->getVersion() > 0;
6258
6259 unsigned char *ptr;
6260 unsigned char *buf;
6261 const size_t sizeWithoutChecksum = 8 + 4 + 4;
6262 const size_t checksumSize = checksumCalculator->checksumByteSize();
6263 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6264 buf = stream->alloc(totalSize);
6265 ptr = buf;
6266 int tmp = OP_glUniform1ui;memcpy(ptr, &tmp, 4); ptr += 4;
6267 memcpy(ptr, &totalSize, 4); ptr += 4;
6268
6269 memcpy(ptr, &location, 4); ptr += 4;
6270 memcpy(ptr, &v0, 4); ptr += 4;
6271
6272 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6273 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6274
6275 }
6276
glUniform2ui_enc(void * self,GLint location,GLuint v0,GLuint v1)6277 void glUniform2ui_enc(void *self , GLint location, GLuint v0, GLuint v1)
6278 {
6279 ENCODER_DEBUG_LOG("glUniform2ui(location:%d, v0:%u, v1:%u)", location, v0, v1);
6280 AEMU_SCOPED_TRACE("glUniform2ui encode");
6281
6282 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6283 IOStream *stream = ctx->m_stream;
6284 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6285 bool useChecksum = checksumCalculator->getVersion() > 0;
6286
6287 unsigned char *ptr;
6288 unsigned char *buf;
6289 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
6290 const size_t checksumSize = checksumCalculator->checksumByteSize();
6291 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6292 buf = stream->alloc(totalSize);
6293 ptr = buf;
6294 int tmp = OP_glUniform2ui;memcpy(ptr, &tmp, 4); ptr += 4;
6295 memcpy(ptr, &totalSize, 4); ptr += 4;
6296
6297 memcpy(ptr, &location, 4); ptr += 4;
6298 memcpy(ptr, &v0, 4); ptr += 4;
6299 memcpy(ptr, &v1, 4); ptr += 4;
6300
6301 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6302 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6303
6304 }
6305
glUniform3ui_enc(void * self,GLint location,GLuint v0,GLuint v1,GLuint v2)6306 void glUniform3ui_enc(void *self , GLint location, GLuint v0, GLuint v1, GLuint v2)
6307 {
6308 ENCODER_DEBUG_LOG("glUniform3ui(location:%d, v0:%u, v1:%u, v2:%u)", location, v0, v1, v2);
6309 AEMU_SCOPED_TRACE("glUniform3ui encode");
6310
6311 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6312 IOStream *stream = ctx->m_stream;
6313 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6314 bool useChecksum = checksumCalculator->getVersion() > 0;
6315
6316 unsigned char *ptr;
6317 unsigned char *buf;
6318 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
6319 const size_t checksumSize = checksumCalculator->checksumByteSize();
6320 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6321 buf = stream->alloc(totalSize);
6322 ptr = buf;
6323 int tmp = OP_glUniform3ui;memcpy(ptr, &tmp, 4); ptr += 4;
6324 memcpy(ptr, &totalSize, 4); ptr += 4;
6325
6326 memcpy(ptr, &location, 4); ptr += 4;
6327 memcpy(ptr, &v0, 4); ptr += 4;
6328 memcpy(ptr, &v1, 4); ptr += 4;
6329 memcpy(ptr, &v2, 4); ptr += 4;
6330
6331 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6332 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6333
6334 }
6335
glUniform4ui_enc(void * self,GLint location,GLint v0,GLuint v1,GLuint v2,GLuint v3)6336 void glUniform4ui_enc(void *self , GLint location, GLint v0, GLuint v1, GLuint v2, GLuint v3)
6337 {
6338 ENCODER_DEBUG_LOG("glUniform4ui(location:%d, v0:%d, v1:%u, v2:%u, v3:%u)", location, v0, v1, v2, v3);
6339 AEMU_SCOPED_TRACE("glUniform4ui encode");
6340
6341 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6342 IOStream *stream = ctx->m_stream;
6343 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6344 bool useChecksum = checksumCalculator->getVersion() > 0;
6345
6346 unsigned char *ptr;
6347 unsigned char *buf;
6348 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6349 const size_t checksumSize = checksumCalculator->checksumByteSize();
6350 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6351 buf = stream->alloc(totalSize);
6352 ptr = buf;
6353 int tmp = OP_glUniform4ui;memcpy(ptr, &tmp, 4); ptr += 4;
6354 memcpy(ptr, &totalSize, 4); ptr += 4;
6355
6356 memcpy(ptr, &location, 4); ptr += 4;
6357 memcpy(ptr, &v0, 4); ptr += 4;
6358 memcpy(ptr, &v1, 4); ptr += 4;
6359 memcpy(ptr, &v2, 4); ptr += 4;
6360 memcpy(ptr, &v3, 4); ptr += 4;
6361
6362 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6363 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6364
6365 }
6366
glUniform1uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6367 void glUniform1uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6368 {
6369 ENCODER_DEBUG_LOG("glUniform1uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6370 AEMU_SCOPED_TRACE("glUniform1uiv encode");
6371
6372 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6373 IOStream *stream = ctx->m_stream;
6374 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6375 bool useChecksum = checksumCalculator->getVersion() > 0;
6376
6377 const unsigned int __size_value = (count * sizeof(GLuint));
6378 unsigned char *ptr;
6379 unsigned char *buf;
6380 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6381 const size_t checksumSize = checksumCalculator->checksumByteSize();
6382 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6383 buf = stream->alloc(totalSize);
6384 ptr = buf;
6385 int tmp = OP_glUniform1uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6386 memcpy(ptr, &totalSize, 4); ptr += 4;
6387
6388 memcpy(ptr, &location, 4); ptr += 4;
6389 memcpy(ptr, &count, 4); ptr += 4;
6390 memcpy(ptr, &__size_value, 4); ptr += 4;
6391 memcpy(ptr, value, __size_value);ptr += __size_value;
6392
6393 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6394 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6395
6396 }
6397
glUniform2uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6398 void glUniform2uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6399 {
6400 ENCODER_DEBUG_LOG("glUniform2uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6401 AEMU_SCOPED_TRACE("glUniform2uiv encode");
6402
6403 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6404 IOStream *stream = ctx->m_stream;
6405 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6406 bool useChecksum = checksumCalculator->getVersion() > 0;
6407
6408 const unsigned int __size_value = (count * 2 * sizeof(GLuint));
6409 unsigned char *ptr;
6410 unsigned char *buf;
6411 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6412 const size_t checksumSize = checksumCalculator->checksumByteSize();
6413 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6414 buf = stream->alloc(totalSize);
6415 ptr = buf;
6416 int tmp = OP_glUniform2uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6417 memcpy(ptr, &totalSize, 4); ptr += 4;
6418
6419 memcpy(ptr, &location, 4); ptr += 4;
6420 memcpy(ptr, &count, 4); ptr += 4;
6421 memcpy(ptr, &__size_value, 4); ptr += 4;
6422 memcpy(ptr, value, __size_value);ptr += __size_value;
6423
6424 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6425 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6426
6427 }
6428
glUniform3uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6429 void glUniform3uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6430 {
6431 ENCODER_DEBUG_LOG("glUniform3uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6432 AEMU_SCOPED_TRACE("glUniform3uiv encode");
6433
6434 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6435 IOStream *stream = ctx->m_stream;
6436 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6437 bool useChecksum = checksumCalculator->getVersion() > 0;
6438
6439 const unsigned int __size_value = (count * 3 * sizeof(GLuint));
6440 unsigned char *ptr;
6441 unsigned char *buf;
6442 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6443 const size_t checksumSize = checksumCalculator->checksumByteSize();
6444 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6445 buf = stream->alloc(totalSize);
6446 ptr = buf;
6447 int tmp = OP_glUniform3uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6448 memcpy(ptr, &totalSize, 4); ptr += 4;
6449
6450 memcpy(ptr, &location, 4); ptr += 4;
6451 memcpy(ptr, &count, 4); ptr += 4;
6452 memcpy(ptr, &__size_value, 4); ptr += 4;
6453 memcpy(ptr, value, __size_value);ptr += __size_value;
6454
6455 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6456 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6457
6458 }
6459
glUniform4uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6460 void glUniform4uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6461 {
6462 ENCODER_DEBUG_LOG("glUniform4uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6463 AEMU_SCOPED_TRACE("glUniform4uiv encode");
6464
6465 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6466 IOStream *stream = ctx->m_stream;
6467 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6468 bool useChecksum = checksumCalculator->getVersion() > 0;
6469
6470 const unsigned int __size_value = (count * 4 * sizeof(GLuint));
6471 unsigned char *ptr;
6472 unsigned char *buf;
6473 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6474 const size_t checksumSize = checksumCalculator->checksumByteSize();
6475 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6476 buf = stream->alloc(totalSize);
6477 ptr = buf;
6478 int tmp = OP_glUniform4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6479 memcpy(ptr, &totalSize, 4); ptr += 4;
6480
6481 memcpy(ptr, &location, 4); ptr += 4;
6482 memcpy(ptr, &count, 4); ptr += 4;
6483 memcpy(ptr, &__size_value, 4); ptr += 4;
6484 memcpy(ptr, value, __size_value);ptr += __size_value;
6485
6486 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6487 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6488
6489 }
6490
glUniformMatrix2x3fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6491 void glUniformMatrix2x3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6492 {
6493 ENCODER_DEBUG_LOG("glUniformMatrix2x3fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6494 AEMU_SCOPED_TRACE("glUniformMatrix2x3fv encode");
6495
6496 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6497 IOStream *stream = ctx->m_stream;
6498 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6499 bool useChecksum = checksumCalculator->getVersion() > 0;
6500
6501 const unsigned int __size_value = (count * 6 * sizeof(GLfloat));
6502 unsigned char *ptr;
6503 unsigned char *buf;
6504 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6505 const size_t checksumSize = checksumCalculator->checksumByteSize();
6506 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6507 buf = stream->alloc(totalSize);
6508 ptr = buf;
6509 int tmp = OP_glUniformMatrix2x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
6510 memcpy(ptr, &totalSize, 4); ptr += 4;
6511
6512 memcpy(ptr, &location, 4); ptr += 4;
6513 memcpy(ptr, &count, 4); ptr += 4;
6514 memcpy(ptr, &transpose, 1); ptr += 1;
6515 memcpy(ptr, &__size_value, 4); ptr += 4;
6516 memcpy(ptr, value, __size_value);ptr += __size_value;
6517
6518 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6519 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6520
6521 }
6522
glUniformMatrix3x2fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6523 void glUniformMatrix3x2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6524 {
6525 ENCODER_DEBUG_LOG("glUniformMatrix3x2fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6526 AEMU_SCOPED_TRACE("glUniformMatrix3x2fv encode");
6527
6528 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6529 IOStream *stream = ctx->m_stream;
6530 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6531 bool useChecksum = checksumCalculator->getVersion() > 0;
6532
6533 const unsigned int __size_value = (count * 6 * sizeof(GLfloat));
6534 unsigned char *ptr;
6535 unsigned char *buf;
6536 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6537 const size_t checksumSize = checksumCalculator->checksumByteSize();
6538 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6539 buf = stream->alloc(totalSize);
6540 ptr = buf;
6541 int tmp = OP_glUniformMatrix3x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
6542 memcpy(ptr, &totalSize, 4); ptr += 4;
6543
6544 memcpy(ptr, &location, 4); ptr += 4;
6545 memcpy(ptr, &count, 4); ptr += 4;
6546 memcpy(ptr, &transpose, 1); ptr += 1;
6547 memcpy(ptr, &__size_value, 4); ptr += 4;
6548 memcpy(ptr, value, __size_value);ptr += __size_value;
6549
6550 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6551 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6552
6553 }
6554
glUniformMatrix2x4fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6555 void glUniformMatrix2x4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6556 {
6557 ENCODER_DEBUG_LOG("glUniformMatrix2x4fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6558 AEMU_SCOPED_TRACE("glUniformMatrix2x4fv encode");
6559
6560 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6561 IOStream *stream = ctx->m_stream;
6562 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6563 bool useChecksum = checksumCalculator->getVersion() > 0;
6564
6565 const unsigned int __size_value = (count * 8 * sizeof(GLfloat));
6566 unsigned char *ptr;
6567 unsigned char *buf;
6568 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6569 const size_t checksumSize = checksumCalculator->checksumByteSize();
6570 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6571 buf = stream->alloc(totalSize);
6572 ptr = buf;
6573 int tmp = OP_glUniformMatrix2x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
6574 memcpy(ptr, &totalSize, 4); ptr += 4;
6575
6576 memcpy(ptr, &location, 4); ptr += 4;
6577 memcpy(ptr, &count, 4); ptr += 4;
6578 memcpy(ptr, &transpose, 1); ptr += 1;
6579 memcpy(ptr, &__size_value, 4); ptr += 4;
6580 memcpy(ptr, value, __size_value);ptr += __size_value;
6581
6582 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6583 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6584
6585 }
6586
glUniformMatrix4x2fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6587 void glUniformMatrix4x2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6588 {
6589 ENCODER_DEBUG_LOG("glUniformMatrix4x2fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6590 AEMU_SCOPED_TRACE("glUniformMatrix4x2fv encode");
6591
6592 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6593 IOStream *stream = ctx->m_stream;
6594 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6595 bool useChecksum = checksumCalculator->getVersion() > 0;
6596
6597 const unsigned int __size_value = (count * 8 * sizeof(GLfloat));
6598 unsigned char *ptr;
6599 unsigned char *buf;
6600 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6601 const size_t checksumSize = checksumCalculator->checksumByteSize();
6602 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6603 buf = stream->alloc(totalSize);
6604 ptr = buf;
6605 int tmp = OP_glUniformMatrix4x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
6606 memcpy(ptr, &totalSize, 4); ptr += 4;
6607
6608 memcpy(ptr, &location, 4); ptr += 4;
6609 memcpy(ptr, &count, 4); ptr += 4;
6610 memcpy(ptr, &transpose, 1); ptr += 1;
6611 memcpy(ptr, &__size_value, 4); ptr += 4;
6612 memcpy(ptr, value, __size_value);ptr += __size_value;
6613
6614 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6615 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6616
6617 }
6618
glUniformMatrix3x4fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6619 void glUniformMatrix3x4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6620 {
6621 ENCODER_DEBUG_LOG("glUniformMatrix3x4fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6622 AEMU_SCOPED_TRACE("glUniformMatrix3x4fv encode");
6623
6624 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6625 IOStream *stream = ctx->m_stream;
6626 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6627 bool useChecksum = checksumCalculator->getVersion() > 0;
6628
6629 const unsigned int __size_value = (count * 12 * sizeof(GLfloat));
6630 unsigned char *ptr;
6631 unsigned char *buf;
6632 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6633 const size_t checksumSize = checksumCalculator->checksumByteSize();
6634 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6635 buf = stream->alloc(totalSize);
6636 ptr = buf;
6637 int tmp = OP_glUniformMatrix3x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
6638 memcpy(ptr, &totalSize, 4); ptr += 4;
6639
6640 memcpy(ptr, &location, 4); ptr += 4;
6641 memcpy(ptr, &count, 4); ptr += 4;
6642 memcpy(ptr, &transpose, 1); ptr += 1;
6643 memcpy(ptr, &__size_value, 4); ptr += 4;
6644 memcpy(ptr, value, __size_value);ptr += __size_value;
6645
6646 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6647 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6648
6649 }
6650
glUniformMatrix4x3fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6651 void glUniformMatrix4x3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6652 {
6653 ENCODER_DEBUG_LOG("glUniformMatrix4x3fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6654 AEMU_SCOPED_TRACE("glUniformMatrix4x3fv encode");
6655
6656 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6657 IOStream *stream = ctx->m_stream;
6658 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6659 bool useChecksum = checksumCalculator->getVersion() > 0;
6660
6661 const unsigned int __size_value = (count * 12 * sizeof(GLfloat));
6662 unsigned char *ptr;
6663 unsigned char *buf;
6664 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6665 const size_t checksumSize = checksumCalculator->checksumByteSize();
6666 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6667 buf = stream->alloc(totalSize);
6668 ptr = buf;
6669 int tmp = OP_glUniformMatrix4x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
6670 memcpy(ptr, &totalSize, 4); ptr += 4;
6671
6672 memcpy(ptr, &location, 4); ptr += 4;
6673 memcpy(ptr, &count, 4); ptr += 4;
6674 memcpy(ptr, &transpose, 1); ptr += 1;
6675 memcpy(ptr, &__size_value, 4); ptr += 4;
6676 memcpy(ptr, value, __size_value);ptr += __size_value;
6677
6678 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6679 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6680
6681 }
6682
glGetUniformuiv_enc(void * self,GLuint program,GLint location,GLuint * params)6683 void glGetUniformuiv_enc(void *self , GLuint program, GLint location, GLuint* params)
6684 {
6685 ENCODER_DEBUG_LOG("glGetUniformuiv(program:%u, location:%d, params:0x%08x)", program, location, params);
6686 AEMU_SCOPED_TRACE("glGetUniformuiv encode");
6687
6688 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6689 IOStream *stream = ctx->m_stream;
6690 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6691 bool useChecksum = checksumCalculator->getVersion() > 0;
6692
6693 const unsigned int __size_params = glSizeof(glesv2_enc::uniformType(self, program, location));
6694 unsigned char *ptr;
6695 unsigned char *buf;
6696 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
6697 const size_t checksumSize = checksumCalculator->checksumByteSize();
6698 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6699 buf = stream->alloc(totalSize);
6700 ptr = buf;
6701 int tmp = OP_glGetUniformuiv;memcpy(ptr, &tmp, 4); ptr += 4;
6702 memcpy(ptr, &totalSize, 4); ptr += 4;
6703
6704 memcpy(ptr, &program, 4); ptr += 4;
6705 memcpy(ptr, &location, 4); ptr += 4;
6706 memcpy(ptr, &__size_params, 4); ptr += 4;
6707
6708 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6709 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6710
6711 stream->readback(params, __size_params);
6712 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6713 if (useChecksum) {
6714 unsigned char *checksumBufPtr = NULL;
6715 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6716 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6717 stream->readback(checksumBufPtr, checksumSize);
6718 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6719 ALOGE("glGetUniformuiv: GL communication error, please report this issue to b.android.com.\n");
6720 abort();
6721 }
6722 }
6723 }
6724
glGetActiveUniformsiv_enc(void * self,GLuint program,GLsizei uniformCount,const GLuint * uniformIndices,GLenum pname,GLint * params)6725 void glGetActiveUniformsiv_enc(void *self , GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params)
6726 {
6727 ENCODER_DEBUG_LOG("glGetActiveUniformsiv(program:%u, uniformCount:%d, uniformIndices:0x%08x, pname:0x%08x, params:0x%08x)", program, uniformCount, uniformIndices, pname, params);
6728 AEMU_SCOPED_TRACE("glGetActiveUniformsiv encode");
6729
6730 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6731 IOStream *stream = ctx->m_stream;
6732 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6733 bool useChecksum = checksumCalculator->getVersion() > 0;
6734
6735 const unsigned int __size_uniformIndices = (uniformCount * sizeof(GLuint));
6736 const unsigned int __size_params = (uniformCount * sizeof(GLint));
6737 unsigned char *ptr;
6738 unsigned char *buf;
6739 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_uniformIndices + 4 + 0 + 2*4;
6740 const size_t checksumSize = checksumCalculator->checksumByteSize();
6741 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6742 buf = stream->alloc(totalSize);
6743 ptr = buf;
6744 int tmp = OP_glGetActiveUniformsiv;memcpy(ptr, &tmp, 4); ptr += 4;
6745 memcpy(ptr, &totalSize, 4); ptr += 4;
6746
6747 memcpy(ptr, &program, 4); ptr += 4;
6748 memcpy(ptr, &uniformCount, 4); ptr += 4;
6749 memcpy(ptr, &__size_uniformIndices, 4); ptr += 4;
6750 memcpy(ptr, uniformIndices, __size_uniformIndices);ptr += __size_uniformIndices;
6751 memcpy(ptr, &pname, 4); ptr += 4;
6752 memcpy(ptr, &__size_params, 4); ptr += 4;
6753
6754 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6755 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6756
6757 stream->readback(params, __size_params);
6758 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6759 if (useChecksum) {
6760 unsigned char *checksumBufPtr = NULL;
6761 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6762 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6763 stream->readback(checksumBufPtr, checksumSize);
6764 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6765 ALOGE("glGetActiveUniformsiv: GL communication error, please report this issue to b.android.com.\n");
6766 abort();
6767 }
6768 }
6769 }
6770
glVertexAttribI4i_enc(void * self,GLuint index,GLint v0,GLint v1,GLint v2,GLint v3)6771 void glVertexAttribI4i_enc(void *self , GLuint index, GLint v0, GLint v1, GLint v2, GLint v3)
6772 {
6773 ENCODER_DEBUG_LOG("glVertexAttribI4i(index:%u, v0:%d, v1:%d, v2:%d, v3:%d)", index, v0, v1, v2, v3);
6774 AEMU_SCOPED_TRACE("glVertexAttribI4i encode");
6775
6776 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6777 IOStream *stream = ctx->m_stream;
6778 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6779 bool useChecksum = checksumCalculator->getVersion() > 0;
6780
6781 unsigned char *ptr;
6782 unsigned char *buf;
6783 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6784 const size_t checksumSize = checksumCalculator->checksumByteSize();
6785 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6786 buf = stream->alloc(totalSize);
6787 ptr = buf;
6788 int tmp = OP_glVertexAttribI4i;memcpy(ptr, &tmp, 4); ptr += 4;
6789 memcpy(ptr, &totalSize, 4); ptr += 4;
6790
6791 memcpy(ptr, &index, 4); ptr += 4;
6792 memcpy(ptr, &v0, 4); ptr += 4;
6793 memcpy(ptr, &v1, 4); ptr += 4;
6794 memcpy(ptr, &v2, 4); ptr += 4;
6795 memcpy(ptr, &v3, 4); ptr += 4;
6796
6797 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6798 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6799
6800 }
6801
glVertexAttribI4ui_enc(void * self,GLuint index,GLuint v0,GLuint v1,GLuint v2,GLuint v3)6802 void glVertexAttribI4ui_enc(void *self , GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
6803 {
6804 ENCODER_DEBUG_LOG("glVertexAttribI4ui(index:%u, v0:%u, v1:%u, v2:%u, v3:%u)", index, v0, v1, v2, v3);
6805 AEMU_SCOPED_TRACE("glVertexAttribI4ui encode");
6806
6807 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6808 IOStream *stream = ctx->m_stream;
6809 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6810 bool useChecksum = checksumCalculator->getVersion() > 0;
6811
6812 unsigned char *ptr;
6813 unsigned char *buf;
6814 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6815 const size_t checksumSize = checksumCalculator->checksumByteSize();
6816 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6817 buf = stream->alloc(totalSize);
6818 ptr = buf;
6819 int tmp = OP_glVertexAttribI4ui;memcpy(ptr, &tmp, 4); ptr += 4;
6820 memcpy(ptr, &totalSize, 4); ptr += 4;
6821
6822 memcpy(ptr, &index, 4); ptr += 4;
6823 memcpy(ptr, &v0, 4); ptr += 4;
6824 memcpy(ptr, &v1, 4); ptr += 4;
6825 memcpy(ptr, &v2, 4); ptr += 4;
6826 memcpy(ptr, &v3, 4); ptr += 4;
6827
6828 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6829 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6830
6831 }
6832
glVertexAttribI4iv_enc(void * self,GLuint index,const GLint * v)6833 void glVertexAttribI4iv_enc(void *self , GLuint index, const GLint* v)
6834 {
6835 ENCODER_DEBUG_LOG("glVertexAttribI4iv(index:%u, v:0x%08x)", index, v);
6836 AEMU_SCOPED_TRACE("glVertexAttribI4iv encode");
6837
6838 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6839 IOStream *stream = ctx->m_stream;
6840 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6841 bool useChecksum = checksumCalculator->getVersion() > 0;
6842
6843 const unsigned int __size_v = (4 * sizeof(GLint));
6844 unsigned char *ptr;
6845 unsigned char *buf;
6846 const size_t sizeWithoutChecksum = 8 + 4 + __size_v + 1*4;
6847 const size_t checksumSize = checksumCalculator->checksumByteSize();
6848 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6849 buf = stream->alloc(totalSize);
6850 ptr = buf;
6851 int tmp = OP_glVertexAttribI4iv;memcpy(ptr, &tmp, 4); ptr += 4;
6852 memcpy(ptr, &totalSize, 4); ptr += 4;
6853
6854 memcpy(ptr, &index, 4); ptr += 4;
6855 memcpy(ptr, &__size_v, 4); ptr += 4;
6856 memcpy(ptr, v, __size_v);ptr += __size_v;
6857
6858 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6859 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6860
6861 }
6862
glVertexAttribI4uiv_enc(void * self,GLuint index,const GLuint * v)6863 void glVertexAttribI4uiv_enc(void *self , GLuint index, const GLuint* v)
6864 {
6865 ENCODER_DEBUG_LOG("glVertexAttribI4uiv(index:%u, v:0x%08x)", index, v);
6866 AEMU_SCOPED_TRACE("glVertexAttribI4uiv encode");
6867
6868 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6869 IOStream *stream = ctx->m_stream;
6870 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6871 bool useChecksum = checksumCalculator->getVersion() > 0;
6872
6873 const unsigned int __size_v = (4 * sizeof(GLuint));
6874 unsigned char *ptr;
6875 unsigned char *buf;
6876 const size_t sizeWithoutChecksum = 8 + 4 + __size_v + 1*4;
6877 const size_t checksumSize = checksumCalculator->checksumByteSize();
6878 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6879 buf = stream->alloc(totalSize);
6880 ptr = buf;
6881 int tmp = OP_glVertexAttribI4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6882 memcpy(ptr, &totalSize, 4); ptr += 4;
6883
6884 memcpy(ptr, &index, 4); ptr += 4;
6885 memcpy(ptr, &__size_v, 4); ptr += 4;
6886 memcpy(ptr, v, __size_v);ptr += __size_v;
6887
6888 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6889 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6890
6891 }
6892
glVertexAttribIPointerOffsetAEMU_enc(void * self,GLuint index,GLint size,GLenum type,GLsizei stride,GLuint offset)6893 void glVertexAttribIPointerOffsetAEMU_enc(void *self , GLuint index, GLint size, GLenum type, GLsizei stride, GLuint offset)
6894 {
6895 ENCODER_DEBUG_LOG("glVertexAttribIPointerOffsetAEMU(index:%u, size:%d, type:0x%08x, stride:%d, offset:%u)", index, size, type, stride, offset);
6896 AEMU_SCOPED_TRACE("glVertexAttribIPointerOffsetAEMU encode");
6897
6898 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6899 IOStream *stream = ctx->m_stream;
6900 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6901 bool useChecksum = checksumCalculator->getVersion() > 0;
6902
6903 unsigned char *ptr;
6904 unsigned char *buf;
6905 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6906 const size_t checksumSize = checksumCalculator->checksumByteSize();
6907 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6908 buf = stream->alloc(totalSize);
6909 ptr = buf;
6910 int tmp = OP_glVertexAttribIPointerOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6911 memcpy(ptr, &totalSize, 4); ptr += 4;
6912
6913 memcpy(ptr, &index, 4); ptr += 4;
6914 memcpy(ptr, &size, 4); ptr += 4;
6915 memcpy(ptr, &type, 4); ptr += 4;
6916 memcpy(ptr, &stride, 4); ptr += 4;
6917 memcpy(ptr, &offset, 4); ptr += 4;
6918
6919 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6920 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6921
6922 }
6923
glVertexAttribIPointerDataAEMU_enc(void * self,GLuint index,GLint size,GLenum type,GLsizei stride,void * data,GLuint datalen)6924 void glVertexAttribIPointerDataAEMU_enc(void *self , GLuint index, GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
6925 {
6926 ENCODER_DEBUG_LOG("glVertexAttribIPointerDataAEMU(index:%u, size:%d, type:0x%08x, stride:%d, data:0x%08x, datalen:%u)", index, size, type, stride, data, datalen);
6927 AEMU_SCOPED_TRACE("glVertexAttribIPointerDataAEMU encode");
6928
6929 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6930 IOStream *stream = ctx->m_stream;
6931 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6932 bool useChecksum = checksumCalculator->getVersion() > 0;
6933
6934 const unsigned int __size_data = datalen;
6935 unsigned char *ptr;
6936 unsigned char *buf;
6937 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_data + 4 + 1*4;
6938 const size_t checksumSize = checksumCalculator->checksumByteSize();
6939 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6940 buf = stream->alloc(totalSize);
6941 ptr = buf;
6942 int tmp = OP_glVertexAttribIPointerDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6943 memcpy(ptr, &totalSize, 4); ptr += 4;
6944
6945 memcpy(ptr, &index, 4); ptr += 4;
6946 memcpy(ptr, &size, 4); ptr += 4;
6947 memcpy(ptr, &type, 4); ptr += 4;
6948 memcpy(ptr, &stride, 4); ptr += 4;
6949 memcpy(ptr, &__size_data, 4); ptr += 4;
6950 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
6951 memcpy(ptr, &datalen, 4); ptr += 4;
6952
6953 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6954 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6955
6956 }
6957
glGetVertexAttribIiv_enc(void * self,GLuint index,GLenum pname,GLint * params)6958 void glGetVertexAttribIiv_enc(void *self , GLuint index, GLenum pname, GLint* params)
6959 {
6960 ENCODER_DEBUG_LOG("glGetVertexAttribIiv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
6961 AEMU_SCOPED_TRACE("glGetVertexAttribIiv encode");
6962
6963 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6964 IOStream *stream = ctx->m_stream;
6965 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6966 bool useChecksum = checksumCalculator->getVersion() > 0;
6967
6968 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
6969 unsigned char *ptr;
6970 unsigned char *buf;
6971 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
6972 const size_t checksumSize = checksumCalculator->checksumByteSize();
6973 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6974 buf = stream->alloc(totalSize);
6975 ptr = buf;
6976 int tmp = OP_glGetVertexAttribIiv;memcpy(ptr, &tmp, 4); ptr += 4;
6977 memcpy(ptr, &totalSize, 4); ptr += 4;
6978
6979 memcpy(ptr, &index, 4); ptr += 4;
6980 memcpy(ptr, &pname, 4); ptr += 4;
6981 memcpy(ptr, &__size_params, 4); ptr += 4;
6982
6983 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6984 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6985
6986 stream->readback(params, __size_params);
6987 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6988 if (useChecksum) {
6989 unsigned char *checksumBufPtr = NULL;
6990 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6991 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6992 stream->readback(checksumBufPtr, checksumSize);
6993 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6994 ALOGE("glGetVertexAttribIiv: GL communication error, please report this issue to b.android.com.\n");
6995 abort();
6996 }
6997 }
6998 }
6999
glGetVertexAttribIuiv_enc(void * self,GLuint index,GLenum pname,GLuint * params)7000 void glGetVertexAttribIuiv_enc(void *self , GLuint index, GLenum pname, GLuint* params)
7001 {
7002 ENCODER_DEBUG_LOG("glGetVertexAttribIuiv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
7003 AEMU_SCOPED_TRACE("glGetVertexAttribIuiv encode");
7004
7005 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7006 IOStream *stream = ctx->m_stream;
7007 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7008 bool useChecksum = checksumCalculator->getVersion() > 0;
7009
7010 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLuint));
7011 unsigned char *ptr;
7012 unsigned char *buf;
7013 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
7014 const size_t checksumSize = checksumCalculator->checksumByteSize();
7015 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7016 buf = stream->alloc(totalSize);
7017 ptr = buf;
7018 int tmp = OP_glGetVertexAttribIuiv;memcpy(ptr, &tmp, 4); ptr += 4;
7019 memcpy(ptr, &totalSize, 4); ptr += 4;
7020
7021 memcpy(ptr, &index, 4); ptr += 4;
7022 memcpy(ptr, &pname, 4); ptr += 4;
7023 memcpy(ptr, &__size_params, 4); ptr += 4;
7024
7025 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7026 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7027
7028 stream->readback(params, __size_params);
7029 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
7030 if (useChecksum) {
7031 unsigned char *checksumBufPtr = NULL;
7032 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7033 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7034 stream->readback(checksumBufPtr, checksumSize);
7035 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7036 ALOGE("glGetVertexAttribIuiv: GL communication error, please report this issue to b.android.com.\n");
7037 abort();
7038 }
7039 }
7040 }
7041
glVertexAttribDivisor_enc(void * self,GLuint index,GLuint divisor)7042 void glVertexAttribDivisor_enc(void *self , GLuint index, GLuint divisor)
7043 {
7044 ENCODER_DEBUG_LOG("glVertexAttribDivisor(index:%u, divisor:%u)", index, divisor);
7045 AEMU_SCOPED_TRACE("glVertexAttribDivisor encode");
7046
7047 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7048 IOStream *stream = ctx->m_stream;
7049 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7050 bool useChecksum = checksumCalculator->getVersion() > 0;
7051
7052 unsigned char *ptr;
7053 unsigned char *buf;
7054 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7055 const size_t checksumSize = checksumCalculator->checksumByteSize();
7056 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7057 buf = stream->alloc(totalSize);
7058 ptr = buf;
7059 int tmp = OP_glVertexAttribDivisor;memcpy(ptr, &tmp, 4); ptr += 4;
7060 memcpy(ptr, &totalSize, 4); ptr += 4;
7061
7062 memcpy(ptr, &index, 4); ptr += 4;
7063 memcpy(ptr, &divisor, 4); ptr += 4;
7064
7065 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7066 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7067
7068 }
7069
glDrawArraysInstanced_enc(void * self,GLenum mode,GLint first,GLsizei count,GLsizei primcount)7070 void glDrawArraysInstanced_enc(void *self , GLenum mode, GLint first, GLsizei count, GLsizei primcount)
7071 {
7072 ENCODER_DEBUG_LOG("glDrawArraysInstanced(mode:0x%08x, first:%d, count:%d, primcount:%d)", mode, first, count, primcount);
7073 AEMU_SCOPED_TRACE("glDrawArraysInstanced encode");
7074
7075 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7076 IOStream *stream = ctx->m_stream;
7077 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7078 bool useChecksum = checksumCalculator->getVersion() > 0;
7079
7080 unsigned char *ptr;
7081 unsigned char *buf;
7082 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
7083 const size_t checksumSize = checksumCalculator->checksumByteSize();
7084 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7085 buf = stream->alloc(totalSize);
7086 ptr = buf;
7087 int tmp = OP_glDrawArraysInstanced;memcpy(ptr, &tmp, 4); ptr += 4;
7088 memcpy(ptr, &totalSize, 4); ptr += 4;
7089
7090 memcpy(ptr, &mode, 4); ptr += 4;
7091 memcpy(ptr, &first, 4); ptr += 4;
7092 memcpy(ptr, &count, 4); ptr += 4;
7093 memcpy(ptr, &primcount, 4); ptr += 4;
7094
7095 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7096 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7097
7098 }
7099
glDrawElementsInstancedDataAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei primcount,GLsizei datalen)7100 void glDrawElementsInstancedDataAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLsizei datalen)
7101 {
7102 ENCODER_DEBUG_LOG("glDrawElementsInstancedDataAEMU(mode:0x%08x, count:%d, type:0x%08x, indices:0x%08x, primcount:%d, datalen:%d)", mode, count, type, indices, primcount, datalen);
7103 AEMU_SCOPED_TRACE("glDrawElementsInstancedDataAEMU encode");
7104
7105 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7106 IOStream *stream = ctx->m_stream;
7107 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7108 bool useChecksum = checksumCalculator->getVersion() > 0;
7109
7110 const unsigned int __size_indices = datalen;
7111 unsigned char *ptr;
7112 unsigned char *buf;
7113 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_indices + 4 + 4 + 1*4;
7114 const size_t checksumSize = checksumCalculator->checksumByteSize();
7115 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7116 buf = stream->alloc(totalSize);
7117 ptr = buf;
7118 int tmp = OP_glDrawElementsInstancedDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7119 memcpy(ptr, &totalSize, 4); ptr += 4;
7120
7121 memcpy(ptr, &mode, 4); ptr += 4;
7122 memcpy(ptr, &count, 4); ptr += 4;
7123 memcpy(ptr, &type, 4); ptr += 4;
7124 memcpy(ptr, &__size_indices, 4); ptr += 4;
7125 memcpy(ptr, indices, __size_indices);ptr += __size_indices;
7126 memcpy(ptr, &primcount, 4); ptr += 4;
7127 memcpy(ptr, &datalen, 4); ptr += 4;
7128
7129 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7130 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7131
7132 }
7133
glDrawElementsInstancedOffsetAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,GLuint offset,GLsizei primcount)7134 void glDrawElementsInstancedOffsetAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset, GLsizei primcount)
7135 {
7136 ENCODER_DEBUG_LOG("glDrawElementsInstancedOffsetAEMU(mode:0x%08x, count:%d, type:0x%08x, offset:%u, primcount:%d)", mode, count, type, offset, primcount);
7137 AEMU_SCOPED_TRACE("glDrawElementsInstancedOffsetAEMU encode");
7138
7139 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7140 IOStream *stream = ctx->m_stream;
7141 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7142 bool useChecksum = checksumCalculator->getVersion() > 0;
7143
7144 unsigned char *ptr;
7145 unsigned char *buf;
7146 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7147 const size_t checksumSize = checksumCalculator->checksumByteSize();
7148 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7149 buf = stream->alloc(totalSize);
7150 ptr = buf;
7151 int tmp = OP_glDrawElementsInstancedOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7152 memcpy(ptr, &totalSize, 4); ptr += 4;
7153
7154 memcpy(ptr, &mode, 4); ptr += 4;
7155 memcpy(ptr, &count, 4); ptr += 4;
7156 memcpy(ptr, &type, 4); ptr += 4;
7157 memcpy(ptr, &offset, 4); ptr += 4;
7158 memcpy(ptr, &primcount, 4); ptr += 4;
7159
7160 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7161 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7162
7163 }
7164
glDrawRangeElementsDataAEMU_enc(void * self,GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices,GLsizei datalen)7165 void glDrawRangeElementsDataAEMU_enc(void *self , GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices, GLsizei datalen)
7166 {
7167 ENCODER_DEBUG_LOG("glDrawRangeElementsDataAEMU(mode:0x%08x, start:%u, end:%u, count:%d, type:0x%08x, indices:0x%08x, datalen:%d)", mode, start, end, count, type, indices, datalen);
7168 AEMU_SCOPED_TRACE("glDrawRangeElementsDataAEMU encode");
7169
7170 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7171 IOStream *stream = ctx->m_stream;
7172 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7173 bool useChecksum = checksumCalculator->getVersion() > 0;
7174
7175 const unsigned int __size_indices = datalen;
7176 unsigned char *ptr;
7177 unsigned char *buf;
7178 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + __size_indices + 4 + 1*4;
7179 const size_t checksumSize = checksumCalculator->checksumByteSize();
7180 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7181 buf = stream->alloc(totalSize);
7182 ptr = buf;
7183 int tmp = OP_glDrawRangeElementsDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7184 memcpy(ptr, &totalSize, 4); ptr += 4;
7185
7186 memcpy(ptr, &mode, 4); ptr += 4;
7187 memcpy(ptr, &start, 4); ptr += 4;
7188 memcpy(ptr, &end, 4); ptr += 4;
7189 memcpy(ptr, &count, 4); ptr += 4;
7190 memcpy(ptr, &type, 4); ptr += 4;
7191 memcpy(ptr, &__size_indices, 4); ptr += 4;
7192 memcpy(ptr, indices, __size_indices);ptr += __size_indices;
7193 memcpy(ptr, &datalen, 4); ptr += 4;
7194
7195 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7196 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7197
7198 }
7199
glDrawRangeElementsOffsetAEMU_enc(void * self,GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,GLuint offset)7200 void glDrawRangeElementsOffsetAEMU_enc(void *self , GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLuint offset)
7201 {
7202 ENCODER_DEBUG_LOG("glDrawRangeElementsOffsetAEMU(mode:0x%08x, start:%u, end:%u, count:%d, type:0x%08x, offset:%u)", mode, start, end, count, type, offset);
7203 AEMU_SCOPED_TRACE("glDrawRangeElementsOffsetAEMU encode");
7204
7205 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7206 IOStream *stream = ctx->m_stream;
7207 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7208 bool useChecksum = checksumCalculator->getVersion() > 0;
7209
7210 unsigned char *ptr;
7211 unsigned char *buf;
7212 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
7213 const size_t checksumSize = checksumCalculator->checksumByteSize();
7214 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7215 buf = stream->alloc(totalSize);
7216 ptr = buf;
7217 int tmp = OP_glDrawRangeElementsOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7218 memcpy(ptr, &totalSize, 4); ptr += 4;
7219
7220 memcpy(ptr, &mode, 4); ptr += 4;
7221 memcpy(ptr, &start, 4); ptr += 4;
7222 memcpy(ptr, &end, 4); ptr += 4;
7223 memcpy(ptr, &count, 4); ptr += 4;
7224 memcpy(ptr, &type, 4); ptr += 4;
7225 memcpy(ptr, &offset, 4); ptr += 4;
7226
7227 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7228 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7229
7230 }
7231
glFenceSyncAEMU_enc(void * self,GLenum condition,GLbitfield flags)7232 uint64_t glFenceSyncAEMU_enc(void *self , GLenum condition, GLbitfield flags)
7233 {
7234 ENCODER_DEBUG_LOG("glFenceSyncAEMU(condition:0x%08x, flags:0x%08x)", condition, flags);
7235 AEMU_SCOPED_TRACE("glFenceSyncAEMU encode");
7236
7237 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7238 IOStream *stream = ctx->m_stream;
7239 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7240 bool useChecksum = checksumCalculator->getVersion() > 0;
7241
7242 unsigned char *ptr;
7243 unsigned char *buf;
7244 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7245 const size_t checksumSize = checksumCalculator->checksumByteSize();
7246 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7247 buf = stream->alloc(totalSize);
7248 ptr = buf;
7249 int tmp = OP_glFenceSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7250 memcpy(ptr, &totalSize, 4); ptr += 4;
7251
7252 memcpy(ptr, &condition, 4); ptr += 4;
7253 memcpy(ptr, &flags, 4); ptr += 4;
7254
7255 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7256 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7257
7258
7259 uint64_t retval;
7260 stream->readback(&retval, 8);
7261 if (useChecksum) checksumCalculator->addBuffer(&retval, 8);
7262 if (useChecksum) {
7263 unsigned char *checksumBufPtr = NULL;
7264 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7265 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7266 stream->readback(checksumBufPtr, checksumSize);
7267 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7268 ALOGE("glFenceSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
7269 abort();
7270 }
7271 }
7272 return retval;
7273 }
7274
glClientWaitSyncAEMU_enc(void * self,uint64_t wait_on,GLbitfield flags,GLuint64 timeout)7275 GLenum glClientWaitSyncAEMU_enc(void *self , uint64_t wait_on, GLbitfield flags, GLuint64 timeout)
7276 {
7277 ENCODER_DEBUG_LOG("glClientWaitSyncAEMU(wait_on:0x%016lx, flags:0x%08x, timeout:0x%016lx)", wait_on, flags, timeout);
7278 AEMU_SCOPED_TRACE("glClientWaitSyncAEMU encode");
7279
7280 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7281 IOStream *stream = ctx->m_stream;
7282 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7283 bool useChecksum = checksumCalculator->getVersion() > 0;
7284
7285 unsigned char *ptr;
7286 unsigned char *buf;
7287 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 8;
7288 const size_t checksumSize = checksumCalculator->checksumByteSize();
7289 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7290 buf = stream->alloc(totalSize);
7291 ptr = buf;
7292 int tmp = OP_glClientWaitSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7293 memcpy(ptr, &totalSize, 4); ptr += 4;
7294
7295 memcpy(ptr, &wait_on, 8); ptr += 8;
7296 memcpy(ptr, &flags, 4); ptr += 4;
7297 memcpy(ptr, &timeout, 8); ptr += 8;
7298
7299 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7300 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7301
7302
7303 GLenum retval;
7304 stream->readback(&retval, 4);
7305 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
7306 if (useChecksum) {
7307 unsigned char *checksumBufPtr = NULL;
7308 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7309 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7310 stream->readback(checksumBufPtr, checksumSize);
7311 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7312 ALOGE("glClientWaitSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
7313 abort();
7314 }
7315 }
7316 return retval;
7317 }
7318
glWaitSyncAEMU_enc(void * self,uint64_t wait_on,GLbitfield flags,GLuint64 timeout)7319 void glWaitSyncAEMU_enc(void *self , uint64_t wait_on, GLbitfield flags, GLuint64 timeout)
7320 {
7321 ENCODER_DEBUG_LOG("glWaitSyncAEMU(wait_on:0x%016lx, flags:0x%08x, timeout:0x%016lx)", wait_on, flags, timeout);
7322 AEMU_SCOPED_TRACE("glWaitSyncAEMU encode");
7323
7324 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7325 IOStream *stream = ctx->m_stream;
7326 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7327 bool useChecksum = checksumCalculator->getVersion() > 0;
7328
7329 unsigned char *ptr;
7330 unsigned char *buf;
7331 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 8;
7332 const size_t checksumSize = checksumCalculator->checksumByteSize();
7333 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7334 buf = stream->alloc(totalSize);
7335 ptr = buf;
7336 int tmp = OP_glWaitSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7337 memcpy(ptr, &totalSize, 4); ptr += 4;
7338
7339 memcpy(ptr, &wait_on, 8); ptr += 8;
7340 memcpy(ptr, &flags, 4); ptr += 4;
7341 memcpy(ptr, &timeout, 8); ptr += 8;
7342
7343 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7344 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7345
7346 }
7347
glDeleteSyncAEMU_enc(void * self,uint64_t to_delete)7348 void glDeleteSyncAEMU_enc(void *self , uint64_t to_delete)
7349 {
7350 ENCODER_DEBUG_LOG("glDeleteSyncAEMU(to_delete:0x%016lx)", to_delete);
7351 AEMU_SCOPED_TRACE("glDeleteSyncAEMU encode");
7352
7353 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7354 IOStream *stream = ctx->m_stream;
7355 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7356 bool useChecksum = checksumCalculator->getVersion() > 0;
7357
7358 unsigned char *ptr;
7359 unsigned char *buf;
7360 const size_t sizeWithoutChecksum = 8 + 8;
7361 const size_t checksumSize = checksumCalculator->checksumByteSize();
7362 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7363 buf = stream->alloc(totalSize);
7364 ptr = buf;
7365 int tmp = OP_glDeleteSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7366 memcpy(ptr, &totalSize, 4); ptr += 4;
7367
7368 memcpy(ptr, &to_delete, 8); ptr += 8;
7369
7370 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7371 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7372
7373 }
7374
glIsSyncAEMU_enc(void * self,uint64_t sync)7375 GLboolean glIsSyncAEMU_enc(void *self , uint64_t sync)
7376 {
7377 ENCODER_DEBUG_LOG("glIsSyncAEMU(sync:0x%016lx)", sync);
7378 AEMU_SCOPED_TRACE("glIsSyncAEMU encode");
7379
7380 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7381 IOStream *stream = ctx->m_stream;
7382 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7383 bool useChecksum = checksumCalculator->getVersion() > 0;
7384
7385 unsigned char *ptr;
7386 unsigned char *buf;
7387 const size_t sizeWithoutChecksum = 8 + 8;
7388 const size_t checksumSize = checksumCalculator->checksumByteSize();
7389 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7390 buf = stream->alloc(totalSize);
7391 ptr = buf;
7392 int tmp = OP_glIsSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7393 memcpy(ptr, &totalSize, 4); ptr += 4;
7394
7395 memcpy(ptr, &sync, 8); ptr += 8;
7396
7397 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7398 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7399
7400
7401 GLboolean retval;
7402 stream->readback(&retval, 1);
7403 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
7404 if (useChecksum) {
7405 unsigned char *checksumBufPtr = NULL;
7406 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7407 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7408 stream->readback(checksumBufPtr, checksumSize);
7409 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7410 ALOGE("glIsSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
7411 abort();
7412 }
7413 }
7414 return retval;
7415 }
7416
glGetSyncivAEMU_enc(void * self,uint64_t sync,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * values)7417 void glGetSyncivAEMU_enc(void *self , uint64_t sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values)
7418 {
7419 ENCODER_DEBUG_LOG("glGetSyncivAEMU(sync:0x%016lx, pname:0x%08x, bufSize:%d, length:0x%08x, values:0x%08x)", sync, pname, bufSize, length, values);
7420 AEMU_SCOPED_TRACE("glGetSyncivAEMU encode");
7421
7422 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7423 IOStream *stream = ctx->m_stream;
7424 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7425 bool useChecksum = checksumCalculator->getVersion() > 0;
7426
7427 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
7428 const unsigned int __size_values = (bufSize * sizeof(GLint));
7429 unsigned char *ptr;
7430 unsigned char *buf;
7431 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 4 + 0 + 0 + 2*4;
7432 const size_t checksumSize = checksumCalculator->checksumByteSize();
7433 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7434 buf = stream->alloc(totalSize);
7435 ptr = buf;
7436 int tmp = OP_glGetSyncivAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7437 memcpy(ptr, &totalSize, 4); ptr += 4;
7438
7439 memcpy(ptr, &sync, 8); ptr += 8;
7440 memcpy(ptr, &pname, 4); ptr += 4;
7441 memcpy(ptr, &bufSize, 4); ptr += 4;
7442 memcpy(ptr, &__size_length, 4); ptr += 4;
7443 memcpy(ptr, &__size_values, 4); ptr += 4;
7444
7445 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7446 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7447
7448 if (length != NULL) {
7449 stream->readback(length, __size_length);
7450 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
7451 }
7452 stream->readback(values, __size_values);
7453 if (useChecksum) checksumCalculator->addBuffer(values, __size_values);
7454 if (useChecksum) {
7455 unsigned char *checksumBufPtr = NULL;
7456 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7457 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7458 stream->readback(checksumBufPtr, checksumSize);
7459 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7460 ALOGE("glGetSyncivAEMU: GL communication error, please report this issue to b.android.com.\n");
7461 abort();
7462 }
7463 }
7464 }
7465
glDrawBuffers_enc(void * self,GLsizei n,const GLenum * bufs)7466 void glDrawBuffers_enc(void *self , GLsizei n, const GLenum* bufs)
7467 {
7468 ENCODER_DEBUG_LOG("glDrawBuffers(n:%d, bufs:0x%08x)", n, bufs);
7469 AEMU_SCOPED_TRACE("glDrawBuffers encode");
7470
7471 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7472 IOStream *stream = ctx->m_stream;
7473 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7474 bool useChecksum = checksumCalculator->getVersion() > 0;
7475
7476 const unsigned int __size_bufs = (n * sizeof(GLenum));
7477 unsigned char *ptr;
7478 unsigned char *buf;
7479 const size_t sizeWithoutChecksum = 8 + 4 + __size_bufs + 1*4;
7480 const size_t checksumSize = checksumCalculator->checksumByteSize();
7481 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7482 buf = stream->alloc(totalSize);
7483 ptr = buf;
7484 int tmp = OP_glDrawBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
7485 memcpy(ptr, &totalSize, 4); ptr += 4;
7486
7487 memcpy(ptr, &n, 4); ptr += 4;
7488 memcpy(ptr, &__size_bufs, 4); ptr += 4;
7489 memcpy(ptr, bufs, __size_bufs);ptr += __size_bufs;
7490
7491 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7492 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7493
7494 }
7495
glReadBuffer_enc(void * self,GLenum src)7496 void glReadBuffer_enc(void *self , GLenum src)
7497 {
7498 ENCODER_DEBUG_LOG("glReadBuffer(src:0x%08x)", src);
7499 AEMU_SCOPED_TRACE("glReadBuffer encode");
7500
7501 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7502 IOStream *stream = ctx->m_stream;
7503 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7504 bool useChecksum = checksumCalculator->getVersion() > 0;
7505
7506 unsigned char *ptr;
7507 unsigned char *buf;
7508 const size_t sizeWithoutChecksum = 8 + 4;
7509 const size_t checksumSize = checksumCalculator->checksumByteSize();
7510 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7511 buf = stream->alloc(totalSize);
7512 ptr = buf;
7513 int tmp = OP_glReadBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7514 memcpy(ptr, &totalSize, 4); ptr += 4;
7515
7516 memcpy(ptr, &src, 4); ptr += 4;
7517
7518 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7519 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7520
7521 }
7522
glBlitFramebuffer_enc(void * self,GLint srcX0,GLint srcY0,GLint srcX1,GLint srcY1,GLint dstX0,GLint dstY0,GLint dstX1,GLint dstY1,GLbitfield mask,GLenum filter)7523 void glBlitFramebuffer_enc(void *self , GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
7524 {
7525 ENCODER_DEBUG_LOG("glBlitFramebuffer(srcX0:%d, srcY0:%d, srcX1:%d, srcY1:%d, dstX0:%d, dstY0:%d, dstX1:%d, dstY1:%d, mask:0x%08x, filter:0x%08x)", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
7526 AEMU_SCOPED_TRACE("glBlitFramebuffer encode");
7527
7528 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7529 IOStream *stream = ctx->m_stream;
7530 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7531 bool useChecksum = checksumCalculator->getVersion() > 0;
7532
7533 unsigned char *ptr;
7534 unsigned char *buf;
7535 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
7536 const size_t checksumSize = checksumCalculator->checksumByteSize();
7537 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7538 buf = stream->alloc(totalSize);
7539 ptr = buf;
7540 int tmp = OP_glBlitFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7541 memcpy(ptr, &totalSize, 4); ptr += 4;
7542
7543 memcpy(ptr, &srcX0, 4); ptr += 4;
7544 memcpy(ptr, &srcY0, 4); ptr += 4;
7545 memcpy(ptr, &srcX1, 4); ptr += 4;
7546 memcpy(ptr, &srcY1, 4); ptr += 4;
7547 memcpy(ptr, &dstX0, 4); ptr += 4;
7548 memcpy(ptr, &dstY0, 4); ptr += 4;
7549 memcpy(ptr, &dstX1, 4); ptr += 4;
7550 memcpy(ptr, &dstY1, 4); ptr += 4;
7551 memcpy(ptr, &mask, 4); ptr += 4;
7552 memcpy(ptr, &filter, 4); ptr += 4;
7553
7554 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7555 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7556
7557 }
7558
glInvalidateFramebuffer_enc(void * self,GLenum target,GLsizei numAttachments,const GLenum * attachments)7559 void glInvalidateFramebuffer_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments)
7560 {
7561 ENCODER_DEBUG_LOG("glInvalidateFramebuffer(target:0x%08x, numAttachments:%d, attachments:0x%08x)", target, numAttachments, attachments);
7562 AEMU_SCOPED_TRACE("glInvalidateFramebuffer encode");
7563
7564 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7565 IOStream *stream = ctx->m_stream;
7566 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7567 bool useChecksum = checksumCalculator->getVersion() > 0;
7568
7569 const unsigned int __size_attachments = (numAttachments * sizeof(GLenum));
7570 unsigned char *ptr;
7571 unsigned char *buf;
7572 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 1*4;
7573 const size_t checksumSize = checksumCalculator->checksumByteSize();
7574 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7575 buf = stream->alloc(totalSize);
7576 ptr = buf;
7577 int tmp = OP_glInvalidateFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7578 memcpy(ptr, &totalSize, 4); ptr += 4;
7579
7580 memcpy(ptr, &target, 4); ptr += 4;
7581 memcpy(ptr, &numAttachments, 4); ptr += 4;
7582 memcpy(ptr, &__size_attachments, 4); ptr += 4;
7583 memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
7584
7585 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7586 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7587
7588 }
7589
glInvalidateSubFramebuffer_enc(void * self,GLenum target,GLsizei numAttachments,const GLenum * attachments,GLint x,GLint y,GLsizei width,GLsizei height)7590 void glInvalidateSubFramebuffer_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height)
7591 {
7592 ENCODER_DEBUG_LOG("glInvalidateSubFramebuffer(target:0x%08x, numAttachments:%d, attachments:0x%08x, x:%d, y:%d, width:%d, height:%d)", target, numAttachments, attachments, x, y, width, height);
7593 AEMU_SCOPED_TRACE("glInvalidateSubFramebuffer encode");
7594
7595 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7596 IOStream *stream = ctx->m_stream;
7597 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7598 bool useChecksum = checksumCalculator->getVersion() > 0;
7599
7600 const unsigned int __size_attachments = (numAttachments * sizeof(GLenum));
7601 unsigned char *ptr;
7602 unsigned char *buf;
7603 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 4 + 4 + 4 + 4 + 1*4;
7604 const size_t checksumSize = checksumCalculator->checksumByteSize();
7605 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7606 buf = stream->alloc(totalSize);
7607 ptr = buf;
7608 int tmp = OP_glInvalidateSubFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7609 memcpy(ptr, &totalSize, 4); ptr += 4;
7610
7611 memcpy(ptr, &target, 4); ptr += 4;
7612 memcpy(ptr, &numAttachments, 4); ptr += 4;
7613 memcpy(ptr, &__size_attachments, 4); ptr += 4;
7614 memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
7615 memcpy(ptr, &x, 4); ptr += 4;
7616 memcpy(ptr, &y, 4); ptr += 4;
7617 memcpy(ptr, &width, 4); ptr += 4;
7618 memcpy(ptr, &height, 4); ptr += 4;
7619
7620 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7621 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7622
7623 }
7624
glFramebufferTextureLayer_enc(void * self,GLenum target,GLenum attachment,GLuint texture,GLint level,GLint layer)7625 void glFramebufferTextureLayer_enc(void *self , GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
7626 {
7627 ENCODER_DEBUG_LOG("glFramebufferTextureLayer(target:0x%08x, attachment:0x%08x, texture:%u, level:%d, layer:%d)", target, attachment, texture, level, layer);
7628 AEMU_SCOPED_TRACE("glFramebufferTextureLayer encode");
7629
7630 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7631 IOStream *stream = ctx->m_stream;
7632 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7633 bool useChecksum = checksumCalculator->getVersion() > 0;
7634
7635 unsigned char *ptr;
7636 unsigned char *buf;
7637 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7638 const size_t checksumSize = checksumCalculator->checksumByteSize();
7639 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7640 buf = stream->alloc(totalSize);
7641 ptr = buf;
7642 int tmp = OP_glFramebufferTextureLayer;memcpy(ptr, &tmp, 4); ptr += 4;
7643 memcpy(ptr, &totalSize, 4); ptr += 4;
7644
7645 memcpy(ptr, &target, 4); ptr += 4;
7646 memcpy(ptr, &attachment, 4); ptr += 4;
7647 memcpy(ptr, &texture, 4); ptr += 4;
7648 memcpy(ptr, &level, 4); ptr += 4;
7649 memcpy(ptr, &layer, 4); ptr += 4;
7650
7651 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7652 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7653
7654 }
7655
glRenderbufferStorageMultisample_enc(void * self,GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height)7656 void glRenderbufferStorageMultisample_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
7657 {
7658 ENCODER_DEBUG_LOG("glRenderbufferStorageMultisample(target:0x%08x, samples:%d, internalformat:0x%08x, width:%d, height:%d)", target, samples, internalformat, width, height);
7659 AEMU_SCOPED_TRACE("glRenderbufferStorageMultisample encode");
7660
7661 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7662 IOStream *stream = ctx->m_stream;
7663 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7664 bool useChecksum = checksumCalculator->getVersion() > 0;
7665
7666 unsigned char *ptr;
7667 unsigned char *buf;
7668 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7669 const size_t checksumSize = checksumCalculator->checksumByteSize();
7670 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7671 buf = stream->alloc(totalSize);
7672 ptr = buf;
7673 int tmp = OP_glRenderbufferStorageMultisample;memcpy(ptr, &tmp, 4); ptr += 4;
7674 memcpy(ptr, &totalSize, 4); ptr += 4;
7675
7676 memcpy(ptr, &target, 4); ptr += 4;
7677 memcpy(ptr, &samples, 4); ptr += 4;
7678 memcpy(ptr, &internalformat, 4); ptr += 4;
7679 memcpy(ptr, &width, 4); ptr += 4;
7680 memcpy(ptr, &height, 4); ptr += 4;
7681
7682 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7683 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7684
7685 }
7686
glTexStorage2D_enc(void * self,GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height)7687 void glTexStorage2D_enc(void *self , GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
7688 {
7689 ENCODER_DEBUG_LOG("glTexStorage2D(target:0x%08x, levels:%d, internalformat:0x%08x, width:%d, height:%d)", target, levels, internalformat, width, height);
7690 AEMU_SCOPED_TRACE("glTexStorage2D encode");
7691
7692 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7693 IOStream *stream = ctx->m_stream;
7694 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7695 bool useChecksum = checksumCalculator->getVersion() > 0;
7696
7697 unsigned char *ptr;
7698 unsigned char *buf;
7699 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7700 const size_t checksumSize = checksumCalculator->checksumByteSize();
7701 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7702 buf = stream->alloc(totalSize);
7703 ptr = buf;
7704 int tmp = OP_glTexStorage2D;memcpy(ptr, &tmp, 4); ptr += 4;
7705 memcpy(ptr, &totalSize, 4); ptr += 4;
7706
7707 memcpy(ptr, &target, 4); ptr += 4;
7708 memcpy(ptr, &levels, 4); ptr += 4;
7709 memcpy(ptr, &internalformat, 4); ptr += 4;
7710 memcpy(ptr, &width, 4); ptr += 4;
7711 memcpy(ptr, &height, 4); ptr += 4;
7712
7713 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7714 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7715
7716 }
7717
glGetInternalformativ_enc(void * self,GLenum target,GLenum internalformat,GLenum pname,GLsizei bufSize,GLint * params)7718 void glGetInternalformativ_enc(void *self , GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params)
7719 {
7720 ENCODER_DEBUG_LOG("glGetInternalformativ(target:0x%08x, internalformat:0x%08x, pname:0x%08x, bufSize:%d, params:0x%08x)", target, internalformat, pname, bufSize, params);
7721 AEMU_SCOPED_TRACE("glGetInternalformativ encode");
7722
7723 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7724 IOStream *stream = ctx->m_stream;
7725 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7726 bool useChecksum = checksumCalculator->getVersion() > 0;
7727
7728 const unsigned int __size_params = (sizeof(GLint) * bufSize);
7729 unsigned char *ptr;
7730 unsigned char *buf;
7731 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 1*4;
7732 const size_t checksumSize = checksumCalculator->checksumByteSize();
7733 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7734 buf = stream->alloc(totalSize);
7735 ptr = buf;
7736 int tmp = OP_glGetInternalformativ;memcpy(ptr, &tmp, 4); ptr += 4;
7737 memcpy(ptr, &totalSize, 4); ptr += 4;
7738
7739 memcpy(ptr, &target, 4); ptr += 4;
7740 memcpy(ptr, &internalformat, 4); ptr += 4;
7741 memcpy(ptr, &pname, 4); ptr += 4;
7742 memcpy(ptr, &bufSize, 4); ptr += 4;
7743 memcpy(ptr, &__size_params, 4); ptr += 4;
7744
7745 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7746 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7747
7748 stream->readback(params, __size_params);
7749 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
7750 if (useChecksum) {
7751 unsigned char *checksumBufPtr = NULL;
7752 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7753 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7754 stream->readback(checksumBufPtr, checksumSize);
7755 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7756 ALOGE("glGetInternalformativ: GL communication error, please report this issue to b.android.com.\n");
7757 abort();
7758 }
7759 }
7760 }
7761
glBeginTransformFeedback_enc(void * self,GLenum primitiveMode)7762 void glBeginTransformFeedback_enc(void *self , GLenum primitiveMode)
7763 {
7764 ENCODER_DEBUG_LOG("glBeginTransformFeedback(primitiveMode:0x%08x)", primitiveMode);
7765 AEMU_SCOPED_TRACE("glBeginTransformFeedback encode");
7766
7767 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7768 IOStream *stream = ctx->m_stream;
7769 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7770 bool useChecksum = checksumCalculator->getVersion() > 0;
7771
7772 unsigned char *ptr;
7773 unsigned char *buf;
7774 const size_t sizeWithoutChecksum = 8 + 4;
7775 const size_t checksumSize = checksumCalculator->checksumByteSize();
7776 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7777 buf = stream->alloc(totalSize);
7778 ptr = buf;
7779 int tmp = OP_glBeginTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7780 memcpy(ptr, &totalSize, 4); ptr += 4;
7781
7782 memcpy(ptr, &primitiveMode, 4); ptr += 4;
7783
7784 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7785 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7786
7787 }
7788
glEndTransformFeedback_enc(void * self)7789 void glEndTransformFeedback_enc(void *self )
7790 {
7791 ENCODER_DEBUG_LOG("glEndTransformFeedback()");
7792 AEMU_SCOPED_TRACE("glEndTransformFeedback encode");
7793
7794 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7795 IOStream *stream = ctx->m_stream;
7796 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7797 bool useChecksum = checksumCalculator->getVersion() > 0;
7798
7799 unsigned char *ptr;
7800 unsigned char *buf;
7801 const size_t sizeWithoutChecksum = 8;
7802 const size_t checksumSize = checksumCalculator->checksumByteSize();
7803 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7804 buf = stream->alloc(totalSize);
7805 ptr = buf;
7806 int tmp = OP_glEndTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7807 memcpy(ptr, &totalSize, 4); ptr += 4;
7808
7809
7810 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7811 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7812
7813 }
7814
glGenTransformFeedbacks_enc(void * self,GLsizei n,GLuint * ids)7815 void glGenTransformFeedbacks_enc(void *self , GLsizei n, GLuint* ids)
7816 {
7817 ENCODER_DEBUG_LOG("glGenTransformFeedbacks(n:%d, ids:0x%08x)", n, ids);
7818 AEMU_SCOPED_TRACE("glGenTransformFeedbacks encode");
7819
7820 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7821 IOStream *stream = ctx->m_stream;
7822 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7823 bool useChecksum = checksumCalculator->getVersion() > 0;
7824
7825 const unsigned int __size_ids = (n * sizeof(GLuint));
7826 unsigned char *ptr;
7827 unsigned char *buf;
7828 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
7829 const size_t checksumSize = checksumCalculator->checksumByteSize();
7830 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7831 buf = stream->alloc(totalSize);
7832 ptr = buf;
7833 int tmp = OP_glGenTransformFeedbacks;memcpy(ptr, &tmp, 4); ptr += 4;
7834 memcpy(ptr, &totalSize, 4); ptr += 4;
7835
7836 memcpy(ptr, &n, 4); ptr += 4;
7837 memcpy(ptr, &__size_ids, 4); ptr += 4;
7838
7839 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7840 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7841
7842 stream->readback(ids, __size_ids);
7843 if (useChecksum) checksumCalculator->addBuffer(ids, __size_ids);
7844 if (useChecksum) {
7845 unsigned char *checksumBufPtr = NULL;
7846 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7847 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7848 stream->readback(checksumBufPtr, checksumSize);
7849 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7850 ALOGE("glGenTransformFeedbacks: GL communication error, please report this issue to b.android.com.\n");
7851 abort();
7852 }
7853 }
7854 }
7855
glDeleteTransformFeedbacks_enc(void * self,GLsizei n,const GLuint * ids)7856 void glDeleteTransformFeedbacks_enc(void *self , GLsizei n, const GLuint* ids)
7857 {
7858 ENCODER_DEBUG_LOG("glDeleteTransformFeedbacks(n:%d, ids:0x%08x)", n, ids);
7859 AEMU_SCOPED_TRACE("glDeleteTransformFeedbacks encode");
7860
7861 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7862 IOStream *stream = ctx->m_stream;
7863 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7864 bool useChecksum = checksumCalculator->getVersion() > 0;
7865
7866 const unsigned int __size_ids = (n * sizeof(GLuint));
7867 unsigned char *ptr;
7868 unsigned char *buf;
7869 const size_t sizeWithoutChecksum = 8 + 4 + __size_ids + 1*4;
7870 const size_t checksumSize = checksumCalculator->checksumByteSize();
7871 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7872 buf = stream->alloc(totalSize);
7873 ptr = buf;
7874 int tmp = OP_glDeleteTransformFeedbacks;memcpy(ptr, &tmp, 4); ptr += 4;
7875 memcpy(ptr, &totalSize, 4); ptr += 4;
7876
7877 memcpy(ptr, &n, 4); ptr += 4;
7878 memcpy(ptr, &__size_ids, 4); ptr += 4;
7879 memcpy(ptr, ids, __size_ids);ptr += __size_ids;
7880
7881 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7882 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7883
7884 }
7885
glBindTransformFeedback_enc(void * self,GLenum target,GLuint id)7886 void glBindTransformFeedback_enc(void *self , GLenum target, GLuint id)
7887 {
7888 ENCODER_DEBUG_LOG("glBindTransformFeedback(target:0x%08x, id:%u)", target, id);
7889 AEMU_SCOPED_TRACE("glBindTransformFeedback encode");
7890
7891 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7892 IOStream *stream = ctx->m_stream;
7893 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7894 bool useChecksum = checksumCalculator->getVersion() > 0;
7895
7896 unsigned char *ptr;
7897 unsigned char *buf;
7898 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7899 const size_t checksumSize = checksumCalculator->checksumByteSize();
7900 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7901 buf = stream->alloc(totalSize);
7902 ptr = buf;
7903 int tmp = OP_glBindTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7904 memcpy(ptr, &totalSize, 4); ptr += 4;
7905
7906 memcpy(ptr, &target, 4); ptr += 4;
7907 memcpy(ptr, &id, 4); ptr += 4;
7908
7909 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7910 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7911
7912 }
7913
glPauseTransformFeedback_enc(void * self)7914 void glPauseTransformFeedback_enc(void *self )
7915 {
7916 ENCODER_DEBUG_LOG("glPauseTransformFeedback()");
7917 AEMU_SCOPED_TRACE("glPauseTransformFeedback encode");
7918
7919 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7920 IOStream *stream = ctx->m_stream;
7921 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7922 bool useChecksum = checksumCalculator->getVersion() > 0;
7923
7924 unsigned char *ptr;
7925 unsigned char *buf;
7926 const size_t sizeWithoutChecksum = 8;
7927 const size_t checksumSize = checksumCalculator->checksumByteSize();
7928 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7929 buf = stream->alloc(totalSize);
7930 ptr = buf;
7931 int tmp = OP_glPauseTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7932 memcpy(ptr, &totalSize, 4); ptr += 4;
7933
7934
7935 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7936 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7937
7938 }
7939
glResumeTransformFeedback_enc(void * self)7940 void glResumeTransformFeedback_enc(void *self )
7941 {
7942 ENCODER_DEBUG_LOG("glResumeTransformFeedback()");
7943 AEMU_SCOPED_TRACE("glResumeTransformFeedback encode");
7944
7945 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7946 IOStream *stream = ctx->m_stream;
7947 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7948 bool useChecksum = checksumCalculator->getVersion() > 0;
7949
7950 unsigned char *ptr;
7951 unsigned char *buf;
7952 const size_t sizeWithoutChecksum = 8;
7953 const size_t checksumSize = checksumCalculator->checksumByteSize();
7954 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7955 buf = stream->alloc(totalSize);
7956 ptr = buf;
7957 int tmp = OP_glResumeTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7958 memcpy(ptr, &totalSize, 4); ptr += 4;
7959
7960
7961 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7962 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7963
7964 }
7965
glIsTransformFeedback_enc(void * self,GLuint id)7966 GLboolean glIsTransformFeedback_enc(void *self , GLuint id)
7967 {
7968 ENCODER_DEBUG_LOG("glIsTransformFeedback(id:%u)", id);
7969 AEMU_SCOPED_TRACE("glIsTransformFeedback encode");
7970
7971 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7972 IOStream *stream = ctx->m_stream;
7973 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7974 bool useChecksum = checksumCalculator->getVersion() > 0;
7975
7976 unsigned char *ptr;
7977 unsigned char *buf;
7978 const size_t sizeWithoutChecksum = 8 + 4;
7979 const size_t checksumSize = checksumCalculator->checksumByteSize();
7980 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7981 buf = stream->alloc(totalSize);
7982 ptr = buf;
7983 int tmp = OP_glIsTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7984 memcpy(ptr, &totalSize, 4); ptr += 4;
7985
7986 memcpy(ptr, &id, 4); ptr += 4;
7987
7988 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7989 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7990
7991
7992 GLboolean retval;
7993 stream->readback(&retval, 1);
7994 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
7995 if (useChecksum) {
7996 unsigned char *checksumBufPtr = NULL;
7997 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7998 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7999 stream->readback(checksumBufPtr, checksumSize);
8000 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8001 ALOGE("glIsTransformFeedback: GL communication error, please report this issue to b.android.com.\n");
8002 abort();
8003 }
8004 }
8005 return retval;
8006 }
8007
glTransformFeedbackVaryingsAEMU_enc(void * self,GLuint program,GLsizei count,const char * packedVaryings,GLuint packedVaryingsLen,GLenum bufferMode)8008 void glTransformFeedbackVaryingsAEMU_enc(void *self , GLuint program, GLsizei count, const char* packedVaryings, GLuint packedVaryingsLen, GLenum bufferMode)
8009 {
8010 ENCODER_DEBUG_LOG("glTransformFeedbackVaryingsAEMU(program:%u, count:%d, packedVaryings:0x%08x, packedVaryingsLen:%u, bufferMode:0x%08x)", program, count, packedVaryings, packedVaryingsLen, bufferMode);
8011 AEMU_SCOPED_TRACE("glTransformFeedbackVaryingsAEMU encode");
8012
8013 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8014 IOStream *stream = ctx->m_stream;
8015 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8016 bool useChecksum = checksumCalculator->getVersion() > 0;
8017
8018 const unsigned int __size_packedVaryings = packedVaryingsLen;
8019 unsigned char *ptr;
8020 unsigned char *buf;
8021 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedVaryings + 4 + 4 + 1*4;
8022 const size_t checksumSize = checksumCalculator->checksumByteSize();
8023 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8024 buf = stream->alloc(totalSize);
8025 ptr = buf;
8026 int tmp = OP_glTransformFeedbackVaryingsAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
8027 memcpy(ptr, &totalSize, 4); ptr += 4;
8028
8029 memcpy(ptr, &program, 4); ptr += 4;
8030 memcpy(ptr, &count, 4); ptr += 4;
8031 memcpy(ptr, &__size_packedVaryings, 4); ptr += 4;
8032 memcpy(ptr, packedVaryings, __size_packedVaryings);ptr += __size_packedVaryings;
8033 memcpy(ptr, &packedVaryingsLen, 4); ptr += 4;
8034 memcpy(ptr, &bufferMode, 4); ptr += 4;
8035
8036 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8037 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8038
8039 }
8040
glGetTransformFeedbackVarying_enc(void * self,GLuint program,GLuint index,GLsizei bufSize,GLsizei * length,GLsizei * size,GLenum * type,char * name)8041 void glGetTransformFeedbackVarying_enc(void *self , GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, char* name)
8042 {
8043 ENCODER_DEBUG_LOG("glGetTransformFeedbackVarying(program:%u, index:%u, bufSize:%d, length:0x%08x, size:0x%08x, type:0x%08x, name:0x%08x)", program, index, bufSize, length, size, type, name);
8044 AEMU_SCOPED_TRACE("glGetTransformFeedbackVarying encode");
8045
8046 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8047 IOStream *stream = ctx->m_stream;
8048 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8049 bool useChecksum = checksumCalculator->getVersion() > 0;
8050
8051 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
8052 const unsigned int __size_size = (sizeof(GLsizei));
8053 const unsigned int __size_type = ((type != NULL) ? (sizeof(GLenum)) : 0);
8054 const unsigned int __size_name = ((name != NULL) ? bufSize : 0);
8055 unsigned char *ptr;
8056 unsigned char *buf;
8057 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
8058 const size_t checksumSize = checksumCalculator->checksumByteSize();
8059 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8060 buf = stream->alloc(totalSize);
8061 ptr = buf;
8062 int tmp = OP_glGetTransformFeedbackVarying;memcpy(ptr, &tmp, 4); ptr += 4;
8063 memcpy(ptr, &totalSize, 4); ptr += 4;
8064
8065 memcpy(ptr, &program, 4); ptr += 4;
8066 memcpy(ptr, &index, 4); ptr += 4;
8067 memcpy(ptr, &bufSize, 4); ptr += 4;
8068 memcpy(ptr, &__size_length, 4); ptr += 4;
8069 memcpy(ptr, &__size_size, 4); ptr += 4;
8070 memcpy(ptr, &__size_type, 4); ptr += 4;
8071 memcpy(ptr, &__size_name, 4); ptr += 4;
8072
8073 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8074 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8075
8076 if (length != NULL) {
8077 stream->readback(length, __size_length);
8078 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
8079 }
8080 stream->readback(size, __size_size);
8081 if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
8082 if (type != NULL) {
8083 stream->readback(type, __size_type);
8084 if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
8085 }
8086 if (name != NULL) {
8087 stream->readback(name, __size_name);
8088 if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
8089 }
8090 if (useChecksum) {
8091 unsigned char *checksumBufPtr = NULL;
8092 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8093 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8094 stream->readback(checksumBufPtr, checksumSize);
8095 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8096 ALOGE("glGetTransformFeedbackVarying: GL communication error, please report this issue to b.android.com.\n");
8097 abort();
8098 }
8099 }
8100 }
8101
glGenSamplers_enc(void * self,GLsizei n,GLuint * samplers)8102 void glGenSamplers_enc(void *self , GLsizei n, GLuint* samplers)
8103 {
8104 ENCODER_DEBUG_LOG("glGenSamplers(n:%d, samplers:0x%08x)", n, samplers);
8105 AEMU_SCOPED_TRACE("glGenSamplers encode");
8106
8107 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8108 IOStream *stream = ctx->m_stream;
8109 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8110 bool useChecksum = checksumCalculator->getVersion() > 0;
8111
8112 const unsigned int __size_samplers = (n * sizeof(GLuint));
8113 unsigned char *ptr;
8114 unsigned char *buf;
8115 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
8116 const size_t checksumSize = checksumCalculator->checksumByteSize();
8117 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8118 buf = stream->alloc(totalSize);
8119 ptr = buf;
8120 int tmp = OP_glGenSamplers;memcpy(ptr, &tmp, 4); ptr += 4;
8121 memcpy(ptr, &totalSize, 4); ptr += 4;
8122
8123 memcpy(ptr, &n, 4); ptr += 4;
8124 memcpy(ptr, &__size_samplers, 4); ptr += 4;
8125
8126 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8127 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8128
8129 stream->readback(samplers, __size_samplers);
8130 if (useChecksum) checksumCalculator->addBuffer(samplers, __size_samplers);
8131 if (useChecksum) {
8132 unsigned char *checksumBufPtr = NULL;
8133 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8134 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8135 stream->readback(checksumBufPtr, checksumSize);
8136 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8137 ALOGE("glGenSamplers: GL communication error, please report this issue to b.android.com.\n");
8138 abort();
8139 }
8140 }
8141 }
8142
glDeleteSamplers_enc(void * self,GLsizei n,const GLuint * samplers)8143 void glDeleteSamplers_enc(void *self , GLsizei n, const GLuint* samplers)
8144 {
8145 ENCODER_DEBUG_LOG("glDeleteSamplers(n:%d, samplers:0x%08x)", n, samplers);
8146 AEMU_SCOPED_TRACE("glDeleteSamplers encode");
8147
8148 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8149 IOStream *stream = ctx->m_stream;
8150 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8151 bool useChecksum = checksumCalculator->getVersion() > 0;
8152
8153 const unsigned int __size_samplers = (n * sizeof(GLuint));
8154 unsigned char *ptr;
8155 unsigned char *buf;
8156 const size_t sizeWithoutChecksum = 8 + 4 + __size_samplers + 1*4;
8157 const size_t checksumSize = checksumCalculator->checksumByteSize();
8158 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8159 buf = stream->alloc(totalSize);
8160 ptr = buf;
8161 int tmp = OP_glDeleteSamplers;memcpy(ptr, &tmp, 4); ptr += 4;
8162 memcpy(ptr, &totalSize, 4); ptr += 4;
8163
8164 memcpy(ptr, &n, 4); ptr += 4;
8165 memcpy(ptr, &__size_samplers, 4); ptr += 4;
8166 memcpy(ptr, samplers, __size_samplers);ptr += __size_samplers;
8167
8168 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8169 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8170
8171 }
8172
glBindSampler_enc(void * self,GLuint unit,GLuint sampler)8173 void glBindSampler_enc(void *self , GLuint unit, GLuint sampler)
8174 {
8175 ENCODER_DEBUG_LOG("glBindSampler(unit:%u, sampler:%u)", unit, sampler);
8176 AEMU_SCOPED_TRACE("glBindSampler encode");
8177
8178 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8179 IOStream *stream = ctx->m_stream;
8180 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8181 bool useChecksum = checksumCalculator->getVersion() > 0;
8182
8183 unsigned char *ptr;
8184 unsigned char *buf;
8185 const size_t sizeWithoutChecksum = 8 + 4 + 4;
8186 const size_t checksumSize = checksumCalculator->checksumByteSize();
8187 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8188 buf = stream->alloc(totalSize);
8189 ptr = buf;
8190 int tmp = OP_glBindSampler;memcpy(ptr, &tmp, 4); ptr += 4;
8191 memcpy(ptr, &totalSize, 4); ptr += 4;
8192
8193 memcpy(ptr, &unit, 4); ptr += 4;
8194 memcpy(ptr, &sampler, 4); ptr += 4;
8195
8196 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8197 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8198
8199 }
8200
glSamplerParameterf_enc(void * self,GLuint sampler,GLenum pname,GLfloat param)8201 void glSamplerParameterf_enc(void *self , GLuint sampler, GLenum pname, GLfloat param)
8202 {
8203 ENCODER_DEBUG_LOG("glSamplerParameterf(sampler:%u, pname:0x%08x, param:%f)", sampler, pname, param);
8204 AEMU_SCOPED_TRACE("glSamplerParameterf encode");
8205
8206 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8207 IOStream *stream = ctx->m_stream;
8208 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8209 bool useChecksum = checksumCalculator->getVersion() > 0;
8210
8211 unsigned char *ptr;
8212 unsigned char *buf;
8213 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
8214 const size_t checksumSize = checksumCalculator->checksumByteSize();
8215 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8216 buf = stream->alloc(totalSize);
8217 ptr = buf;
8218 int tmp = OP_glSamplerParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
8219 memcpy(ptr, &totalSize, 4); ptr += 4;
8220
8221 memcpy(ptr, &sampler, 4); ptr += 4;
8222 memcpy(ptr, &pname, 4); ptr += 4;
8223 memcpy(ptr, ¶m, 4); ptr += 4;
8224
8225 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8226 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8227
8228 }
8229
glSamplerParameteri_enc(void * self,GLuint sampler,GLenum pname,GLint param)8230 void glSamplerParameteri_enc(void *self , GLuint sampler, GLenum pname, GLint param)
8231 {
8232 ENCODER_DEBUG_LOG("glSamplerParameteri(sampler:%u, pname:0x%08x, param:%d)", sampler, pname, param);
8233 AEMU_SCOPED_TRACE("glSamplerParameteri encode");
8234
8235 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8236 IOStream *stream = ctx->m_stream;
8237 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8238 bool useChecksum = checksumCalculator->getVersion() > 0;
8239
8240 unsigned char *ptr;
8241 unsigned char *buf;
8242 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
8243 const size_t checksumSize = checksumCalculator->checksumByteSize();
8244 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8245 buf = stream->alloc(totalSize);
8246 ptr = buf;
8247 int tmp = OP_glSamplerParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
8248 memcpy(ptr, &totalSize, 4); ptr += 4;
8249
8250 memcpy(ptr, &sampler, 4); ptr += 4;
8251 memcpy(ptr, &pname, 4); ptr += 4;
8252 memcpy(ptr, ¶m, 4); ptr += 4;
8253
8254 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8255 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8256
8257 }
8258
glSamplerParameterfv_enc(void * self,GLuint sampler,GLenum pname,const GLfloat * params)8259 void glSamplerParameterfv_enc(void *self , GLuint sampler, GLenum pname, const GLfloat* params)
8260 {
8261 ENCODER_DEBUG_LOG("glSamplerParameterfv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8262 AEMU_SCOPED_TRACE("glSamplerParameterfv encode");
8263
8264 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8265 IOStream *stream = ctx->m_stream;
8266 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8267 bool useChecksum = checksumCalculator->getVersion() > 0;
8268
8269 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
8270 unsigned char *ptr;
8271 unsigned char *buf;
8272 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
8273 const size_t checksumSize = checksumCalculator->checksumByteSize();
8274 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8275 buf = stream->alloc(totalSize);
8276 ptr = buf;
8277 int tmp = OP_glSamplerParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
8278 memcpy(ptr, &totalSize, 4); ptr += 4;
8279
8280 memcpy(ptr, &sampler, 4); ptr += 4;
8281 memcpy(ptr, &pname, 4); ptr += 4;
8282 memcpy(ptr, &__size_params, 4); ptr += 4;
8283 memcpy(ptr, params, __size_params);ptr += __size_params;
8284
8285 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8286 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8287
8288 }
8289
glSamplerParameteriv_enc(void * self,GLuint sampler,GLenum pname,const GLint * params)8290 void glSamplerParameteriv_enc(void *self , GLuint sampler, GLenum pname, const GLint* params)
8291 {
8292 ENCODER_DEBUG_LOG("glSamplerParameteriv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8293 AEMU_SCOPED_TRACE("glSamplerParameteriv encode");
8294
8295 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8296 IOStream *stream = ctx->m_stream;
8297 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8298 bool useChecksum = checksumCalculator->getVersion() > 0;
8299
8300 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
8301 unsigned char *ptr;
8302 unsigned char *buf;
8303 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
8304 const size_t checksumSize = checksumCalculator->checksumByteSize();
8305 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8306 buf = stream->alloc(totalSize);
8307 ptr = buf;
8308 int tmp = OP_glSamplerParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
8309 memcpy(ptr, &totalSize, 4); ptr += 4;
8310
8311 memcpy(ptr, &sampler, 4); ptr += 4;
8312 memcpy(ptr, &pname, 4); ptr += 4;
8313 memcpy(ptr, &__size_params, 4); ptr += 4;
8314 memcpy(ptr, params, __size_params);ptr += __size_params;
8315
8316 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8317 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8318
8319 }
8320
glGetSamplerParameterfv_enc(void * self,GLuint sampler,GLenum pname,GLfloat * params)8321 void glGetSamplerParameterfv_enc(void *self , GLuint sampler, GLenum pname, GLfloat* params)
8322 {
8323 ENCODER_DEBUG_LOG("glGetSamplerParameterfv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8324 AEMU_SCOPED_TRACE("glGetSamplerParameterfv encode");
8325
8326 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8327 IOStream *stream = ctx->m_stream;
8328 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8329 bool useChecksum = checksumCalculator->getVersion() > 0;
8330
8331 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
8332 unsigned char *ptr;
8333 unsigned char *buf;
8334 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8335 const size_t checksumSize = checksumCalculator->checksumByteSize();
8336 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8337 buf = stream->alloc(totalSize);
8338 ptr = buf;
8339 int tmp = OP_glGetSamplerParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
8340 memcpy(ptr, &totalSize, 4); ptr += 4;
8341
8342 memcpy(ptr, &sampler, 4); ptr += 4;
8343 memcpy(ptr, &pname, 4); ptr += 4;
8344 memcpy(ptr, &__size_params, 4); ptr += 4;
8345
8346 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8347 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8348
8349 stream->readback(params, __size_params);
8350 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8351 if (useChecksum) {
8352 unsigned char *checksumBufPtr = NULL;
8353 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8354 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8355 stream->readback(checksumBufPtr, checksumSize);
8356 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8357 ALOGE("glGetSamplerParameterfv: GL communication error, please report this issue to b.android.com.\n");
8358 abort();
8359 }
8360 }
8361 }
8362
glGetSamplerParameteriv_enc(void * self,GLuint sampler,GLenum pname,GLint * params)8363 void glGetSamplerParameteriv_enc(void *self , GLuint sampler, GLenum pname, GLint* params)
8364 {
8365 ENCODER_DEBUG_LOG("glGetSamplerParameteriv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8366 AEMU_SCOPED_TRACE("glGetSamplerParameteriv encode");
8367
8368 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8369 IOStream *stream = ctx->m_stream;
8370 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8371 bool useChecksum = checksumCalculator->getVersion() > 0;
8372
8373 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
8374 unsigned char *ptr;
8375 unsigned char *buf;
8376 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8377 const size_t checksumSize = checksumCalculator->checksumByteSize();
8378 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8379 buf = stream->alloc(totalSize);
8380 ptr = buf;
8381 int tmp = OP_glGetSamplerParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
8382 memcpy(ptr, &totalSize, 4); ptr += 4;
8383
8384 memcpy(ptr, &sampler, 4); ptr += 4;
8385 memcpy(ptr, &pname, 4); ptr += 4;
8386 memcpy(ptr, &__size_params, 4); ptr += 4;
8387
8388 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8389 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8390
8391 stream->readback(params, __size_params);
8392 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8393 if (useChecksum) {
8394 unsigned char *checksumBufPtr = NULL;
8395 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8396 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8397 stream->readback(checksumBufPtr, checksumSize);
8398 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8399 ALOGE("glGetSamplerParameteriv: GL communication error, please report this issue to b.android.com.\n");
8400 abort();
8401 }
8402 }
8403 }
8404
glIsSampler_enc(void * self,GLuint sampler)8405 GLboolean glIsSampler_enc(void *self , GLuint sampler)
8406 {
8407 ENCODER_DEBUG_LOG("glIsSampler(sampler:%u)", sampler);
8408 AEMU_SCOPED_TRACE("glIsSampler encode");
8409
8410 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8411 IOStream *stream = ctx->m_stream;
8412 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8413 bool useChecksum = checksumCalculator->getVersion() > 0;
8414
8415 unsigned char *ptr;
8416 unsigned char *buf;
8417 const size_t sizeWithoutChecksum = 8 + 4;
8418 const size_t checksumSize = checksumCalculator->checksumByteSize();
8419 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8420 buf = stream->alloc(totalSize);
8421 ptr = buf;
8422 int tmp = OP_glIsSampler;memcpy(ptr, &tmp, 4); ptr += 4;
8423 memcpy(ptr, &totalSize, 4); ptr += 4;
8424
8425 memcpy(ptr, &sampler, 4); ptr += 4;
8426
8427 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8428 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8429
8430
8431 GLboolean retval;
8432 stream->readback(&retval, 1);
8433 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
8434 if (useChecksum) {
8435 unsigned char *checksumBufPtr = NULL;
8436 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8437 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8438 stream->readback(checksumBufPtr, checksumSize);
8439 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8440 ALOGE("glIsSampler: GL communication error, please report this issue to b.android.com.\n");
8441 abort();
8442 }
8443 }
8444 return retval;
8445 }
8446
glGenQueries_enc(void * self,GLsizei n,GLuint * queries)8447 void glGenQueries_enc(void *self , GLsizei n, GLuint* queries)
8448 {
8449 ENCODER_DEBUG_LOG("glGenQueries(n:%d, queries:0x%08x)", n, queries);
8450 AEMU_SCOPED_TRACE("glGenQueries encode");
8451
8452 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8453 IOStream *stream = ctx->m_stream;
8454 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8455 bool useChecksum = checksumCalculator->getVersion() > 0;
8456
8457 const unsigned int __size_queries = (n * sizeof(GLuint));
8458 unsigned char *ptr;
8459 unsigned char *buf;
8460 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
8461 const size_t checksumSize = checksumCalculator->checksumByteSize();
8462 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8463 buf = stream->alloc(totalSize);
8464 ptr = buf;
8465 int tmp = OP_glGenQueries;memcpy(ptr, &tmp, 4); ptr += 4;
8466 memcpy(ptr, &totalSize, 4); ptr += 4;
8467
8468 memcpy(ptr, &n, 4); ptr += 4;
8469 memcpy(ptr, &__size_queries, 4); ptr += 4;
8470
8471 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8472 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8473
8474 stream->readback(queries, __size_queries);
8475 if (useChecksum) checksumCalculator->addBuffer(queries, __size_queries);
8476 if (useChecksum) {
8477 unsigned char *checksumBufPtr = NULL;
8478 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8479 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8480 stream->readback(checksumBufPtr, checksumSize);
8481 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8482 ALOGE("glGenQueries: GL communication error, please report this issue to b.android.com.\n");
8483 abort();
8484 }
8485 }
8486 }
8487
glDeleteQueries_enc(void * self,GLsizei n,const GLuint * queries)8488 void glDeleteQueries_enc(void *self , GLsizei n, const GLuint* queries)
8489 {
8490 ENCODER_DEBUG_LOG("glDeleteQueries(n:%d, queries:0x%08x)", n, queries);
8491 AEMU_SCOPED_TRACE("glDeleteQueries encode");
8492
8493 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8494 IOStream *stream = ctx->m_stream;
8495 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8496 bool useChecksum = checksumCalculator->getVersion() > 0;
8497
8498 const unsigned int __size_queries = (n * sizeof(GLuint));
8499 unsigned char *ptr;
8500 unsigned char *buf;
8501 const size_t sizeWithoutChecksum = 8 + 4 + __size_queries + 1*4;
8502 const size_t checksumSize = checksumCalculator->checksumByteSize();
8503 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8504 buf = stream->alloc(totalSize);
8505 ptr = buf;
8506 int tmp = OP_glDeleteQueries;memcpy(ptr, &tmp, 4); ptr += 4;
8507 memcpy(ptr, &totalSize, 4); ptr += 4;
8508
8509 memcpy(ptr, &n, 4); ptr += 4;
8510 memcpy(ptr, &__size_queries, 4); ptr += 4;
8511 memcpy(ptr, queries, __size_queries);ptr += __size_queries;
8512
8513 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8514 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8515
8516 }
8517
glBeginQuery_enc(void * self,GLenum target,GLuint query)8518 void glBeginQuery_enc(void *self , GLenum target, GLuint query)
8519 {
8520 ENCODER_DEBUG_LOG("glBeginQuery(target:0x%08x, query:%u)", target, query);
8521 AEMU_SCOPED_TRACE("glBeginQuery encode");
8522
8523 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8524 IOStream *stream = ctx->m_stream;
8525 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8526 bool useChecksum = checksumCalculator->getVersion() > 0;
8527
8528 unsigned char *ptr;
8529 unsigned char *buf;
8530 const size_t sizeWithoutChecksum = 8 + 4 + 4;
8531 const size_t checksumSize = checksumCalculator->checksumByteSize();
8532 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8533 buf = stream->alloc(totalSize);
8534 ptr = buf;
8535 int tmp = OP_glBeginQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8536 memcpy(ptr, &totalSize, 4); ptr += 4;
8537
8538 memcpy(ptr, &target, 4); ptr += 4;
8539 memcpy(ptr, &query, 4); ptr += 4;
8540
8541 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8542 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8543
8544 }
8545
glEndQuery_enc(void * self,GLenum target)8546 void glEndQuery_enc(void *self , GLenum target)
8547 {
8548 ENCODER_DEBUG_LOG("glEndQuery(target:0x%08x)", target);
8549 AEMU_SCOPED_TRACE("glEndQuery encode");
8550
8551 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8552 IOStream *stream = ctx->m_stream;
8553 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8554 bool useChecksum = checksumCalculator->getVersion() > 0;
8555
8556 unsigned char *ptr;
8557 unsigned char *buf;
8558 const size_t sizeWithoutChecksum = 8 + 4;
8559 const size_t checksumSize = checksumCalculator->checksumByteSize();
8560 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8561 buf = stream->alloc(totalSize);
8562 ptr = buf;
8563 int tmp = OP_glEndQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8564 memcpy(ptr, &totalSize, 4); ptr += 4;
8565
8566 memcpy(ptr, &target, 4); ptr += 4;
8567
8568 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8569 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8570
8571 }
8572
glGetQueryiv_enc(void * self,GLenum target,GLenum pname,GLint * params)8573 void glGetQueryiv_enc(void *self , GLenum target, GLenum pname, GLint* params)
8574 {
8575 ENCODER_DEBUG_LOG("glGetQueryiv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
8576 AEMU_SCOPED_TRACE("glGetQueryiv encode");
8577
8578 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8579 IOStream *stream = ctx->m_stream;
8580 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8581 bool useChecksum = checksumCalculator->getVersion() > 0;
8582
8583 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
8584 unsigned char *ptr;
8585 unsigned char *buf;
8586 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8587 const size_t checksumSize = checksumCalculator->checksumByteSize();
8588 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8589 buf = stream->alloc(totalSize);
8590 ptr = buf;
8591 int tmp = OP_glGetQueryiv;memcpy(ptr, &tmp, 4); ptr += 4;
8592 memcpy(ptr, &totalSize, 4); ptr += 4;
8593
8594 memcpy(ptr, &target, 4); ptr += 4;
8595 memcpy(ptr, &pname, 4); ptr += 4;
8596 memcpy(ptr, &__size_params, 4); ptr += 4;
8597
8598 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8599 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8600
8601 stream->readback(params, __size_params);
8602 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8603 if (useChecksum) {
8604 unsigned char *checksumBufPtr = NULL;
8605 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8606 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8607 stream->readback(checksumBufPtr, checksumSize);
8608 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8609 ALOGE("glGetQueryiv: GL communication error, please report this issue to b.android.com.\n");
8610 abort();
8611 }
8612 }
8613 }
8614
glGetQueryObjectuiv_enc(void * self,GLuint query,GLenum pname,GLuint * params)8615 void glGetQueryObjectuiv_enc(void *self , GLuint query, GLenum pname, GLuint* params)
8616 {
8617 ENCODER_DEBUG_LOG("glGetQueryObjectuiv(query:%u, pname:0x%08x, params:0x%08x)", query, pname, params);
8618 AEMU_SCOPED_TRACE("glGetQueryObjectuiv encode");
8619
8620 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8621 IOStream *stream = ctx->m_stream;
8622 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8623 bool useChecksum = checksumCalculator->getVersion() > 0;
8624
8625 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLuint));
8626 unsigned char *ptr;
8627 unsigned char *buf;
8628 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8629 const size_t checksumSize = checksumCalculator->checksumByteSize();
8630 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8631 buf = stream->alloc(totalSize);
8632 ptr = buf;
8633 int tmp = OP_glGetQueryObjectuiv;memcpy(ptr, &tmp, 4); ptr += 4;
8634 memcpy(ptr, &totalSize, 4); ptr += 4;
8635
8636 memcpy(ptr, &query, 4); ptr += 4;
8637 memcpy(ptr, &pname, 4); ptr += 4;
8638 memcpy(ptr, &__size_params, 4); ptr += 4;
8639
8640 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8641 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8642
8643 stream->readback(params, __size_params);
8644 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8645 if (useChecksum) {
8646 unsigned char *checksumBufPtr = NULL;
8647 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8648 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8649 stream->readback(checksumBufPtr, checksumSize);
8650 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8651 ALOGE("glGetQueryObjectuiv: GL communication error, please report this issue to b.android.com.\n");
8652 abort();
8653 }
8654 }
8655 }
8656
glIsQuery_enc(void * self,GLuint query)8657 GLboolean glIsQuery_enc(void *self , GLuint query)
8658 {
8659 ENCODER_DEBUG_LOG("glIsQuery(query:%u)", query);
8660 AEMU_SCOPED_TRACE("glIsQuery encode");
8661
8662 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8663 IOStream *stream = ctx->m_stream;
8664 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8665 bool useChecksum = checksumCalculator->getVersion() > 0;
8666
8667 unsigned char *ptr;
8668 unsigned char *buf;
8669 const size_t sizeWithoutChecksum = 8 + 4;
8670 const size_t checksumSize = checksumCalculator->checksumByteSize();
8671 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8672 buf = stream->alloc(totalSize);
8673 ptr = buf;
8674 int tmp = OP_glIsQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8675 memcpy(ptr, &totalSize, 4); ptr += 4;
8676
8677 memcpy(ptr, &query, 4); ptr += 4;
8678
8679 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8680 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8681
8682
8683 GLboolean retval;
8684 stream->readback(&retval, 1);
8685 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
8686 if (useChecksum) {
8687 unsigned char *checksumBufPtr = NULL;
8688 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8689 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8690 stream->readback(checksumBufPtr, checksumSize);
8691 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8692 ALOGE("glIsQuery: GL communication error, please report this issue to b.android.com.\n");
8693 abort();
8694 }
8695 }
8696 return retval;
8697 }
8698
glProgramParameteri_enc(void * self,GLuint program,GLenum pname,GLint value)8699 void glProgramParameteri_enc(void *self , GLuint program, GLenum pname, GLint value)
8700 {
8701 ENCODER_DEBUG_LOG("glProgramParameteri(program:%u, pname:0x%08x, value:%d)", program, pname, value);
8702 AEMU_SCOPED_TRACE("glProgramParameteri encode");
8703
8704 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8705 IOStream *stream = ctx->m_stream;
8706 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8707 bool useChecksum = checksumCalculator->getVersion() > 0;
8708
8709 unsigned char *ptr;
8710 unsigned char *buf;
8711 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
8712 const size_t checksumSize = checksumCalculator->checksumByteSize();
8713 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8714 buf = stream->alloc(totalSize);
8715 ptr = buf;
8716 int tmp = OP_glProgramParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
8717 memcpy(ptr, &totalSize, 4); ptr += 4;
8718
8719 memcpy(ptr, &program, 4); ptr += 4;
8720 memcpy(ptr, &pname, 4); ptr += 4;
8721 memcpy(ptr, &value, 4); ptr += 4;
8722
8723 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8724 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8725
8726 }
8727
glProgramBinary_enc(void * self,GLuint program,GLenum binaryFormat,const void * binary,GLsizei length)8728 void glProgramBinary_enc(void *self , GLuint program, GLenum binaryFormat, const void* binary, GLsizei length)
8729 {
8730 ENCODER_DEBUG_LOG("glProgramBinary(program:%u, binaryFormat:0x%08x, binary:0x%08x, length:%d)", program, binaryFormat, binary, length);
8731 AEMU_SCOPED_TRACE("glProgramBinary encode");
8732
8733 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8734 IOStream *stream = ctx->m_stream;
8735 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8736 bool useChecksum = checksumCalculator->getVersion() > 0;
8737
8738 const unsigned int __size_binary = length;
8739 unsigned char *ptr;
8740 unsigned char *buf;
8741 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_binary + 4 + 1*4;
8742 const size_t checksumSize = checksumCalculator->checksumByteSize();
8743 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8744 buf = stream->alloc(totalSize);
8745 ptr = buf;
8746 int tmp = OP_glProgramBinary;memcpy(ptr, &tmp, 4); ptr += 4;
8747 memcpy(ptr, &totalSize, 4); ptr += 4;
8748
8749 memcpy(ptr, &program, 4); ptr += 4;
8750 memcpy(ptr, &binaryFormat, 4); ptr += 4;
8751 memcpy(ptr, &__size_binary, 4); ptr += 4;
8752 memcpy(ptr, binary, __size_binary);ptr += __size_binary;
8753 memcpy(ptr, &length, 4); ptr += 4;
8754
8755 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8756 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8757
8758 }
8759
glGetProgramBinary_enc(void * self,GLuint program,GLsizei bufSize,GLsizei * length,GLenum * binaryFormat,void * binary)8760 void glGetProgramBinary_enc(void *self , GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void* binary)
8761 {
8762 ENCODER_DEBUG_LOG("glGetProgramBinary(program:%u, bufSize:%d, length:0x%08x, binaryFormat:0x%08x, binary:0x%08x)", program, bufSize, length, binaryFormat, binary);
8763 AEMU_SCOPED_TRACE("glGetProgramBinary encode");
8764
8765 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8766 IOStream *stream = ctx->m_stream;
8767 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8768 bool useChecksum = checksumCalculator->getVersion() > 0;
8769
8770 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
8771 const unsigned int __size_binaryFormat = (sizeof(GLenum));
8772 const unsigned int __size_binary = bufSize;
8773 unsigned char *ptr;
8774 unsigned char *buf;
8775 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 0 + 3*4;
8776 const size_t checksumSize = checksumCalculator->checksumByteSize();
8777 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8778 buf = stream->alloc(totalSize);
8779 ptr = buf;
8780 int tmp = OP_glGetProgramBinary;memcpy(ptr, &tmp, 4); ptr += 4;
8781 memcpy(ptr, &totalSize, 4); ptr += 4;
8782
8783 memcpy(ptr, &program, 4); ptr += 4;
8784 memcpy(ptr, &bufSize, 4); ptr += 4;
8785 memcpy(ptr, &__size_length, 4); ptr += 4;
8786 memcpy(ptr, &__size_binaryFormat, 4); ptr += 4;
8787 memcpy(ptr, &__size_binary, 4); ptr += 4;
8788
8789 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8790 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8791
8792 if (length != NULL) {
8793 stream->readback(length, __size_length);
8794 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
8795 }
8796 stream->readback(binaryFormat, __size_binaryFormat);
8797 if (useChecksum) checksumCalculator->addBuffer(binaryFormat, __size_binaryFormat);
8798 stream->readback(binary, __size_binary);
8799 if (useChecksum) checksumCalculator->addBuffer(binary, __size_binary);
8800 if (useChecksum) {
8801 unsigned char *checksumBufPtr = NULL;
8802 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8803 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8804 stream->readback(checksumBufPtr, checksumSize);
8805 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8806 ALOGE("glGetProgramBinary: GL communication error, please report this issue to b.android.com.\n");
8807 abort();
8808 }
8809 }
8810 }
8811
glGetFragDataLocation_enc(void * self,GLuint program,const char * name)8812 GLint glGetFragDataLocation_enc(void *self , GLuint program, const char* name)
8813 {
8814 ENCODER_DEBUG_LOG("glGetFragDataLocation(program:%u, name:0x%08x)", program, name);
8815 AEMU_SCOPED_TRACE("glGetFragDataLocation encode");
8816
8817 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8818 IOStream *stream = ctx->m_stream;
8819 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8820 bool useChecksum = checksumCalculator->getVersion() > 0;
8821
8822 const unsigned int __size_name = (strlen(name) + 1);
8823 unsigned char *ptr;
8824 unsigned char *buf;
8825 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
8826 const size_t checksumSize = checksumCalculator->checksumByteSize();
8827 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8828 buf = stream->alloc(totalSize);
8829 ptr = buf;
8830 int tmp = OP_glGetFragDataLocation;memcpy(ptr, &tmp, 4); ptr += 4;
8831 memcpy(ptr, &totalSize, 4); ptr += 4;
8832
8833 memcpy(ptr, &program, 4); ptr += 4;
8834 memcpy(ptr, &__size_name, 4); ptr += 4;
8835 memcpy(ptr, name, __size_name);ptr += __size_name;
8836
8837 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8838 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8839
8840
8841 GLint retval;
8842 stream->readback(&retval, 4);
8843 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
8844 if (useChecksum) {
8845 unsigned char *checksumBufPtr = NULL;
8846 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8847 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8848 stream->readback(checksumBufPtr, checksumSize);
8849 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8850 ALOGE("glGetFragDataLocation: GL communication error, please report this issue to b.android.com.\n");
8851 abort();
8852 }
8853 }
8854 return retval;
8855 }
8856
glGetInteger64v_enc(void * self,GLenum pname,GLint64 * data)8857 void glGetInteger64v_enc(void *self , GLenum pname, GLint64* data)
8858 {
8859 ENCODER_DEBUG_LOG("glGetInteger64v(pname:0x%08x, data:%p)", pname, data);
8860 AEMU_SCOPED_TRACE("glGetInteger64v encode");
8861
8862 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8863 IOStream *stream = ctx->m_stream;
8864 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8865 bool useChecksum = checksumCalculator->getVersion() > 0;
8866
8867 const unsigned int __size_data = (glUtilsParamSize(pname) * sizeof(GLint64));
8868 unsigned char *ptr;
8869 unsigned char *buf;
8870 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
8871 const size_t checksumSize = checksumCalculator->checksumByteSize();
8872 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8873 buf = stream->alloc(totalSize);
8874 ptr = buf;
8875 int tmp = OP_glGetInteger64v;memcpy(ptr, &tmp, 4); ptr += 4;
8876 memcpy(ptr, &totalSize, 4); ptr += 4;
8877
8878 memcpy(ptr, &pname, 4); ptr += 4;
8879 memcpy(ptr, &__size_data, 4); ptr += 4;
8880
8881 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8882 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8883
8884 stream->readback(data, __size_data);
8885 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8886 if (useChecksum) {
8887 unsigned char *checksumBufPtr = NULL;
8888 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8889 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8890 stream->readback(checksumBufPtr, checksumSize);
8891 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8892 ALOGE("glGetInteger64v: GL communication error, please report this issue to b.android.com.\n");
8893 abort();
8894 }
8895 }
8896 }
8897
glGetIntegeri_v_enc(void * self,GLenum target,GLuint index,GLint * data)8898 void glGetIntegeri_v_enc(void *self , GLenum target, GLuint index, GLint* data)
8899 {
8900 ENCODER_DEBUG_LOG("glGetIntegeri_v(target:0x%08x, index:%u, data:0x%08x)", target, index, data);
8901 AEMU_SCOPED_TRACE("glGetIntegeri_v encode");
8902
8903 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8904 IOStream *stream = ctx->m_stream;
8905 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8906 bool useChecksum = checksumCalculator->getVersion() > 0;
8907
8908 const unsigned int __size_data = (sizeof(GLint));
8909 unsigned char *ptr;
8910 unsigned char *buf;
8911 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8912 const size_t checksumSize = checksumCalculator->checksumByteSize();
8913 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8914 buf = stream->alloc(totalSize);
8915 ptr = buf;
8916 int tmp = OP_glGetIntegeri_v;memcpy(ptr, &tmp, 4); ptr += 4;
8917 memcpy(ptr, &totalSize, 4); ptr += 4;
8918
8919 memcpy(ptr, &target, 4); ptr += 4;
8920 memcpy(ptr, &index, 4); ptr += 4;
8921 memcpy(ptr, &__size_data, 4); ptr += 4;
8922
8923 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8924 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8925
8926 stream->readback(data, __size_data);
8927 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8928 if (useChecksum) {
8929 unsigned char *checksumBufPtr = NULL;
8930 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8931 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8932 stream->readback(checksumBufPtr, checksumSize);
8933 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8934 ALOGE("glGetIntegeri_v: GL communication error, please report this issue to b.android.com.\n");
8935 abort();
8936 }
8937 }
8938 }
8939
glGetInteger64i_v_enc(void * self,GLenum target,GLuint index,GLint64 * data)8940 void glGetInteger64i_v_enc(void *self , GLenum target, GLuint index, GLint64* data)
8941 {
8942 ENCODER_DEBUG_LOG("glGetInteger64i_v(target:0x%08x, index:%u, data:%p)", target, index, data);
8943 AEMU_SCOPED_TRACE("glGetInteger64i_v encode");
8944
8945 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8946 IOStream *stream = ctx->m_stream;
8947 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8948 bool useChecksum = checksumCalculator->getVersion() > 0;
8949
8950 const unsigned int __size_data = (sizeof(GLint64));
8951 unsigned char *ptr;
8952 unsigned char *buf;
8953 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8954 const size_t checksumSize = checksumCalculator->checksumByteSize();
8955 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8956 buf = stream->alloc(totalSize);
8957 ptr = buf;
8958 int tmp = OP_glGetInteger64i_v;memcpy(ptr, &tmp, 4); ptr += 4;
8959 memcpy(ptr, &totalSize, 4); ptr += 4;
8960
8961 memcpy(ptr, &target, 4); ptr += 4;
8962 memcpy(ptr, &index, 4); ptr += 4;
8963 memcpy(ptr, &__size_data, 4); ptr += 4;
8964
8965 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8966 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8967
8968 stream->readback(data, __size_data);
8969 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8970 if (useChecksum) {
8971 unsigned char *checksumBufPtr = NULL;
8972 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8973 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8974 stream->readback(checksumBufPtr, checksumSize);
8975 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8976 ALOGE("glGetInteger64i_v: GL communication error, please report this issue to b.android.com.\n");
8977 abort();
8978 }
8979 }
8980 }
8981
glTexImage3D_enc(void * self,GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)8982 void glTexImage3D_enc(void *self , GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* data)
8983 {
8984 ENCODER_DEBUG_LOG("glTexImage3D(target:0x%08x, level:%d, internalFormat:%d, width:%d, height:%d, depth:%d, border:%d, format:0x%08x, type:0x%08x, data:0x%08x)", target, level, internalFormat, width, height, depth, border, format, type, data);
8985 AEMU_SCOPED_TRACE("glTexImage3D encode");
8986
8987 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8988 IOStream *stream = ctx->m_stream;
8989 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8990 bool useChecksum = checksumCalculator->getVersion() > 0;
8991
8992 const unsigned int __size_data = ((data != NULL) ? glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
8993 unsigned char *ptr;
8994 unsigned char *buf;
8995 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
8996 const size_t checksumSize = checksumCalculator->checksumByteSize();
8997 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8998 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
8999 ptr = buf;
9000 int tmp = OP_glTexImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9001 memcpy(ptr, &totalSize, 4); ptr += 4;
9002
9003 memcpy(ptr, &target, 4); ptr += 4;
9004 memcpy(ptr, &level, 4); ptr += 4;
9005 memcpy(ptr, &internalFormat, 4); ptr += 4;
9006 memcpy(ptr, &width, 4); ptr += 4;
9007 memcpy(ptr, &height, 4); ptr += 4;
9008 memcpy(ptr, &depth, 4); ptr += 4;
9009 memcpy(ptr, &border, 4); ptr += 4;
9010 memcpy(ptr, &format, 4); ptr += 4;
9011 memcpy(ptr, &type, 4); ptr += 4;
9012
9013 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9014 stream->flush();
9015 stream->writeFully(&__size_data,4);
9016 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9017 if (data != NULL) {
9018 stream->uploadPixels(self, width, height, depth, format, type, data);
9019 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9020 }
9021 buf = stream->alloc(checksumSize);
9022 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9023
9024 }
9025
glTexImage3DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,GLuint offset)9026 void glTexImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLuint offset)
9027 {
9028 ENCODER_DEBUG_LOG("glTexImage3DOffsetAEMU(target:0x%08x, level:%d, internalFormat:%d, width:%d, height:%d, depth:%d, border:%d, format:0x%08x, type:0x%08x, offset:%u)", target, level, internalFormat, width, height, depth, border, format, type, offset);
9029 AEMU_SCOPED_TRACE("glTexImage3DOffsetAEMU encode");
9030
9031 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9032 IOStream *stream = ctx->m_stream;
9033 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9034 bool useChecksum = checksumCalculator->getVersion() > 0;
9035
9036 unsigned char *ptr;
9037 unsigned char *buf;
9038 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9039 const size_t checksumSize = checksumCalculator->checksumByteSize();
9040 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9041 buf = stream->alloc(totalSize);
9042 ptr = buf;
9043 int tmp = OP_glTexImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9044 memcpy(ptr, &totalSize, 4); ptr += 4;
9045
9046 memcpy(ptr, &target, 4); ptr += 4;
9047 memcpy(ptr, &level, 4); ptr += 4;
9048 memcpy(ptr, &internalFormat, 4); ptr += 4;
9049 memcpy(ptr, &width, 4); ptr += 4;
9050 memcpy(ptr, &height, 4); ptr += 4;
9051 memcpy(ptr, &depth, 4); ptr += 4;
9052 memcpy(ptr, &border, 4); ptr += 4;
9053 memcpy(ptr, &format, 4); ptr += 4;
9054 memcpy(ptr, &type, 4); ptr += 4;
9055 memcpy(ptr, &offset, 4); ptr += 4;
9056
9057 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9058 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9059
9060 }
9061
glTexStorage3D_enc(void * self,GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth)9062 void glTexStorage3D_enc(void *self , GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
9063 {
9064 ENCODER_DEBUG_LOG("glTexStorage3D(target:0x%08x, levels:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d)", target, levels, internalformat, width, height, depth);
9065 AEMU_SCOPED_TRACE("glTexStorage3D encode");
9066
9067 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9068 IOStream *stream = ctx->m_stream;
9069 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9070 bool useChecksum = checksumCalculator->getVersion() > 0;
9071
9072 unsigned char *ptr;
9073 unsigned char *buf;
9074 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
9075 const size_t checksumSize = checksumCalculator->checksumByteSize();
9076 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9077 buf = stream->alloc(totalSize);
9078 ptr = buf;
9079 int tmp = OP_glTexStorage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9080 memcpy(ptr, &totalSize, 4); ptr += 4;
9081
9082 memcpy(ptr, &target, 4); ptr += 4;
9083 memcpy(ptr, &levels, 4); ptr += 4;
9084 memcpy(ptr, &internalformat, 4); ptr += 4;
9085 memcpy(ptr, &width, 4); ptr += 4;
9086 memcpy(ptr, &height, 4); ptr += 4;
9087 memcpy(ptr, &depth, 4); ptr += 4;
9088
9089 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9090 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9091
9092 }
9093
glTexSubImage3D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)9094 void glTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* data)
9095 {
9096 ENCODER_DEBUG_LOG("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:0x%08x)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
9097 AEMU_SCOPED_TRACE("glTexSubImage3D encode");
9098
9099 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9100 IOStream *stream = ctx->m_stream;
9101 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9102 bool useChecksum = checksumCalculator->getVersion() > 0;
9103
9104 const unsigned int __size_data = ((data != NULL) ? glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
9105 unsigned char *ptr;
9106 unsigned char *buf;
9107 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
9108 const size_t checksumSize = checksumCalculator->checksumByteSize();
9109 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9110 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9111 ptr = buf;
9112 int tmp = OP_glTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9113 memcpy(ptr, &totalSize, 4); ptr += 4;
9114
9115 memcpy(ptr, &target, 4); ptr += 4;
9116 memcpy(ptr, &level, 4); ptr += 4;
9117 memcpy(ptr, &xoffset, 4); ptr += 4;
9118 memcpy(ptr, &yoffset, 4); ptr += 4;
9119 memcpy(ptr, &zoffset, 4); ptr += 4;
9120 memcpy(ptr, &width, 4); ptr += 4;
9121 memcpy(ptr, &height, 4); ptr += 4;
9122 memcpy(ptr, &depth, 4); ptr += 4;
9123 memcpy(ptr, &format, 4); ptr += 4;
9124 memcpy(ptr, &type, 4); ptr += 4;
9125
9126 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9127 stream->flush();
9128 stream->writeFully(&__size_data,4);
9129 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9130 if (data != NULL) {
9131 stream->uploadPixels(self, width, height, depth, format, type, data);
9132 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9133 }
9134 buf = stream->alloc(checksumSize);
9135 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9136
9137 }
9138
glTexSubImage3DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,GLuint offset)9139 void glTexSubImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLuint offset)
9140 {
9141 ENCODER_DEBUG_LOG("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)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, offset);
9142 AEMU_SCOPED_TRACE("glTexSubImage3DOffsetAEMU encode");
9143
9144 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9145 IOStream *stream = ctx->m_stream;
9146 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9147 bool useChecksum = checksumCalculator->getVersion() > 0;
9148
9149 unsigned char *ptr;
9150 unsigned char *buf;
9151 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9152 const size_t checksumSize = checksumCalculator->checksumByteSize();
9153 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9154 buf = stream->alloc(totalSize);
9155 ptr = buf;
9156 int tmp = OP_glTexSubImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9157 memcpy(ptr, &totalSize, 4); ptr += 4;
9158
9159 memcpy(ptr, &target, 4); ptr += 4;
9160 memcpy(ptr, &level, 4); ptr += 4;
9161 memcpy(ptr, &xoffset, 4); ptr += 4;
9162 memcpy(ptr, &yoffset, 4); ptr += 4;
9163 memcpy(ptr, &zoffset, 4); ptr += 4;
9164 memcpy(ptr, &width, 4); ptr += 4;
9165 memcpy(ptr, &height, 4); ptr += 4;
9166 memcpy(ptr, &depth, 4); ptr += 4;
9167 memcpy(ptr, &format, 4); ptr += 4;
9168 memcpy(ptr, &type, 4); ptr += 4;
9169 memcpy(ptr, &offset, 4); ptr += 4;
9170
9171 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9172 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9173
9174 }
9175
glCompressedTexImage3D_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)9176 void glCompressedTexImage3D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
9177 {
9178 ENCODER_DEBUG_LOG("glCompressedTexImage3D(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d, border:%d, imageSize:%d, data:0x%08x)", target, level, internalformat, width, height, depth, border, imageSize, data);
9179 AEMU_SCOPED_TRACE("glCompressedTexImage3D encode");
9180
9181 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9182 IOStream *stream = ctx->m_stream;
9183 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9184 bool useChecksum = checksumCalculator->getVersion() > 0;
9185
9186 const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
9187 unsigned char *ptr;
9188 unsigned char *buf;
9189 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
9190 const size_t checksumSize = checksumCalculator->checksumByteSize();
9191 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9192 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9193 ptr = buf;
9194 int tmp = OP_glCompressedTexImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9195 memcpy(ptr, &totalSize, 4); ptr += 4;
9196
9197 memcpy(ptr, &target, 4); ptr += 4;
9198 memcpy(ptr, &level, 4); ptr += 4;
9199 memcpy(ptr, &internalformat, 4); ptr += 4;
9200 memcpy(ptr, &width, 4); ptr += 4;
9201 memcpy(ptr, &height, 4); ptr += 4;
9202 memcpy(ptr, &depth, 4); ptr += 4;
9203 memcpy(ptr, &border, 4); ptr += 4;
9204 memcpy(ptr, &imageSize, 4); ptr += 4;
9205
9206 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9207 stream->flush();
9208 stream->writeFully(&__size_data,4);
9209 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9210 if (data != NULL) {
9211 stream->writeFully(data, __size_data);
9212 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9213 }
9214 buf = stream->alloc(checksumSize);
9215 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9216
9217 }
9218
glCompressedTexImage3DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,GLuint offset)9219 void glCompressedTexImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLuint offset)
9220 {
9221 ENCODER_DEBUG_LOG("glCompressedTexImage3DOffsetAEMU(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d, border:%d, imageSize:%d, offset:%u)", target, level, internalformat, width, height, depth, border, imageSize, offset);
9222 AEMU_SCOPED_TRACE("glCompressedTexImage3DOffsetAEMU encode");
9223
9224 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9225 IOStream *stream = ctx->m_stream;
9226 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9227 bool useChecksum = checksumCalculator->getVersion() > 0;
9228
9229 unsigned char *ptr;
9230 unsigned char *buf;
9231 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9232 const size_t checksumSize = checksumCalculator->checksumByteSize();
9233 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9234 buf = stream->alloc(totalSize);
9235 ptr = buf;
9236 int tmp = OP_glCompressedTexImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9237 memcpy(ptr, &totalSize, 4); ptr += 4;
9238
9239 memcpy(ptr, &target, 4); ptr += 4;
9240 memcpy(ptr, &level, 4); ptr += 4;
9241 memcpy(ptr, &internalformat, 4); ptr += 4;
9242 memcpy(ptr, &width, 4); ptr += 4;
9243 memcpy(ptr, &height, 4); ptr += 4;
9244 memcpy(ptr, &depth, 4); ptr += 4;
9245 memcpy(ptr, &border, 4); ptr += 4;
9246 memcpy(ptr, &imageSize, 4); ptr += 4;
9247 memcpy(ptr, &offset, 4); ptr += 4;
9248
9249 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9250 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9251
9252 }
9253
glCompressedTexSubImage3D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)9254 void glCompressedTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
9255 {
9256 ENCODER_DEBUG_LOG("glCompressedTexSubImage3D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, width:%d, height:%d, depth:%d, format:0x%08x, imageSize:%d, data:0x%08x)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
9257 AEMU_SCOPED_TRACE("glCompressedTexSubImage3D encode");
9258
9259 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9260 IOStream *stream = ctx->m_stream;
9261 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9262 bool useChecksum = checksumCalculator->getVersion() > 0;
9263
9264 const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
9265 unsigned char *ptr;
9266 unsigned char *buf;
9267 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
9268 const size_t checksumSize = checksumCalculator->checksumByteSize();
9269 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9270 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9271 ptr = buf;
9272 int tmp = OP_glCompressedTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9273 memcpy(ptr, &totalSize, 4); ptr += 4;
9274
9275 memcpy(ptr, &target, 4); ptr += 4;
9276 memcpy(ptr, &level, 4); ptr += 4;
9277 memcpy(ptr, &xoffset, 4); ptr += 4;
9278 memcpy(ptr, &yoffset, 4); ptr += 4;
9279 memcpy(ptr, &zoffset, 4); ptr += 4;
9280 memcpy(ptr, &width, 4); ptr += 4;
9281 memcpy(ptr, &height, 4); ptr += 4;
9282 memcpy(ptr, &depth, 4); ptr += 4;
9283 memcpy(ptr, &format, 4); ptr += 4;
9284 memcpy(ptr, &imageSize, 4); ptr += 4;
9285
9286 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9287 stream->flush();
9288 stream->writeFully(&__size_data,4);
9289 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9290 if (data != NULL) {
9291 stream->writeFully(data, __size_data);
9292 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9293 }
9294 buf = stream->alloc(checksumSize);
9295 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9296
9297 }
9298
glCompressedTexSubImage3DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,GLuint data)9299 void glCompressedTexSubImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLuint data)
9300 {
9301 ENCODER_DEBUG_LOG("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)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
9302 AEMU_SCOPED_TRACE("glCompressedTexSubImage3DOffsetAEMU encode");
9303
9304 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9305 IOStream *stream = ctx->m_stream;
9306 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9307 bool useChecksum = checksumCalculator->getVersion() > 0;
9308
9309 unsigned char *ptr;
9310 unsigned char *buf;
9311 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9312 const size_t checksumSize = checksumCalculator->checksumByteSize();
9313 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9314 buf = stream->alloc(totalSize);
9315 ptr = buf;
9316 int tmp = OP_glCompressedTexSubImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9317 memcpy(ptr, &totalSize, 4); ptr += 4;
9318
9319 memcpy(ptr, &target, 4); ptr += 4;
9320 memcpy(ptr, &level, 4); ptr += 4;
9321 memcpy(ptr, &xoffset, 4); ptr += 4;
9322 memcpy(ptr, &yoffset, 4); ptr += 4;
9323 memcpy(ptr, &zoffset, 4); ptr += 4;
9324 memcpy(ptr, &width, 4); ptr += 4;
9325 memcpy(ptr, &height, 4); ptr += 4;
9326 memcpy(ptr, &depth, 4); ptr += 4;
9327 memcpy(ptr, &format, 4); ptr += 4;
9328 memcpy(ptr, &imageSize, 4); ptr += 4;
9329 memcpy(ptr, &data, 4); ptr += 4;
9330
9331 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9332 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9333
9334 }
9335
glCopyTexSubImage3D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)9336 void glCopyTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
9337 {
9338 ENCODER_DEBUG_LOG("glCopyTexSubImage3D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, x:%d, y:%d, width:%d, height:%d)", target, level, xoffset, yoffset, zoffset, x, y, width, height);
9339 AEMU_SCOPED_TRACE("glCopyTexSubImage3D encode");
9340
9341 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9342 IOStream *stream = ctx->m_stream;
9343 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9344 bool useChecksum = checksumCalculator->getVersion() > 0;
9345
9346 unsigned char *ptr;
9347 unsigned char *buf;
9348 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9349 const size_t checksumSize = checksumCalculator->checksumByteSize();
9350 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9351 buf = stream->alloc(totalSize);
9352 ptr = buf;
9353 int tmp = OP_glCopyTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9354 memcpy(ptr, &totalSize, 4); ptr += 4;
9355
9356 memcpy(ptr, &target, 4); ptr += 4;
9357 memcpy(ptr, &level, 4); ptr += 4;
9358 memcpy(ptr, &xoffset, 4); ptr += 4;
9359 memcpy(ptr, &yoffset, 4); ptr += 4;
9360 memcpy(ptr, &zoffset, 4); ptr += 4;
9361 memcpy(ptr, &x, 4); ptr += 4;
9362 memcpy(ptr, &y, 4); ptr += 4;
9363 memcpy(ptr, &width, 4); ptr += 4;
9364 memcpy(ptr, &height, 4); ptr += 4;
9365
9366 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9367 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9368
9369 }
9370
glGetBooleani_v_enc(void * self,GLenum target,GLuint index,GLboolean * data)9371 void glGetBooleani_v_enc(void *self , GLenum target, GLuint index, GLboolean* data)
9372 {
9373 ENCODER_DEBUG_LOG("glGetBooleani_v(target:0x%08x, index:%u, data:0x%08x)", target, index, data);
9374 AEMU_SCOPED_TRACE("glGetBooleani_v encode");
9375
9376 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9377 IOStream *stream = ctx->m_stream;
9378 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9379 bool useChecksum = checksumCalculator->getVersion() > 0;
9380
9381 const unsigned int __size_data = (sizeof(GLboolean));
9382 unsigned char *ptr;
9383 unsigned char *buf;
9384 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
9385 const size_t checksumSize = checksumCalculator->checksumByteSize();
9386 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9387 buf = stream->alloc(totalSize);
9388 ptr = buf;
9389 int tmp = OP_glGetBooleani_v;memcpy(ptr, &tmp, 4); ptr += 4;
9390 memcpy(ptr, &totalSize, 4); ptr += 4;
9391
9392 memcpy(ptr, &target, 4); ptr += 4;
9393 memcpy(ptr, &index, 4); ptr += 4;
9394 memcpy(ptr, &__size_data, 4); ptr += 4;
9395
9396 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9397 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9398
9399 stream->readback(data, __size_data);
9400 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9401 if (useChecksum) {
9402 unsigned char *checksumBufPtr = NULL;
9403 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9404 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9405 stream->readback(checksumBufPtr, checksumSize);
9406 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9407 ALOGE("glGetBooleani_v: GL communication error, please report this issue to b.android.com.\n");
9408 abort();
9409 }
9410 }
9411 }
9412
glMemoryBarrier_enc(void * self,GLbitfield barriers)9413 void glMemoryBarrier_enc(void *self , GLbitfield barriers)
9414 {
9415 ENCODER_DEBUG_LOG("glMemoryBarrier(barriers:0x%08x)", barriers);
9416 AEMU_SCOPED_TRACE("glMemoryBarrier encode");
9417
9418 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9419 IOStream *stream = ctx->m_stream;
9420 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9421 bool useChecksum = checksumCalculator->getVersion() > 0;
9422
9423 unsigned char *ptr;
9424 unsigned char *buf;
9425 const size_t sizeWithoutChecksum = 8 + 4;
9426 const size_t checksumSize = checksumCalculator->checksumByteSize();
9427 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9428 buf = stream->alloc(totalSize);
9429 ptr = buf;
9430 int tmp = OP_glMemoryBarrier;memcpy(ptr, &tmp, 4); ptr += 4;
9431 memcpy(ptr, &totalSize, 4); ptr += 4;
9432
9433 memcpy(ptr, &barriers, 4); ptr += 4;
9434
9435 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9436 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9437
9438 }
9439
glMemoryBarrierByRegion_enc(void * self,GLbitfield barriers)9440 void glMemoryBarrierByRegion_enc(void *self , GLbitfield barriers)
9441 {
9442 ENCODER_DEBUG_LOG("glMemoryBarrierByRegion(barriers:0x%08x)", barriers);
9443 AEMU_SCOPED_TRACE("glMemoryBarrierByRegion encode");
9444
9445 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9446 IOStream *stream = ctx->m_stream;
9447 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9448 bool useChecksum = checksumCalculator->getVersion() > 0;
9449
9450 unsigned char *ptr;
9451 unsigned char *buf;
9452 const size_t sizeWithoutChecksum = 8 + 4;
9453 const size_t checksumSize = checksumCalculator->checksumByteSize();
9454 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9455 buf = stream->alloc(totalSize);
9456 ptr = buf;
9457 int tmp = OP_glMemoryBarrierByRegion;memcpy(ptr, &tmp, 4); ptr += 4;
9458 memcpy(ptr, &totalSize, 4); ptr += 4;
9459
9460 memcpy(ptr, &barriers, 4); ptr += 4;
9461
9462 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9463 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9464
9465 }
9466
glGenProgramPipelines_enc(void * self,GLsizei n,GLuint * pipelines)9467 void glGenProgramPipelines_enc(void *self , GLsizei n, GLuint* pipelines)
9468 {
9469 ENCODER_DEBUG_LOG("glGenProgramPipelines(n:%d, pipelines:0x%08x)", n, pipelines);
9470 AEMU_SCOPED_TRACE("glGenProgramPipelines encode");
9471
9472 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9473 IOStream *stream = ctx->m_stream;
9474 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9475 bool useChecksum = checksumCalculator->getVersion() > 0;
9476
9477 const unsigned int __size_pipelines = (n * sizeof(GLuint));
9478 unsigned char *ptr;
9479 unsigned char *buf;
9480 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
9481 const size_t checksumSize = checksumCalculator->checksumByteSize();
9482 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9483 buf = stream->alloc(totalSize);
9484 ptr = buf;
9485 int tmp = OP_glGenProgramPipelines;memcpy(ptr, &tmp, 4); ptr += 4;
9486 memcpy(ptr, &totalSize, 4); ptr += 4;
9487
9488 memcpy(ptr, &n, 4); ptr += 4;
9489 memcpy(ptr, &__size_pipelines, 4); ptr += 4;
9490
9491 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9492 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9493
9494 stream->readback(pipelines, __size_pipelines);
9495 if (useChecksum) checksumCalculator->addBuffer(pipelines, __size_pipelines);
9496 if (useChecksum) {
9497 unsigned char *checksumBufPtr = NULL;
9498 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9499 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9500 stream->readback(checksumBufPtr, checksumSize);
9501 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9502 ALOGE("glGenProgramPipelines: GL communication error, please report this issue to b.android.com.\n");
9503 abort();
9504 }
9505 }
9506 }
9507
glDeleteProgramPipelines_enc(void * self,GLsizei n,const GLuint * pipelines)9508 void glDeleteProgramPipelines_enc(void *self , GLsizei n, const GLuint* pipelines)
9509 {
9510 ENCODER_DEBUG_LOG("glDeleteProgramPipelines(n:%d, pipelines:0x%08x)", n, pipelines);
9511 AEMU_SCOPED_TRACE("glDeleteProgramPipelines encode");
9512
9513 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9514 IOStream *stream = ctx->m_stream;
9515 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9516 bool useChecksum = checksumCalculator->getVersion() > 0;
9517
9518 const unsigned int __size_pipelines = (n * sizeof(GLuint));
9519 unsigned char *ptr;
9520 unsigned char *buf;
9521 const size_t sizeWithoutChecksum = 8 + 4 + __size_pipelines + 1*4;
9522 const size_t checksumSize = checksumCalculator->checksumByteSize();
9523 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9524 buf = stream->alloc(totalSize);
9525 ptr = buf;
9526 int tmp = OP_glDeleteProgramPipelines;memcpy(ptr, &tmp, 4); ptr += 4;
9527 memcpy(ptr, &totalSize, 4); ptr += 4;
9528
9529 memcpy(ptr, &n, 4); ptr += 4;
9530 memcpy(ptr, &__size_pipelines, 4); ptr += 4;
9531 memcpy(ptr, pipelines, __size_pipelines);ptr += __size_pipelines;
9532
9533 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9534 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9535
9536 }
9537
glBindProgramPipeline_enc(void * self,GLuint pipeline)9538 void glBindProgramPipeline_enc(void *self , GLuint pipeline)
9539 {
9540 ENCODER_DEBUG_LOG("glBindProgramPipeline(pipeline:%u)", pipeline);
9541 AEMU_SCOPED_TRACE("glBindProgramPipeline encode");
9542
9543 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9544 IOStream *stream = ctx->m_stream;
9545 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9546 bool useChecksum = checksumCalculator->getVersion() > 0;
9547
9548 unsigned char *ptr;
9549 unsigned char *buf;
9550 const size_t sizeWithoutChecksum = 8 + 4;
9551 const size_t checksumSize = checksumCalculator->checksumByteSize();
9552 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9553 buf = stream->alloc(totalSize);
9554 ptr = buf;
9555 int tmp = OP_glBindProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
9556 memcpy(ptr, &totalSize, 4); ptr += 4;
9557
9558 memcpy(ptr, &pipeline, 4); ptr += 4;
9559
9560 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9561 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9562
9563 }
9564
glGetProgramPipelineiv_enc(void * self,GLuint pipeline,GLenum pname,GLint * params)9565 void glGetProgramPipelineiv_enc(void *self , GLuint pipeline, GLenum pname, GLint* params)
9566 {
9567 ENCODER_DEBUG_LOG("glGetProgramPipelineiv(pipeline:%u, pname:0x%08x, params:0x%08x)", pipeline, pname, params);
9568 AEMU_SCOPED_TRACE("glGetProgramPipelineiv encode");
9569
9570 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9571 IOStream *stream = ctx->m_stream;
9572 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9573 bool useChecksum = checksumCalculator->getVersion() > 0;
9574
9575 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
9576 unsigned char *ptr;
9577 unsigned char *buf;
9578 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
9579 const size_t checksumSize = checksumCalculator->checksumByteSize();
9580 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9581 buf = stream->alloc(totalSize);
9582 ptr = buf;
9583 int tmp = OP_glGetProgramPipelineiv;memcpy(ptr, &tmp, 4); ptr += 4;
9584 memcpy(ptr, &totalSize, 4); ptr += 4;
9585
9586 memcpy(ptr, &pipeline, 4); ptr += 4;
9587 memcpy(ptr, &pname, 4); ptr += 4;
9588 memcpy(ptr, &__size_params, 4); ptr += 4;
9589
9590 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9591 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9592
9593 stream->readback(params, __size_params);
9594 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
9595 if (useChecksum) {
9596 unsigned char *checksumBufPtr = NULL;
9597 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9598 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9599 stream->readback(checksumBufPtr, checksumSize);
9600 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9601 ALOGE("glGetProgramPipelineiv: GL communication error, please report this issue to b.android.com.\n");
9602 abort();
9603 }
9604 }
9605 }
9606
glGetProgramPipelineInfoLog_enc(void * self,GLuint pipeline,GLsizei bufSize,GLsizei * length,GLchar * infoLog)9607 void glGetProgramPipelineInfoLog_enc(void *self , GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog)
9608 {
9609 ENCODER_DEBUG_LOG("glGetProgramPipelineInfoLog(pipeline:%u, bufSize:%d, length:0x%08x, infoLog:0x%08x)", pipeline, bufSize, length, infoLog);
9610 AEMU_SCOPED_TRACE("glGetProgramPipelineInfoLog encode");
9611
9612 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9613 IOStream *stream = ctx->m_stream;
9614 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9615 bool useChecksum = checksumCalculator->getVersion() > 0;
9616
9617 const unsigned int __size_length = ((length != NULL) ? sizeof(GLsizei) : 0);
9618 const unsigned int __size_infoLog = bufSize;
9619 unsigned char *ptr;
9620 unsigned char *buf;
9621 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
9622 const size_t checksumSize = checksumCalculator->checksumByteSize();
9623 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9624 buf = stream->alloc(totalSize);
9625 ptr = buf;
9626 int tmp = OP_glGetProgramPipelineInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
9627 memcpy(ptr, &totalSize, 4); ptr += 4;
9628
9629 memcpy(ptr, &pipeline, 4); ptr += 4;
9630 memcpy(ptr, &bufSize, 4); ptr += 4;
9631 memcpy(ptr, &__size_length, 4); ptr += 4;
9632 memcpy(ptr, &__size_infoLog, 4); ptr += 4;
9633
9634 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9635 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9636
9637 if (length != NULL) {
9638 stream->readback(length, __size_length);
9639 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
9640 }
9641 stream->readback(infoLog, __size_infoLog);
9642 if (useChecksum) checksumCalculator->addBuffer(infoLog, __size_infoLog);
9643 if (useChecksum) {
9644 unsigned char *checksumBufPtr = NULL;
9645 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9646 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9647 stream->readback(checksumBufPtr, checksumSize);
9648 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9649 ALOGE("glGetProgramPipelineInfoLog: GL communication error, please report this issue to b.android.com.\n");
9650 abort();
9651 }
9652 }
9653 }
9654
glValidateProgramPipeline_enc(void * self,GLuint pipeline)9655 void glValidateProgramPipeline_enc(void *self , GLuint pipeline)
9656 {
9657 ENCODER_DEBUG_LOG("glValidateProgramPipeline(pipeline:%u)", pipeline);
9658 AEMU_SCOPED_TRACE("glValidateProgramPipeline encode");
9659
9660 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9661 IOStream *stream = ctx->m_stream;
9662 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9663 bool useChecksum = checksumCalculator->getVersion() > 0;
9664
9665 unsigned char *ptr;
9666 unsigned char *buf;
9667 const size_t sizeWithoutChecksum = 8 + 4;
9668 const size_t checksumSize = checksumCalculator->checksumByteSize();
9669 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9670 buf = stream->alloc(totalSize);
9671 ptr = buf;
9672 int tmp = OP_glValidateProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
9673 memcpy(ptr, &totalSize, 4); ptr += 4;
9674
9675 memcpy(ptr, &pipeline, 4); ptr += 4;
9676
9677 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9678 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9679
9680 }
9681
glIsProgramPipeline_enc(void * self,GLuint pipeline)9682 GLboolean glIsProgramPipeline_enc(void *self , GLuint pipeline)
9683 {
9684 ENCODER_DEBUG_LOG("glIsProgramPipeline(pipeline:%u)", pipeline);
9685 AEMU_SCOPED_TRACE("glIsProgramPipeline encode");
9686
9687 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9688 IOStream *stream = ctx->m_stream;
9689 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9690 bool useChecksum = checksumCalculator->getVersion() > 0;
9691
9692 unsigned char *ptr;
9693 unsigned char *buf;
9694 const size_t sizeWithoutChecksum = 8 + 4;
9695 const size_t checksumSize = checksumCalculator->checksumByteSize();
9696 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9697 buf = stream->alloc(totalSize);
9698 ptr = buf;
9699 int tmp = OP_glIsProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
9700 memcpy(ptr, &totalSize, 4); ptr += 4;
9701
9702 memcpy(ptr, &pipeline, 4); ptr += 4;
9703
9704 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9705 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9706
9707
9708 GLboolean retval;
9709 stream->readback(&retval, 1);
9710 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
9711 if (useChecksum) {
9712 unsigned char *checksumBufPtr = NULL;
9713 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9714 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9715 stream->readback(checksumBufPtr, checksumSize);
9716 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9717 ALOGE("glIsProgramPipeline: GL communication error, please report this issue to b.android.com.\n");
9718 abort();
9719 }
9720 }
9721 return retval;
9722 }
9723
glUseProgramStages_enc(void * self,GLuint pipeline,GLbitfield stages,GLuint program)9724 void glUseProgramStages_enc(void *self , GLuint pipeline, GLbitfield stages, GLuint program)
9725 {
9726 ENCODER_DEBUG_LOG("glUseProgramStages(pipeline:%u, stages:0x%08x, program:%u)", pipeline, stages, program);
9727 AEMU_SCOPED_TRACE("glUseProgramStages encode");
9728
9729 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9730 IOStream *stream = ctx->m_stream;
9731 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9732 bool useChecksum = checksumCalculator->getVersion() > 0;
9733
9734 unsigned char *ptr;
9735 unsigned char *buf;
9736 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9737 const size_t checksumSize = checksumCalculator->checksumByteSize();
9738 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9739 buf = stream->alloc(totalSize);
9740 ptr = buf;
9741 int tmp = OP_glUseProgramStages;memcpy(ptr, &tmp, 4); ptr += 4;
9742 memcpy(ptr, &totalSize, 4); ptr += 4;
9743
9744 memcpy(ptr, &pipeline, 4); ptr += 4;
9745 memcpy(ptr, &stages, 4); ptr += 4;
9746 memcpy(ptr, &program, 4); ptr += 4;
9747
9748 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9749 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9750
9751 }
9752
glActiveShaderProgram_enc(void * self,GLuint pipeline,GLuint program)9753 void glActiveShaderProgram_enc(void *self , GLuint pipeline, GLuint program)
9754 {
9755 ENCODER_DEBUG_LOG("glActiveShaderProgram(pipeline:%u, program:%u)", pipeline, program);
9756 AEMU_SCOPED_TRACE("glActiveShaderProgram encode");
9757
9758 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9759 IOStream *stream = ctx->m_stream;
9760 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9761 bool useChecksum = checksumCalculator->getVersion() > 0;
9762
9763 unsigned char *ptr;
9764 unsigned char *buf;
9765 const size_t sizeWithoutChecksum = 8 + 4 + 4;
9766 const size_t checksumSize = checksumCalculator->checksumByteSize();
9767 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9768 buf = stream->alloc(totalSize);
9769 ptr = buf;
9770 int tmp = OP_glActiveShaderProgram;memcpy(ptr, &tmp, 4); ptr += 4;
9771 memcpy(ptr, &totalSize, 4); ptr += 4;
9772
9773 memcpy(ptr, &pipeline, 4); ptr += 4;
9774 memcpy(ptr, &program, 4); ptr += 4;
9775
9776 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9777 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9778
9779 }
9780
glCreateShaderProgramvAEMU_enc(void * self,GLenum type,GLsizei count,const char * packedStrings,GLuint packedLen)9781 GLuint glCreateShaderProgramvAEMU_enc(void *self , GLenum type, GLsizei count, const char* packedStrings, GLuint packedLen)
9782 {
9783 ENCODER_DEBUG_LOG("glCreateShaderProgramvAEMU(type:0x%08x, count:%d, packedStrings:0x%08x, packedLen:%u)", type, count, packedStrings, packedLen);
9784 AEMU_SCOPED_TRACE("glCreateShaderProgramvAEMU encode");
9785
9786 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9787 IOStream *stream = ctx->m_stream;
9788 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9789 bool useChecksum = checksumCalculator->getVersion() > 0;
9790
9791 const unsigned int __size_packedStrings = packedLen;
9792 unsigned char *ptr;
9793 unsigned char *buf;
9794 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedStrings + 4 + 1*4;
9795 const size_t checksumSize = checksumCalculator->checksumByteSize();
9796 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9797 buf = stream->alloc(totalSize);
9798 ptr = buf;
9799 int tmp = OP_glCreateShaderProgramvAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9800 memcpy(ptr, &totalSize, 4); ptr += 4;
9801
9802 memcpy(ptr, &type, 4); ptr += 4;
9803 memcpy(ptr, &count, 4); ptr += 4;
9804 memcpy(ptr, &__size_packedStrings, 4); ptr += 4;
9805 memcpy(ptr, packedStrings, __size_packedStrings);ptr += __size_packedStrings;
9806 memcpy(ptr, &packedLen, 4); ptr += 4;
9807
9808 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9809 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9810
9811
9812 GLuint retval;
9813 stream->readback(&retval, 4);
9814 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
9815 if (useChecksum) {
9816 unsigned char *checksumBufPtr = NULL;
9817 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9818 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9819 stream->readback(checksumBufPtr, checksumSize);
9820 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9821 ALOGE("glCreateShaderProgramvAEMU: GL communication error, please report this issue to b.android.com.\n");
9822 abort();
9823 }
9824 }
9825 return retval;
9826 }
9827
glProgramUniform1f_enc(void * self,GLuint program,GLint location,GLfloat v0)9828 void glProgramUniform1f_enc(void *self , GLuint program, GLint location, GLfloat v0)
9829 {
9830 ENCODER_DEBUG_LOG("glProgramUniform1f(program:%u, location:%d, v0:%f)", program, location, v0);
9831 AEMU_SCOPED_TRACE("glProgramUniform1f encode");
9832
9833 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9834 IOStream *stream = ctx->m_stream;
9835 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9836 bool useChecksum = checksumCalculator->getVersion() > 0;
9837
9838 unsigned char *ptr;
9839 unsigned char *buf;
9840 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9841 const size_t checksumSize = checksumCalculator->checksumByteSize();
9842 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9843 buf = stream->alloc(totalSize);
9844 ptr = buf;
9845 int tmp = OP_glProgramUniform1f;memcpy(ptr, &tmp, 4); ptr += 4;
9846 memcpy(ptr, &totalSize, 4); ptr += 4;
9847
9848 memcpy(ptr, &program, 4); ptr += 4;
9849 memcpy(ptr, &location, 4); ptr += 4;
9850 memcpy(ptr, &v0, 4); ptr += 4;
9851
9852 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9853 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9854
9855 }
9856
glProgramUniform2f_enc(void * self,GLuint program,GLint location,GLfloat v0,GLfloat v1)9857 void glProgramUniform2f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1)
9858 {
9859 ENCODER_DEBUG_LOG("glProgramUniform2f(program:%u, location:%d, v0:%f, v1:%f)", program, location, v0, v1);
9860 AEMU_SCOPED_TRACE("glProgramUniform2f encode");
9861
9862 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9863 IOStream *stream = ctx->m_stream;
9864 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9865 bool useChecksum = checksumCalculator->getVersion() > 0;
9866
9867 unsigned char *ptr;
9868 unsigned char *buf;
9869 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
9870 const size_t checksumSize = checksumCalculator->checksumByteSize();
9871 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9872 buf = stream->alloc(totalSize);
9873 ptr = buf;
9874 int tmp = OP_glProgramUniform2f;memcpy(ptr, &tmp, 4); ptr += 4;
9875 memcpy(ptr, &totalSize, 4); ptr += 4;
9876
9877 memcpy(ptr, &program, 4); ptr += 4;
9878 memcpy(ptr, &location, 4); ptr += 4;
9879 memcpy(ptr, &v0, 4); ptr += 4;
9880 memcpy(ptr, &v1, 4); ptr += 4;
9881
9882 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9883 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9884
9885 }
9886
glProgramUniform3f_enc(void * self,GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2)9887 void glProgramUniform3f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
9888 {
9889 ENCODER_DEBUG_LOG("glProgramUniform3f(program:%u, location:%d, v0:%f, v1:%f, v2:%f)", program, location, v0, v1, v2);
9890 AEMU_SCOPED_TRACE("glProgramUniform3f encode");
9891
9892 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9893 IOStream *stream = ctx->m_stream;
9894 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9895 bool useChecksum = checksumCalculator->getVersion() > 0;
9896
9897 unsigned char *ptr;
9898 unsigned char *buf;
9899 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
9900 const size_t checksumSize = checksumCalculator->checksumByteSize();
9901 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9902 buf = stream->alloc(totalSize);
9903 ptr = buf;
9904 int tmp = OP_glProgramUniform3f;memcpy(ptr, &tmp, 4); ptr += 4;
9905 memcpy(ptr, &totalSize, 4); ptr += 4;
9906
9907 memcpy(ptr, &program, 4); ptr += 4;
9908 memcpy(ptr, &location, 4); ptr += 4;
9909 memcpy(ptr, &v0, 4); ptr += 4;
9910 memcpy(ptr, &v1, 4); ptr += 4;
9911 memcpy(ptr, &v2, 4); ptr += 4;
9912
9913 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9914 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9915
9916 }
9917
glProgramUniform4f_enc(void * self,GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)9918 void glProgramUniform4f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
9919 {
9920 ENCODER_DEBUG_LOG("glProgramUniform4f(program:%u, location:%d, v0:%f, v1:%f, v2:%f, v3:%f)", program, location, v0, v1, v2, v3);
9921 AEMU_SCOPED_TRACE("glProgramUniform4f encode");
9922
9923 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9924 IOStream *stream = ctx->m_stream;
9925 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9926 bool useChecksum = checksumCalculator->getVersion() > 0;
9927
9928 unsigned char *ptr;
9929 unsigned char *buf;
9930 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
9931 const size_t checksumSize = checksumCalculator->checksumByteSize();
9932 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9933 buf = stream->alloc(totalSize);
9934 ptr = buf;
9935 int tmp = OP_glProgramUniform4f;memcpy(ptr, &tmp, 4); ptr += 4;
9936 memcpy(ptr, &totalSize, 4); ptr += 4;
9937
9938 memcpy(ptr, &program, 4); ptr += 4;
9939 memcpy(ptr, &location, 4); ptr += 4;
9940 memcpy(ptr, &v0, 4); ptr += 4;
9941 memcpy(ptr, &v1, 4); ptr += 4;
9942 memcpy(ptr, &v2, 4); ptr += 4;
9943 memcpy(ptr, &v3, 4); ptr += 4;
9944
9945 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9946 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9947
9948 }
9949
glProgramUniform1i_enc(void * self,GLuint program,GLint location,GLint v0)9950 void glProgramUniform1i_enc(void *self , GLuint program, GLint location, GLint v0)
9951 {
9952 ENCODER_DEBUG_LOG("glProgramUniform1i(program:%u, location:%d, v0:%d)", program, location, v0);
9953 AEMU_SCOPED_TRACE("glProgramUniform1i encode");
9954
9955 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9956 IOStream *stream = ctx->m_stream;
9957 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9958 bool useChecksum = checksumCalculator->getVersion() > 0;
9959
9960 unsigned char *ptr;
9961 unsigned char *buf;
9962 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9963 const size_t checksumSize = checksumCalculator->checksumByteSize();
9964 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9965 buf = stream->alloc(totalSize);
9966 ptr = buf;
9967 int tmp = OP_glProgramUniform1i;memcpy(ptr, &tmp, 4); ptr += 4;
9968 memcpy(ptr, &totalSize, 4); ptr += 4;
9969
9970 memcpy(ptr, &program, 4); ptr += 4;
9971 memcpy(ptr, &location, 4); ptr += 4;
9972 memcpy(ptr, &v0, 4); ptr += 4;
9973
9974 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9975 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9976
9977 }
9978
glProgramUniform2i_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1)9979 void glProgramUniform2i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1)
9980 {
9981 ENCODER_DEBUG_LOG("glProgramUniform2i(program:%u, location:%d, v0:%d, v1:%d)", program, location, v0, v1);
9982 AEMU_SCOPED_TRACE("glProgramUniform2i encode");
9983
9984 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9985 IOStream *stream = ctx->m_stream;
9986 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9987 bool useChecksum = checksumCalculator->getVersion() > 0;
9988
9989 unsigned char *ptr;
9990 unsigned char *buf;
9991 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
9992 const size_t checksumSize = checksumCalculator->checksumByteSize();
9993 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9994 buf = stream->alloc(totalSize);
9995 ptr = buf;
9996 int tmp = OP_glProgramUniform2i;memcpy(ptr, &tmp, 4); ptr += 4;
9997 memcpy(ptr, &totalSize, 4); ptr += 4;
9998
9999 memcpy(ptr, &program, 4); ptr += 4;
10000 memcpy(ptr, &location, 4); ptr += 4;
10001 memcpy(ptr, &v0, 4); ptr += 4;
10002 memcpy(ptr, &v1, 4); ptr += 4;
10003
10004 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10005 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10006
10007 }
10008
glProgramUniform3i_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLint v2)10009 void glProgramUniform3i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
10010 {
10011 ENCODER_DEBUG_LOG("glProgramUniform3i(program:%u, location:%d, v0:%d, v1:%d, v2:%d)", program, location, v0, v1, v2);
10012 AEMU_SCOPED_TRACE("glProgramUniform3i encode");
10013
10014 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10015 IOStream *stream = ctx->m_stream;
10016 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10017 bool useChecksum = checksumCalculator->getVersion() > 0;
10018
10019 unsigned char *ptr;
10020 unsigned char *buf;
10021 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
10022 const size_t checksumSize = checksumCalculator->checksumByteSize();
10023 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10024 buf = stream->alloc(totalSize);
10025 ptr = buf;
10026 int tmp = OP_glProgramUniform3i;memcpy(ptr, &tmp, 4); ptr += 4;
10027 memcpy(ptr, &totalSize, 4); ptr += 4;
10028
10029 memcpy(ptr, &program, 4); ptr += 4;
10030 memcpy(ptr, &location, 4); ptr += 4;
10031 memcpy(ptr, &v0, 4); ptr += 4;
10032 memcpy(ptr, &v1, 4); ptr += 4;
10033 memcpy(ptr, &v2, 4); ptr += 4;
10034
10035 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10036 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10037
10038 }
10039
glProgramUniform4i_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLint v2,GLint v3)10040 void glProgramUniform4i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
10041 {
10042 ENCODER_DEBUG_LOG("glProgramUniform4i(program:%u, location:%d, v0:%d, v1:%d, v2:%d, v3:%d)", program, location, v0, v1, v2, v3);
10043 AEMU_SCOPED_TRACE("glProgramUniform4i encode");
10044
10045 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10046 IOStream *stream = ctx->m_stream;
10047 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10048 bool useChecksum = checksumCalculator->getVersion() > 0;
10049
10050 unsigned char *ptr;
10051 unsigned char *buf;
10052 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
10053 const size_t checksumSize = checksumCalculator->checksumByteSize();
10054 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10055 buf = stream->alloc(totalSize);
10056 ptr = buf;
10057 int tmp = OP_glProgramUniform4i;memcpy(ptr, &tmp, 4); ptr += 4;
10058 memcpy(ptr, &totalSize, 4); ptr += 4;
10059
10060 memcpy(ptr, &program, 4); ptr += 4;
10061 memcpy(ptr, &location, 4); ptr += 4;
10062 memcpy(ptr, &v0, 4); ptr += 4;
10063 memcpy(ptr, &v1, 4); ptr += 4;
10064 memcpy(ptr, &v2, 4); ptr += 4;
10065 memcpy(ptr, &v3, 4); ptr += 4;
10066
10067 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10068 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10069
10070 }
10071
glProgramUniform1ui_enc(void * self,GLuint program,GLint location,GLuint v0)10072 void glProgramUniform1ui_enc(void *self , GLuint program, GLint location, GLuint v0)
10073 {
10074 ENCODER_DEBUG_LOG("glProgramUniform1ui(program:%u, location:%d, v0:%u)", program, location, v0);
10075 AEMU_SCOPED_TRACE("glProgramUniform1ui encode");
10076
10077 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10078 IOStream *stream = ctx->m_stream;
10079 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10080 bool useChecksum = checksumCalculator->getVersion() > 0;
10081
10082 unsigned char *ptr;
10083 unsigned char *buf;
10084 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
10085 const size_t checksumSize = checksumCalculator->checksumByteSize();
10086 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10087 buf = stream->alloc(totalSize);
10088 ptr = buf;
10089 int tmp = OP_glProgramUniform1ui;memcpy(ptr, &tmp, 4); ptr += 4;
10090 memcpy(ptr, &totalSize, 4); ptr += 4;
10091
10092 memcpy(ptr, &program, 4); ptr += 4;
10093 memcpy(ptr, &location, 4); ptr += 4;
10094 memcpy(ptr, &v0, 4); ptr += 4;
10095
10096 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10097 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10098
10099 }
10100
glProgramUniform2ui_enc(void * self,GLuint program,GLint location,GLint v0,GLuint v1)10101 void glProgramUniform2ui_enc(void *self , GLuint program, GLint location, GLint v0, GLuint v1)
10102 {
10103 ENCODER_DEBUG_LOG("glProgramUniform2ui(program:%u, location:%d, v0:%d, v1:%u)", program, location, v0, v1);
10104 AEMU_SCOPED_TRACE("glProgramUniform2ui encode");
10105
10106 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10107 IOStream *stream = ctx->m_stream;
10108 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10109 bool useChecksum = checksumCalculator->getVersion() > 0;
10110
10111 unsigned char *ptr;
10112 unsigned char *buf;
10113 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
10114 const size_t checksumSize = checksumCalculator->checksumByteSize();
10115 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10116 buf = stream->alloc(totalSize);
10117 ptr = buf;
10118 int tmp = OP_glProgramUniform2ui;memcpy(ptr, &tmp, 4); ptr += 4;
10119 memcpy(ptr, &totalSize, 4); ptr += 4;
10120
10121 memcpy(ptr, &program, 4); ptr += 4;
10122 memcpy(ptr, &location, 4); ptr += 4;
10123 memcpy(ptr, &v0, 4); ptr += 4;
10124 memcpy(ptr, &v1, 4); ptr += 4;
10125
10126 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10127 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10128
10129 }
10130
glProgramUniform3ui_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLuint v2)10131 void glProgramUniform3ui_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLuint v2)
10132 {
10133 ENCODER_DEBUG_LOG("glProgramUniform3ui(program:%u, location:%d, v0:%d, v1:%d, v2:%u)", program, location, v0, v1, v2);
10134 AEMU_SCOPED_TRACE("glProgramUniform3ui encode");
10135
10136 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10137 IOStream *stream = ctx->m_stream;
10138 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10139 bool useChecksum = checksumCalculator->getVersion() > 0;
10140
10141 unsigned char *ptr;
10142 unsigned char *buf;
10143 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
10144 const size_t checksumSize = checksumCalculator->checksumByteSize();
10145 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10146 buf = stream->alloc(totalSize);
10147 ptr = buf;
10148 int tmp = OP_glProgramUniform3ui;memcpy(ptr, &tmp, 4); ptr += 4;
10149 memcpy(ptr, &totalSize, 4); ptr += 4;
10150
10151 memcpy(ptr, &program, 4); ptr += 4;
10152 memcpy(ptr, &location, 4); ptr += 4;
10153 memcpy(ptr, &v0, 4); ptr += 4;
10154 memcpy(ptr, &v1, 4); ptr += 4;
10155 memcpy(ptr, &v2, 4); ptr += 4;
10156
10157 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10158 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10159
10160 }
10161
glProgramUniform4ui_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLint v2,GLuint v3)10162 void glProgramUniform4ui_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLuint v3)
10163 {
10164 ENCODER_DEBUG_LOG("glProgramUniform4ui(program:%u, location:%d, v0:%d, v1:%d, v2:%d, v3:%u)", program, location, v0, v1, v2, v3);
10165 AEMU_SCOPED_TRACE("glProgramUniform4ui encode");
10166
10167 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10168 IOStream *stream = ctx->m_stream;
10169 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10170 bool useChecksum = checksumCalculator->getVersion() > 0;
10171
10172 unsigned char *ptr;
10173 unsigned char *buf;
10174 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
10175 const size_t checksumSize = checksumCalculator->checksumByteSize();
10176 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10177 buf = stream->alloc(totalSize);
10178 ptr = buf;
10179 int tmp = OP_glProgramUniform4ui;memcpy(ptr, &tmp, 4); ptr += 4;
10180 memcpy(ptr, &totalSize, 4); ptr += 4;
10181
10182 memcpy(ptr, &program, 4); ptr += 4;
10183 memcpy(ptr, &location, 4); ptr += 4;
10184 memcpy(ptr, &v0, 4); ptr += 4;
10185 memcpy(ptr, &v1, 4); ptr += 4;
10186 memcpy(ptr, &v2, 4); ptr += 4;
10187 memcpy(ptr, &v3, 4); ptr += 4;
10188
10189 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10190 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10191
10192 }
10193
glProgramUniform1fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10194 void glProgramUniform1fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10195 {
10196 ENCODER_DEBUG_LOG("glProgramUniform1fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10197 AEMU_SCOPED_TRACE("glProgramUniform1fv encode");
10198
10199 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10200 IOStream *stream = ctx->m_stream;
10201 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10202 bool useChecksum = checksumCalculator->getVersion() > 0;
10203
10204 const unsigned int __size_value = (count * sizeof(GLfloat));
10205 unsigned char *ptr;
10206 unsigned char *buf;
10207 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10208 const size_t checksumSize = checksumCalculator->checksumByteSize();
10209 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10210 buf = stream->alloc(totalSize);
10211 ptr = buf;
10212 int tmp = OP_glProgramUniform1fv;memcpy(ptr, &tmp, 4); ptr += 4;
10213 memcpy(ptr, &totalSize, 4); ptr += 4;
10214
10215 memcpy(ptr, &program, 4); ptr += 4;
10216 memcpy(ptr, &location, 4); ptr += 4;
10217 memcpy(ptr, &count, 4); ptr += 4;
10218 memcpy(ptr, &__size_value, 4); ptr += 4;
10219 memcpy(ptr, value, __size_value);ptr += __size_value;
10220
10221 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10222 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10223
10224 }
10225
glProgramUniform2fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10226 void glProgramUniform2fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10227 {
10228 ENCODER_DEBUG_LOG("glProgramUniform2fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10229 AEMU_SCOPED_TRACE("glProgramUniform2fv encode");
10230
10231 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10232 IOStream *stream = ctx->m_stream;
10233 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10234 bool useChecksum = checksumCalculator->getVersion() > 0;
10235
10236 const unsigned int __size_value = (count * 2 * sizeof(GLfloat));
10237 unsigned char *ptr;
10238 unsigned char *buf;
10239 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10240 const size_t checksumSize = checksumCalculator->checksumByteSize();
10241 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10242 buf = stream->alloc(totalSize);
10243 ptr = buf;
10244 int tmp = OP_glProgramUniform2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10245 memcpy(ptr, &totalSize, 4); ptr += 4;
10246
10247 memcpy(ptr, &program, 4); ptr += 4;
10248 memcpy(ptr, &location, 4); ptr += 4;
10249 memcpy(ptr, &count, 4); ptr += 4;
10250 memcpy(ptr, &__size_value, 4); ptr += 4;
10251 memcpy(ptr, value, __size_value);ptr += __size_value;
10252
10253 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10254 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10255
10256 }
10257
glProgramUniform3fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10258 void glProgramUniform3fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10259 {
10260 ENCODER_DEBUG_LOG("glProgramUniform3fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10261 AEMU_SCOPED_TRACE("glProgramUniform3fv encode");
10262
10263 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10264 IOStream *stream = ctx->m_stream;
10265 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10266 bool useChecksum = checksumCalculator->getVersion() > 0;
10267
10268 const unsigned int __size_value = (count * 3 * sizeof(GLfloat));
10269 unsigned char *ptr;
10270 unsigned char *buf;
10271 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10272 const size_t checksumSize = checksumCalculator->checksumByteSize();
10273 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10274 buf = stream->alloc(totalSize);
10275 ptr = buf;
10276 int tmp = OP_glProgramUniform3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10277 memcpy(ptr, &totalSize, 4); ptr += 4;
10278
10279 memcpy(ptr, &program, 4); ptr += 4;
10280 memcpy(ptr, &location, 4); ptr += 4;
10281 memcpy(ptr, &count, 4); ptr += 4;
10282 memcpy(ptr, &__size_value, 4); ptr += 4;
10283 memcpy(ptr, value, __size_value);ptr += __size_value;
10284
10285 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10286 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10287
10288 }
10289
glProgramUniform4fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10290 void glProgramUniform4fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10291 {
10292 ENCODER_DEBUG_LOG("glProgramUniform4fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10293 AEMU_SCOPED_TRACE("glProgramUniform4fv encode");
10294
10295 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10296 IOStream *stream = ctx->m_stream;
10297 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10298 bool useChecksum = checksumCalculator->getVersion() > 0;
10299
10300 const unsigned int __size_value = (count * 4 * sizeof(GLfloat));
10301 unsigned char *ptr;
10302 unsigned char *buf;
10303 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10304 const size_t checksumSize = checksumCalculator->checksumByteSize();
10305 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10306 buf = stream->alloc(totalSize);
10307 ptr = buf;
10308 int tmp = OP_glProgramUniform4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10309 memcpy(ptr, &totalSize, 4); ptr += 4;
10310
10311 memcpy(ptr, &program, 4); ptr += 4;
10312 memcpy(ptr, &location, 4); ptr += 4;
10313 memcpy(ptr, &count, 4); ptr += 4;
10314 memcpy(ptr, &__size_value, 4); ptr += 4;
10315 memcpy(ptr, value, __size_value);ptr += __size_value;
10316
10317 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10318 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10319
10320 }
10321
glProgramUniform1iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10322 void glProgramUniform1iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10323 {
10324 ENCODER_DEBUG_LOG("glProgramUniform1iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10325 AEMU_SCOPED_TRACE("glProgramUniform1iv encode");
10326
10327 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10328 IOStream *stream = ctx->m_stream;
10329 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10330 bool useChecksum = checksumCalculator->getVersion() > 0;
10331
10332 const unsigned int __size_value = (count * sizeof(GLint));
10333 unsigned char *ptr;
10334 unsigned char *buf;
10335 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10336 const size_t checksumSize = checksumCalculator->checksumByteSize();
10337 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10338 buf = stream->alloc(totalSize);
10339 ptr = buf;
10340 int tmp = OP_glProgramUniform1iv;memcpy(ptr, &tmp, 4); ptr += 4;
10341 memcpy(ptr, &totalSize, 4); ptr += 4;
10342
10343 memcpy(ptr, &program, 4); ptr += 4;
10344 memcpy(ptr, &location, 4); ptr += 4;
10345 memcpy(ptr, &count, 4); ptr += 4;
10346 memcpy(ptr, &__size_value, 4); ptr += 4;
10347 memcpy(ptr, value, __size_value);ptr += __size_value;
10348
10349 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10350 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10351
10352 }
10353
glProgramUniform2iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10354 void glProgramUniform2iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10355 {
10356 ENCODER_DEBUG_LOG("glProgramUniform2iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10357 AEMU_SCOPED_TRACE("glProgramUniform2iv encode");
10358
10359 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10360 IOStream *stream = ctx->m_stream;
10361 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10362 bool useChecksum = checksumCalculator->getVersion() > 0;
10363
10364 const unsigned int __size_value = (count * 2 * sizeof(GLint));
10365 unsigned char *ptr;
10366 unsigned char *buf;
10367 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10368 const size_t checksumSize = checksumCalculator->checksumByteSize();
10369 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10370 buf = stream->alloc(totalSize);
10371 ptr = buf;
10372 int tmp = OP_glProgramUniform2iv;memcpy(ptr, &tmp, 4); ptr += 4;
10373 memcpy(ptr, &totalSize, 4); ptr += 4;
10374
10375 memcpy(ptr, &program, 4); ptr += 4;
10376 memcpy(ptr, &location, 4); ptr += 4;
10377 memcpy(ptr, &count, 4); ptr += 4;
10378 memcpy(ptr, &__size_value, 4); ptr += 4;
10379 memcpy(ptr, value, __size_value);ptr += __size_value;
10380
10381 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10382 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10383
10384 }
10385
glProgramUniform3iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10386 void glProgramUniform3iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10387 {
10388 ENCODER_DEBUG_LOG("glProgramUniform3iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10389 AEMU_SCOPED_TRACE("glProgramUniform3iv encode");
10390
10391 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10392 IOStream *stream = ctx->m_stream;
10393 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10394 bool useChecksum = checksumCalculator->getVersion() > 0;
10395
10396 const unsigned int __size_value = (count * 3 * sizeof(GLint));
10397 unsigned char *ptr;
10398 unsigned char *buf;
10399 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10400 const size_t checksumSize = checksumCalculator->checksumByteSize();
10401 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10402 buf = stream->alloc(totalSize);
10403 ptr = buf;
10404 int tmp = OP_glProgramUniform3iv;memcpy(ptr, &tmp, 4); ptr += 4;
10405 memcpy(ptr, &totalSize, 4); ptr += 4;
10406
10407 memcpy(ptr, &program, 4); ptr += 4;
10408 memcpy(ptr, &location, 4); ptr += 4;
10409 memcpy(ptr, &count, 4); ptr += 4;
10410 memcpy(ptr, &__size_value, 4); ptr += 4;
10411 memcpy(ptr, value, __size_value);ptr += __size_value;
10412
10413 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10414 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10415
10416 }
10417
glProgramUniform4iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10418 void glProgramUniform4iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10419 {
10420 ENCODER_DEBUG_LOG("glProgramUniform4iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10421 AEMU_SCOPED_TRACE("glProgramUniform4iv encode");
10422
10423 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10424 IOStream *stream = ctx->m_stream;
10425 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10426 bool useChecksum = checksumCalculator->getVersion() > 0;
10427
10428 const unsigned int __size_value = (count * 4 * sizeof(GLint));
10429 unsigned char *ptr;
10430 unsigned char *buf;
10431 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10432 const size_t checksumSize = checksumCalculator->checksumByteSize();
10433 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10434 buf = stream->alloc(totalSize);
10435 ptr = buf;
10436 int tmp = OP_glProgramUniform4iv;memcpy(ptr, &tmp, 4); ptr += 4;
10437 memcpy(ptr, &totalSize, 4); ptr += 4;
10438
10439 memcpy(ptr, &program, 4); ptr += 4;
10440 memcpy(ptr, &location, 4); ptr += 4;
10441 memcpy(ptr, &count, 4); ptr += 4;
10442 memcpy(ptr, &__size_value, 4); ptr += 4;
10443 memcpy(ptr, value, __size_value);ptr += __size_value;
10444
10445 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10446 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10447
10448 }
10449
glProgramUniform1uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10450 void glProgramUniform1uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10451 {
10452 ENCODER_DEBUG_LOG("glProgramUniform1uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10453 AEMU_SCOPED_TRACE("glProgramUniform1uiv encode");
10454
10455 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10456 IOStream *stream = ctx->m_stream;
10457 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10458 bool useChecksum = checksumCalculator->getVersion() > 0;
10459
10460 const unsigned int __size_value = (count * sizeof(GLuint));
10461 unsigned char *ptr;
10462 unsigned char *buf;
10463 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10464 const size_t checksumSize = checksumCalculator->checksumByteSize();
10465 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10466 buf = stream->alloc(totalSize);
10467 ptr = buf;
10468 int tmp = OP_glProgramUniform1uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10469 memcpy(ptr, &totalSize, 4); ptr += 4;
10470
10471 memcpy(ptr, &program, 4); ptr += 4;
10472 memcpy(ptr, &location, 4); ptr += 4;
10473 memcpy(ptr, &count, 4); ptr += 4;
10474 memcpy(ptr, &__size_value, 4); ptr += 4;
10475 memcpy(ptr, value, __size_value);ptr += __size_value;
10476
10477 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10478 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10479
10480 }
10481
glProgramUniform2uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10482 void glProgramUniform2uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10483 {
10484 ENCODER_DEBUG_LOG("glProgramUniform2uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10485 AEMU_SCOPED_TRACE("glProgramUniform2uiv encode");
10486
10487 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10488 IOStream *stream = ctx->m_stream;
10489 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10490 bool useChecksum = checksumCalculator->getVersion() > 0;
10491
10492 const unsigned int __size_value = (count * 2 * sizeof(GLuint));
10493 unsigned char *ptr;
10494 unsigned char *buf;
10495 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10496 const size_t checksumSize = checksumCalculator->checksumByteSize();
10497 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10498 buf = stream->alloc(totalSize);
10499 ptr = buf;
10500 int tmp = OP_glProgramUniform2uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10501 memcpy(ptr, &totalSize, 4); ptr += 4;
10502
10503 memcpy(ptr, &program, 4); ptr += 4;
10504 memcpy(ptr, &location, 4); ptr += 4;
10505 memcpy(ptr, &count, 4); ptr += 4;
10506 memcpy(ptr, &__size_value, 4); ptr += 4;
10507 memcpy(ptr, value, __size_value);ptr += __size_value;
10508
10509 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10510 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10511
10512 }
10513
glProgramUniform3uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10514 void glProgramUniform3uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10515 {
10516 ENCODER_DEBUG_LOG("glProgramUniform3uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10517 AEMU_SCOPED_TRACE("glProgramUniform3uiv encode");
10518
10519 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10520 IOStream *stream = ctx->m_stream;
10521 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10522 bool useChecksum = checksumCalculator->getVersion() > 0;
10523
10524 const unsigned int __size_value = (count * 3 * sizeof(GLuint));
10525 unsigned char *ptr;
10526 unsigned char *buf;
10527 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10528 const size_t checksumSize = checksumCalculator->checksumByteSize();
10529 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10530 buf = stream->alloc(totalSize);
10531 ptr = buf;
10532 int tmp = OP_glProgramUniform3uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10533 memcpy(ptr, &totalSize, 4); ptr += 4;
10534
10535 memcpy(ptr, &program, 4); ptr += 4;
10536 memcpy(ptr, &location, 4); ptr += 4;
10537 memcpy(ptr, &count, 4); ptr += 4;
10538 memcpy(ptr, &__size_value, 4); ptr += 4;
10539 memcpy(ptr, value, __size_value);ptr += __size_value;
10540
10541 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10542 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10543
10544 }
10545
glProgramUniform4uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10546 void glProgramUniform4uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10547 {
10548 ENCODER_DEBUG_LOG("glProgramUniform4uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10549 AEMU_SCOPED_TRACE("glProgramUniform4uiv encode");
10550
10551 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10552 IOStream *stream = ctx->m_stream;
10553 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10554 bool useChecksum = checksumCalculator->getVersion() > 0;
10555
10556 const unsigned int __size_value = (count * 4 * sizeof(GLuint));
10557 unsigned char *ptr;
10558 unsigned char *buf;
10559 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10560 const size_t checksumSize = checksumCalculator->checksumByteSize();
10561 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10562 buf = stream->alloc(totalSize);
10563 ptr = buf;
10564 int tmp = OP_glProgramUniform4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10565 memcpy(ptr, &totalSize, 4); ptr += 4;
10566
10567 memcpy(ptr, &program, 4); ptr += 4;
10568 memcpy(ptr, &location, 4); ptr += 4;
10569 memcpy(ptr, &count, 4); ptr += 4;
10570 memcpy(ptr, &__size_value, 4); ptr += 4;
10571 memcpy(ptr, value, __size_value);ptr += __size_value;
10572
10573 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10574 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10575
10576 }
10577
glProgramUniformMatrix2fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10578 void glProgramUniformMatrix2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10579 {
10580 ENCODER_DEBUG_LOG("glProgramUniformMatrix2fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10581 AEMU_SCOPED_TRACE("glProgramUniformMatrix2fv encode");
10582
10583 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10584 IOStream *stream = ctx->m_stream;
10585 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10586 bool useChecksum = checksumCalculator->getVersion() > 0;
10587
10588 const unsigned int __size_value = (count * 4 * sizeof(GLfloat));
10589 unsigned char *ptr;
10590 unsigned char *buf;
10591 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10592 const size_t checksumSize = checksumCalculator->checksumByteSize();
10593 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10594 buf = stream->alloc(totalSize);
10595 ptr = buf;
10596 int tmp = OP_glProgramUniformMatrix2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10597 memcpy(ptr, &totalSize, 4); ptr += 4;
10598
10599 memcpy(ptr, &program, 4); ptr += 4;
10600 memcpy(ptr, &location, 4); ptr += 4;
10601 memcpy(ptr, &count, 4); ptr += 4;
10602 memcpy(ptr, &transpose, 1); ptr += 1;
10603 memcpy(ptr, &__size_value, 4); ptr += 4;
10604 memcpy(ptr, value, __size_value);ptr += __size_value;
10605
10606 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10607 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10608
10609 }
10610
glProgramUniformMatrix3fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10611 void glProgramUniformMatrix3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10612 {
10613 ENCODER_DEBUG_LOG("glProgramUniformMatrix3fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10614 AEMU_SCOPED_TRACE("glProgramUniformMatrix3fv encode");
10615
10616 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10617 IOStream *stream = ctx->m_stream;
10618 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10619 bool useChecksum = checksumCalculator->getVersion() > 0;
10620
10621 const unsigned int __size_value = (count * 9 * sizeof(GLfloat));
10622 unsigned char *ptr;
10623 unsigned char *buf;
10624 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10625 const size_t checksumSize = checksumCalculator->checksumByteSize();
10626 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10627 buf = stream->alloc(totalSize);
10628 ptr = buf;
10629 int tmp = OP_glProgramUniformMatrix3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10630 memcpy(ptr, &totalSize, 4); ptr += 4;
10631
10632 memcpy(ptr, &program, 4); ptr += 4;
10633 memcpy(ptr, &location, 4); ptr += 4;
10634 memcpy(ptr, &count, 4); ptr += 4;
10635 memcpy(ptr, &transpose, 1); ptr += 1;
10636 memcpy(ptr, &__size_value, 4); ptr += 4;
10637 memcpy(ptr, value, __size_value);ptr += __size_value;
10638
10639 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10640 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10641
10642 }
10643
glProgramUniformMatrix4fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10644 void glProgramUniformMatrix4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10645 {
10646 ENCODER_DEBUG_LOG("glProgramUniformMatrix4fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10647 AEMU_SCOPED_TRACE("glProgramUniformMatrix4fv encode");
10648
10649 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10650 IOStream *stream = ctx->m_stream;
10651 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10652 bool useChecksum = checksumCalculator->getVersion() > 0;
10653
10654 const unsigned int __size_value = (count * 16 * sizeof(GLfloat));
10655 unsigned char *ptr;
10656 unsigned char *buf;
10657 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10658 const size_t checksumSize = checksumCalculator->checksumByteSize();
10659 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10660 buf = stream->alloc(totalSize);
10661 ptr = buf;
10662 int tmp = OP_glProgramUniformMatrix4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10663 memcpy(ptr, &totalSize, 4); ptr += 4;
10664
10665 memcpy(ptr, &program, 4); ptr += 4;
10666 memcpy(ptr, &location, 4); ptr += 4;
10667 memcpy(ptr, &count, 4); ptr += 4;
10668 memcpy(ptr, &transpose, 1); ptr += 1;
10669 memcpy(ptr, &__size_value, 4); ptr += 4;
10670 memcpy(ptr, value, __size_value);ptr += __size_value;
10671
10672 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10673 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10674
10675 }
10676
glProgramUniformMatrix2x3fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10677 void glProgramUniformMatrix2x3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10678 {
10679 ENCODER_DEBUG_LOG("glProgramUniformMatrix2x3fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10680 AEMU_SCOPED_TRACE("glProgramUniformMatrix2x3fv encode");
10681
10682 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10683 IOStream *stream = ctx->m_stream;
10684 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10685 bool useChecksum = checksumCalculator->getVersion() > 0;
10686
10687 const unsigned int __size_value = (count * 6 * sizeof(GLfloat));
10688 unsigned char *ptr;
10689 unsigned char *buf;
10690 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10691 const size_t checksumSize = checksumCalculator->checksumByteSize();
10692 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10693 buf = stream->alloc(totalSize);
10694 ptr = buf;
10695 int tmp = OP_glProgramUniformMatrix2x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10696 memcpy(ptr, &totalSize, 4); ptr += 4;
10697
10698 memcpy(ptr, &program, 4); ptr += 4;
10699 memcpy(ptr, &location, 4); ptr += 4;
10700 memcpy(ptr, &count, 4); ptr += 4;
10701 memcpy(ptr, &transpose, 1); ptr += 1;
10702 memcpy(ptr, &__size_value, 4); ptr += 4;
10703 memcpy(ptr, value, __size_value);ptr += __size_value;
10704
10705 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10706 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10707
10708 }
10709
glProgramUniformMatrix3x2fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10710 void glProgramUniformMatrix3x2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10711 {
10712 ENCODER_DEBUG_LOG("glProgramUniformMatrix3x2fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10713 AEMU_SCOPED_TRACE("glProgramUniformMatrix3x2fv encode");
10714
10715 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10716 IOStream *stream = ctx->m_stream;
10717 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10718 bool useChecksum = checksumCalculator->getVersion() > 0;
10719
10720 const unsigned int __size_value = (count * 6 * sizeof(GLfloat));
10721 unsigned char *ptr;
10722 unsigned char *buf;
10723 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10724 const size_t checksumSize = checksumCalculator->checksumByteSize();
10725 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10726 buf = stream->alloc(totalSize);
10727 ptr = buf;
10728 int tmp = OP_glProgramUniformMatrix3x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10729 memcpy(ptr, &totalSize, 4); ptr += 4;
10730
10731 memcpy(ptr, &program, 4); ptr += 4;
10732 memcpy(ptr, &location, 4); ptr += 4;
10733 memcpy(ptr, &count, 4); ptr += 4;
10734 memcpy(ptr, &transpose, 1); ptr += 1;
10735 memcpy(ptr, &__size_value, 4); ptr += 4;
10736 memcpy(ptr, value, __size_value);ptr += __size_value;
10737
10738 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10739 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10740
10741 }
10742
glProgramUniformMatrix2x4fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10743 void glProgramUniformMatrix2x4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10744 {
10745 ENCODER_DEBUG_LOG("glProgramUniformMatrix2x4fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10746 AEMU_SCOPED_TRACE("glProgramUniformMatrix2x4fv encode");
10747
10748 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10749 IOStream *stream = ctx->m_stream;
10750 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10751 bool useChecksum = checksumCalculator->getVersion() > 0;
10752
10753 const unsigned int __size_value = (count * 8 * sizeof(GLfloat));
10754 unsigned char *ptr;
10755 unsigned char *buf;
10756 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10757 const size_t checksumSize = checksumCalculator->checksumByteSize();
10758 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10759 buf = stream->alloc(totalSize);
10760 ptr = buf;
10761 int tmp = OP_glProgramUniformMatrix2x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10762 memcpy(ptr, &totalSize, 4); ptr += 4;
10763
10764 memcpy(ptr, &program, 4); ptr += 4;
10765 memcpy(ptr, &location, 4); ptr += 4;
10766 memcpy(ptr, &count, 4); ptr += 4;
10767 memcpy(ptr, &transpose, 1); ptr += 1;
10768 memcpy(ptr, &__size_value, 4); ptr += 4;
10769 memcpy(ptr, value, __size_value);ptr += __size_value;
10770
10771 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10772 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10773
10774 }
10775
glProgramUniformMatrix4x2fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10776 void glProgramUniformMatrix4x2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10777 {
10778 ENCODER_DEBUG_LOG("glProgramUniformMatrix4x2fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10779 AEMU_SCOPED_TRACE("glProgramUniformMatrix4x2fv encode");
10780
10781 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10782 IOStream *stream = ctx->m_stream;
10783 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10784 bool useChecksum = checksumCalculator->getVersion() > 0;
10785
10786 const unsigned int __size_value = (count * 8 * sizeof(GLfloat));
10787 unsigned char *ptr;
10788 unsigned char *buf;
10789 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10790 const size_t checksumSize = checksumCalculator->checksumByteSize();
10791 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10792 buf = stream->alloc(totalSize);
10793 ptr = buf;
10794 int tmp = OP_glProgramUniformMatrix4x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10795 memcpy(ptr, &totalSize, 4); ptr += 4;
10796
10797 memcpy(ptr, &program, 4); ptr += 4;
10798 memcpy(ptr, &location, 4); ptr += 4;
10799 memcpy(ptr, &count, 4); ptr += 4;
10800 memcpy(ptr, &transpose, 1); ptr += 1;
10801 memcpy(ptr, &__size_value, 4); ptr += 4;
10802 memcpy(ptr, value, __size_value);ptr += __size_value;
10803
10804 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10805 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10806
10807 }
10808
glProgramUniformMatrix3x4fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10809 void glProgramUniformMatrix3x4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10810 {
10811 ENCODER_DEBUG_LOG("glProgramUniformMatrix3x4fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10812 AEMU_SCOPED_TRACE("glProgramUniformMatrix3x4fv encode");
10813
10814 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10815 IOStream *stream = ctx->m_stream;
10816 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10817 bool useChecksum = checksumCalculator->getVersion() > 0;
10818
10819 const unsigned int __size_value = (count * 12 * sizeof(GLfloat));
10820 unsigned char *ptr;
10821 unsigned char *buf;
10822 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10823 const size_t checksumSize = checksumCalculator->checksumByteSize();
10824 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10825 buf = stream->alloc(totalSize);
10826 ptr = buf;
10827 int tmp = OP_glProgramUniformMatrix3x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10828 memcpy(ptr, &totalSize, 4); ptr += 4;
10829
10830 memcpy(ptr, &program, 4); ptr += 4;
10831 memcpy(ptr, &location, 4); ptr += 4;
10832 memcpy(ptr, &count, 4); ptr += 4;
10833 memcpy(ptr, &transpose, 1); ptr += 1;
10834 memcpy(ptr, &__size_value, 4); ptr += 4;
10835 memcpy(ptr, value, __size_value);ptr += __size_value;
10836
10837 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10838 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10839
10840 }
10841
glProgramUniformMatrix4x3fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10842 void glProgramUniformMatrix4x3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10843 {
10844 ENCODER_DEBUG_LOG("glProgramUniformMatrix4x3fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10845 AEMU_SCOPED_TRACE("glProgramUniformMatrix4x3fv encode");
10846
10847 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10848 IOStream *stream = ctx->m_stream;
10849 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10850 bool useChecksum = checksumCalculator->getVersion() > 0;
10851
10852 const unsigned int __size_value = (count * 12 * sizeof(GLfloat));
10853 unsigned char *ptr;
10854 unsigned char *buf;
10855 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10856 const size_t checksumSize = checksumCalculator->checksumByteSize();
10857 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10858 buf = stream->alloc(totalSize);
10859 ptr = buf;
10860 int tmp = OP_glProgramUniformMatrix4x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10861 memcpy(ptr, &totalSize, 4); ptr += 4;
10862
10863 memcpy(ptr, &program, 4); ptr += 4;
10864 memcpy(ptr, &location, 4); ptr += 4;
10865 memcpy(ptr, &count, 4); ptr += 4;
10866 memcpy(ptr, &transpose, 1); ptr += 1;
10867 memcpy(ptr, &__size_value, 4); ptr += 4;
10868 memcpy(ptr, value, __size_value);ptr += __size_value;
10869
10870 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10871 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10872
10873 }
10874
glGetProgramInterfaceiv_enc(void * self,GLuint program,GLenum programInterface,GLenum pname,GLint * params)10875 void glGetProgramInterfaceiv_enc(void *self , GLuint program, GLenum programInterface, GLenum pname, GLint* params)
10876 {
10877 ENCODER_DEBUG_LOG("glGetProgramInterfaceiv(program:%u, programInterface:0x%08x, pname:0x%08x, params:0x%08x)", program, programInterface, pname, params);
10878 AEMU_SCOPED_TRACE("glGetProgramInterfaceiv encode");
10879
10880 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10881 IOStream *stream = ctx->m_stream;
10882 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10883 bool useChecksum = checksumCalculator->getVersion() > 0;
10884
10885 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
10886 unsigned char *ptr;
10887 unsigned char *buf;
10888 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
10889 const size_t checksumSize = checksumCalculator->checksumByteSize();
10890 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10891 buf = stream->alloc(totalSize);
10892 ptr = buf;
10893 int tmp = OP_glGetProgramInterfaceiv;memcpy(ptr, &tmp, 4); ptr += 4;
10894 memcpy(ptr, &totalSize, 4); ptr += 4;
10895
10896 memcpy(ptr, &program, 4); ptr += 4;
10897 memcpy(ptr, &programInterface, 4); ptr += 4;
10898 memcpy(ptr, &pname, 4); ptr += 4;
10899 memcpy(ptr, &__size_params, 4); ptr += 4;
10900
10901 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10902 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10903
10904 stream->readback(params, __size_params);
10905 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
10906 if (useChecksum) {
10907 unsigned char *checksumBufPtr = NULL;
10908 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
10909 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10910 stream->readback(checksumBufPtr, checksumSize);
10911 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10912 ALOGE("glGetProgramInterfaceiv: GL communication error, please report this issue to b.android.com.\n");
10913 abort();
10914 }
10915 }
10916 }
10917
glGetProgramResourceiv_enc(void * self,GLuint program,GLenum programInterface,GLuint index,GLsizei propCount,const GLenum * props,GLsizei bufSize,GLsizei * length,GLint * params)10918 void glGetProgramResourceiv_enc(void *self , GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei* length, GLint* params)
10919 {
10920 ENCODER_DEBUG_LOG("glGetProgramResourceiv(program:%u, programInterface:0x%08x, index:%u, propCount:%d, props:0x%08x, bufSize:%d, length:0x%08x, params:0x%08x)", program, programInterface, index, propCount, props, bufSize, length, params);
10921 AEMU_SCOPED_TRACE("glGetProgramResourceiv encode");
10922
10923 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10924 IOStream *stream = ctx->m_stream;
10925 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10926 bool useChecksum = checksumCalculator->getVersion() > 0;
10927
10928 const unsigned int __size_props = (propCount * sizeof(GLenum));
10929 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
10930 const unsigned int __size_params = (bufSize * sizeof(GLint));
10931 unsigned char *ptr;
10932 unsigned char *buf;
10933 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_props + 4 + 0 + 0 + 3*4;
10934 const size_t checksumSize = checksumCalculator->checksumByteSize();
10935 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10936 buf = stream->alloc(totalSize);
10937 ptr = buf;
10938 int tmp = OP_glGetProgramResourceiv;memcpy(ptr, &tmp, 4); ptr += 4;
10939 memcpy(ptr, &totalSize, 4); ptr += 4;
10940
10941 memcpy(ptr, &program, 4); ptr += 4;
10942 memcpy(ptr, &programInterface, 4); ptr += 4;
10943 memcpy(ptr, &index, 4); ptr += 4;
10944 memcpy(ptr, &propCount, 4); ptr += 4;
10945 memcpy(ptr, &__size_props, 4); ptr += 4;
10946 memcpy(ptr, props, __size_props);ptr += __size_props;
10947 memcpy(ptr, &bufSize, 4); ptr += 4;
10948 memcpy(ptr, &__size_length, 4); ptr += 4;
10949 memcpy(ptr, &__size_params, 4); ptr += 4;
10950
10951 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10952 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10953
10954 if (length != NULL) {
10955 stream->readback(length, __size_length);
10956 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
10957 }
10958 stream->readback(params, __size_params);
10959 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
10960 if (useChecksum) {
10961 unsigned char *checksumBufPtr = NULL;
10962 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
10963 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10964 stream->readback(checksumBufPtr, checksumSize);
10965 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10966 ALOGE("glGetProgramResourceiv: GL communication error, please report this issue to b.android.com.\n");
10967 abort();
10968 }
10969 }
10970 }
10971
glGetProgramResourceIndex_enc(void * self,GLuint program,GLenum programInterface,const char * name)10972 GLuint glGetProgramResourceIndex_enc(void *self , GLuint program, GLenum programInterface, const char* name)
10973 {
10974 ENCODER_DEBUG_LOG("glGetProgramResourceIndex(program:%u, programInterface:0x%08x, name:0x%08x)", program, programInterface, name);
10975 AEMU_SCOPED_TRACE("glGetProgramResourceIndex encode");
10976
10977 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10978 IOStream *stream = ctx->m_stream;
10979 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10980 bool useChecksum = checksumCalculator->getVersion() > 0;
10981
10982 const unsigned int __size_name = (strlen(name) + 1);
10983 unsigned char *ptr;
10984 unsigned char *buf;
10985 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
10986 const size_t checksumSize = checksumCalculator->checksumByteSize();
10987 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10988 buf = stream->alloc(totalSize);
10989 ptr = buf;
10990 int tmp = OP_glGetProgramResourceIndex;memcpy(ptr, &tmp, 4); ptr += 4;
10991 memcpy(ptr, &totalSize, 4); ptr += 4;
10992
10993 memcpy(ptr, &program, 4); ptr += 4;
10994 memcpy(ptr, &programInterface, 4); ptr += 4;
10995 memcpy(ptr, &__size_name, 4); ptr += 4;
10996 memcpy(ptr, name, __size_name);ptr += __size_name;
10997
10998 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10999 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11000
11001
11002 GLuint retval;
11003 stream->readback(&retval, 4);
11004 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
11005 if (useChecksum) {
11006 unsigned char *checksumBufPtr = NULL;
11007 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11008 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11009 stream->readback(checksumBufPtr, checksumSize);
11010 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11011 ALOGE("glGetProgramResourceIndex: GL communication error, please report this issue to b.android.com.\n");
11012 abort();
11013 }
11014 }
11015 return retval;
11016 }
11017
glGetProgramResourceLocation_enc(void * self,GLuint program,GLenum programInterface,const char * name)11018 GLint glGetProgramResourceLocation_enc(void *self , GLuint program, GLenum programInterface, const char* name)
11019 {
11020 ENCODER_DEBUG_LOG("glGetProgramResourceLocation(program:%u, programInterface:0x%08x, name:0x%08x)", program, programInterface, name);
11021 AEMU_SCOPED_TRACE("glGetProgramResourceLocation encode");
11022
11023 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11024 IOStream *stream = ctx->m_stream;
11025 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11026 bool useChecksum = checksumCalculator->getVersion() > 0;
11027
11028 const unsigned int __size_name = (strlen(name) + 1);
11029 unsigned char *ptr;
11030 unsigned char *buf;
11031 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
11032 const size_t checksumSize = checksumCalculator->checksumByteSize();
11033 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11034 buf = stream->alloc(totalSize);
11035 ptr = buf;
11036 int tmp = OP_glGetProgramResourceLocation;memcpy(ptr, &tmp, 4); ptr += 4;
11037 memcpy(ptr, &totalSize, 4); ptr += 4;
11038
11039 memcpy(ptr, &program, 4); ptr += 4;
11040 memcpy(ptr, &programInterface, 4); ptr += 4;
11041 memcpy(ptr, &__size_name, 4); ptr += 4;
11042 memcpy(ptr, name, __size_name);ptr += __size_name;
11043
11044 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11045 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11046
11047
11048 GLint retval;
11049 stream->readback(&retval, 4);
11050 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
11051 if (useChecksum) {
11052 unsigned char *checksumBufPtr = NULL;
11053 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11054 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11055 stream->readback(checksumBufPtr, checksumSize);
11056 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11057 ALOGE("glGetProgramResourceLocation: GL communication error, please report this issue to b.android.com.\n");
11058 abort();
11059 }
11060 }
11061 return retval;
11062 }
11063
glGetProgramResourceName_enc(void * self,GLuint program,GLenum programInterface,GLuint index,GLsizei bufSize,GLsizei * length,char * name)11064 void glGetProgramResourceName_enc(void *self , GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, char* name)
11065 {
11066 ENCODER_DEBUG_LOG("glGetProgramResourceName(program:%u, programInterface:0x%08x, index:%u, bufSize:%d, length:0x%08x, name:0x%08x)", program, programInterface, index, bufSize, length, name);
11067 AEMU_SCOPED_TRACE("glGetProgramResourceName encode");
11068
11069 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11070 IOStream *stream = ctx->m_stream;
11071 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11072 bool useChecksum = checksumCalculator->getVersion() > 0;
11073
11074 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
11075 const unsigned int __size_name = bufSize;
11076 unsigned char *ptr;
11077 unsigned char *buf;
11078 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 0 + 2*4;
11079 const size_t checksumSize = checksumCalculator->checksumByteSize();
11080 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11081 buf = stream->alloc(totalSize);
11082 ptr = buf;
11083 int tmp = OP_glGetProgramResourceName;memcpy(ptr, &tmp, 4); ptr += 4;
11084 memcpy(ptr, &totalSize, 4); ptr += 4;
11085
11086 memcpy(ptr, &program, 4); ptr += 4;
11087 memcpy(ptr, &programInterface, 4); ptr += 4;
11088 memcpy(ptr, &index, 4); ptr += 4;
11089 memcpy(ptr, &bufSize, 4); ptr += 4;
11090 memcpy(ptr, &__size_length, 4); ptr += 4;
11091 memcpy(ptr, &__size_name, 4); ptr += 4;
11092
11093 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11094 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11095
11096 if (length != NULL) {
11097 stream->readback(length, __size_length);
11098 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
11099 }
11100 stream->readback(name, __size_name);
11101 if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
11102 if (useChecksum) {
11103 unsigned char *checksumBufPtr = NULL;
11104 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11105 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11106 stream->readback(checksumBufPtr, checksumSize);
11107 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11108 ALOGE("glGetProgramResourceName: GL communication error, please report this issue to b.android.com.\n");
11109 abort();
11110 }
11111 }
11112 }
11113
glBindImageTexture_enc(void * self,GLuint unit,GLuint texture,GLint level,GLboolean layered,GLint layer,GLenum access,GLenum format)11114 void glBindImageTexture_enc(void *self , GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
11115 {
11116 ENCODER_DEBUG_LOG("glBindImageTexture(unit:%u, texture:%u, level:%d, layered:%d, layer:%d, access:0x%08x, format:0x%08x)", unit, texture, level, layered, layer, access, format);
11117 AEMU_SCOPED_TRACE("glBindImageTexture encode");
11118
11119 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11120 IOStream *stream = ctx->m_stream;
11121 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11122 bool useChecksum = checksumCalculator->getVersion() > 0;
11123
11124 unsigned char *ptr;
11125 unsigned char *buf;
11126 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + 4 + 4;
11127 const size_t checksumSize = checksumCalculator->checksumByteSize();
11128 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11129 buf = stream->alloc(totalSize);
11130 ptr = buf;
11131 int tmp = OP_glBindImageTexture;memcpy(ptr, &tmp, 4); ptr += 4;
11132 memcpy(ptr, &totalSize, 4); ptr += 4;
11133
11134 memcpy(ptr, &unit, 4); ptr += 4;
11135 memcpy(ptr, &texture, 4); ptr += 4;
11136 memcpy(ptr, &level, 4); ptr += 4;
11137 memcpy(ptr, &layered, 1); ptr += 1;
11138 memcpy(ptr, &layer, 4); ptr += 4;
11139 memcpy(ptr, &access, 4); ptr += 4;
11140 memcpy(ptr, &format, 4); ptr += 4;
11141
11142 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11143 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11144
11145 }
11146
glDispatchCompute_enc(void * self,GLuint num_groups_x,GLuint num_groups_y,GLuint num_groups_z)11147 void glDispatchCompute_enc(void *self , GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
11148 {
11149 ENCODER_DEBUG_LOG("glDispatchCompute(num_groups_x:%u, num_groups_y:%u, num_groups_z:%u)", num_groups_x, num_groups_y, num_groups_z);
11150 AEMU_SCOPED_TRACE("glDispatchCompute encode");
11151
11152 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11153 IOStream *stream = ctx->m_stream;
11154 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11155 bool useChecksum = checksumCalculator->getVersion() > 0;
11156
11157 unsigned char *ptr;
11158 unsigned char *buf;
11159 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
11160 const size_t checksumSize = checksumCalculator->checksumByteSize();
11161 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11162 buf = stream->alloc(totalSize);
11163 ptr = buf;
11164 int tmp = OP_glDispatchCompute;memcpy(ptr, &tmp, 4); ptr += 4;
11165 memcpy(ptr, &totalSize, 4); ptr += 4;
11166
11167 memcpy(ptr, &num_groups_x, 4); ptr += 4;
11168 memcpy(ptr, &num_groups_y, 4); ptr += 4;
11169 memcpy(ptr, &num_groups_z, 4); ptr += 4;
11170
11171 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11172 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11173
11174 }
11175
glDispatchComputeIndirect_enc(void * self,GLintptr indirect)11176 void glDispatchComputeIndirect_enc(void *self , GLintptr indirect)
11177 {
11178 ENCODER_DEBUG_LOG("glDispatchComputeIndirect(indirect:0x%08lx)", indirect);
11179 AEMU_SCOPED_TRACE("glDispatchComputeIndirect encode");
11180
11181 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11182 IOStream *stream = ctx->m_stream;
11183 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11184 bool useChecksum = checksumCalculator->getVersion() > 0;
11185
11186 unsigned char *ptr;
11187 unsigned char *buf;
11188 const size_t sizeWithoutChecksum = 8 + 4;
11189 const size_t checksumSize = checksumCalculator->checksumByteSize();
11190 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11191 buf = stream->alloc(totalSize);
11192 ptr = buf;
11193 int tmp = OP_glDispatchComputeIndirect;memcpy(ptr, &tmp, 4); ptr += 4;
11194 memcpy(ptr, &totalSize, 4); ptr += 4;
11195
11196 memcpy(ptr, &indirect, 4); ptr += 4;
11197
11198 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11199 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11200
11201 }
11202
glBindVertexBuffer_enc(void * self,GLuint bindingindex,GLuint buffer,GLintptr offset,GLintptr stride)11203 void glBindVertexBuffer_enc(void *self , GLuint bindingindex, GLuint buffer, GLintptr offset, GLintptr stride)
11204 {
11205 ENCODER_DEBUG_LOG("glBindVertexBuffer(bindingindex:%u, buffer:%u, offset:0x%08lx, stride:0x%08lx)", bindingindex, buffer, offset, stride);
11206 AEMU_SCOPED_TRACE("glBindVertexBuffer encode");
11207
11208 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11209 IOStream *stream = ctx->m_stream;
11210 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11211 bool useChecksum = checksumCalculator->getVersion() > 0;
11212
11213 unsigned char *ptr;
11214 unsigned char *buf;
11215 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
11216 const size_t checksumSize = checksumCalculator->checksumByteSize();
11217 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11218 buf = stream->alloc(totalSize);
11219 ptr = buf;
11220 int tmp = OP_glBindVertexBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
11221 memcpy(ptr, &totalSize, 4); ptr += 4;
11222
11223 memcpy(ptr, &bindingindex, 4); ptr += 4;
11224 memcpy(ptr, &buffer, 4); ptr += 4;
11225 memcpy(ptr, &offset, 4); ptr += 4;
11226 memcpy(ptr, &stride, 4); ptr += 4;
11227
11228 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11229 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11230
11231 }
11232
glVertexAttribBinding_enc(void * self,GLuint attribindex,GLuint bindingindex)11233 void glVertexAttribBinding_enc(void *self , GLuint attribindex, GLuint bindingindex)
11234 {
11235 ENCODER_DEBUG_LOG("glVertexAttribBinding(attribindex:%u, bindingindex:%u)", attribindex, bindingindex);
11236 AEMU_SCOPED_TRACE("glVertexAttribBinding encode");
11237
11238 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11239 IOStream *stream = ctx->m_stream;
11240 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11241 bool useChecksum = checksumCalculator->getVersion() > 0;
11242
11243 unsigned char *ptr;
11244 unsigned char *buf;
11245 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11246 const size_t checksumSize = checksumCalculator->checksumByteSize();
11247 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11248 buf = stream->alloc(totalSize);
11249 ptr = buf;
11250 int tmp = OP_glVertexAttribBinding;memcpy(ptr, &tmp, 4); ptr += 4;
11251 memcpy(ptr, &totalSize, 4); ptr += 4;
11252
11253 memcpy(ptr, &attribindex, 4); ptr += 4;
11254 memcpy(ptr, &bindingindex, 4); ptr += 4;
11255
11256 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11257 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11258
11259 }
11260
glVertexAttribFormat_enc(void * self,GLuint attribindex,GLint size,GLenum type,GLboolean normalized,GLuint relativeoffset)11261 void glVertexAttribFormat_enc(void *self , GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
11262 {
11263 ENCODER_DEBUG_LOG("glVertexAttribFormat(attribindex:%u, size:%d, type:0x%08x, normalized:%d, relativeoffset:%u)", attribindex, size, type, normalized, relativeoffset);
11264 AEMU_SCOPED_TRACE("glVertexAttribFormat encode");
11265
11266 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11267 IOStream *stream = ctx->m_stream;
11268 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11269 bool useChecksum = checksumCalculator->getVersion() > 0;
11270
11271 unsigned char *ptr;
11272 unsigned char *buf;
11273 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4;
11274 const size_t checksumSize = checksumCalculator->checksumByteSize();
11275 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11276 buf = stream->alloc(totalSize);
11277 ptr = buf;
11278 int tmp = OP_glVertexAttribFormat;memcpy(ptr, &tmp, 4); ptr += 4;
11279 memcpy(ptr, &totalSize, 4); ptr += 4;
11280
11281 memcpy(ptr, &attribindex, 4); ptr += 4;
11282 memcpy(ptr, &size, 4); ptr += 4;
11283 memcpy(ptr, &type, 4); ptr += 4;
11284 memcpy(ptr, &normalized, 1); ptr += 1;
11285 memcpy(ptr, &relativeoffset, 4); ptr += 4;
11286
11287 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11288 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11289
11290 }
11291
glVertexAttribIFormat_enc(void * self,GLuint attribindex,GLint size,GLenum type,GLuint relativeoffset)11292 void glVertexAttribIFormat_enc(void *self , GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
11293 {
11294 ENCODER_DEBUG_LOG("glVertexAttribIFormat(attribindex:%u, size:%d, type:0x%08x, relativeoffset:%u)", attribindex, size, type, relativeoffset);
11295 AEMU_SCOPED_TRACE("glVertexAttribIFormat encode");
11296
11297 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11298 IOStream *stream = ctx->m_stream;
11299 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11300 bool useChecksum = checksumCalculator->getVersion() > 0;
11301
11302 unsigned char *ptr;
11303 unsigned char *buf;
11304 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
11305 const size_t checksumSize = checksumCalculator->checksumByteSize();
11306 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11307 buf = stream->alloc(totalSize);
11308 ptr = buf;
11309 int tmp = OP_glVertexAttribIFormat;memcpy(ptr, &tmp, 4); ptr += 4;
11310 memcpy(ptr, &totalSize, 4); ptr += 4;
11311
11312 memcpy(ptr, &attribindex, 4); ptr += 4;
11313 memcpy(ptr, &size, 4); ptr += 4;
11314 memcpy(ptr, &type, 4); ptr += 4;
11315 memcpy(ptr, &relativeoffset, 4); ptr += 4;
11316
11317 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11318 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11319
11320 }
11321
glVertexBindingDivisor_enc(void * self,GLuint bindingindex,GLuint divisor)11322 void glVertexBindingDivisor_enc(void *self , GLuint bindingindex, GLuint divisor)
11323 {
11324 ENCODER_DEBUG_LOG("glVertexBindingDivisor(bindingindex:%u, divisor:%u)", bindingindex, divisor);
11325 AEMU_SCOPED_TRACE("glVertexBindingDivisor encode");
11326
11327 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11328 IOStream *stream = ctx->m_stream;
11329 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11330 bool useChecksum = checksumCalculator->getVersion() > 0;
11331
11332 unsigned char *ptr;
11333 unsigned char *buf;
11334 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11335 const size_t checksumSize = checksumCalculator->checksumByteSize();
11336 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11337 buf = stream->alloc(totalSize);
11338 ptr = buf;
11339 int tmp = OP_glVertexBindingDivisor;memcpy(ptr, &tmp, 4); ptr += 4;
11340 memcpy(ptr, &totalSize, 4); ptr += 4;
11341
11342 memcpy(ptr, &bindingindex, 4); ptr += 4;
11343 memcpy(ptr, &divisor, 4); ptr += 4;
11344
11345 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11346 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11347
11348 }
11349
glDrawArraysIndirectDataAEMU_enc(void * self,GLenum mode,const void * indirect,GLuint datalen)11350 void glDrawArraysIndirectDataAEMU_enc(void *self , GLenum mode, const void* indirect, GLuint datalen)
11351 {
11352 ENCODER_DEBUG_LOG("glDrawArraysIndirectDataAEMU(mode:0x%08x, indirect:0x%08x, datalen:%u)", mode, indirect, datalen);
11353 AEMU_SCOPED_TRACE("glDrawArraysIndirectDataAEMU encode");
11354
11355 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11356 IOStream *stream = ctx->m_stream;
11357 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11358 bool useChecksum = checksumCalculator->getVersion() > 0;
11359
11360 const unsigned int __size_indirect = datalen;
11361 unsigned char *ptr;
11362 unsigned char *buf;
11363 const size_t sizeWithoutChecksum = 8 + 4 + __size_indirect + 4 + 1*4;
11364 const size_t checksumSize = checksumCalculator->checksumByteSize();
11365 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11366 buf = stream->alloc(totalSize);
11367 ptr = buf;
11368 int tmp = OP_glDrawArraysIndirectDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11369 memcpy(ptr, &totalSize, 4); ptr += 4;
11370
11371 memcpy(ptr, &mode, 4); ptr += 4;
11372 memcpy(ptr, &__size_indirect, 4); ptr += 4;
11373 memcpy(ptr, indirect, __size_indirect);ptr += __size_indirect;
11374 memcpy(ptr, &datalen, 4); ptr += 4;
11375
11376 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11377 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11378
11379 }
11380
glDrawArraysIndirectOffsetAEMU_enc(void * self,GLenum mode,GLuint offset)11381 void glDrawArraysIndirectOffsetAEMU_enc(void *self , GLenum mode, GLuint offset)
11382 {
11383 ENCODER_DEBUG_LOG("glDrawArraysIndirectOffsetAEMU(mode:0x%08x, offset:%u)", mode, offset);
11384 AEMU_SCOPED_TRACE("glDrawArraysIndirectOffsetAEMU encode");
11385
11386 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11387 IOStream *stream = ctx->m_stream;
11388 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11389 bool useChecksum = checksumCalculator->getVersion() > 0;
11390
11391 unsigned char *ptr;
11392 unsigned char *buf;
11393 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11394 const size_t checksumSize = checksumCalculator->checksumByteSize();
11395 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11396 buf = stream->alloc(totalSize);
11397 ptr = buf;
11398 int tmp = OP_glDrawArraysIndirectOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11399 memcpy(ptr, &totalSize, 4); ptr += 4;
11400
11401 memcpy(ptr, &mode, 4); ptr += 4;
11402 memcpy(ptr, &offset, 4); ptr += 4;
11403
11404 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11405 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11406
11407 }
11408
glDrawElementsIndirectDataAEMU_enc(void * self,GLenum mode,GLenum type,const void * indirect,GLuint datalen)11409 void glDrawElementsIndirectDataAEMU_enc(void *self , GLenum mode, GLenum type, const void* indirect, GLuint datalen)
11410 {
11411 ENCODER_DEBUG_LOG("glDrawElementsIndirectDataAEMU(mode:0x%08x, type:0x%08x, indirect:0x%08x, datalen:%u)", mode, type, indirect, datalen);
11412 AEMU_SCOPED_TRACE("glDrawElementsIndirectDataAEMU encode");
11413
11414 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11415 IOStream *stream = ctx->m_stream;
11416 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11417 bool useChecksum = checksumCalculator->getVersion() > 0;
11418
11419 const unsigned int __size_indirect = datalen;
11420 unsigned char *ptr;
11421 unsigned char *buf;
11422 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_indirect + 4 + 1*4;
11423 const size_t checksumSize = checksumCalculator->checksumByteSize();
11424 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11425 buf = stream->alloc(totalSize);
11426 ptr = buf;
11427 int tmp = OP_glDrawElementsIndirectDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11428 memcpy(ptr, &totalSize, 4); ptr += 4;
11429
11430 memcpy(ptr, &mode, 4); ptr += 4;
11431 memcpy(ptr, &type, 4); ptr += 4;
11432 memcpy(ptr, &__size_indirect, 4); ptr += 4;
11433 memcpy(ptr, indirect, __size_indirect);ptr += __size_indirect;
11434 memcpy(ptr, &datalen, 4); ptr += 4;
11435
11436 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11437 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11438
11439 }
11440
glDrawElementsIndirectOffsetAEMU_enc(void * self,GLenum mode,GLenum type,GLuint offset)11441 void glDrawElementsIndirectOffsetAEMU_enc(void *self , GLenum mode, GLenum type, GLuint offset)
11442 {
11443 ENCODER_DEBUG_LOG("glDrawElementsIndirectOffsetAEMU(mode:0x%08x, type:0x%08x, offset:%u)", mode, type, offset);
11444 AEMU_SCOPED_TRACE("glDrawElementsIndirectOffsetAEMU encode");
11445
11446 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11447 IOStream *stream = ctx->m_stream;
11448 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11449 bool useChecksum = checksumCalculator->getVersion() > 0;
11450
11451 unsigned char *ptr;
11452 unsigned char *buf;
11453 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
11454 const size_t checksumSize = checksumCalculator->checksumByteSize();
11455 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11456 buf = stream->alloc(totalSize);
11457 ptr = buf;
11458 int tmp = OP_glDrawElementsIndirectOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11459 memcpy(ptr, &totalSize, 4); ptr += 4;
11460
11461 memcpy(ptr, &mode, 4); ptr += 4;
11462 memcpy(ptr, &type, 4); ptr += 4;
11463 memcpy(ptr, &offset, 4); ptr += 4;
11464
11465 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11466 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11467
11468 }
11469
glTexStorage2DMultisample_enc(void * self,GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height,GLboolean fixedsamplelocations)11470 void glTexStorage2DMultisample_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
11471 {
11472 ENCODER_DEBUG_LOG("glTexStorage2DMultisample(target:0x%08x, samples:%d, internalformat:0x%08x, width:%d, height:%d, fixedsamplelocations:%d)", target, samples, internalformat, width, height, fixedsamplelocations);
11473 AEMU_SCOPED_TRACE("glTexStorage2DMultisample encode");
11474
11475 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11476 IOStream *stream = ctx->m_stream;
11477 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11478 bool useChecksum = checksumCalculator->getVersion() > 0;
11479
11480 unsigned char *ptr;
11481 unsigned char *buf;
11482 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 1;
11483 const size_t checksumSize = checksumCalculator->checksumByteSize();
11484 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11485 buf = stream->alloc(totalSize);
11486 ptr = buf;
11487 int tmp = OP_glTexStorage2DMultisample;memcpy(ptr, &tmp, 4); ptr += 4;
11488 memcpy(ptr, &totalSize, 4); ptr += 4;
11489
11490 memcpy(ptr, &target, 4); ptr += 4;
11491 memcpy(ptr, &samples, 4); ptr += 4;
11492 memcpy(ptr, &internalformat, 4); ptr += 4;
11493 memcpy(ptr, &width, 4); ptr += 4;
11494 memcpy(ptr, &height, 4); ptr += 4;
11495 memcpy(ptr, &fixedsamplelocations, 1); ptr += 1;
11496
11497 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11498 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11499
11500 }
11501
glSampleMaski_enc(void * self,GLuint maskNumber,GLbitfield mask)11502 void glSampleMaski_enc(void *self , GLuint maskNumber, GLbitfield mask)
11503 {
11504 ENCODER_DEBUG_LOG("glSampleMaski(maskNumber:%u, mask:0x%08x)", maskNumber, mask);
11505 AEMU_SCOPED_TRACE("glSampleMaski encode");
11506
11507 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11508 IOStream *stream = ctx->m_stream;
11509 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11510 bool useChecksum = checksumCalculator->getVersion() > 0;
11511
11512 unsigned char *ptr;
11513 unsigned char *buf;
11514 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11515 const size_t checksumSize = checksumCalculator->checksumByteSize();
11516 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11517 buf = stream->alloc(totalSize);
11518 ptr = buf;
11519 int tmp = OP_glSampleMaski;memcpy(ptr, &tmp, 4); ptr += 4;
11520 memcpy(ptr, &totalSize, 4); ptr += 4;
11521
11522 memcpy(ptr, &maskNumber, 4); ptr += 4;
11523 memcpy(ptr, &mask, 4); ptr += 4;
11524
11525 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11526 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11527
11528 }
11529
glGetMultisamplefv_enc(void * self,GLenum pname,GLuint index,GLfloat * val)11530 void glGetMultisamplefv_enc(void *self , GLenum pname, GLuint index, GLfloat* val)
11531 {
11532 ENCODER_DEBUG_LOG("glGetMultisamplefv(pname:0x%08x, index:%u, val:0x%08x)", pname, index, val);
11533 AEMU_SCOPED_TRACE("glGetMultisamplefv encode");
11534
11535 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11536 IOStream *stream = ctx->m_stream;
11537 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11538 bool useChecksum = checksumCalculator->getVersion() > 0;
11539
11540 const unsigned int __size_val = (glUtilsParamSize(pname) * sizeof(GLfloat));
11541 unsigned char *ptr;
11542 unsigned char *buf;
11543 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
11544 const size_t checksumSize = checksumCalculator->checksumByteSize();
11545 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11546 buf = stream->alloc(totalSize);
11547 ptr = buf;
11548 int tmp = OP_glGetMultisamplefv;memcpy(ptr, &tmp, 4); ptr += 4;
11549 memcpy(ptr, &totalSize, 4); ptr += 4;
11550
11551 memcpy(ptr, &pname, 4); ptr += 4;
11552 memcpy(ptr, &index, 4); ptr += 4;
11553 memcpy(ptr, &__size_val, 4); ptr += 4;
11554
11555 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11556 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11557
11558 stream->readback(val, __size_val);
11559 if (useChecksum) checksumCalculator->addBuffer(val, __size_val);
11560 if (useChecksum) {
11561 unsigned char *checksumBufPtr = NULL;
11562 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11563 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11564 stream->readback(checksumBufPtr, checksumSize);
11565 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11566 ALOGE("glGetMultisamplefv: GL communication error, please report this issue to b.android.com.\n");
11567 abort();
11568 }
11569 }
11570 }
11571
glFramebufferParameteri_enc(void * self,GLenum target,GLenum pname,GLint param)11572 void glFramebufferParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
11573 {
11574 ENCODER_DEBUG_LOG("glFramebufferParameteri(target:0x%08x, pname:0x%08x, param:%d)", target, pname, param);
11575 AEMU_SCOPED_TRACE("glFramebufferParameteri encode");
11576
11577 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11578 IOStream *stream = ctx->m_stream;
11579 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11580 bool useChecksum = checksumCalculator->getVersion() > 0;
11581
11582 unsigned char *ptr;
11583 unsigned char *buf;
11584 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
11585 const size_t checksumSize = checksumCalculator->checksumByteSize();
11586 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11587 buf = stream->alloc(totalSize);
11588 ptr = buf;
11589 int tmp = OP_glFramebufferParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
11590 memcpy(ptr, &totalSize, 4); ptr += 4;
11591
11592 memcpy(ptr, &target, 4); ptr += 4;
11593 memcpy(ptr, &pname, 4); ptr += 4;
11594 memcpy(ptr, ¶m, 4); ptr += 4;
11595
11596 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11597 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11598
11599 }
11600
glGetFramebufferParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)11601 void glGetFramebufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
11602 {
11603 ENCODER_DEBUG_LOG("glGetFramebufferParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
11604 AEMU_SCOPED_TRACE("glGetFramebufferParameteriv encode");
11605
11606 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11607 IOStream *stream = ctx->m_stream;
11608 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11609 bool useChecksum = checksumCalculator->getVersion() > 0;
11610
11611 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
11612 unsigned char *ptr;
11613 unsigned char *buf;
11614 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
11615 const size_t checksumSize = checksumCalculator->checksumByteSize();
11616 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11617 buf = stream->alloc(totalSize);
11618 ptr = buf;
11619 int tmp = OP_glGetFramebufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
11620 memcpy(ptr, &totalSize, 4); ptr += 4;
11621
11622 memcpy(ptr, &target, 4); ptr += 4;
11623 memcpy(ptr, &pname, 4); ptr += 4;
11624 memcpy(ptr, &__size_params, 4); ptr += 4;
11625
11626 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11627 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11628
11629 stream->readback(params, __size_params);
11630 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
11631 if (useChecksum) {
11632 unsigned char *checksumBufPtr = NULL;
11633 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11634 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11635 stream->readback(checksumBufPtr, checksumSize);
11636 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11637 ALOGE("glGetFramebufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
11638 abort();
11639 }
11640 }
11641 }
11642
glGetTexLevelParameterfv_enc(void * self,GLenum target,GLint level,GLenum pname,GLfloat * params)11643 void glGetTexLevelParameterfv_enc(void *self , GLenum target, GLint level, GLenum pname, GLfloat* params)
11644 {
11645 ENCODER_DEBUG_LOG("glGetTexLevelParameterfv(target:0x%08x, level:%d, pname:0x%08x, params:0x%08x)", target, level, pname, params);
11646 AEMU_SCOPED_TRACE("glGetTexLevelParameterfv encode");
11647
11648 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11649 IOStream *stream = ctx->m_stream;
11650 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11651 bool useChecksum = checksumCalculator->getVersion() > 0;
11652
11653 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
11654 unsigned char *ptr;
11655 unsigned char *buf;
11656 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
11657 const size_t checksumSize = checksumCalculator->checksumByteSize();
11658 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11659 buf = stream->alloc(totalSize);
11660 ptr = buf;
11661 int tmp = OP_glGetTexLevelParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
11662 memcpy(ptr, &totalSize, 4); ptr += 4;
11663
11664 memcpy(ptr, &target, 4); ptr += 4;
11665 memcpy(ptr, &level, 4); ptr += 4;
11666 memcpy(ptr, &pname, 4); ptr += 4;
11667 memcpy(ptr, &__size_params, 4); ptr += 4;
11668
11669 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11670 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11671
11672 stream->readback(params, __size_params);
11673 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
11674 if (useChecksum) {
11675 unsigned char *checksumBufPtr = NULL;
11676 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11677 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11678 stream->readback(checksumBufPtr, checksumSize);
11679 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11680 ALOGE("glGetTexLevelParameterfv: GL communication error, please report this issue to b.android.com.\n");
11681 abort();
11682 }
11683 }
11684 }
11685
glGetTexLevelParameteriv_enc(void * self,GLenum target,GLint level,GLenum pname,GLint * params)11686 void glGetTexLevelParameteriv_enc(void *self , GLenum target, GLint level, GLenum pname, GLint* params)
11687 {
11688 ENCODER_DEBUG_LOG("glGetTexLevelParameteriv(target:0x%08x, level:%d, pname:0x%08x, params:0x%08x)", target, level, pname, params);
11689 AEMU_SCOPED_TRACE("glGetTexLevelParameteriv encode");
11690
11691 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11692 IOStream *stream = ctx->m_stream;
11693 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11694 bool useChecksum = checksumCalculator->getVersion() > 0;
11695
11696 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
11697 unsigned char *ptr;
11698 unsigned char *buf;
11699 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
11700 const size_t checksumSize = checksumCalculator->checksumByteSize();
11701 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11702 buf = stream->alloc(totalSize);
11703 ptr = buf;
11704 int tmp = OP_glGetTexLevelParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
11705 memcpy(ptr, &totalSize, 4); ptr += 4;
11706
11707 memcpy(ptr, &target, 4); ptr += 4;
11708 memcpy(ptr, &level, 4); ptr += 4;
11709 memcpy(ptr, &pname, 4); ptr += 4;
11710 memcpy(ptr, &__size_params, 4); ptr += 4;
11711
11712 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11713 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11714
11715 stream->readback(params, __size_params);
11716 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
11717 if (useChecksum) {
11718 unsigned char *checksumBufPtr = NULL;
11719 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11720 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11721 stream->readback(checksumBufPtr, checksumSize);
11722 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11723 ALOGE("glGetTexLevelParameteriv: GL communication error, please report this issue to b.android.com.\n");
11724 abort();
11725 }
11726 }
11727 }
11728
glMapBufferRangeDMA_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr)11729 void glMapBufferRangeDMA_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr)
11730 {
11731 ENCODER_DEBUG_LOG("glMapBufferRangeDMA(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, paddr:0x%016lx)", target, offset, length, access, paddr);
11732 AEMU_SCOPED_TRACE("glMapBufferRangeDMA encode");
11733
11734 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11735 IOStream *stream = ctx->m_stream;
11736 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11737 bool useChecksum = checksumCalculator->getVersion() > 0;
11738
11739 unsigned char *ptr;
11740 unsigned char *buf;
11741 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8;
11742 const size_t checksumSize = checksumCalculator->checksumByteSize();
11743 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11744 buf = stream->alloc(totalSize);
11745 ptr = buf;
11746 int tmp = OP_glMapBufferRangeDMA;memcpy(ptr, &tmp, 4); ptr += 4;
11747 memcpy(ptr, &totalSize, 4); ptr += 4;
11748
11749 memcpy(ptr, &target, 4); ptr += 4;
11750 memcpy(ptr, &offset, 4); ptr += 4;
11751 memcpy(ptr, &length, 4); ptr += 4;
11752 memcpy(ptr, &access, 4); ptr += 4;
11753 memcpy(ptr, &paddr, 8); ptr += 8;
11754
11755 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11756 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11757
11758 }
11759
glUnmapBufferDMA_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr,GLboolean * out_res)11760 void glUnmapBufferDMA_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr, GLboolean* out_res)
11761 {
11762 ENCODER_DEBUG_LOG("glUnmapBufferDMA(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, paddr:0x%016lx, out_res:0x%08x)", target, offset, length, access, paddr, out_res);
11763 AEMU_SCOPED_TRACE("glUnmapBufferDMA encode");
11764
11765 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11766 IOStream *stream = ctx->m_stream;
11767 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11768 bool useChecksum = checksumCalculator->getVersion() > 0;
11769
11770 const unsigned int __size_out_res = (sizeof(GLboolean));
11771 unsigned char *ptr;
11772 unsigned char *buf;
11773 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8 + 0 + 1*4;
11774 const size_t checksumSize = checksumCalculator->checksumByteSize();
11775 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11776 buf = stream->alloc(totalSize);
11777 ptr = buf;
11778 int tmp = OP_glUnmapBufferDMA;memcpy(ptr, &tmp, 4); ptr += 4;
11779 memcpy(ptr, &totalSize, 4); ptr += 4;
11780
11781 memcpy(ptr, &target, 4); ptr += 4;
11782 memcpy(ptr, &offset, 4); ptr += 4;
11783 memcpy(ptr, &length, 4); ptr += 4;
11784 memcpy(ptr, &access, 4); ptr += 4;
11785 memcpy(ptr, &paddr, 8); ptr += 8;
11786 memcpy(ptr, &__size_out_res, 4); ptr += 4;
11787
11788 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11789 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11790
11791 stream->readback(out_res, __size_out_res);
11792 if (useChecksum) checksumCalculator->addBuffer(out_res, __size_out_res);
11793 if (useChecksum) {
11794 unsigned char *checksumBufPtr = NULL;
11795 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11796 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11797 stream->readback(checksumBufPtr, checksumSize);
11798 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11799 ALOGE("glUnmapBufferDMA: GL communication error, please report this issue to b.android.com.\n");
11800 abort();
11801 }
11802 }
11803 }
11804
glMapBufferRangeDirect_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr)11805 uint64_t glMapBufferRangeDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr)
11806 {
11807 ENCODER_DEBUG_LOG("glMapBufferRangeDirect(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, paddr:0x%016lx)", target, offset, length, access, paddr);
11808 AEMU_SCOPED_TRACE("glMapBufferRangeDirect encode");
11809
11810 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11811 IOStream *stream = ctx->m_stream;
11812 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11813 bool useChecksum = checksumCalculator->getVersion() > 0;
11814
11815 unsigned char *ptr;
11816 unsigned char *buf;
11817 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8;
11818 const size_t checksumSize = checksumCalculator->checksumByteSize();
11819 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11820 buf = stream->alloc(totalSize);
11821 ptr = buf;
11822 int tmp = OP_glMapBufferRangeDirect;memcpy(ptr, &tmp, 4); ptr += 4;
11823 memcpy(ptr, &totalSize, 4); ptr += 4;
11824
11825 memcpy(ptr, &target, 4); ptr += 4;
11826 memcpy(ptr, &offset, 4); ptr += 4;
11827 memcpy(ptr, &length, 4); ptr += 4;
11828 memcpy(ptr, &access, 4); ptr += 4;
11829 memcpy(ptr, &paddr, 8); ptr += 8;
11830
11831 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11832 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11833
11834
11835 uint64_t retval;
11836 stream->readback(&retval, 8);
11837 if (useChecksum) checksumCalculator->addBuffer(&retval, 8);
11838 if (useChecksum) {
11839 unsigned char *checksumBufPtr = NULL;
11840 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11841 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11842 stream->readback(checksumBufPtr, checksumSize);
11843 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11844 ALOGE("glMapBufferRangeDirect: GL communication error, please report this issue to b.android.com.\n");
11845 abort();
11846 }
11847 }
11848 return retval;
11849 }
11850
glUnmapBufferDirect_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr,uint64_t guest_ptr,GLboolean * out_res)11851 void glUnmapBufferDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr, uint64_t guest_ptr, GLboolean* out_res)
11852 {
11853 ENCODER_DEBUG_LOG("glUnmapBufferDirect(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, paddr:0x%016lx, guest_ptr:0x%016lx, out_res:0x%08x)", target, offset, length, access, paddr, guest_ptr, out_res);
11854 AEMU_SCOPED_TRACE("glUnmapBufferDirect encode");
11855
11856 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11857 IOStream *stream = ctx->m_stream;
11858 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11859 bool useChecksum = checksumCalculator->getVersion() > 0;
11860
11861 const unsigned int __size_out_res = (sizeof(GLboolean));
11862 unsigned char *ptr;
11863 unsigned char *buf;
11864 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8 + 8 + 0 + 1*4;
11865 const size_t checksumSize = checksumCalculator->checksumByteSize();
11866 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11867 buf = stream->alloc(totalSize);
11868 ptr = buf;
11869 int tmp = OP_glUnmapBufferDirect;memcpy(ptr, &tmp, 4); ptr += 4;
11870 memcpy(ptr, &totalSize, 4); ptr += 4;
11871
11872 memcpy(ptr, &target, 4); ptr += 4;
11873 memcpy(ptr, &offset, 4); ptr += 4;
11874 memcpy(ptr, &length, 4); ptr += 4;
11875 memcpy(ptr, &access, 4); ptr += 4;
11876 memcpy(ptr, &paddr, 8); ptr += 8;
11877 memcpy(ptr, &guest_ptr, 8); ptr += 8;
11878 memcpy(ptr, &__size_out_res, 4); ptr += 4;
11879
11880 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11881 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11882
11883 stream->readback(out_res, __size_out_res);
11884 if (useChecksum) checksumCalculator->addBuffer(out_res, __size_out_res);
11885 if (useChecksum) {
11886 unsigned char *checksumBufPtr = NULL;
11887 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11888 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11889 stream->readback(checksumBufPtr, checksumSize);
11890 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11891 ALOGE("glUnmapBufferDirect: GL communication error, please report this issue to b.android.com.\n");
11892 abort();
11893 }
11894 }
11895 }
11896
glFlushMappedBufferRangeDirect_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access)11897 void glFlushMappedBufferRangeDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
11898 {
11899 ENCODER_DEBUG_LOG("glFlushMappedBufferRangeDirect(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x)", target, offset, length, access);
11900 AEMU_SCOPED_TRACE("glFlushMappedBufferRangeDirect encode");
11901
11902 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11903 IOStream *stream = ctx->m_stream;
11904 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11905 bool useChecksum = checksumCalculator->getVersion() > 0;
11906
11907 unsigned char *ptr;
11908 unsigned char *buf;
11909 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
11910 const size_t checksumSize = checksumCalculator->checksumByteSize();
11911 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11912 buf = stream->alloc(totalSize);
11913 ptr = buf;
11914 int tmp = OP_glFlushMappedBufferRangeDirect;memcpy(ptr, &tmp, 4); ptr += 4;
11915 memcpy(ptr, &totalSize, 4); ptr += 4;
11916
11917 memcpy(ptr, &target, 4); ptr += 4;
11918 memcpy(ptr, &offset, 4); ptr += 4;
11919 memcpy(ptr, &length, 4); ptr += 4;
11920 memcpy(ptr, &access, 4); ptr += 4;
11921
11922 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11923 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11924
11925 }
11926
glGetGraphicsResetStatusEXT_enc(void * self)11927 GLenum glGetGraphicsResetStatusEXT_enc(void *self )
11928 {
11929 ENCODER_DEBUG_LOG("glGetGraphicsResetStatusEXT()");
11930 AEMU_SCOPED_TRACE("glGetGraphicsResetStatusEXT encode");
11931
11932 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11933 IOStream *stream = ctx->m_stream;
11934 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11935 bool useChecksum = checksumCalculator->getVersion() > 0;
11936
11937 unsigned char *ptr;
11938 unsigned char *buf;
11939 const size_t sizeWithoutChecksum = 8;
11940 const size_t checksumSize = checksumCalculator->checksumByteSize();
11941 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11942 buf = stream->alloc(totalSize);
11943 ptr = buf;
11944 int tmp = OP_glGetGraphicsResetStatusEXT;memcpy(ptr, &tmp, 4); ptr += 4;
11945 memcpy(ptr, &totalSize, 4); ptr += 4;
11946
11947
11948 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11949 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11950
11951
11952 GLenum retval;
11953 stream->readback(&retval, 4);
11954 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
11955 if (useChecksum) {
11956 unsigned char *checksumBufPtr = NULL;
11957 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11958 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11959 stream->readback(checksumBufPtr, checksumSize);
11960 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11961 ALOGE("glGetGraphicsResetStatusEXT: GL communication error, please report this issue to b.android.com.\n");
11962 abort();
11963 }
11964 }
11965 return retval;
11966 }
11967
glReadnPixelsEXT_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,GLvoid * data)11968 void glReadnPixelsEXT_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid* data)
11969 {
11970 ENCODER_DEBUG_LOG("glReadnPixelsEXT(x:%d, y:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, bufSize:%d, data:0x%08x)", x, y, width, height, format, type, bufSize, data);
11971 AEMU_SCOPED_TRACE("glReadnPixelsEXT encode");
11972
11973 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11974 IOStream *stream = ctx->m_stream;
11975 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11976 bool useChecksum = checksumCalculator->getVersion() > 0;
11977
11978 const unsigned int __size_data = bufSize;
11979 unsigned char *ptr;
11980 unsigned char *buf;
11981 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 0 + 1*4;
11982 const size_t checksumSize = checksumCalculator->checksumByteSize();
11983 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11984 buf = stream->alloc(totalSize);
11985 ptr = buf;
11986 int tmp = OP_glReadnPixelsEXT;memcpy(ptr, &tmp, 4); ptr += 4;
11987 memcpy(ptr, &totalSize, 4); ptr += 4;
11988
11989 memcpy(ptr, &x, 4); ptr += 4;
11990 memcpy(ptr, &y, 4); ptr += 4;
11991 memcpy(ptr, &width, 4); ptr += 4;
11992 memcpy(ptr, &height, 4); ptr += 4;
11993 memcpy(ptr, &format, 4); ptr += 4;
11994 memcpy(ptr, &type, 4); ptr += 4;
11995 memcpy(ptr, &bufSize, 4); ptr += 4;
11996 memcpy(ptr, &__size_data, 4); ptr += 4;
11997
11998 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11999 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12000
12001 stream->readback(data, __size_data);
12002 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
12003 if (useChecksum) {
12004 unsigned char *checksumBufPtr = NULL;
12005 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
12006 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12007 stream->readback(checksumBufPtr, checksumSize);
12008 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12009 ALOGE("glReadnPixelsEXT: GL communication error, please report this issue to b.android.com.\n");
12010 abort();
12011 }
12012 }
12013 }
12014
glGetnUniformfvEXT_enc(void * self,GLuint program,GLint location,GLsizei bufSize,GLfloat * params)12015 void glGetnUniformfvEXT_enc(void *self , GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
12016 {
12017 ENCODER_DEBUG_LOG("glGetnUniformfvEXT(program:%u, location:%d, bufSize:%d, params:0x%08x)", program, location, bufSize, params);
12018 AEMU_SCOPED_TRACE("glGetnUniformfvEXT encode");
12019
12020 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12021 IOStream *stream = ctx->m_stream;
12022 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12023 bool useChecksum = checksumCalculator->getVersion() > 0;
12024
12025 const unsigned int __size_params = bufSize;
12026 unsigned char *ptr;
12027 unsigned char *buf;
12028 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
12029 const size_t checksumSize = checksumCalculator->checksumByteSize();
12030 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12031 buf = stream->alloc(totalSize);
12032 ptr = buf;
12033 int tmp = OP_glGetnUniformfvEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12034 memcpy(ptr, &totalSize, 4); ptr += 4;
12035
12036 memcpy(ptr, &program, 4); ptr += 4;
12037 memcpy(ptr, &location, 4); ptr += 4;
12038 memcpy(ptr, &bufSize, 4); ptr += 4;
12039 memcpy(ptr, &__size_params, 4); ptr += 4;
12040
12041 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12042 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12043
12044 stream->readback(params, __size_params);
12045 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
12046 if (useChecksum) {
12047 unsigned char *checksumBufPtr = NULL;
12048 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
12049 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12050 stream->readback(checksumBufPtr, checksumSize);
12051 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12052 ALOGE("glGetnUniformfvEXT: GL communication error, please report this issue to b.android.com.\n");
12053 abort();
12054 }
12055 }
12056 }
12057
glGetnUniformivEXT_enc(void * self,GLuint program,GLint location,GLsizei bufSize,GLint * params)12058 void glGetnUniformivEXT_enc(void *self , GLuint program, GLint location, GLsizei bufSize, GLint* params)
12059 {
12060 ENCODER_DEBUG_LOG("glGetnUniformivEXT(program:%u, location:%d, bufSize:%d, params:0x%08x)", program, location, bufSize, params);
12061 AEMU_SCOPED_TRACE("glGetnUniformivEXT encode");
12062
12063 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12064 IOStream *stream = ctx->m_stream;
12065 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12066 bool useChecksum = checksumCalculator->getVersion() > 0;
12067
12068 const unsigned int __size_params = bufSize;
12069 unsigned char *ptr;
12070 unsigned char *buf;
12071 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
12072 const size_t checksumSize = checksumCalculator->checksumByteSize();
12073 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12074 buf = stream->alloc(totalSize);
12075 ptr = buf;
12076 int tmp = OP_glGetnUniformivEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12077 memcpy(ptr, &totalSize, 4); ptr += 4;
12078
12079 memcpy(ptr, &program, 4); ptr += 4;
12080 memcpy(ptr, &location, 4); ptr += 4;
12081 memcpy(ptr, &bufSize, 4); ptr += 4;
12082 memcpy(ptr, &__size_params, 4); ptr += 4;
12083
12084 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12085 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12086
12087 stream->readback(params, __size_params);
12088 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
12089 if (useChecksum) {
12090 unsigned char *checksumBufPtr = NULL;
12091 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
12092 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12093 stream->readback(checksumBufPtr, checksumSize);
12094 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12095 ALOGE("glGetnUniformivEXT: GL communication error, please report this issue to b.android.com.\n");
12096 abort();
12097 }
12098 }
12099 }
12100
glDrawArraysNullAEMU_enc(void * self,GLenum mode,GLint first,GLsizei count)12101 void glDrawArraysNullAEMU_enc(void *self , GLenum mode, GLint first, GLsizei count)
12102 {
12103 ENCODER_DEBUG_LOG("glDrawArraysNullAEMU(mode:0x%08x, first:%d, count:%d)", mode, first, count);
12104 AEMU_SCOPED_TRACE("glDrawArraysNullAEMU encode");
12105
12106 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12107 IOStream *stream = ctx->m_stream;
12108 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12109 bool useChecksum = checksumCalculator->getVersion() > 0;
12110
12111 unsigned char *ptr;
12112 unsigned char *buf;
12113 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
12114 const size_t checksumSize = checksumCalculator->checksumByteSize();
12115 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12116 buf = stream->alloc(totalSize);
12117 ptr = buf;
12118 int tmp = OP_glDrawArraysNullAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12119 memcpy(ptr, &totalSize, 4); ptr += 4;
12120
12121 memcpy(ptr, &mode, 4); ptr += 4;
12122 memcpy(ptr, &first, 4); ptr += 4;
12123 memcpy(ptr, &count, 4); ptr += 4;
12124
12125 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12126 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12127
12128 }
12129
glDrawElementsOffsetNullAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,GLuint offset)12130 void glDrawElementsOffsetNullAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset)
12131 {
12132 ENCODER_DEBUG_LOG("glDrawElementsOffsetNullAEMU(mode:0x%08x, count:%d, type:0x%08x, offset:%u)", mode, count, type, offset);
12133 AEMU_SCOPED_TRACE("glDrawElementsOffsetNullAEMU encode");
12134
12135 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12136 IOStream *stream = ctx->m_stream;
12137 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12138 bool useChecksum = checksumCalculator->getVersion() > 0;
12139
12140 unsigned char *ptr;
12141 unsigned char *buf;
12142 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
12143 const size_t checksumSize = checksumCalculator->checksumByteSize();
12144 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12145 buf = stream->alloc(totalSize);
12146 ptr = buf;
12147 int tmp = OP_glDrawElementsOffsetNullAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12148 memcpy(ptr, &totalSize, 4); ptr += 4;
12149
12150 memcpy(ptr, &mode, 4); ptr += 4;
12151 memcpy(ptr, &count, 4); ptr += 4;
12152 memcpy(ptr, &type, 4); ptr += 4;
12153 memcpy(ptr, &offset, 4); ptr += 4;
12154
12155 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12156 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12157
12158 }
12159
glDrawElementsDataNullAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,void * data,GLuint datalen)12160 void glDrawElementsDataNullAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
12161 {
12162 ENCODER_DEBUG_LOG("glDrawElementsDataNullAEMU(mode:0x%08x, count:%d, type:0x%08x, data:0x%08x, datalen:%u)", mode, count, type, data, datalen);
12163 AEMU_SCOPED_TRACE("glDrawElementsDataNullAEMU encode");
12164
12165 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12166 IOStream *stream = ctx->m_stream;
12167 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12168 bool useChecksum = checksumCalculator->getVersion() > 0;
12169
12170 const unsigned int __size_data = datalen;
12171 unsigned char *ptr;
12172 unsigned char *buf;
12173 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
12174 const size_t checksumSize = checksumCalculator->checksumByteSize();
12175 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12176 buf = stream->alloc(totalSize);
12177 ptr = buf;
12178 int tmp = OP_glDrawElementsDataNullAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12179 memcpy(ptr, &totalSize, 4); ptr += 4;
12180
12181 memcpy(ptr, &mode, 4); ptr += 4;
12182 memcpy(ptr, &count, 4); ptr += 4;
12183 memcpy(ptr, &type, 4); ptr += 4;
12184 memcpy(ptr, &__size_data, 4); ptr += 4;
12185 memcpy(ptr, data, __size_data);ptr += __size_data;
12186 memcpy(ptr, &datalen, 4); ptr += 4;
12187
12188 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12189 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12190
12191 }
12192
glUnmapBufferAsyncAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer,GLboolean * out_res)12193 void glUnmapBufferAsyncAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer, GLboolean* out_res)
12194 {
12195 ENCODER_DEBUG_LOG("glUnmapBufferAsyncAEMU(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, guest_buffer:0x%08x, out_res:0x%08x)", target, offset, length, access, guest_buffer, out_res);
12196 AEMU_SCOPED_TRACE("glUnmapBufferAsyncAEMU encode");
12197
12198 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12199 IOStream *stream = ctx->m_stream;
12200 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12201 bool useChecksum = checksumCalculator->getVersion() > 0;
12202
12203 const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ? length : 0);
12204 const unsigned int __size_out_res = (sizeof(GLboolean));
12205 unsigned char *ptr;
12206 unsigned char *buf;
12207 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + __size_out_res + 2*4;
12208 const size_t checksumSize = checksumCalculator->checksumByteSize();
12209 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12210 buf = stream->alloc(8 + 4 + 4 + 4 + 4);
12211 ptr = buf;
12212 int tmp = OP_glUnmapBufferAsyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12213 memcpy(ptr, &totalSize, 4); ptr += 4;
12214
12215 memcpy(ptr, &target, 4); ptr += 4;
12216 memcpy(ptr, &offset, 4); ptr += 4;
12217 memcpy(ptr, &length, 4); ptr += 4;
12218 memcpy(ptr, &access, 4); ptr += 4;
12219
12220 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12221 stream->flush();
12222 stream->writeFully(&__size_guest_buffer,4);
12223 if (useChecksum) checksumCalculator->addBuffer(&__size_guest_buffer,4);
12224 if (guest_buffer != NULL) {
12225 stream->writeFully(guest_buffer, __size_guest_buffer);
12226 if (useChecksum) checksumCalculator->addBuffer(guest_buffer, __size_guest_buffer);
12227 }
12228 buf = stream->alloc(__size_out_res + 1*4);
12229 ptr = buf;
12230 memcpy(ptr, &__size_out_res, 4); ptr += 4;
12231 memcpy(ptr, out_res, __size_out_res);ptr += __size_out_res;
12232
12233 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12234 buf = stream->alloc(checksumSize);
12235 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
12236
12237 }
12238
glFlushMappedBufferRangeAEMU2_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer)12239 void glFlushMappedBufferRangeAEMU2_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer)
12240 {
12241 ENCODER_DEBUG_LOG("glFlushMappedBufferRangeAEMU2(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, guest_buffer:0x%08x)", target, offset, length, access, guest_buffer);
12242 AEMU_SCOPED_TRACE("glFlushMappedBufferRangeAEMU2 encode");
12243
12244 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12245 IOStream *stream = ctx->m_stream;
12246 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12247 bool useChecksum = checksumCalculator->getVersion() > 0;
12248
12249 const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ? length : 0);
12250 unsigned char *ptr;
12251 unsigned char *buf;
12252 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + 1*4;
12253 const size_t checksumSize = checksumCalculator->checksumByteSize();
12254 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12255 buf = stream->alloc(8 + 4 + 4 + 4 + 4);
12256 ptr = buf;
12257 int tmp = OP_glFlushMappedBufferRangeAEMU2;memcpy(ptr, &tmp, 4); ptr += 4;
12258 memcpy(ptr, &totalSize, 4); ptr += 4;
12259
12260 memcpy(ptr, &target, 4); ptr += 4;
12261 memcpy(ptr, &offset, 4); ptr += 4;
12262 memcpy(ptr, &length, 4); ptr += 4;
12263 memcpy(ptr, &access, 4); ptr += 4;
12264
12265 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12266 stream->flush();
12267 stream->writeFully(&__size_guest_buffer,4);
12268 if (useChecksum) checksumCalculator->addBuffer(&__size_guest_buffer,4);
12269 if (guest_buffer != NULL) {
12270 stream->writeFully(guest_buffer, __size_guest_buffer);
12271 if (useChecksum) checksumCalculator->addBuffer(guest_buffer, __size_guest_buffer);
12272 }
12273 buf = stream->alloc(checksumSize);
12274 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
12275
12276 }
12277
glBufferDataSyncAEMU_enc(void * self,GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)12278 GLboolean glBufferDataSyncAEMU_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
12279 {
12280 ENCODER_DEBUG_LOG("glBufferDataSyncAEMU(target:0x%08x, size:0x%08lx, data:0x%08x, usage:0x%08x)", target, size, data, usage);
12281 AEMU_SCOPED_TRACE("glBufferDataSyncAEMU encode");
12282
12283 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12284 IOStream *stream = ctx->m_stream;
12285 ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12286 bool useChecksum = checksumCalculator->getVersion() > 0;
12287
12288 const unsigned int __size_data = ((data != NULL) ? size : 0);
12289 unsigned char *ptr;
12290 unsigned char *buf;
12291 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
12292 const size_t checksumSize = checksumCalculator->checksumByteSize();
12293 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12294 buf = stream->alloc(totalSize);
12295 ptr = buf;
12296 int tmp = OP_glBufferDataSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12297 memcpy(ptr, &totalSize, 4); ptr += 4;
12298
12299 memcpy(ptr, &target, 4); ptr += 4;
12300 memcpy(ptr, &size, 4); ptr += 4;
12301 memcpy(ptr, &__size_data, 4); ptr += 4;
12302 if (data != NULL) memcpy(ptr, data, __size_data);ptr += __size_data;
12303 memcpy(ptr, &usage, 4); ptr += 4;
12304
12305 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12306 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12307
12308
12309 GLboolean retval;
12310 stream->readback(&retval, 1);
12311 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
12312 if (useChecksum) {
12313 unsigned char *checksumBufPtr = NULL;
12314 unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
12315 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12316 stream->readback(checksumBufPtr, checksumSize);
12317 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12318 ALOGE("glBufferDataSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
12319 abort();
12320 }
12321 }
12322 return retval;
12323 }
12324
12325 } // namespace
12326
gl2_encoder_context_t(IOStream * stream,ChecksumCalculator * checksumCalculator)12327 gl2_encoder_context_t::gl2_encoder_context_t(IOStream *stream, ChecksumCalculator *checksumCalculator)
12328 {
12329 m_stream = stream;
12330 m_checksumCalculator = checksumCalculator;
12331
12332 this->glActiveTexture = &glActiveTexture_enc;
12333 this->glAttachShader = &glAttachShader_enc;
12334 this->glBindAttribLocation = &glBindAttribLocation_enc;
12335 this->glBindBuffer = &glBindBuffer_enc;
12336 this->glBindFramebuffer = &glBindFramebuffer_enc;
12337 this->glBindRenderbuffer = &glBindRenderbuffer_enc;
12338 this->glBindTexture = &glBindTexture_enc;
12339 this->glBlendColor = &glBlendColor_enc;
12340 this->glBlendEquation = &glBlendEquation_enc;
12341 this->glBlendEquationSeparate = &glBlendEquationSeparate_enc;
12342 this->glBlendFunc = &glBlendFunc_enc;
12343 this->glBlendFuncSeparate = &glBlendFuncSeparate_enc;
12344 this->glBufferData = &glBufferData_enc;
12345 this->glBufferSubData = &glBufferSubData_enc;
12346 this->glCheckFramebufferStatus = &glCheckFramebufferStatus_enc;
12347 this->glClear = &glClear_enc;
12348 this->glClearColor = &glClearColor_enc;
12349 this->glClearDepthf = &glClearDepthf_enc;
12350 this->glClearStencil = &glClearStencil_enc;
12351 this->glColorMask = &glColorMask_enc;
12352 this->glCompileShader = &glCompileShader_enc;
12353 this->glCompressedTexImage2D = &glCompressedTexImage2D_enc;
12354 this->glCompressedTexSubImage2D = &glCompressedTexSubImage2D_enc;
12355 this->glCopyTexImage2D = &glCopyTexImage2D_enc;
12356 this->glCopyTexSubImage2D = &glCopyTexSubImage2D_enc;
12357 this->glCreateProgram = &glCreateProgram_enc;
12358 this->glCreateShader = &glCreateShader_enc;
12359 this->glCullFace = &glCullFace_enc;
12360 this->glDeleteBuffers = &glDeleteBuffers_enc;
12361 this->glDeleteFramebuffers = &glDeleteFramebuffers_enc;
12362 this->glDeleteProgram = &glDeleteProgram_enc;
12363 this->glDeleteRenderbuffers = &glDeleteRenderbuffers_enc;
12364 this->glDeleteShader = &glDeleteShader_enc;
12365 this->glDeleteTextures = &glDeleteTextures_enc;
12366 this->glDepthFunc = &glDepthFunc_enc;
12367 this->glDepthMask = &glDepthMask_enc;
12368 this->glDepthRangef = &glDepthRangef_enc;
12369 this->glDetachShader = &glDetachShader_enc;
12370 this->glDisable = &glDisable_enc;
12371 this->glDisableVertexAttribArray = &glDisableVertexAttribArray_enc;
12372 this->glDrawArrays = &glDrawArrays_enc;
12373 this->glDrawElements = (glDrawElements_client_proc_t) &enc_unsupported;
12374 this->glEnable = &glEnable_enc;
12375 this->glEnableVertexAttribArray = &glEnableVertexAttribArray_enc;
12376 this->glFinish = &glFinish_enc;
12377 this->glFlush = &glFlush_enc;
12378 this->glFramebufferRenderbuffer = &glFramebufferRenderbuffer_enc;
12379 this->glFramebufferTexture2D = &glFramebufferTexture2D_enc;
12380 this->glFrontFace = &glFrontFace_enc;
12381 this->glGenBuffers = &glGenBuffers_enc;
12382 this->glGenerateMipmap = &glGenerateMipmap_enc;
12383 this->glGenFramebuffers = &glGenFramebuffers_enc;
12384 this->glGenRenderbuffers = &glGenRenderbuffers_enc;
12385 this->glGenTextures = &glGenTextures_enc;
12386 this->glGetActiveAttrib = &glGetActiveAttrib_enc;
12387 this->glGetActiveUniform = &glGetActiveUniform_enc;
12388 this->glGetAttachedShaders = &glGetAttachedShaders_enc;
12389 this->glGetAttribLocation = &glGetAttribLocation_enc;
12390 this->glGetBooleanv = &glGetBooleanv_enc;
12391 this->glGetBufferParameteriv = &glGetBufferParameteriv_enc;
12392 this->glGetError = &glGetError_enc;
12393 this->glGetFloatv = &glGetFloatv_enc;
12394 this->glGetFramebufferAttachmentParameteriv = &glGetFramebufferAttachmentParameteriv_enc;
12395 this->glGetIntegerv = &glGetIntegerv_enc;
12396 this->glGetProgramiv = &glGetProgramiv_enc;
12397 this->glGetProgramInfoLog = &glGetProgramInfoLog_enc;
12398 this->glGetRenderbufferParameteriv = &glGetRenderbufferParameteriv_enc;
12399 this->glGetShaderiv = &glGetShaderiv_enc;
12400 this->glGetShaderInfoLog = &glGetShaderInfoLog_enc;
12401 this->glGetShaderPrecisionFormat = &glGetShaderPrecisionFormat_enc;
12402 this->glGetShaderSource = &glGetShaderSource_enc;
12403 this->glGetString = (glGetString_client_proc_t) &enc_unsupported;
12404 this->glGetTexParameterfv = &glGetTexParameterfv_enc;
12405 this->glGetTexParameteriv = &glGetTexParameteriv_enc;
12406 this->glGetUniformfv = &glGetUniformfv_enc;
12407 this->glGetUniformiv = &glGetUniformiv_enc;
12408 this->glGetUniformLocation = &glGetUniformLocation_enc;
12409 this->glGetVertexAttribfv = &glGetVertexAttribfv_enc;
12410 this->glGetVertexAttribiv = &glGetVertexAttribiv_enc;
12411 this->glGetVertexAttribPointerv = (glGetVertexAttribPointerv_client_proc_t) &enc_unsupported;
12412 this->glHint = &glHint_enc;
12413 this->glIsBuffer = &glIsBuffer_enc;
12414 this->glIsEnabled = &glIsEnabled_enc;
12415 this->glIsFramebuffer = &glIsFramebuffer_enc;
12416 this->glIsProgram = &glIsProgram_enc;
12417 this->glIsRenderbuffer = &glIsRenderbuffer_enc;
12418 this->glIsShader = &glIsShader_enc;
12419 this->glIsTexture = &glIsTexture_enc;
12420 this->glLineWidth = &glLineWidth_enc;
12421 this->glLinkProgram = &glLinkProgram_enc;
12422 this->glPixelStorei = &glPixelStorei_enc;
12423 this->glPolygonOffset = &glPolygonOffset_enc;
12424 this->glReadPixels = &glReadPixels_enc;
12425 this->glReleaseShaderCompiler = &glReleaseShaderCompiler_enc;
12426 this->glRenderbufferStorage = &glRenderbufferStorage_enc;
12427 this->glSampleCoverage = &glSampleCoverage_enc;
12428 this->glScissor = &glScissor_enc;
12429 this->glShaderBinary = (glShaderBinary_client_proc_t) &enc_unsupported;
12430 this->glShaderSource = (glShaderSource_client_proc_t) &enc_unsupported;
12431 this->glStencilFunc = &glStencilFunc_enc;
12432 this->glStencilFuncSeparate = &glStencilFuncSeparate_enc;
12433 this->glStencilMask = &glStencilMask_enc;
12434 this->glStencilMaskSeparate = &glStencilMaskSeparate_enc;
12435 this->glStencilOp = &glStencilOp_enc;
12436 this->glStencilOpSeparate = &glStencilOpSeparate_enc;
12437 this->glTexImage2D = &glTexImage2D_enc;
12438 this->glTexParameterf = &glTexParameterf_enc;
12439 this->glTexParameterfv = &glTexParameterfv_enc;
12440 this->glTexParameteri = &glTexParameteri_enc;
12441 this->glTexParameteriv = &glTexParameteriv_enc;
12442 this->glTexSubImage2D = &glTexSubImage2D_enc;
12443 this->glUniform1f = &glUniform1f_enc;
12444 this->glUniform1fv = &glUniform1fv_enc;
12445 this->glUniform1i = &glUniform1i_enc;
12446 this->glUniform1iv = &glUniform1iv_enc;
12447 this->glUniform2f = &glUniform2f_enc;
12448 this->glUniform2fv = &glUniform2fv_enc;
12449 this->glUniform2i = &glUniform2i_enc;
12450 this->glUniform2iv = &glUniform2iv_enc;
12451 this->glUniform3f = &glUniform3f_enc;
12452 this->glUniform3fv = &glUniform3fv_enc;
12453 this->glUniform3i = &glUniform3i_enc;
12454 this->glUniform3iv = &glUniform3iv_enc;
12455 this->glUniform4f = &glUniform4f_enc;
12456 this->glUniform4fv = &glUniform4fv_enc;
12457 this->glUniform4i = &glUniform4i_enc;
12458 this->glUniform4iv = &glUniform4iv_enc;
12459 this->glUniformMatrix2fv = &glUniformMatrix2fv_enc;
12460 this->glUniformMatrix3fv = &glUniformMatrix3fv_enc;
12461 this->glUniformMatrix4fv = &glUniformMatrix4fv_enc;
12462 this->glUseProgram = &glUseProgram_enc;
12463 this->glValidateProgram = &glValidateProgram_enc;
12464 this->glVertexAttrib1f = &glVertexAttrib1f_enc;
12465 this->glVertexAttrib1fv = &glVertexAttrib1fv_enc;
12466 this->glVertexAttrib2f = &glVertexAttrib2f_enc;
12467 this->glVertexAttrib2fv = &glVertexAttrib2fv_enc;
12468 this->glVertexAttrib3f = &glVertexAttrib3f_enc;
12469 this->glVertexAttrib3fv = &glVertexAttrib3fv_enc;
12470 this->glVertexAttrib4f = &glVertexAttrib4f_enc;
12471 this->glVertexAttrib4fv = &glVertexAttrib4fv_enc;
12472 this->glVertexAttribPointer = (glVertexAttribPointer_client_proc_t) &enc_unsupported;
12473 this->glViewport = &glViewport_enc;
12474 this->glEGLImageTargetTexture2DOES = &glEGLImageTargetTexture2DOES_enc;
12475 this->glEGLImageTargetRenderbufferStorageOES = &glEGLImageTargetRenderbufferStorageOES_enc;
12476 this->glGetProgramBinaryOES = (glGetProgramBinaryOES_client_proc_t) &enc_unsupported;
12477 this->glProgramBinaryOES = (glProgramBinaryOES_client_proc_t) &enc_unsupported;
12478 this->glMapBufferOES = (glMapBufferOES_client_proc_t) &enc_unsupported;
12479 this->glUnmapBufferOES = &glUnmapBufferOES_enc;
12480 this->glTexImage3DOES = &glTexImage3DOES_enc;
12481 this->glTexSubImage3DOES = &glTexSubImage3DOES_enc;
12482 this->glCopyTexSubImage3DOES = &glCopyTexSubImage3DOES_enc;
12483 this->glCompressedTexImage3DOES = &glCompressedTexImage3DOES_enc;
12484 this->glCompressedTexSubImage3DOES = &glCompressedTexSubImage3DOES_enc;
12485 this->glFramebufferTexture3DOES = &glFramebufferTexture3DOES_enc;
12486 this->glBindVertexArrayOES = &glBindVertexArrayOES_enc;
12487 this->glDeleteVertexArraysOES = &glDeleteVertexArraysOES_enc;
12488 this->glGenVertexArraysOES = &glGenVertexArraysOES_enc;
12489 this->glIsVertexArrayOES = &glIsVertexArrayOES_enc;
12490 this->glDiscardFramebufferEXT = &glDiscardFramebufferEXT_enc;
12491 this->glMultiDrawArraysEXT = (glMultiDrawArraysEXT_client_proc_t) &enc_unsupported;
12492 this->glMultiDrawElementsEXT = (glMultiDrawElementsEXT_client_proc_t) &enc_unsupported;
12493 this->glGetPerfMonitorGroupsAMD = (glGetPerfMonitorGroupsAMD_client_proc_t) &enc_unsupported;
12494 this->glGetPerfMonitorCountersAMD = (glGetPerfMonitorCountersAMD_client_proc_t) &enc_unsupported;
12495 this->glGetPerfMonitorGroupStringAMD = (glGetPerfMonitorGroupStringAMD_client_proc_t) &enc_unsupported;
12496 this->glGetPerfMonitorCounterStringAMD = (glGetPerfMonitorCounterStringAMD_client_proc_t) &enc_unsupported;
12497 this->glGetPerfMonitorCounterInfoAMD = (glGetPerfMonitorCounterInfoAMD_client_proc_t) &enc_unsupported;
12498 this->glGenPerfMonitorsAMD = (glGenPerfMonitorsAMD_client_proc_t) &enc_unsupported;
12499 this->glDeletePerfMonitorsAMD = (glDeletePerfMonitorsAMD_client_proc_t) &enc_unsupported;
12500 this->glSelectPerfMonitorCountersAMD = (glSelectPerfMonitorCountersAMD_client_proc_t) &enc_unsupported;
12501 this->glBeginPerfMonitorAMD = (glBeginPerfMonitorAMD_client_proc_t) &enc_unsupported;
12502 this->glEndPerfMonitorAMD = (glEndPerfMonitorAMD_client_proc_t) &enc_unsupported;
12503 this->glGetPerfMonitorCounterDataAMD = (glGetPerfMonitorCounterDataAMD_client_proc_t) &enc_unsupported;
12504 this->glRenderbufferStorageMultisampleIMG = (glRenderbufferStorageMultisampleIMG_client_proc_t) &enc_unsupported;
12505 this->glFramebufferTexture2DMultisampleIMG = (glFramebufferTexture2DMultisampleIMG_client_proc_t) &enc_unsupported;
12506 this->glDeleteFencesNV = (glDeleteFencesNV_client_proc_t) &enc_unsupported;
12507 this->glGenFencesNV = (glGenFencesNV_client_proc_t) &enc_unsupported;
12508 this->glIsFenceNV = (glIsFenceNV_client_proc_t) &enc_unsupported;
12509 this->glTestFenceNV = (glTestFenceNV_client_proc_t) &enc_unsupported;
12510 this->glGetFenceivNV = (glGetFenceivNV_client_proc_t) &enc_unsupported;
12511 this->glFinishFenceNV = (glFinishFenceNV_client_proc_t) &enc_unsupported;
12512 this->glSetFenceNV = (glSetFenceNV_client_proc_t) &enc_unsupported;
12513 this->glCoverageMaskNV = (glCoverageMaskNV_client_proc_t) &enc_unsupported;
12514 this->glCoverageOperationNV = (glCoverageOperationNV_client_proc_t) &enc_unsupported;
12515 this->glGetDriverControlsQCOM = (glGetDriverControlsQCOM_client_proc_t) &enc_unsupported;
12516 this->glGetDriverControlStringQCOM = (glGetDriverControlStringQCOM_client_proc_t) &enc_unsupported;
12517 this->glEnableDriverControlQCOM = (glEnableDriverControlQCOM_client_proc_t) &enc_unsupported;
12518 this->glDisableDriverControlQCOM = (glDisableDriverControlQCOM_client_proc_t) &enc_unsupported;
12519 this->glExtGetTexturesQCOM = (glExtGetTexturesQCOM_client_proc_t) &enc_unsupported;
12520 this->glExtGetBuffersQCOM = (glExtGetBuffersQCOM_client_proc_t) &enc_unsupported;
12521 this->glExtGetRenderbuffersQCOM = (glExtGetRenderbuffersQCOM_client_proc_t) &enc_unsupported;
12522 this->glExtGetFramebuffersQCOM = (glExtGetFramebuffersQCOM_client_proc_t) &enc_unsupported;
12523 this->glExtGetTexLevelParameterivQCOM = (glExtGetTexLevelParameterivQCOM_client_proc_t) &enc_unsupported;
12524 this->glExtTexObjectStateOverrideiQCOM = (glExtTexObjectStateOverrideiQCOM_client_proc_t) &enc_unsupported;
12525 this->glExtGetTexSubImageQCOM = (glExtGetTexSubImageQCOM_client_proc_t) &enc_unsupported;
12526 this->glExtGetBufferPointervQCOM = (glExtGetBufferPointervQCOM_client_proc_t) &enc_unsupported;
12527 this->glExtGetShadersQCOM = (glExtGetShadersQCOM_client_proc_t) &enc_unsupported;
12528 this->glExtGetProgramsQCOM = (glExtGetProgramsQCOM_client_proc_t) &enc_unsupported;
12529 this->glExtIsProgramBinaryQCOM = (glExtIsProgramBinaryQCOM_client_proc_t) &enc_unsupported;
12530 this->glExtGetProgramBinarySourceQCOM = (glExtGetProgramBinarySourceQCOM_client_proc_t) &enc_unsupported;
12531 this->glStartTilingQCOM = (glStartTilingQCOM_client_proc_t) &enc_unsupported;
12532 this->glEndTilingQCOM = (glEndTilingQCOM_client_proc_t) &enc_unsupported;
12533 this->glVertexAttribPointerData = &glVertexAttribPointerData_enc;
12534 this->glVertexAttribPointerOffset = &glVertexAttribPointerOffset_enc;
12535 this->glDrawElementsOffset = &glDrawElementsOffset_enc;
12536 this->glDrawElementsData = &glDrawElementsData_enc;
12537 this->glGetCompressedTextureFormats = &glGetCompressedTextureFormats_enc;
12538 this->glShaderString = &glShaderString_enc;
12539 this->glFinishRoundTrip = &glFinishRoundTrip_enc;
12540 this->glGenVertexArrays = &glGenVertexArrays_enc;
12541 this->glBindVertexArray = &glBindVertexArray_enc;
12542 this->glDeleteVertexArrays = &glDeleteVertexArrays_enc;
12543 this->glIsVertexArray = &glIsVertexArray_enc;
12544 this->glMapBufferRange = (glMapBufferRange_client_proc_t) &enc_unsupported;
12545 this->glUnmapBuffer = (glUnmapBuffer_client_proc_t) &enc_unsupported;
12546 this->glFlushMappedBufferRange = (glFlushMappedBufferRange_client_proc_t) &enc_unsupported;
12547 this->glMapBufferRangeAEMU = &glMapBufferRangeAEMU_enc;
12548 this->glUnmapBufferAEMU = &glUnmapBufferAEMU_enc;
12549 this->glFlushMappedBufferRangeAEMU = &glFlushMappedBufferRangeAEMU_enc;
12550 this->glReadPixelsOffsetAEMU = &glReadPixelsOffsetAEMU_enc;
12551 this->glCompressedTexImage2DOffsetAEMU = &glCompressedTexImage2DOffsetAEMU_enc;
12552 this->glCompressedTexSubImage2DOffsetAEMU = &glCompressedTexSubImage2DOffsetAEMU_enc;
12553 this->glTexImage2DOffsetAEMU = &glTexImage2DOffsetAEMU_enc;
12554 this->glTexSubImage2DOffsetAEMU = &glTexSubImage2DOffsetAEMU_enc;
12555 this->glBindBufferRange = &glBindBufferRange_enc;
12556 this->glBindBufferBase = &glBindBufferBase_enc;
12557 this->glCopyBufferSubData = &glCopyBufferSubData_enc;
12558 this->glClearBufferiv = &glClearBufferiv_enc;
12559 this->glClearBufferuiv = &glClearBufferuiv_enc;
12560 this->glClearBufferfv = &glClearBufferfv_enc;
12561 this->glClearBufferfi = &glClearBufferfi_enc;
12562 this->glGetBufferParameteri64v = (glGetBufferParameteri64v_client_proc_t) &enc_unsupported;
12563 this->glGetBufferPointerv = (glGetBufferPointerv_client_proc_t) &enc_unsupported;
12564 this->glUniformBlockBinding = &glUniformBlockBinding_enc;
12565 this->glGetUniformBlockIndex = &glGetUniformBlockIndex_enc;
12566 this->glGetUniformIndices = (glGetUniformIndices_client_proc_t) &enc_unsupported;
12567 this->glGetUniformIndicesAEMU = &glGetUniformIndicesAEMU_enc;
12568 this->glGetActiveUniformBlockiv = &glGetActiveUniformBlockiv_enc;
12569 this->glGetActiveUniformBlockName = &glGetActiveUniformBlockName_enc;
12570 this->glUniform1ui = &glUniform1ui_enc;
12571 this->glUniform2ui = &glUniform2ui_enc;
12572 this->glUniform3ui = &glUniform3ui_enc;
12573 this->glUniform4ui = &glUniform4ui_enc;
12574 this->glUniform1uiv = &glUniform1uiv_enc;
12575 this->glUniform2uiv = &glUniform2uiv_enc;
12576 this->glUniform3uiv = &glUniform3uiv_enc;
12577 this->glUniform4uiv = &glUniform4uiv_enc;
12578 this->glUniformMatrix2x3fv = &glUniformMatrix2x3fv_enc;
12579 this->glUniformMatrix3x2fv = &glUniformMatrix3x2fv_enc;
12580 this->glUniformMatrix2x4fv = &glUniformMatrix2x4fv_enc;
12581 this->glUniformMatrix4x2fv = &glUniformMatrix4x2fv_enc;
12582 this->glUniformMatrix3x4fv = &glUniformMatrix3x4fv_enc;
12583 this->glUniformMatrix4x3fv = &glUniformMatrix4x3fv_enc;
12584 this->glGetUniformuiv = &glGetUniformuiv_enc;
12585 this->glGetActiveUniformsiv = &glGetActiveUniformsiv_enc;
12586 this->glVertexAttribI4i = &glVertexAttribI4i_enc;
12587 this->glVertexAttribI4ui = &glVertexAttribI4ui_enc;
12588 this->glVertexAttribI4iv = &glVertexAttribI4iv_enc;
12589 this->glVertexAttribI4uiv = &glVertexAttribI4uiv_enc;
12590 this->glVertexAttribIPointer = (glVertexAttribIPointer_client_proc_t) &enc_unsupported;
12591 this->glVertexAttribIPointerOffsetAEMU = &glVertexAttribIPointerOffsetAEMU_enc;
12592 this->glVertexAttribIPointerDataAEMU = &glVertexAttribIPointerDataAEMU_enc;
12593 this->glGetVertexAttribIiv = &glGetVertexAttribIiv_enc;
12594 this->glGetVertexAttribIuiv = &glGetVertexAttribIuiv_enc;
12595 this->glVertexAttribDivisor = &glVertexAttribDivisor_enc;
12596 this->glDrawArraysInstanced = &glDrawArraysInstanced_enc;
12597 this->glDrawElementsInstanced = (glDrawElementsInstanced_client_proc_t) &enc_unsupported;
12598 this->glDrawElementsInstancedDataAEMU = &glDrawElementsInstancedDataAEMU_enc;
12599 this->glDrawElementsInstancedOffsetAEMU = &glDrawElementsInstancedOffsetAEMU_enc;
12600 this->glDrawRangeElements = (glDrawRangeElements_client_proc_t) &enc_unsupported;
12601 this->glDrawRangeElementsDataAEMU = &glDrawRangeElementsDataAEMU_enc;
12602 this->glDrawRangeElementsOffsetAEMU = &glDrawRangeElementsOffsetAEMU_enc;
12603 this->glFenceSync = (glFenceSync_client_proc_t) &enc_unsupported;
12604 this->glClientWaitSync = (glClientWaitSync_client_proc_t) &enc_unsupported;
12605 this->glWaitSync = (glWaitSync_client_proc_t) &enc_unsupported;
12606 this->glDeleteSync = (glDeleteSync_client_proc_t) &enc_unsupported;
12607 this->glIsSync = (glIsSync_client_proc_t) &enc_unsupported;
12608 this->glGetSynciv = (glGetSynciv_client_proc_t) &enc_unsupported;
12609 this->glFenceSyncAEMU = &glFenceSyncAEMU_enc;
12610 this->glClientWaitSyncAEMU = &glClientWaitSyncAEMU_enc;
12611 this->glWaitSyncAEMU = &glWaitSyncAEMU_enc;
12612 this->glDeleteSyncAEMU = &glDeleteSyncAEMU_enc;
12613 this->glIsSyncAEMU = &glIsSyncAEMU_enc;
12614 this->glGetSyncivAEMU = &glGetSyncivAEMU_enc;
12615 this->glDrawBuffers = &glDrawBuffers_enc;
12616 this->glReadBuffer = &glReadBuffer_enc;
12617 this->glBlitFramebuffer = &glBlitFramebuffer_enc;
12618 this->glInvalidateFramebuffer = &glInvalidateFramebuffer_enc;
12619 this->glInvalidateSubFramebuffer = &glInvalidateSubFramebuffer_enc;
12620 this->glFramebufferTextureLayer = &glFramebufferTextureLayer_enc;
12621 this->glRenderbufferStorageMultisample = &glRenderbufferStorageMultisample_enc;
12622 this->glTexStorage2D = &glTexStorage2D_enc;
12623 this->glGetInternalformativ = &glGetInternalformativ_enc;
12624 this->glBeginTransformFeedback = &glBeginTransformFeedback_enc;
12625 this->glEndTransformFeedback = &glEndTransformFeedback_enc;
12626 this->glGenTransformFeedbacks = &glGenTransformFeedbacks_enc;
12627 this->glDeleteTransformFeedbacks = &glDeleteTransformFeedbacks_enc;
12628 this->glBindTransformFeedback = &glBindTransformFeedback_enc;
12629 this->glPauseTransformFeedback = &glPauseTransformFeedback_enc;
12630 this->glResumeTransformFeedback = &glResumeTransformFeedback_enc;
12631 this->glIsTransformFeedback = &glIsTransformFeedback_enc;
12632 this->glTransformFeedbackVaryings = (glTransformFeedbackVaryings_client_proc_t) &enc_unsupported;
12633 this->glTransformFeedbackVaryingsAEMU = &glTransformFeedbackVaryingsAEMU_enc;
12634 this->glGetTransformFeedbackVarying = &glGetTransformFeedbackVarying_enc;
12635 this->glGenSamplers = &glGenSamplers_enc;
12636 this->glDeleteSamplers = &glDeleteSamplers_enc;
12637 this->glBindSampler = &glBindSampler_enc;
12638 this->glSamplerParameterf = &glSamplerParameterf_enc;
12639 this->glSamplerParameteri = &glSamplerParameteri_enc;
12640 this->glSamplerParameterfv = &glSamplerParameterfv_enc;
12641 this->glSamplerParameteriv = &glSamplerParameteriv_enc;
12642 this->glGetSamplerParameterfv = &glGetSamplerParameterfv_enc;
12643 this->glGetSamplerParameteriv = &glGetSamplerParameteriv_enc;
12644 this->glIsSampler = &glIsSampler_enc;
12645 this->glGenQueries = &glGenQueries_enc;
12646 this->glDeleteQueries = &glDeleteQueries_enc;
12647 this->glBeginQuery = &glBeginQuery_enc;
12648 this->glEndQuery = &glEndQuery_enc;
12649 this->glGetQueryiv = &glGetQueryiv_enc;
12650 this->glGetQueryObjectuiv = &glGetQueryObjectuiv_enc;
12651 this->glIsQuery = &glIsQuery_enc;
12652 this->glProgramParameteri = &glProgramParameteri_enc;
12653 this->glProgramBinary = &glProgramBinary_enc;
12654 this->glGetProgramBinary = &glGetProgramBinary_enc;
12655 this->glGetFragDataLocation = &glGetFragDataLocation_enc;
12656 this->glGetInteger64v = &glGetInteger64v_enc;
12657 this->glGetIntegeri_v = &glGetIntegeri_v_enc;
12658 this->glGetInteger64i_v = &glGetInteger64i_v_enc;
12659 this->glTexImage3D = &glTexImage3D_enc;
12660 this->glTexImage3DOffsetAEMU = &glTexImage3DOffsetAEMU_enc;
12661 this->glTexStorage3D = &glTexStorage3D_enc;
12662 this->glTexSubImage3D = &glTexSubImage3D_enc;
12663 this->glTexSubImage3DOffsetAEMU = &glTexSubImage3DOffsetAEMU_enc;
12664 this->glCompressedTexImage3D = &glCompressedTexImage3D_enc;
12665 this->glCompressedTexImage3DOffsetAEMU = &glCompressedTexImage3DOffsetAEMU_enc;
12666 this->glCompressedTexSubImage3D = &glCompressedTexSubImage3D_enc;
12667 this->glCompressedTexSubImage3DOffsetAEMU = &glCompressedTexSubImage3DOffsetAEMU_enc;
12668 this->glCopyTexSubImage3D = &glCopyTexSubImage3D_enc;
12669 this->glGetStringi = (glGetStringi_client_proc_t) &enc_unsupported;
12670 this->glGetBooleani_v = &glGetBooleani_v_enc;
12671 this->glMemoryBarrier = &glMemoryBarrier_enc;
12672 this->glMemoryBarrierByRegion = &glMemoryBarrierByRegion_enc;
12673 this->glGenProgramPipelines = &glGenProgramPipelines_enc;
12674 this->glDeleteProgramPipelines = &glDeleteProgramPipelines_enc;
12675 this->glBindProgramPipeline = &glBindProgramPipeline_enc;
12676 this->glGetProgramPipelineiv = &glGetProgramPipelineiv_enc;
12677 this->glGetProgramPipelineInfoLog = &glGetProgramPipelineInfoLog_enc;
12678 this->glValidateProgramPipeline = &glValidateProgramPipeline_enc;
12679 this->glIsProgramPipeline = &glIsProgramPipeline_enc;
12680 this->glUseProgramStages = &glUseProgramStages_enc;
12681 this->glActiveShaderProgram = &glActiveShaderProgram_enc;
12682 this->glCreateShaderProgramv = (glCreateShaderProgramv_client_proc_t) &enc_unsupported;
12683 this->glCreateShaderProgramvAEMU = &glCreateShaderProgramvAEMU_enc;
12684 this->glProgramUniform1f = &glProgramUniform1f_enc;
12685 this->glProgramUniform2f = &glProgramUniform2f_enc;
12686 this->glProgramUniform3f = &glProgramUniform3f_enc;
12687 this->glProgramUniform4f = &glProgramUniform4f_enc;
12688 this->glProgramUniform1i = &glProgramUniform1i_enc;
12689 this->glProgramUniform2i = &glProgramUniform2i_enc;
12690 this->glProgramUniform3i = &glProgramUniform3i_enc;
12691 this->glProgramUniform4i = &glProgramUniform4i_enc;
12692 this->glProgramUniform1ui = &glProgramUniform1ui_enc;
12693 this->glProgramUniform2ui = &glProgramUniform2ui_enc;
12694 this->glProgramUniform3ui = &glProgramUniform3ui_enc;
12695 this->glProgramUniform4ui = &glProgramUniform4ui_enc;
12696 this->glProgramUniform1fv = &glProgramUniform1fv_enc;
12697 this->glProgramUniform2fv = &glProgramUniform2fv_enc;
12698 this->glProgramUniform3fv = &glProgramUniform3fv_enc;
12699 this->glProgramUniform4fv = &glProgramUniform4fv_enc;
12700 this->glProgramUniform1iv = &glProgramUniform1iv_enc;
12701 this->glProgramUniform2iv = &glProgramUniform2iv_enc;
12702 this->glProgramUniform3iv = &glProgramUniform3iv_enc;
12703 this->glProgramUniform4iv = &glProgramUniform4iv_enc;
12704 this->glProgramUniform1uiv = &glProgramUniform1uiv_enc;
12705 this->glProgramUniform2uiv = &glProgramUniform2uiv_enc;
12706 this->glProgramUniform3uiv = &glProgramUniform3uiv_enc;
12707 this->glProgramUniform4uiv = &glProgramUniform4uiv_enc;
12708 this->glProgramUniformMatrix2fv = &glProgramUniformMatrix2fv_enc;
12709 this->glProgramUniformMatrix3fv = &glProgramUniformMatrix3fv_enc;
12710 this->glProgramUniformMatrix4fv = &glProgramUniformMatrix4fv_enc;
12711 this->glProgramUniformMatrix2x3fv = &glProgramUniformMatrix2x3fv_enc;
12712 this->glProgramUniformMatrix3x2fv = &glProgramUniformMatrix3x2fv_enc;
12713 this->glProgramUniformMatrix2x4fv = &glProgramUniformMatrix2x4fv_enc;
12714 this->glProgramUniformMatrix4x2fv = &glProgramUniformMatrix4x2fv_enc;
12715 this->glProgramUniformMatrix3x4fv = &glProgramUniformMatrix3x4fv_enc;
12716 this->glProgramUniformMatrix4x3fv = &glProgramUniformMatrix4x3fv_enc;
12717 this->glGetProgramInterfaceiv = &glGetProgramInterfaceiv_enc;
12718 this->glGetProgramResourceiv = &glGetProgramResourceiv_enc;
12719 this->glGetProgramResourceIndex = &glGetProgramResourceIndex_enc;
12720 this->glGetProgramResourceLocation = &glGetProgramResourceLocation_enc;
12721 this->glGetProgramResourceName = &glGetProgramResourceName_enc;
12722 this->glBindImageTexture = &glBindImageTexture_enc;
12723 this->glDispatchCompute = &glDispatchCompute_enc;
12724 this->glDispatchComputeIndirect = &glDispatchComputeIndirect_enc;
12725 this->glBindVertexBuffer = &glBindVertexBuffer_enc;
12726 this->glVertexAttribBinding = &glVertexAttribBinding_enc;
12727 this->glVertexAttribFormat = &glVertexAttribFormat_enc;
12728 this->glVertexAttribIFormat = &glVertexAttribIFormat_enc;
12729 this->glVertexBindingDivisor = &glVertexBindingDivisor_enc;
12730 this->glDrawArraysIndirect = (glDrawArraysIndirect_client_proc_t) &enc_unsupported;
12731 this->glDrawArraysIndirectDataAEMU = &glDrawArraysIndirectDataAEMU_enc;
12732 this->glDrawArraysIndirectOffsetAEMU = &glDrawArraysIndirectOffsetAEMU_enc;
12733 this->glDrawElementsIndirect = (glDrawElementsIndirect_client_proc_t) &enc_unsupported;
12734 this->glDrawElementsIndirectDataAEMU = &glDrawElementsIndirectDataAEMU_enc;
12735 this->glDrawElementsIndirectOffsetAEMU = &glDrawElementsIndirectOffsetAEMU_enc;
12736 this->glTexStorage2DMultisample = &glTexStorage2DMultisample_enc;
12737 this->glSampleMaski = &glSampleMaski_enc;
12738 this->glGetMultisamplefv = &glGetMultisamplefv_enc;
12739 this->glFramebufferParameteri = &glFramebufferParameteri_enc;
12740 this->glGetFramebufferParameteriv = &glGetFramebufferParameteriv_enc;
12741 this->glGetTexLevelParameterfv = &glGetTexLevelParameterfv_enc;
12742 this->glGetTexLevelParameteriv = &glGetTexLevelParameteriv_enc;
12743 this->glMapBufferRangeDMA = &glMapBufferRangeDMA_enc;
12744 this->glUnmapBufferDMA = &glUnmapBufferDMA_enc;
12745 this->glMapBufferRangeDirect = &glMapBufferRangeDirect_enc;
12746 this->glUnmapBufferDirect = &glUnmapBufferDirect_enc;
12747 this->glFlushMappedBufferRangeDirect = &glFlushMappedBufferRangeDirect_enc;
12748 this->glGetGraphicsResetStatusEXT = &glGetGraphicsResetStatusEXT_enc;
12749 this->glReadnPixelsEXT = &glReadnPixelsEXT_enc;
12750 this->glGetnUniformfvEXT = &glGetnUniformfvEXT_enc;
12751 this->glGetnUniformivEXT = &glGetnUniformivEXT_enc;
12752 this->glDrawArraysNullAEMU = &glDrawArraysNullAEMU_enc;
12753 this->glDrawElementsNullAEMU = (glDrawElementsNullAEMU_client_proc_t) &enc_unsupported;
12754 this->glDrawElementsOffsetNullAEMU = &glDrawElementsOffsetNullAEMU_enc;
12755 this->glDrawElementsDataNullAEMU = &glDrawElementsDataNullAEMU_enc;
12756 this->glUnmapBufferAsyncAEMU = &glUnmapBufferAsyncAEMU_enc;
12757 this->glFlushMappedBufferRangeAEMU2 = &glFlushMappedBufferRangeAEMU2_enc;
12758 this->glBufferDataSyncAEMU = &glBufferDataSyncAEMU_enc;
12759 }
12760
12761