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 "aemu/base/Tracing.h"
16
17 #include "EncoderDebug.h"
18
19 using gfxstream::guest::ChecksumCalculator;
20
21 using gfxstream::guest::IOStream;
22
23 namespace {
24
enc_unsupported()25 void enc_unsupported()
26 {
27 ALOGE("Function is unsupported\n");
28 }
29
glActiveTexture_enc(void * self,GLenum texture)30 void glActiveTexture_enc(void *self , GLenum texture)
31 {
32 ENCODER_DEBUG_LOG("glActiveTexture(texture:0x%08x)", texture);
33 AEMU_SCOPED_TRACE("glActiveTexture encode");
34
35 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
36 IOStream *stream = ctx->m_stream;
37 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
38 bool useChecksum = checksumCalculator->getVersion() > 0;
39
40 unsigned char *ptr;
41 unsigned char *buf;
42 const size_t sizeWithoutChecksum = 8 + 4;
43 const size_t checksumSize = checksumCalculator->checksumByteSize();
44 const size_t totalSize = sizeWithoutChecksum + checksumSize;
45 buf = stream->alloc(totalSize);
46 ptr = buf;
47 int tmp = OP_glActiveTexture;memcpy(ptr, &tmp, 4); ptr += 4;
48 memcpy(ptr, &totalSize, 4); ptr += 4;
49
50 memcpy(ptr, &texture, 4); ptr += 4;
51
52 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
53 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
54
55 }
56
glAttachShader_enc(void * self,GLuint program,GLuint shader)57 void glAttachShader_enc(void *self , GLuint program, GLuint shader)
58 {
59 ENCODER_DEBUG_LOG("glAttachShader(program:%u, shader:%u)", program, shader);
60 AEMU_SCOPED_TRACE("glAttachShader encode");
61
62 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
63 IOStream *stream = ctx->m_stream;
64 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
65 bool useChecksum = checksumCalculator->getVersion() > 0;
66
67 unsigned char *ptr;
68 unsigned char *buf;
69 const size_t sizeWithoutChecksum = 8 + 4 + 4;
70 const size_t checksumSize = checksumCalculator->checksumByteSize();
71 const size_t totalSize = sizeWithoutChecksum + checksumSize;
72 buf = stream->alloc(totalSize);
73 ptr = buf;
74 int tmp = OP_glAttachShader;memcpy(ptr, &tmp, 4); ptr += 4;
75 memcpy(ptr, &totalSize, 4); ptr += 4;
76
77 memcpy(ptr, &program, 4); ptr += 4;
78 memcpy(ptr, &shader, 4); ptr += 4;
79
80 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
81 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
82
83 }
84
glBindAttribLocation_enc(void * self,GLuint program,GLuint index,const GLchar * name)85 void glBindAttribLocation_enc(void *self , GLuint program, GLuint index, const GLchar* name)
86 {
87 ENCODER_DEBUG_LOG("glBindAttribLocation(program:%u, index:%u, name:0x%08x)", program, index, name);
88 AEMU_SCOPED_TRACE("glBindAttribLocation encode");
89
90 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
91 IOStream *stream = ctx->m_stream;
92 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
93 bool useChecksum = checksumCalculator->getVersion() > 0;
94
95 const unsigned int __size_name = (strlen(name) + 1);
96 unsigned char *ptr;
97 unsigned char *buf;
98 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
99 const size_t checksumSize = checksumCalculator->checksumByteSize();
100 const size_t totalSize = sizeWithoutChecksum + checksumSize;
101 buf = stream->alloc(totalSize);
102 ptr = buf;
103 int tmp = OP_glBindAttribLocation;memcpy(ptr, &tmp, 4); ptr += 4;
104 memcpy(ptr, &totalSize, 4); ptr += 4;
105
106 memcpy(ptr, &program, 4); ptr += 4;
107 memcpy(ptr, &index, 4); ptr += 4;
108 memcpy(ptr, &__size_name, 4); ptr += 4;
109 memcpy(ptr, name, __size_name);ptr += __size_name;
110
111 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
112 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
113
114 }
115
glBindBuffer_enc(void * self,GLenum target,GLuint buffer)116 void glBindBuffer_enc(void *self , GLenum target, GLuint buffer)
117 {
118 ENCODER_DEBUG_LOG("glBindBuffer(target:0x%08x, buffer:%u)", target, buffer);
119 AEMU_SCOPED_TRACE("glBindBuffer encode");
120
121 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
122 IOStream *stream = ctx->m_stream;
123 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
124 bool useChecksum = checksumCalculator->getVersion() > 0;
125
126 unsigned char *ptr;
127 unsigned char *buf;
128 const size_t sizeWithoutChecksum = 8 + 4 + 4;
129 const size_t checksumSize = checksumCalculator->checksumByteSize();
130 const size_t totalSize = sizeWithoutChecksum + checksumSize;
131 buf = stream->alloc(totalSize);
132 ptr = buf;
133 int tmp = OP_glBindBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
134 memcpy(ptr, &totalSize, 4); ptr += 4;
135
136 memcpy(ptr, &target, 4); ptr += 4;
137 memcpy(ptr, &buffer, 4); ptr += 4;
138
139 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
140 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
141
142 }
143
glBindFramebuffer_enc(void * self,GLenum target,GLuint framebuffer)144 void glBindFramebuffer_enc(void *self , GLenum target, GLuint framebuffer)
145 {
146 ENCODER_DEBUG_LOG("glBindFramebuffer(target:0x%08x, framebuffer:%u)", target, framebuffer);
147 AEMU_SCOPED_TRACE("glBindFramebuffer encode");
148
149 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
150 IOStream *stream = ctx->m_stream;
151 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
152 bool useChecksum = checksumCalculator->getVersion() > 0;
153
154 unsigned char *ptr;
155 unsigned char *buf;
156 const size_t sizeWithoutChecksum = 8 + 4 + 4;
157 const size_t checksumSize = checksumCalculator->checksumByteSize();
158 const size_t totalSize = sizeWithoutChecksum + checksumSize;
159 buf = stream->alloc(totalSize);
160 ptr = buf;
161 int tmp = OP_glBindFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
162 memcpy(ptr, &totalSize, 4); ptr += 4;
163
164 memcpy(ptr, &target, 4); ptr += 4;
165 memcpy(ptr, &framebuffer, 4); ptr += 4;
166
167 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
168 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
169
170 }
171
glBindRenderbuffer_enc(void * self,GLenum target,GLuint renderbuffer)172 void glBindRenderbuffer_enc(void *self , GLenum target, GLuint renderbuffer)
173 {
174 ENCODER_DEBUG_LOG("glBindRenderbuffer(target:0x%08x, renderbuffer:%u)", target, renderbuffer);
175 AEMU_SCOPED_TRACE("glBindRenderbuffer encode");
176
177 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
178 IOStream *stream = ctx->m_stream;
179 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
180 bool useChecksum = checksumCalculator->getVersion() > 0;
181
182 unsigned char *ptr;
183 unsigned char *buf;
184 const size_t sizeWithoutChecksum = 8 + 4 + 4;
185 const size_t checksumSize = checksumCalculator->checksumByteSize();
186 const size_t totalSize = sizeWithoutChecksum + checksumSize;
187 buf = stream->alloc(totalSize);
188 ptr = buf;
189 int tmp = OP_glBindRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
190 memcpy(ptr, &totalSize, 4); ptr += 4;
191
192 memcpy(ptr, &target, 4); ptr += 4;
193 memcpy(ptr, &renderbuffer, 4); ptr += 4;
194
195 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
196 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
197
198 }
199
glBindTexture_enc(void * self,GLenum target,GLuint texture)200 void glBindTexture_enc(void *self , GLenum target, GLuint texture)
201 {
202 ENCODER_DEBUG_LOG("glBindTexture(target:0x%08x, texture:%u)", target, texture);
203 AEMU_SCOPED_TRACE("glBindTexture encode");
204
205 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
206 IOStream *stream = ctx->m_stream;
207 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
208 bool useChecksum = checksumCalculator->getVersion() > 0;
209
210 unsigned char *ptr;
211 unsigned char *buf;
212 const size_t sizeWithoutChecksum = 8 + 4 + 4;
213 const size_t checksumSize = checksumCalculator->checksumByteSize();
214 const size_t totalSize = sizeWithoutChecksum + checksumSize;
215 buf = stream->alloc(totalSize);
216 ptr = buf;
217 int tmp = OP_glBindTexture;memcpy(ptr, &tmp, 4); ptr += 4;
218 memcpy(ptr, &totalSize, 4); ptr += 4;
219
220 memcpy(ptr, &target, 4); ptr += 4;
221 memcpy(ptr, &texture, 4); ptr += 4;
222
223 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
224 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
225
226 }
227
glBlendColor_enc(void * self,GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)228 void glBlendColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
229 {
230 ENCODER_DEBUG_LOG("glBlendColor(red:%f, green:%f, blue:%f, alpha:%f)", red, green, blue, alpha);
231 AEMU_SCOPED_TRACE("glBlendColor encode");
232
233 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
234 IOStream *stream = ctx->m_stream;
235 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
236 bool useChecksum = checksumCalculator->getVersion() > 0;
237
238 unsigned char *ptr;
239 unsigned char *buf;
240 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
241 const size_t checksumSize = checksumCalculator->checksumByteSize();
242 const size_t totalSize = sizeWithoutChecksum + checksumSize;
243 buf = stream->alloc(totalSize);
244 ptr = buf;
245 int tmp = OP_glBlendColor;memcpy(ptr, &tmp, 4); ptr += 4;
246 memcpy(ptr, &totalSize, 4); ptr += 4;
247
248 memcpy(ptr, &red, 4); ptr += 4;
249 memcpy(ptr, &green, 4); ptr += 4;
250 memcpy(ptr, &blue, 4); ptr += 4;
251 memcpy(ptr, &alpha, 4); ptr += 4;
252
253 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
254 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
255
256 }
257
glBlendEquation_enc(void * self,GLenum mode)258 void glBlendEquation_enc(void *self , GLenum mode)
259 {
260 ENCODER_DEBUG_LOG("glBlendEquation(mode:0x%08x)", mode);
261 AEMU_SCOPED_TRACE("glBlendEquation encode");
262
263 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
264 IOStream *stream = ctx->m_stream;
265 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
266 bool useChecksum = checksumCalculator->getVersion() > 0;
267
268 unsigned char *ptr;
269 unsigned char *buf;
270 const size_t sizeWithoutChecksum = 8 + 4;
271 const size_t checksumSize = checksumCalculator->checksumByteSize();
272 const size_t totalSize = sizeWithoutChecksum + checksumSize;
273 buf = stream->alloc(totalSize);
274 ptr = buf;
275 int tmp = OP_glBlendEquation;memcpy(ptr, &tmp, 4); ptr += 4;
276 memcpy(ptr, &totalSize, 4); ptr += 4;
277
278 memcpy(ptr, &mode, 4); ptr += 4;
279
280 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
281 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
282
283 }
284
glBlendEquationSeparate_enc(void * self,GLenum modeRGB,GLenum modeAlpha)285 void glBlendEquationSeparate_enc(void *self , GLenum modeRGB, GLenum modeAlpha)
286 {
287 ENCODER_DEBUG_LOG("glBlendEquationSeparate(modeRGB:0x%08x, modeAlpha:0x%08x)", modeRGB, modeAlpha);
288 AEMU_SCOPED_TRACE("glBlendEquationSeparate encode");
289
290 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
291 IOStream *stream = ctx->m_stream;
292 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
293 bool useChecksum = checksumCalculator->getVersion() > 0;
294
295 unsigned char *ptr;
296 unsigned char *buf;
297 const size_t sizeWithoutChecksum = 8 + 4 + 4;
298 const size_t checksumSize = checksumCalculator->checksumByteSize();
299 const size_t totalSize = sizeWithoutChecksum + checksumSize;
300 buf = stream->alloc(totalSize);
301 ptr = buf;
302 int tmp = OP_glBlendEquationSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
303 memcpy(ptr, &totalSize, 4); ptr += 4;
304
305 memcpy(ptr, &modeRGB, 4); ptr += 4;
306 memcpy(ptr, &modeAlpha, 4); ptr += 4;
307
308 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
309 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
310
311 }
312
glBlendFunc_enc(void * self,GLenum sfactor,GLenum dfactor)313 void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor)
314 {
315 ENCODER_DEBUG_LOG("glBlendFunc(sfactor:0x%08x, dfactor:0x%08x)", sfactor, dfactor);
316 AEMU_SCOPED_TRACE("glBlendFunc encode");
317
318 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
319 IOStream *stream = ctx->m_stream;
320 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
321 bool useChecksum = checksumCalculator->getVersion() > 0;
322
323 unsigned char *ptr;
324 unsigned char *buf;
325 const size_t sizeWithoutChecksum = 8 + 4 + 4;
326 const size_t checksumSize = checksumCalculator->checksumByteSize();
327 const size_t totalSize = sizeWithoutChecksum + checksumSize;
328 buf = stream->alloc(totalSize);
329 ptr = buf;
330 int tmp = OP_glBlendFunc;memcpy(ptr, &tmp, 4); ptr += 4;
331 memcpy(ptr, &totalSize, 4); ptr += 4;
332
333 memcpy(ptr, &sfactor, 4); ptr += 4;
334 memcpy(ptr, &dfactor, 4); ptr += 4;
335
336 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
337 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
338
339 }
340
glBlendFuncSeparate_enc(void * self,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)341 void glBlendFuncSeparate_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
342 {
343 ENCODER_DEBUG_LOG("glBlendFuncSeparate(srcRGB:0x%08x, dstRGB:0x%08x, srcAlpha:0x%08x, dstAlpha:0x%08x)", srcRGB, dstRGB, srcAlpha, dstAlpha);
344 AEMU_SCOPED_TRACE("glBlendFuncSeparate encode");
345
346 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
347 IOStream *stream = ctx->m_stream;
348 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
349 bool useChecksum = checksumCalculator->getVersion() > 0;
350
351 unsigned char *ptr;
352 unsigned char *buf;
353 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
354 const size_t checksumSize = checksumCalculator->checksumByteSize();
355 const size_t totalSize = sizeWithoutChecksum + checksumSize;
356 buf = stream->alloc(totalSize);
357 ptr = buf;
358 int tmp = OP_glBlendFuncSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
359 memcpy(ptr, &totalSize, 4); ptr += 4;
360
361 memcpy(ptr, &srcRGB, 4); ptr += 4;
362 memcpy(ptr, &dstRGB, 4); ptr += 4;
363 memcpy(ptr, &srcAlpha, 4); ptr += 4;
364 memcpy(ptr, &dstAlpha, 4); ptr += 4;
365
366 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
367 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
368
369 }
370
glBufferData_enc(void * self,GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)371 void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
372 {
373 ENCODER_DEBUG_LOG("glBufferData(target:0x%08x, size:0x%08lx, data:0x%08x, usage:0x%08x)", target, size, data, usage);
374 AEMU_SCOPED_TRACE("glBufferData encode");
375
376 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
377 IOStream *stream = ctx->m_stream;
378 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
379 bool useChecksum = checksumCalculator->getVersion() > 0;
380
381 const unsigned int __size_data = ((data != NULL) ? size : 0);
382 unsigned char *ptr;
383 unsigned char *buf;
384 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
385 const size_t checksumSize = checksumCalculator->checksumByteSize();
386 const size_t totalSize = sizeWithoutChecksum + checksumSize;
387 buf = stream->alloc(8 + 4 + 4);
388 ptr = buf;
389 int tmp = OP_glBufferData;memcpy(ptr, &tmp, 4); ptr += 4;
390 memcpy(ptr, &totalSize, 4); ptr += 4;
391
392 memcpy(ptr, &target, 4); ptr += 4;
393 memcpy(ptr, &size, 4); ptr += 4;
394
395 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
396 stream->flush();
397 stream->writeFully(&__size_data,4);
398 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
399 if (data != NULL) {
400 stream->writeFully(data, __size_data);
401 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
402 }
403 buf = stream->alloc(4);
404 ptr = buf;
405 memcpy(ptr, &usage, 4); ptr += 4;
406
407 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
408 buf = stream->alloc(checksumSize);
409 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
410
411 }
412
glBufferSubData_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)413 void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
414 {
415 ENCODER_DEBUG_LOG("glBufferSubData(target:0x%08x, offset:0x%08lx, size:0x%08lx, data:0x%08x)", target, offset, size, data);
416 AEMU_SCOPED_TRACE("glBufferSubData encode");
417
418 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
419 IOStream *stream = ctx->m_stream;
420 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
421 bool useChecksum = checksumCalculator->getVersion() > 0;
422
423 const unsigned int __size_data = ((data != NULL) ? size : 0);
424 unsigned char *ptr;
425 unsigned char *buf;
426 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 1*4;
427 const size_t checksumSize = checksumCalculator->checksumByteSize();
428 const size_t totalSize = sizeWithoutChecksum + checksumSize;
429 buf = stream->alloc(8 + 4 + 4 + 4);
430 ptr = buf;
431 int tmp = OP_glBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
432 memcpy(ptr, &totalSize, 4); ptr += 4;
433
434 memcpy(ptr, &target, 4); ptr += 4;
435 memcpy(ptr, &offset, 4); ptr += 4;
436 memcpy(ptr, &size, 4); ptr += 4;
437
438 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
439 stream->flush();
440 stream->writeFully(&__size_data,4);
441 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
442 if (data != NULL) {
443 stream->writeFully(data, __size_data);
444 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
445 }
446 buf = stream->alloc(checksumSize);
447 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
448
449 }
450
glCheckFramebufferStatus_enc(void * self,GLenum target)451 GLenum glCheckFramebufferStatus_enc(void *self , GLenum target)
452 {
453 ENCODER_DEBUG_LOG("glCheckFramebufferStatus(target:0x%08x)", target);
454 AEMU_SCOPED_TRACE("glCheckFramebufferStatus encode");
455
456 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
457 IOStream *stream = ctx->m_stream;
458 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
459 bool useChecksum = checksumCalculator->getVersion() > 0;
460
461 unsigned char *ptr;
462 unsigned char *buf;
463 const size_t sizeWithoutChecksum = 8 + 4;
464 const size_t checksumSize = checksumCalculator->checksumByteSize();
465 const size_t totalSize = sizeWithoutChecksum + checksumSize;
466 buf = stream->alloc(totalSize);
467 ptr = buf;
468 int tmp = OP_glCheckFramebufferStatus;memcpy(ptr, &tmp, 4); ptr += 4;
469 memcpy(ptr, &totalSize, 4); ptr += 4;
470
471 memcpy(ptr, &target, 4); ptr += 4;
472
473 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
474 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
475
476
477 GLenum retval;
478 stream->readback(&retval, 4);
479 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
480 if (useChecksum) {
481 unsigned char *checksumBufPtr = NULL;
482 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
483 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
484 stream->readback(checksumBufPtr, checksumSize);
485 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
486 ALOGE("glCheckFramebufferStatus: GL communication error, please report this issue to b.android.com.\n");
487 abort();
488 }
489 }
490 return retval;
491 }
492
glClear_enc(void * self,GLbitfield mask)493 void glClear_enc(void *self , GLbitfield mask)
494 {
495 ENCODER_DEBUG_LOG("glClear(mask:0x%08x)", mask);
496 AEMU_SCOPED_TRACE("glClear encode");
497
498 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
499 IOStream *stream = ctx->m_stream;
500 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
501 bool useChecksum = checksumCalculator->getVersion() > 0;
502
503 unsigned char *ptr;
504 unsigned char *buf;
505 const size_t sizeWithoutChecksum = 8 + 4;
506 const size_t checksumSize = checksumCalculator->checksumByteSize();
507 const size_t totalSize = sizeWithoutChecksum + checksumSize;
508 buf = stream->alloc(totalSize);
509 ptr = buf;
510 int tmp = OP_glClear;memcpy(ptr, &tmp, 4); ptr += 4;
511 memcpy(ptr, &totalSize, 4); ptr += 4;
512
513 memcpy(ptr, &mask, 4); ptr += 4;
514
515 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
516 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
517
518 }
519
glClearColor_enc(void * self,GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)520 void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
521 {
522 ENCODER_DEBUG_LOG("glClearColor(red:%f, green:%f, blue:%f, alpha:%f)", red, green, blue, alpha);
523 AEMU_SCOPED_TRACE("glClearColor encode");
524
525 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
526 IOStream *stream = ctx->m_stream;
527 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
528 bool useChecksum = checksumCalculator->getVersion() > 0;
529
530 unsigned char *ptr;
531 unsigned char *buf;
532 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
533 const size_t checksumSize = checksumCalculator->checksumByteSize();
534 const size_t totalSize = sizeWithoutChecksum + checksumSize;
535 buf = stream->alloc(totalSize);
536 ptr = buf;
537 int tmp = OP_glClearColor;memcpy(ptr, &tmp, 4); ptr += 4;
538 memcpy(ptr, &totalSize, 4); ptr += 4;
539
540 memcpy(ptr, &red, 4); ptr += 4;
541 memcpy(ptr, &green, 4); ptr += 4;
542 memcpy(ptr, &blue, 4); ptr += 4;
543 memcpy(ptr, &alpha, 4); ptr += 4;
544
545 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
546 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
547
548 }
549
glClearDepthf_enc(void * self,GLclampf depth)550 void glClearDepthf_enc(void *self , GLclampf depth)
551 {
552 ENCODER_DEBUG_LOG("glClearDepthf(depth:%f)", depth);
553 AEMU_SCOPED_TRACE("glClearDepthf encode");
554
555 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
556 IOStream *stream = ctx->m_stream;
557 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
558 bool useChecksum = checksumCalculator->getVersion() > 0;
559
560 unsigned char *ptr;
561 unsigned char *buf;
562 const size_t sizeWithoutChecksum = 8 + 4;
563 const size_t checksumSize = checksumCalculator->checksumByteSize();
564 const size_t totalSize = sizeWithoutChecksum + checksumSize;
565 buf = stream->alloc(totalSize);
566 ptr = buf;
567 int tmp = OP_glClearDepthf;memcpy(ptr, &tmp, 4); ptr += 4;
568 memcpy(ptr, &totalSize, 4); ptr += 4;
569
570 memcpy(ptr, &depth, 4); ptr += 4;
571
572 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
573 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
574
575 }
576
glClearStencil_enc(void * self,GLint s)577 void glClearStencil_enc(void *self , GLint s)
578 {
579 ENCODER_DEBUG_LOG("glClearStencil(s:%d)", s);
580 AEMU_SCOPED_TRACE("glClearStencil encode");
581
582 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
583 IOStream *stream = ctx->m_stream;
584 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
585 bool useChecksum = checksumCalculator->getVersion() > 0;
586
587 unsigned char *ptr;
588 unsigned char *buf;
589 const size_t sizeWithoutChecksum = 8 + 4;
590 const size_t checksumSize = checksumCalculator->checksumByteSize();
591 const size_t totalSize = sizeWithoutChecksum + checksumSize;
592 buf = stream->alloc(totalSize);
593 ptr = buf;
594 int tmp = OP_glClearStencil;memcpy(ptr, &tmp, 4); ptr += 4;
595 memcpy(ptr, &totalSize, 4); ptr += 4;
596
597 memcpy(ptr, &s, 4); ptr += 4;
598
599 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
600 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
601
602 }
603
glColorMask_enc(void * self,GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)604 void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
605 {
606 ENCODER_DEBUG_LOG("glColorMask(red:%d, green:%d, blue:%d, alpha:%d)", red, green, blue, alpha);
607 AEMU_SCOPED_TRACE("glColorMask encode");
608
609 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
610 IOStream *stream = ctx->m_stream;
611 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
612 bool useChecksum = checksumCalculator->getVersion() > 0;
613
614 unsigned char *ptr;
615 unsigned char *buf;
616 const size_t sizeWithoutChecksum = 8 + 1 + 1 + 1 + 1;
617 const size_t checksumSize = checksumCalculator->checksumByteSize();
618 const size_t totalSize = sizeWithoutChecksum + checksumSize;
619 buf = stream->alloc(totalSize);
620 ptr = buf;
621 int tmp = OP_glColorMask;memcpy(ptr, &tmp, 4); ptr += 4;
622 memcpy(ptr, &totalSize, 4); ptr += 4;
623
624 memcpy(ptr, &red, 1); ptr += 1;
625 memcpy(ptr, &green, 1); ptr += 1;
626 memcpy(ptr, &blue, 1); ptr += 1;
627 memcpy(ptr, &alpha, 1); ptr += 1;
628
629 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
630 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
631
632 }
633
glCompileShader_enc(void * self,GLuint shader)634 void glCompileShader_enc(void *self , GLuint shader)
635 {
636 ENCODER_DEBUG_LOG("glCompileShader(shader:%u)", shader);
637 AEMU_SCOPED_TRACE("glCompileShader encode");
638
639 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
640 IOStream *stream = ctx->m_stream;
641 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
642 bool useChecksum = checksumCalculator->getVersion() > 0;
643
644 unsigned char *ptr;
645 unsigned char *buf;
646 const size_t sizeWithoutChecksum = 8 + 4;
647 const size_t checksumSize = checksumCalculator->checksumByteSize();
648 const size_t totalSize = sizeWithoutChecksum + checksumSize;
649 buf = stream->alloc(totalSize);
650 ptr = buf;
651 int tmp = OP_glCompileShader;memcpy(ptr, &tmp, 4); ptr += 4;
652 memcpy(ptr, &totalSize, 4); ptr += 4;
653
654 memcpy(ptr, &shader, 4); ptr += 4;
655
656 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
657 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
658
659 }
660
glCompressedTexImage2D_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)661 void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
662 {
663 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);
664 AEMU_SCOPED_TRACE("glCompressedTexImage2D encode");
665
666 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
667 IOStream *stream = ctx->m_stream;
668 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
669 bool useChecksum = checksumCalculator->getVersion() > 0;
670
671 const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
672 unsigned char *ptr;
673 unsigned char *buf;
674 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
675 const size_t checksumSize = checksumCalculator->checksumByteSize();
676 const size_t totalSize = sizeWithoutChecksum + checksumSize;
677 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
678 ptr = buf;
679 int tmp = OP_glCompressedTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
680 memcpy(ptr, &totalSize, 4); ptr += 4;
681
682 memcpy(ptr, &target, 4); ptr += 4;
683 memcpy(ptr, &level, 4); ptr += 4;
684 memcpy(ptr, &internalformat, 4); ptr += 4;
685 memcpy(ptr, &width, 4); ptr += 4;
686 memcpy(ptr, &height, 4); ptr += 4;
687 memcpy(ptr, &border, 4); ptr += 4;
688 memcpy(ptr, &imageSize, 4); ptr += 4;
689
690 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
691 stream->flush();
692 stream->writeFully(&__size_data,4);
693 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
694 if (data != NULL) {
695 stream->writeFully(data, __size_data);
696 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
697 }
698 buf = stream->alloc(checksumSize);
699 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
700
701 }
702
glCompressedTexSubImage2D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)703 void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
704 {
705 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);
706 AEMU_SCOPED_TRACE("glCompressedTexSubImage2D encode");
707
708 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
709 IOStream *stream = ctx->m_stream;
710 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
711 bool useChecksum = checksumCalculator->getVersion() > 0;
712
713 const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
714 unsigned char *ptr;
715 unsigned char *buf;
716 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
717 const size_t checksumSize = checksumCalculator->checksumByteSize();
718 const size_t totalSize = sizeWithoutChecksum + checksumSize;
719 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
720 ptr = buf;
721 int tmp = OP_glCompressedTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
722 memcpy(ptr, &totalSize, 4); ptr += 4;
723
724 memcpy(ptr, &target, 4); ptr += 4;
725 memcpy(ptr, &level, 4); ptr += 4;
726 memcpy(ptr, &xoffset, 4); ptr += 4;
727 memcpy(ptr, &yoffset, 4); ptr += 4;
728 memcpy(ptr, &width, 4); ptr += 4;
729 memcpy(ptr, &height, 4); ptr += 4;
730 memcpy(ptr, &format, 4); ptr += 4;
731 memcpy(ptr, &imageSize, 4); ptr += 4;
732
733 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
734 stream->flush();
735 stream->writeFully(&__size_data,4);
736 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
737 if (data != NULL) {
738 stream->writeFully(data, __size_data);
739 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
740 }
741 buf = stream->alloc(checksumSize);
742 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
743
744 }
745
glCopyTexImage2D_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)746 void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
747 {
748 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);
749 AEMU_SCOPED_TRACE("glCopyTexImage2D encode");
750
751 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
752 IOStream *stream = ctx->m_stream;
753 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
754 bool useChecksum = checksumCalculator->getVersion() > 0;
755
756 unsigned char *ptr;
757 unsigned char *buf;
758 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
759 const size_t checksumSize = checksumCalculator->checksumByteSize();
760 const size_t totalSize = sizeWithoutChecksum + checksumSize;
761 buf = stream->alloc(totalSize);
762 ptr = buf;
763 int tmp = OP_glCopyTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
764 memcpy(ptr, &totalSize, 4); ptr += 4;
765
766 memcpy(ptr, &target, 4); ptr += 4;
767 memcpy(ptr, &level, 4); ptr += 4;
768 memcpy(ptr, &internalformat, 4); ptr += 4;
769 memcpy(ptr, &x, 4); ptr += 4;
770 memcpy(ptr, &y, 4); ptr += 4;
771 memcpy(ptr, &width, 4); ptr += 4;
772 memcpy(ptr, &height, 4); ptr += 4;
773 memcpy(ptr, &border, 4); ptr += 4;
774
775 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
776 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
777
778 }
779
glCopyTexSubImage2D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)780 void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
781 {
782 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);
783 AEMU_SCOPED_TRACE("glCopyTexSubImage2D encode");
784
785 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
786 IOStream *stream = ctx->m_stream;
787 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
788 bool useChecksum = checksumCalculator->getVersion() > 0;
789
790 unsigned char *ptr;
791 unsigned char *buf;
792 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
793 const size_t checksumSize = checksumCalculator->checksumByteSize();
794 const size_t totalSize = sizeWithoutChecksum + checksumSize;
795 buf = stream->alloc(totalSize);
796 ptr = buf;
797 int tmp = OP_glCopyTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
798 memcpy(ptr, &totalSize, 4); ptr += 4;
799
800 memcpy(ptr, &target, 4); ptr += 4;
801 memcpy(ptr, &level, 4); ptr += 4;
802 memcpy(ptr, &xoffset, 4); ptr += 4;
803 memcpy(ptr, &yoffset, 4); ptr += 4;
804 memcpy(ptr, &x, 4); ptr += 4;
805 memcpy(ptr, &y, 4); ptr += 4;
806 memcpy(ptr, &width, 4); ptr += 4;
807 memcpy(ptr, &height, 4); ptr += 4;
808
809 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
810 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
811
812 }
813
glCreateProgram_enc(void * self)814 GLuint glCreateProgram_enc(void *self )
815 {
816 ENCODER_DEBUG_LOG("glCreateProgram()");
817 AEMU_SCOPED_TRACE("glCreateProgram encode");
818
819 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
820 IOStream *stream = ctx->m_stream;
821 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
822 bool useChecksum = checksumCalculator->getVersion() > 0;
823
824 unsigned char *ptr;
825 unsigned char *buf;
826 const size_t sizeWithoutChecksum = 8;
827 const size_t checksumSize = checksumCalculator->checksumByteSize();
828 const size_t totalSize = sizeWithoutChecksum + checksumSize;
829 buf = stream->alloc(totalSize);
830 ptr = buf;
831 int tmp = OP_glCreateProgram;memcpy(ptr, &tmp, 4); ptr += 4;
832 memcpy(ptr, &totalSize, 4); ptr += 4;
833
834
835 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
836 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
837
838
839 GLuint retval;
840 stream->readback(&retval, 4);
841 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
842 if (useChecksum) {
843 unsigned char *checksumBufPtr = NULL;
844 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
845 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
846 stream->readback(checksumBufPtr, checksumSize);
847 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
848 ALOGE("glCreateProgram: GL communication error, please report this issue to b.android.com.\n");
849 abort();
850 }
851 }
852 return retval;
853 }
854
glCreateShader_enc(void * self,GLenum type)855 GLuint glCreateShader_enc(void *self , GLenum type)
856 {
857 ENCODER_DEBUG_LOG("glCreateShader(type:0x%08x)", type);
858 AEMU_SCOPED_TRACE("glCreateShader encode");
859
860 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
861 IOStream *stream = ctx->m_stream;
862 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
863 bool useChecksum = checksumCalculator->getVersion() > 0;
864
865 unsigned char *ptr;
866 unsigned char *buf;
867 const size_t sizeWithoutChecksum = 8 + 4;
868 const size_t checksumSize = checksumCalculator->checksumByteSize();
869 const size_t totalSize = sizeWithoutChecksum + checksumSize;
870 buf = stream->alloc(totalSize);
871 ptr = buf;
872 int tmp = OP_glCreateShader;memcpy(ptr, &tmp, 4); ptr += 4;
873 memcpy(ptr, &totalSize, 4); ptr += 4;
874
875 memcpy(ptr, &type, 4); ptr += 4;
876
877 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
878 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
879
880
881 GLuint retval;
882 stream->readback(&retval, 4);
883 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
884 if (useChecksum) {
885 unsigned char *checksumBufPtr = NULL;
886 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
887 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
888 stream->readback(checksumBufPtr, checksumSize);
889 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
890 ALOGE("glCreateShader: GL communication error, please report this issue to b.android.com.\n");
891 abort();
892 }
893 }
894 return retval;
895 }
896
glCullFace_enc(void * self,GLenum mode)897 void glCullFace_enc(void *self , GLenum mode)
898 {
899 ENCODER_DEBUG_LOG("glCullFace(mode:0x%08x)", mode);
900 AEMU_SCOPED_TRACE("glCullFace encode");
901
902 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
903 IOStream *stream = ctx->m_stream;
904 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
905 bool useChecksum = checksumCalculator->getVersion() > 0;
906
907 unsigned char *ptr;
908 unsigned char *buf;
909 const size_t sizeWithoutChecksum = 8 + 4;
910 const size_t checksumSize = checksumCalculator->checksumByteSize();
911 const size_t totalSize = sizeWithoutChecksum + checksumSize;
912 buf = stream->alloc(totalSize);
913 ptr = buf;
914 int tmp = OP_glCullFace;memcpy(ptr, &tmp, 4); ptr += 4;
915 memcpy(ptr, &totalSize, 4); ptr += 4;
916
917 memcpy(ptr, &mode, 4); ptr += 4;
918
919 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
920 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
921
922 }
923
glDeleteBuffers_enc(void * self,GLsizei n,const GLuint * buffers)924 void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers)
925 {
926 ENCODER_DEBUG_LOG("glDeleteBuffers(n:%d, buffers:0x%08x)", n, buffers);
927 AEMU_SCOPED_TRACE("glDeleteBuffers encode");
928
929 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
930 IOStream *stream = ctx->m_stream;
931 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
932 bool useChecksum = checksumCalculator->getVersion() > 0;
933
934 const unsigned int __size_buffers = (n * sizeof(GLuint));
935 unsigned char *ptr;
936 unsigned char *buf;
937 const size_t sizeWithoutChecksum = 8 + 4 + __size_buffers + 1*4;
938 const size_t checksumSize = checksumCalculator->checksumByteSize();
939 const size_t totalSize = sizeWithoutChecksum + checksumSize;
940 buf = stream->alloc(totalSize);
941 ptr = buf;
942 int tmp = OP_glDeleteBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
943 memcpy(ptr, &totalSize, 4); ptr += 4;
944
945 memcpy(ptr, &n, 4); ptr += 4;
946 memcpy(ptr, &__size_buffers, 4); ptr += 4;
947 memcpy(ptr, buffers, __size_buffers);ptr += __size_buffers;
948
949 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
950 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
951
952 }
953
glDeleteFramebuffers_enc(void * self,GLsizei n,const GLuint * framebuffers)954 void glDeleteFramebuffers_enc(void *self , GLsizei n, const GLuint* framebuffers)
955 {
956 ENCODER_DEBUG_LOG("glDeleteFramebuffers(n:%d, framebuffers:0x%08x)", n, framebuffers);
957 AEMU_SCOPED_TRACE("glDeleteFramebuffers encode");
958
959 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
960 IOStream *stream = ctx->m_stream;
961 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
962 bool useChecksum = checksumCalculator->getVersion() > 0;
963
964 const unsigned int __size_framebuffers = (n * sizeof(GLuint));
965 unsigned char *ptr;
966 unsigned char *buf;
967 const size_t sizeWithoutChecksum = 8 + 4 + __size_framebuffers + 1*4;
968 const size_t checksumSize = checksumCalculator->checksumByteSize();
969 const size_t totalSize = sizeWithoutChecksum + checksumSize;
970 buf = stream->alloc(totalSize);
971 ptr = buf;
972 int tmp = OP_glDeleteFramebuffers;memcpy(ptr, &tmp, 4); ptr += 4;
973 memcpy(ptr, &totalSize, 4); ptr += 4;
974
975 memcpy(ptr, &n, 4); ptr += 4;
976 memcpy(ptr, &__size_framebuffers, 4); ptr += 4;
977 memcpy(ptr, framebuffers, __size_framebuffers);ptr += __size_framebuffers;
978
979 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
980 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
981
982 }
983
glDeleteProgram_enc(void * self,GLuint program)984 void glDeleteProgram_enc(void *self , GLuint program)
985 {
986 ENCODER_DEBUG_LOG("glDeleteProgram(program:%u)", program);
987 AEMU_SCOPED_TRACE("glDeleteProgram encode");
988
989 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
990 IOStream *stream = ctx->m_stream;
991 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
992 bool useChecksum = checksumCalculator->getVersion() > 0;
993
994 unsigned char *ptr;
995 unsigned char *buf;
996 const size_t sizeWithoutChecksum = 8 + 4;
997 const size_t checksumSize = checksumCalculator->checksumByteSize();
998 const size_t totalSize = sizeWithoutChecksum + checksumSize;
999 buf = stream->alloc(totalSize);
1000 ptr = buf;
1001 int tmp = OP_glDeleteProgram;memcpy(ptr, &tmp, 4); ptr += 4;
1002 memcpy(ptr, &totalSize, 4); ptr += 4;
1003
1004 memcpy(ptr, &program, 4); ptr += 4;
1005
1006 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1007 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1008
1009 }
1010
glDeleteRenderbuffers_enc(void * self,GLsizei n,const GLuint * renderbuffers)1011 void glDeleteRenderbuffers_enc(void *self , GLsizei n, const GLuint* renderbuffers)
1012 {
1013 ENCODER_DEBUG_LOG("glDeleteRenderbuffers(n:%d, renderbuffers:0x%08x)", n, renderbuffers);
1014 AEMU_SCOPED_TRACE("glDeleteRenderbuffers encode");
1015
1016 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1017 IOStream *stream = ctx->m_stream;
1018 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1019 bool useChecksum = checksumCalculator->getVersion() > 0;
1020
1021 const unsigned int __size_renderbuffers = (n * sizeof(GLuint));
1022 unsigned char *ptr;
1023 unsigned char *buf;
1024 const size_t sizeWithoutChecksum = 8 + 4 + __size_renderbuffers + 1*4;
1025 const size_t checksumSize = checksumCalculator->checksumByteSize();
1026 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1027 buf = stream->alloc(totalSize);
1028 ptr = buf;
1029 int tmp = OP_glDeleteRenderbuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1030 memcpy(ptr, &totalSize, 4); ptr += 4;
1031
1032 memcpy(ptr, &n, 4); ptr += 4;
1033 memcpy(ptr, &__size_renderbuffers, 4); ptr += 4;
1034 memcpy(ptr, renderbuffers, __size_renderbuffers);ptr += __size_renderbuffers;
1035
1036 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1037 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1038
1039 }
1040
glDeleteShader_enc(void * self,GLuint shader)1041 void glDeleteShader_enc(void *self , GLuint shader)
1042 {
1043 ENCODER_DEBUG_LOG("glDeleteShader(shader:%u)", shader);
1044 AEMU_SCOPED_TRACE("glDeleteShader encode");
1045
1046 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1047 IOStream *stream = ctx->m_stream;
1048 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1049 bool useChecksum = checksumCalculator->getVersion() > 0;
1050
1051 unsigned char *ptr;
1052 unsigned char *buf;
1053 const size_t sizeWithoutChecksum = 8 + 4;
1054 const size_t checksumSize = checksumCalculator->checksumByteSize();
1055 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1056 buf = stream->alloc(totalSize);
1057 ptr = buf;
1058 int tmp = OP_glDeleteShader;memcpy(ptr, &tmp, 4); ptr += 4;
1059 memcpy(ptr, &totalSize, 4); ptr += 4;
1060
1061 memcpy(ptr, &shader, 4); ptr += 4;
1062
1063 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1064 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1065
1066 }
1067
glDeleteTextures_enc(void * self,GLsizei n,const GLuint * textures)1068 void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures)
1069 {
1070 ENCODER_DEBUG_LOG("glDeleteTextures(n:%d, textures:0x%08x)", n, textures);
1071 AEMU_SCOPED_TRACE("glDeleteTextures encode");
1072
1073 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1074 IOStream *stream = ctx->m_stream;
1075 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1076 bool useChecksum = checksumCalculator->getVersion() > 0;
1077
1078 const unsigned int __size_textures = (n * sizeof(GLuint));
1079 unsigned char *ptr;
1080 unsigned char *buf;
1081 const size_t sizeWithoutChecksum = 8 + 4 + __size_textures + 1*4;
1082 const size_t checksumSize = checksumCalculator->checksumByteSize();
1083 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1084 buf = stream->alloc(totalSize);
1085 ptr = buf;
1086 int tmp = OP_glDeleteTextures;memcpy(ptr, &tmp, 4); ptr += 4;
1087 memcpy(ptr, &totalSize, 4); ptr += 4;
1088
1089 memcpy(ptr, &n, 4); ptr += 4;
1090 memcpy(ptr, &__size_textures, 4); ptr += 4;
1091 memcpy(ptr, textures, __size_textures);ptr += __size_textures;
1092
1093 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1094 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1095
1096 }
1097
glDepthFunc_enc(void * self,GLenum func)1098 void glDepthFunc_enc(void *self , GLenum func)
1099 {
1100 ENCODER_DEBUG_LOG("glDepthFunc(func:0x%08x)", func);
1101 AEMU_SCOPED_TRACE("glDepthFunc encode");
1102
1103 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1104 IOStream *stream = ctx->m_stream;
1105 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1106 bool useChecksum = checksumCalculator->getVersion() > 0;
1107
1108 unsigned char *ptr;
1109 unsigned char *buf;
1110 const size_t sizeWithoutChecksum = 8 + 4;
1111 const size_t checksumSize = checksumCalculator->checksumByteSize();
1112 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1113 buf = stream->alloc(totalSize);
1114 ptr = buf;
1115 int tmp = OP_glDepthFunc;memcpy(ptr, &tmp, 4); ptr += 4;
1116 memcpy(ptr, &totalSize, 4); ptr += 4;
1117
1118 memcpy(ptr, &func, 4); ptr += 4;
1119
1120 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1121 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1122
1123 }
1124
glDepthMask_enc(void * self,GLboolean flag)1125 void glDepthMask_enc(void *self , GLboolean flag)
1126 {
1127 ENCODER_DEBUG_LOG("glDepthMask(flag:%d)", flag);
1128 AEMU_SCOPED_TRACE("glDepthMask encode");
1129
1130 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1131 IOStream *stream = ctx->m_stream;
1132 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1133 bool useChecksum = checksumCalculator->getVersion() > 0;
1134
1135 unsigned char *ptr;
1136 unsigned char *buf;
1137 const size_t sizeWithoutChecksum = 8 + 1;
1138 const size_t checksumSize = checksumCalculator->checksumByteSize();
1139 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1140 buf = stream->alloc(totalSize);
1141 ptr = buf;
1142 int tmp = OP_glDepthMask;memcpy(ptr, &tmp, 4); ptr += 4;
1143 memcpy(ptr, &totalSize, 4); ptr += 4;
1144
1145 memcpy(ptr, &flag, 1); ptr += 1;
1146
1147 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1148 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1149
1150 }
1151
glDepthRangef_enc(void * self,GLclampf zNear,GLclampf zFar)1152 void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar)
1153 {
1154 ENCODER_DEBUG_LOG("glDepthRangef(zNear:%f, zFar:%f)", zNear, zFar);
1155 AEMU_SCOPED_TRACE("glDepthRangef encode");
1156
1157 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1158 IOStream *stream = ctx->m_stream;
1159 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1160 bool useChecksum = checksumCalculator->getVersion() > 0;
1161
1162 unsigned char *ptr;
1163 unsigned char *buf;
1164 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1165 const size_t checksumSize = checksumCalculator->checksumByteSize();
1166 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1167 buf = stream->alloc(totalSize);
1168 ptr = buf;
1169 int tmp = OP_glDepthRangef;memcpy(ptr, &tmp, 4); ptr += 4;
1170 memcpy(ptr, &totalSize, 4); ptr += 4;
1171
1172 memcpy(ptr, &zNear, 4); ptr += 4;
1173 memcpy(ptr, &zFar, 4); ptr += 4;
1174
1175 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1176 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1177
1178 }
1179
glDetachShader_enc(void * self,GLuint program,GLuint shader)1180 void glDetachShader_enc(void *self , GLuint program, GLuint shader)
1181 {
1182 ENCODER_DEBUG_LOG("glDetachShader(program:%u, shader:%u)", program, shader);
1183 AEMU_SCOPED_TRACE("glDetachShader encode");
1184
1185 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1186 IOStream *stream = ctx->m_stream;
1187 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1188 bool useChecksum = checksumCalculator->getVersion() > 0;
1189
1190 unsigned char *ptr;
1191 unsigned char *buf;
1192 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1193 const size_t checksumSize = checksumCalculator->checksumByteSize();
1194 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1195 buf = stream->alloc(totalSize);
1196 ptr = buf;
1197 int tmp = OP_glDetachShader;memcpy(ptr, &tmp, 4); ptr += 4;
1198 memcpy(ptr, &totalSize, 4); ptr += 4;
1199
1200 memcpy(ptr, &program, 4); ptr += 4;
1201 memcpy(ptr, &shader, 4); ptr += 4;
1202
1203 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1204 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1205
1206 }
1207
glDisable_enc(void * self,GLenum cap)1208 void glDisable_enc(void *self , GLenum cap)
1209 {
1210 ENCODER_DEBUG_LOG("glDisable(cap:0x%08x)", cap);
1211 AEMU_SCOPED_TRACE("glDisable encode");
1212
1213 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1214 IOStream *stream = ctx->m_stream;
1215 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1216 bool useChecksum = checksumCalculator->getVersion() > 0;
1217
1218 unsigned char *ptr;
1219 unsigned char *buf;
1220 const size_t sizeWithoutChecksum = 8 + 4;
1221 const size_t checksumSize = checksumCalculator->checksumByteSize();
1222 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1223 buf = stream->alloc(totalSize);
1224 ptr = buf;
1225 int tmp = OP_glDisable;memcpy(ptr, &tmp, 4); ptr += 4;
1226 memcpy(ptr, &totalSize, 4); ptr += 4;
1227
1228 memcpy(ptr, &cap, 4); ptr += 4;
1229
1230 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1231 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1232
1233 }
1234
glDisableVertexAttribArray_enc(void * self,GLuint index)1235 void glDisableVertexAttribArray_enc(void *self , GLuint index)
1236 {
1237 ENCODER_DEBUG_LOG("glDisableVertexAttribArray(index:%u)", index);
1238 AEMU_SCOPED_TRACE("glDisableVertexAttribArray encode");
1239
1240 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1241 IOStream *stream = ctx->m_stream;
1242 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1243 bool useChecksum = checksumCalculator->getVersion() > 0;
1244
1245 unsigned char *ptr;
1246 unsigned char *buf;
1247 const size_t sizeWithoutChecksum = 8 + 4;
1248 const size_t checksumSize = checksumCalculator->checksumByteSize();
1249 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1250 buf = stream->alloc(totalSize);
1251 ptr = buf;
1252 int tmp = OP_glDisableVertexAttribArray;memcpy(ptr, &tmp, 4); ptr += 4;
1253 memcpy(ptr, &totalSize, 4); ptr += 4;
1254
1255 memcpy(ptr, &index, 4); ptr += 4;
1256
1257 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1258 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1259
1260 }
1261
glDrawArrays_enc(void * self,GLenum mode,GLint first,GLsizei count)1262 void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count)
1263 {
1264 ENCODER_DEBUG_LOG("glDrawArrays(mode:0x%08x, first:%d, count:%d)", mode, first, count);
1265 AEMU_SCOPED_TRACE("glDrawArrays encode");
1266
1267 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1268 IOStream *stream = ctx->m_stream;
1269 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1270 bool useChecksum = checksumCalculator->getVersion() > 0;
1271
1272 unsigned char *ptr;
1273 unsigned char *buf;
1274 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
1275 const size_t checksumSize = checksumCalculator->checksumByteSize();
1276 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1277 buf = stream->alloc(totalSize);
1278 ptr = buf;
1279 int tmp = OP_glDrawArrays;memcpy(ptr, &tmp, 4); ptr += 4;
1280 memcpy(ptr, &totalSize, 4); ptr += 4;
1281
1282 memcpy(ptr, &mode, 4); ptr += 4;
1283 memcpy(ptr, &first, 4); ptr += 4;
1284 memcpy(ptr, &count, 4); ptr += 4;
1285
1286 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1287 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1288
1289 }
1290
glEnable_enc(void * self,GLenum cap)1291 void glEnable_enc(void *self , GLenum cap)
1292 {
1293 ENCODER_DEBUG_LOG("glEnable(cap:0x%08x)", cap);
1294 AEMU_SCOPED_TRACE("glEnable encode");
1295
1296 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1297 IOStream *stream = ctx->m_stream;
1298 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1299 bool useChecksum = checksumCalculator->getVersion() > 0;
1300
1301 unsigned char *ptr;
1302 unsigned char *buf;
1303 const size_t sizeWithoutChecksum = 8 + 4;
1304 const size_t checksumSize = checksumCalculator->checksumByteSize();
1305 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1306 buf = stream->alloc(totalSize);
1307 ptr = buf;
1308 int tmp = OP_glEnable;memcpy(ptr, &tmp, 4); ptr += 4;
1309 memcpy(ptr, &totalSize, 4); ptr += 4;
1310
1311 memcpy(ptr, &cap, 4); ptr += 4;
1312
1313 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1314 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1315
1316 }
1317
glEnableVertexAttribArray_enc(void * self,GLuint index)1318 void glEnableVertexAttribArray_enc(void *self , GLuint index)
1319 {
1320 ENCODER_DEBUG_LOG("glEnableVertexAttribArray(index:%u)", index);
1321 AEMU_SCOPED_TRACE("glEnableVertexAttribArray encode");
1322
1323 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1324 IOStream *stream = ctx->m_stream;
1325 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1326 bool useChecksum = checksumCalculator->getVersion() > 0;
1327
1328 unsigned char *ptr;
1329 unsigned char *buf;
1330 const size_t sizeWithoutChecksum = 8 + 4;
1331 const size_t checksumSize = checksumCalculator->checksumByteSize();
1332 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1333 buf = stream->alloc(totalSize);
1334 ptr = buf;
1335 int tmp = OP_glEnableVertexAttribArray;memcpy(ptr, &tmp, 4); ptr += 4;
1336 memcpy(ptr, &totalSize, 4); ptr += 4;
1337
1338 memcpy(ptr, &index, 4); ptr += 4;
1339
1340 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1341 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1342
1343 }
1344
glFinish_enc(void * self)1345 void glFinish_enc(void *self )
1346 {
1347 ENCODER_DEBUG_LOG("glFinish()");
1348 AEMU_SCOPED_TRACE("glFinish encode");
1349
1350 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1351 IOStream *stream = ctx->m_stream;
1352 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1353 bool useChecksum = checksumCalculator->getVersion() > 0;
1354
1355 unsigned char *ptr;
1356 unsigned char *buf;
1357 const size_t sizeWithoutChecksum = 8;
1358 const size_t checksumSize = checksumCalculator->checksumByteSize();
1359 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1360 buf = stream->alloc(totalSize);
1361 ptr = buf;
1362 int tmp = OP_glFinish;memcpy(ptr, &tmp, 4); ptr += 4;
1363 memcpy(ptr, &totalSize, 4); ptr += 4;
1364
1365
1366 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1367 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1368
1369 }
1370
glFlush_enc(void * self)1371 void glFlush_enc(void *self )
1372 {
1373 ENCODER_DEBUG_LOG("glFlush()");
1374 AEMU_SCOPED_TRACE("glFlush encode");
1375
1376 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1377 IOStream *stream = ctx->m_stream;
1378 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1379 bool useChecksum = checksumCalculator->getVersion() > 0;
1380
1381 unsigned char *ptr;
1382 unsigned char *buf;
1383 const size_t sizeWithoutChecksum = 8;
1384 const size_t checksumSize = checksumCalculator->checksumByteSize();
1385 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1386 buf = stream->alloc(totalSize);
1387 ptr = buf;
1388 int tmp = OP_glFlush;memcpy(ptr, &tmp, 4); ptr += 4;
1389 memcpy(ptr, &totalSize, 4); ptr += 4;
1390
1391
1392 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1393 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1394
1395 }
1396
glFramebufferRenderbuffer_enc(void * self,GLenum target,GLenum attachment,GLenum renderbuffertarget,GLuint renderbuffer)1397 void glFramebufferRenderbuffer_enc(void *self , GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
1398 {
1399 ENCODER_DEBUG_LOG("glFramebufferRenderbuffer(target:0x%08x, attachment:0x%08x, renderbuffertarget:0x%08x, renderbuffer:%u)", target, attachment, renderbuffertarget, renderbuffer);
1400 AEMU_SCOPED_TRACE("glFramebufferRenderbuffer encode");
1401
1402 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1403 IOStream *stream = ctx->m_stream;
1404 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1405 bool useChecksum = checksumCalculator->getVersion() > 0;
1406
1407 unsigned char *ptr;
1408 unsigned char *buf;
1409 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
1410 const size_t checksumSize = checksumCalculator->checksumByteSize();
1411 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1412 buf = stream->alloc(totalSize);
1413 ptr = buf;
1414 int tmp = OP_glFramebufferRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
1415 memcpy(ptr, &totalSize, 4); ptr += 4;
1416
1417 memcpy(ptr, &target, 4); ptr += 4;
1418 memcpy(ptr, &attachment, 4); ptr += 4;
1419 memcpy(ptr, &renderbuffertarget, 4); ptr += 4;
1420 memcpy(ptr, &renderbuffer, 4); ptr += 4;
1421
1422 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1423 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1424
1425 }
1426
glFramebufferTexture2D_enc(void * self,GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level)1427 void glFramebufferTexture2D_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
1428 {
1429 ENCODER_DEBUG_LOG("glFramebufferTexture2D(target:0x%08x, attachment:0x%08x, textarget:0x%08x, texture:%u, level:%d)", target, attachment, textarget, texture, level);
1430 AEMU_SCOPED_TRACE("glFramebufferTexture2D encode");
1431
1432 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1433 IOStream *stream = ctx->m_stream;
1434 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1435 bool useChecksum = checksumCalculator->getVersion() > 0;
1436
1437 unsigned char *ptr;
1438 unsigned char *buf;
1439 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
1440 const size_t checksumSize = checksumCalculator->checksumByteSize();
1441 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1442 buf = stream->alloc(totalSize);
1443 ptr = buf;
1444 int tmp = OP_glFramebufferTexture2D;memcpy(ptr, &tmp, 4); ptr += 4;
1445 memcpy(ptr, &totalSize, 4); ptr += 4;
1446
1447 memcpy(ptr, &target, 4); ptr += 4;
1448 memcpy(ptr, &attachment, 4); ptr += 4;
1449 memcpy(ptr, &textarget, 4); ptr += 4;
1450 memcpy(ptr, &texture, 4); ptr += 4;
1451 memcpy(ptr, &level, 4); ptr += 4;
1452
1453 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1454 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1455
1456 }
1457
glFrontFace_enc(void * self,GLenum mode)1458 void glFrontFace_enc(void *self , GLenum mode)
1459 {
1460 ENCODER_DEBUG_LOG("glFrontFace(mode:0x%08x)", mode);
1461 AEMU_SCOPED_TRACE("glFrontFace encode");
1462
1463 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1464 IOStream *stream = ctx->m_stream;
1465 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1466 bool useChecksum = checksumCalculator->getVersion() > 0;
1467
1468 unsigned char *ptr;
1469 unsigned char *buf;
1470 const size_t sizeWithoutChecksum = 8 + 4;
1471 const size_t checksumSize = checksumCalculator->checksumByteSize();
1472 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1473 buf = stream->alloc(totalSize);
1474 ptr = buf;
1475 int tmp = OP_glFrontFace;memcpy(ptr, &tmp, 4); ptr += 4;
1476 memcpy(ptr, &totalSize, 4); ptr += 4;
1477
1478 memcpy(ptr, &mode, 4); ptr += 4;
1479
1480 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1481 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1482
1483 }
1484
glGenBuffers_enc(void * self,GLsizei n,GLuint * buffers)1485 void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers)
1486 {
1487 ENCODER_DEBUG_LOG("glGenBuffers(n:%d, buffers:0x%08x)", n, buffers);
1488 AEMU_SCOPED_TRACE("glGenBuffers encode");
1489
1490 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1491 IOStream *stream = ctx->m_stream;
1492 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1493 bool useChecksum = checksumCalculator->getVersion() > 0;
1494
1495 const unsigned int __size_buffers = (n * sizeof(GLuint));
1496 unsigned char *ptr;
1497 unsigned char *buf;
1498 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1499 const size_t checksumSize = checksumCalculator->checksumByteSize();
1500 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1501 buf = stream->alloc(totalSize);
1502 ptr = buf;
1503 int tmp = OP_glGenBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1504 memcpy(ptr, &totalSize, 4); ptr += 4;
1505
1506 memcpy(ptr, &n, 4); ptr += 4;
1507 memcpy(ptr, &__size_buffers, 4); ptr += 4;
1508
1509 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1510 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1511
1512 stream->readback(buffers, __size_buffers);
1513 if (useChecksum) checksumCalculator->addBuffer(buffers, __size_buffers);
1514 if (useChecksum) {
1515 unsigned char *checksumBufPtr = NULL;
1516 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1517 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1518 stream->readback(checksumBufPtr, checksumSize);
1519 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1520 ALOGE("glGenBuffers: GL communication error, please report this issue to b.android.com.\n");
1521 abort();
1522 }
1523 }
1524 }
1525
glGenerateMipmap_enc(void * self,GLenum target)1526 void glGenerateMipmap_enc(void *self , GLenum target)
1527 {
1528 ENCODER_DEBUG_LOG("glGenerateMipmap(target:0x%08x)", target);
1529 AEMU_SCOPED_TRACE("glGenerateMipmap encode");
1530
1531 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1532 IOStream *stream = ctx->m_stream;
1533 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1534 bool useChecksum = checksumCalculator->getVersion() > 0;
1535
1536 unsigned char *ptr;
1537 unsigned char *buf;
1538 const size_t sizeWithoutChecksum = 8 + 4;
1539 const size_t checksumSize = checksumCalculator->checksumByteSize();
1540 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1541 buf = stream->alloc(totalSize);
1542 ptr = buf;
1543 int tmp = OP_glGenerateMipmap;memcpy(ptr, &tmp, 4); ptr += 4;
1544 memcpy(ptr, &totalSize, 4); ptr += 4;
1545
1546 memcpy(ptr, &target, 4); ptr += 4;
1547
1548 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1549 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1550
1551 }
1552
glGenFramebuffers_enc(void * self,GLsizei n,GLuint * framebuffers)1553 void glGenFramebuffers_enc(void *self , GLsizei n, GLuint* framebuffers)
1554 {
1555 ENCODER_DEBUG_LOG("glGenFramebuffers(n:%d, framebuffers:0x%08x)", n, framebuffers);
1556 AEMU_SCOPED_TRACE("glGenFramebuffers encode");
1557
1558 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1559 IOStream *stream = ctx->m_stream;
1560 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1561 bool useChecksum = checksumCalculator->getVersion() > 0;
1562
1563 const unsigned int __size_framebuffers = (n * sizeof(GLuint));
1564 unsigned char *ptr;
1565 unsigned char *buf;
1566 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1567 const size_t checksumSize = checksumCalculator->checksumByteSize();
1568 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1569 buf = stream->alloc(totalSize);
1570 ptr = buf;
1571 int tmp = OP_glGenFramebuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1572 memcpy(ptr, &totalSize, 4); ptr += 4;
1573
1574 memcpy(ptr, &n, 4); ptr += 4;
1575 memcpy(ptr, &__size_framebuffers, 4); ptr += 4;
1576
1577 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1578 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1579
1580 stream->readback(framebuffers, __size_framebuffers);
1581 if (useChecksum) checksumCalculator->addBuffer(framebuffers, __size_framebuffers);
1582 if (useChecksum) {
1583 unsigned char *checksumBufPtr = NULL;
1584 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1585 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1586 stream->readback(checksumBufPtr, checksumSize);
1587 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1588 ALOGE("glGenFramebuffers: GL communication error, please report this issue to b.android.com.\n");
1589 abort();
1590 }
1591 }
1592 }
1593
glGenRenderbuffers_enc(void * self,GLsizei n,GLuint * renderbuffers)1594 void glGenRenderbuffers_enc(void *self , GLsizei n, GLuint* renderbuffers)
1595 {
1596 ENCODER_DEBUG_LOG("glGenRenderbuffers(n:%d, renderbuffers:0x%08x)", n, renderbuffers);
1597 AEMU_SCOPED_TRACE("glGenRenderbuffers encode");
1598
1599 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1600 IOStream *stream = ctx->m_stream;
1601 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1602 bool useChecksum = checksumCalculator->getVersion() > 0;
1603
1604 const unsigned int __size_renderbuffers = (n * sizeof(GLuint));
1605 unsigned char *ptr;
1606 unsigned char *buf;
1607 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1608 const size_t checksumSize = checksumCalculator->checksumByteSize();
1609 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1610 buf = stream->alloc(totalSize);
1611 ptr = buf;
1612 int tmp = OP_glGenRenderbuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1613 memcpy(ptr, &totalSize, 4); ptr += 4;
1614
1615 memcpy(ptr, &n, 4); ptr += 4;
1616 memcpy(ptr, &__size_renderbuffers, 4); ptr += 4;
1617
1618 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1619 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1620
1621 stream->readback(renderbuffers, __size_renderbuffers);
1622 if (useChecksum) checksumCalculator->addBuffer(renderbuffers, __size_renderbuffers);
1623 if (useChecksum) {
1624 unsigned char *checksumBufPtr = NULL;
1625 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1626 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1627 stream->readback(checksumBufPtr, checksumSize);
1628 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1629 ALOGE("glGenRenderbuffers: GL communication error, please report this issue to b.android.com.\n");
1630 abort();
1631 }
1632 }
1633 }
1634
glGenTextures_enc(void * self,GLsizei n,GLuint * textures)1635 void glGenTextures_enc(void *self , GLsizei n, GLuint* textures)
1636 {
1637 ENCODER_DEBUG_LOG("glGenTextures(n:%d, textures:0x%08x)", n, textures);
1638 AEMU_SCOPED_TRACE("glGenTextures encode");
1639
1640 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1641 IOStream *stream = ctx->m_stream;
1642 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1643 bool useChecksum = checksumCalculator->getVersion() > 0;
1644
1645 const unsigned int __size_textures = (n * sizeof(GLuint));
1646 unsigned char *ptr;
1647 unsigned char *buf;
1648 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1649 const size_t checksumSize = checksumCalculator->checksumByteSize();
1650 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1651 buf = stream->alloc(totalSize);
1652 ptr = buf;
1653 int tmp = OP_glGenTextures;memcpy(ptr, &tmp, 4); ptr += 4;
1654 memcpy(ptr, &totalSize, 4); ptr += 4;
1655
1656 memcpy(ptr, &n, 4); ptr += 4;
1657 memcpy(ptr, &__size_textures, 4); ptr += 4;
1658
1659 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1660 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1661
1662 stream->readback(textures, __size_textures);
1663 if (useChecksum) checksumCalculator->addBuffer(textures, __size_textures);
1664 if (useChecksum) {
1665 unsigned char *checksumBufPtr = NULL;
1666 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1667 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1668 stream->readback(checksumBufPtr, checksumSize);
1669 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1670 ALOGE("glGenTextures: GL communication error, please report this issue to b.android.com.\n");
1671 abort();
1672 }
1673 }
1674 }
1675
glGetActiveAttrib_enc(void * self,GLuint program,GLuint index,GLsizei bufsize,GLsizei * length,GLint * size,GLenum * type,GLchar * name)1676 void glGetActiveAttrib_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
1677 {
1678 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);
1679 AEMU_SCOPED_TRACE("glGetActiveAttrib encode");
1680
1681 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1682 IOStream *stream = ctx->m_stream;
1683 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1684 bool useChecksum = checksumCalculator->getVersion() > 0;
1685
1686 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
1687 const unsigned int __size_size = ((size != NULL) ? (sizeof(GLint)) : 0);
1688 const unsigned int __size_type = ((type != NULL) ? (sizeof(GLenum)) : 0);
1689 const unsigned int __size_name = ((name != NULL) ? bufsize : 0);
1690 unsigned char *ptr;
1691 unsigned char *buf;
1692 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
1693 const size_t checksumSize = checksumCalculator->checksumByteSize();
1694 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1695 buf = stream->alloc(totalSize);
1696 ptr = buf;
1697 int tmp = OP_glGetActiveAttrib;memcpy(ptr, &tmp, 4); ptr += 4;
1698 memcpy(ptr, &totalSize, 4); ptr += 4;
1699
1700 memcpy(ptr, &program, 4); ptr += 4;
1701 memcpy(ptr, &index, 4); ptr += 4;
1702 memcpy(ptr, &bufsize, 4); ptr += 4;
1703 memcpy(ptr, &__size_length, 4); ptr += 4;
1704 memcpy(ptr, &__size_size, 4); ptr += 4;
1705 memcpy(ptr, &__size_type, 4); ptr += 4;
1706 memcpy(ptr, &__size_name, 4); ptr += 4;
1707
1708 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1709 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1710
1711 if (length != NULL) {
1712 stream->readback(length, __size_length);
1713 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
1714 }
1715 if (size != NULL) {
1716 stream->readback(size, __size_size);
1717 if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
1718 }
1719 if (type != NULL) {
1720 stream->readback(type, __size_type);
1721 if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
1722 }
1723 if (name != NULL) {
1724 stream->readback(name, __size_name);
1725 if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
1726 }
1727 if (useChecksum) {
1728 unsigned char *checksumBufPtr = NULL;
1729 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1730 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1731 stream->readback(checksumBufPtr, checksumSize);
1732 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1733 ALOGE("glGetActiveAttrib: GL communication error, please report this issue to b.android.com.\n");
1734 abort();
1735 }
1736 }
1737 }
1738
glGetActiveUniform_enc(void * self,GLuint program,GLuint index,GLsizei bufsize,GLsizei * length,GLint * size,GLenum * type,GLchar * name)1739 void glGetActiveUniform_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
1740 {
1741 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);
1742 AEMU_SCOPED_TRACE("glGetActiveUniform encode");
1743
1744 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1745 IOStream *stream = ctx->m_stream;
1746 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1747 bool useChecksum = checksumCalculator->getVersion() > 0;
1748
1749 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
1750 const unsigned int __size_size = ((size != NULL) ? (sizeof(GLint)) : 0);
1751 const unsigned int __size_type = ((type != NULL) ? (sizeof(GLenum)) : 0);
1752 const unsigned int __size_name = ((name != NULL) ? bufsize : 0);
1753 unsigned char *ptr;
1754 unsigned char *buf;
1755 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
1756 const size_t checksumSize = checksumCalculator->checksumByteSize();
1757 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1758 buf = stream->alloc(totalSize);
1759 ptr = buf;
1760 int tmp = OP_glGetActiveUniform;memcpy(ptr, &tmp, 4); ptr += 4;
1761 memcpy(ptr, &totalSize, 4); ptr += 4;
1762
1763 memcpy(ptr, &program, 4); ptr += 4;
1764 memcpy(ptr, &index, 4); ptr += 4;
1765 memcpy(ptr, &bufsize, 4); ptr += 4;
1766 memcpy(ptr, &__size_length, 4); ptr += 4;
1767 memcpy(ptr, &__size_size, 4); ptr += 4;
1768 memcpy(ptr, &__size_type, 4); ptr += 4;
1769 memcpy(ptr, &__size_name, 4); ptr += 4;
1770
1771 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1772 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1773
1774 if (length != NULL) {
1775 stream->readback(length, __size_length);
1776 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
1777 }
1778 if (size != NULL) {
1779 stream->readback(size, __size_size);
1780 if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
1781 }
1782 if (type != NULL) {
1783 stream->readback(type, __size_type);
1784 if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
1785 }
1786 if (name != NULL) {
1787 stream->readback(name, __size_name);
1788 if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
1789 }
1790 if (useChecksum) {
1791 unsigned char *checksumBufPtr = NULL;
1792 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1793 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1794 stream->readback(checksumBufPtr, checksumSize);
1795 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1796 ALOGE("glGetActiveUniform: GL communication error, please report this issue to b.android.com.\n");
1797 abort();
1798 }
1799 }
1800 }
1801
glGetAttachedShaders_enc(void * self,GLuint program,GLsizei maxcount,GLsizei * count,GLuint * shaders)1802 void glGetAttachedShaders_enc(void *self , GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
1803 {
1804 ENCODER_DEBUG_LOG("glGetAttachedShaders(program:%u, maxcount:%d, count:0x%08x, shaders:0x%08x)", program, maxcount, count, shaders);
1805 AEMU_SCOPED_TRACE("glGetAttachedShaders encode");
1806
1807 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1808 IOStream *stream = ctx->m_stream;
1809 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1810 bool useChecksum = checksumCalculator->getVersion() > 0;
1811
1812 const unsigned int __size_count = ((count != NULL) ? (sizeof(GLsizei)) : 0);
1813 const unsigned int __size_shaders = (maxcount*sizeof(GLuint));
1814 unsigned char *ptr;
1815 unsigned char *buf;
1816 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
1817 const size_t checksumSize = checksumCalculator->checksumByteSize();
1818 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1819 buf = stream->alloc(totalSize);
1820 ptr = buf;
1821 int tmp = OP_glGetAttachedShaders;memcpy(ptr, &tmp, 4); ptr += 4;
1822 memcpy(ptr, &totalSize, 4); ptr += 4;
1823
1824 memcpy(ptr, &program, 4); ptr += 4;
1825 memcpy(ptr, &maxcount, 4); ptr += 4;
1826 memcpy(ptr, &__size_count, 4); ptr += 4;
1827 memcpy(ptr, &__size_shaders, 4); ptr += 4;
1828
1829 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1830 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1831
1832 if (count != NULL) {
1833 stream->readback(count, __size_count);
1834 if (useChecksum) checksumCalculator->addBuffer(count, __size_count);
1835 }
1836 stream->readback(shaders, __size_shaders);
1837 if (useChecksum) checksumCalculator->addBuffer(shaders, __size_shaders);
1838 if (useChecksum) {
1839 unsigned char *checksumBufPtr = NULL;
1840 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1841 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1842 stream->readback(checksumBufPtr, checksumSize);
1843 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1844 ALOGE("glGetAttachedShaders: GL communication error, please report this issue to b.android.com.\n");
1845 abort();
1846 }
1847 }
1848 }
1849
glGetAttribLocation_enc(void * self,GLuint program,const GLchar * name)1850 int glGetAttribLocation_enc(void *self , GLuint program, const GLchar* name)
1851 {
1852 ENCODER_DEBUG_LOG("glGetAttribLocation(program:%u, name:0x%08x)", program, name);
1853 AEMU_SCOPED_TRACE("glGetAttribLocation encode");
1854
1855 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1856 IOStream *stream = ctx->m_stream;
1857 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1858 bool useChecksum = checksumCalculator->getVersion() > 0;
1859
1860 const unsigned int __size_name = (strlen(name) + 1);
1861 unsigned char *ptr;
1862 unsigned char *buf;
1863 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
1864 const size_t checksumSize = checksumCalculator->checksumByteSize();
1865 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1866 buf = stream->alloc(totalSize);
1867 ptr = buf;
1868 int tmp = OP_glGetAttribLocation;memcpy(ptr, &tmp, 4); ptr += 4;
1869 memcpy(ptr, &totalSize, 4); ptr += 4;
1870
1871 memcpy(ptr, &program, 4); ptr += 4;
1872 memcpy(ptr, &__size_name, 4); ptr += 4;
1873 memcpy(ptr, name, __size_name);ptr += __size_name;
1874
1875 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1876 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1877
1878
1879 int retval;
1880 stream->readback(&retval, 4);
1881 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
1882 if (useChecksum) {
1883 unsigned char *checksumBufPtr = NULL;
1884 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1885 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1886 stream->readback(checksumBufPtr, checksumSize);
1887 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1888 ALOGE("glGetAttribLocation: GL communication error, please report this issue to b.android.com.\n");
1889 abort();
1890 }
1891 }
1892 return retval;
1893 }
1894
glGetBooleanv_enc(void * self,GLenum pname,GLboolean * params)1895 void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params)
1896 {
1897 ENCODER_DEBUG_LOG("glGetBooleanv(pname:0x%08x, params:0x%08x)", pname, params);
1898 AEMU_SCOPED_TRACE("glGetBooleanv encode");
1899
1900 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1901 IOStream *stream = ctx->m_stream;
1902 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1903 bool useChecksum = checksumCalculator->getVersion() > 0;
1904
1905 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLboolean));
1906 unsigned char *ptr;
1907 unsigned char *buf;
1908 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1909 const size_t checksumSize = checksumCalculator->checksumByteSize();
1910 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1911 buf = stream->alloc(totalSize);
1912 ptr = buf;
1913 int tmp = OP_glGetBooleanv;memcpy(ptr, &tmp, 4); ptr += 4;
1914 memcpy(ptr, &totalSize, 4); ptr += 4;
1915
1916 memcpy(ptr, &pname, 4); ptr += 4;
1917 memcpy(ptr, &__size_params, 4); ptr += 4;
1918
1919 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1920 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1921
1922 stream->readback(params, __size_params);
1923 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
1924 if (useChecksum) {
1925 unsigned char *checksumBufPtr = NULL;
1926 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1927 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1928 stream->readback(checksumBufPtr, checksumSize);
1929 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1930 ALOGE("glGetBooleanv: GL communication error, please report this issue to b.android.com.\n");
1931 abort();
1932 }
1933 }
1934 }
1935
glGetBufferParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)1936 void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
1937 {
1938 ENCODER_DEBUG_LOG("glGetBufferParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
1939 AEMU_SCOPED_TRACE("glGetBufferParameteriv encode");
1940
1941 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1942 IOStream *stream = ctx->m_stream;
1943 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1944 bool useChecksum = checksumCalculator->getVersion() > 0;
1945
1946 const unsigned int __size_params = (sizeof(GLint));
1947 unsigned char *ptr;
1948 unsigned char *buf;
1949 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
1950 const size_t checksumSize = checksumCalculator->checksumByteSize();
1951 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1952 buf = stream->alloc(totalSize);
1953 ptr = buf;
1954 int tmp = OP_glGetBufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
1955 memcpy(ptr, &totalSize, 4); ptr += 4;
1956
1957 memcpy(ptr, &target, 4); ptr += 4;
1958 memcpy(ptr, &pname, 4); ptr += 4;
1959 memcpy(ptr, &__size_params, 4); ptr += 4;
1960
1961 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1962 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1963
1964 stream->readback(params, __size_params);
1965 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
1966 if (useChecksum) {
1967 unsigned char *checksumBufPtr = NULL;
1968 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1969 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1970 stream->readback(checksumBufPtr, checksumSize);
1971 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1972 ALOGE("glGetBufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
1973 abort();
1974 }
1975 }
1976 }
1977
glGetError_enc(void * self)1978 GLenum glGetError_enc(void *self )
1979 {
1980 ENCODER_DEBUG_LOG("glGetError()");
1981 AEMU_SCOPED_TRACE("glGetError encode");
1982
1983 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1984 IOStream *stream = ctx->m_stream;
1985 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1986 bool useChecksum = checksumCalculator->getVersion() > 0;
1987
1988 unsigned char *ptr;
1989 unsigned char *buf;
1990 const size_t sizeWithoutChecksum = 8;
1991 const size_t checksumSize = checksumCalculator->checksumByteSize();
1992 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1993 buf = stream->alloc(totalSize);
1994 ptr = buf;
1995 int tmp = OP_glGetError;memcpy(ptr, &tmp, 4); ptr += 4;
1996 memcpy(ptr, &totalSize, 4); ptr += 4;
1997
1998
1999 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2000 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2001
2002
2003 GLenum retval;
2004 stream->readback(&retval, 4);
2005 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
2006 if (useChecksum) {
2007 unsigned char *checksumBufPtr = NULL;
2008 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2009 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2010 stream->readback(checksumBufPtr, checksumSize);
2011 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2012 ALOGE("glGetError: GL communication error, please report this issue to b.android.com.\n");
2013 abort();
2014 }
2015 }
2016 return retval;
2017 }
2018
glGetFloatv_enc(void * self,GLenum pname,GLfloat * params)2019 void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params)
2020 {
2021 ENCODER_DEBUG_LOG("glGetFloatv(pname:0x%08x, params:0x%08x)", pname, params);
2022 AEMU_SCOPED_TRACE("glGetFloatv encode");
2023
2024 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2025 IOStream *stream = ctx->m_stream;
2026 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2027 bool useChecksum = checksumCalculator->getVersion() > 0;
2028
2029 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
2030 unsigned char *ptr;
2031 unsigned char *buf;
2032 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
2033 const size_t checksumSize = checksumCalculator->checksumByteSize();
2034 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2035 buf = stream->alloc(totalSize);
2036 ptr = buf;
2037 int tmp = OP_glGetFloatv;memcpy(ptr, &tmp, 4); ptr += 4;
2038 memcpy(ptr, &totalSize, 4); ptr += 4;
2039
2040 memcpy(ptr, &pname, 4); ptr += 4;
2041 memcpy(ptr, &__size_params, 4); ptr += 4;
2042
2043 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2044 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2045
2046 stream->readback(params, __size_params);
2047 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2048 if (useChecksum) {
2049 unsigned char *checksumBufPtr = NULL;
2050 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2051 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2052 stream->readback(checksumBufPtr, checksumSize);
2053 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2054 ALOGE("glGetFloatv: GL communication error, please report this issue to b.android.com.\n");
2055 abort();
2056 }
2057 }
2058 }
2059
glGetFramebufferAttachmentParameteriv_enc(void * self,GLenum target,GLenum attachment,GLenum pname,GLint * params)2060 void glGetFramebufferAttachmentParameteriv_enc(void *self , GLenum target, GLenum attachment, GLenum pname, GLint* params)
2061 {
2062 ENCODER_DEBUG_LOG("glGetFramebufferAttachmentParameteriv(target:0x%08x, attachment:0x%08x, pname:0x%08x, params:0x%08x)", target, attachment, pname, params);
2063 AEMU_SCOPED_TRACE("glGetFramebufferAttachmentParameteriv encode");
2064
2065 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2066 IOStream *stream = ctx->m_stream;
2067 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2068 bool useChecksum = checksumCalculator->getVersion() > 0;
2069
2070 const unsigned int __size_params = (sizeof(GLint));
2071 unsigned char *ptr;
2072 unsigned char *buf;
2073 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
2074 const size_t checksumSize = checksumCalculator->checksumByteSize();
2075 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2076 buf = stream->alloc(totalSize);
2077 ptr = buf;
2078 int tmp = OP_glGetFramebufferAttachmentParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2079 memcpy(ptr, &totalSize, 4); ptr += 4;
2080
2081 memcpy(ptr, &target, 4); ptr += 4;
2082 memcpy(ptr, &attachment, 4); ptr += 4;
2083 memcpy(ptr, &pname, 4); ptr += 4;
2084 memcpy(ptr, &__size_params, 4); ptr += 4;
2085
2086 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2087 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2088
2089 stream->readback(params, __size_params);
2090 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2091 if (useChecksum) {
2092 unsigned char *checksumBufPtr = NULL;
2093 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2094 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2095 stream->readback(checksumBufPtr, checksumSize);
2096 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2097 ALOGE("glGetFramebufferAttachmentParameteriv: GL communication error, please report this issue to b.android.com.\n");
2098 abort();
2099 }
2100 }
2101 }
2102
glGetIntegerv_enc(void * self,GLenum pname,GLint * params)2103 void glGetIntegerv_enc(void *self , GLenum pname, GLint* params)
2104 {
2105 ENCODER_DEBUG_LOG("glGetIntegerv(pname:0x%08x, params:0x%08x)", pname, params);
2106 AEMU_SCOPED_TRACE("glGetIntegerv encode");
2107
2108 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2109 IOStream *stream = ctx->m_stream;
2110 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2111 bool useChecksum = checksumCalculator->getVersion() > 0;
2112
2113 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
2114 unsigned char *ptr;
2115 unsigned char *buf;
2116 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
2117 const size_t checksumSize = checksumCalculator->checksumByteSize();
2118 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2119 buf = stream->alloc(totalSize);
2120 ptr = buf;
2121 int tmp = OP_glGetIntegerv;memcpy(ptr, &tmp, 4); ptr += 4;
2122 memcpy(ptr, &totalSize, 4); ptr += 4;
2123
2124 memcpy(ptr, &pname, 4); ptr += 4;
2125 memcpy(ptr, &__size_params, 4); ptr += 4;
2126
2127 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2128 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2129
2130 stream->readback(params, __size_params);
2131 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2132 if (useChecksum) {
2133 unsigned char *checksumBufPtr = NULL;
2134 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2135 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2136 stream->readback(checksumBufPtr, checksumSize);
2137 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2138 ALOGE("glGetIntegerv: GL communication error, please report this issue to b.android.com.\n");
2139 abort();
2140 }
2141 }
2142 }
2143
glGetProgramiv_enc(void * self,GLuint program,GLenum pname,GLint * params)2144 void glGetProgramiv_enc(void *self , GLuint program, GLenum pname, GLint* params)
2145 {
2146 ENCODER_DEBUG_LOG("glGetProgramiv(program:%u, pname:0x%08x, params:0x%08x)", program, pname, params);
2147 AEMU_SCOPED_TRACE("glGetProgramiv encode");
2148
2149 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2150 IOStream *stream = ctx->m_stream;
2151 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2152 bool useChecksum = checksumCalculator->getVersion() > 0;
2153
2154 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
2155 unsigned char *ptr;
2156 unsigned char *buf;
2157 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2158 const size_t checksumSize = checksumCalculator->checksumByteSize();
2159 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2160 buf = stream->alloc(totalSize);
2161 ptr = buf;
2162 int tmp = OP_glGetProgramiv;memcpy(ptr, &tmp, 4); ptr += 4;
2163 memcpy(ptr, &totalSize, 4); ptr += 4;
2164
2165 memcpy(ptr, &program, 4); ptr += 4;
2166 memcpy(ptr, &pname, 4); ptr += 4;
2167 memcpy(ptr, &__size_params, 4); ptr += 4;
2168
2169 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2170 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2171
2172 stream->readback(params, __size_params);
2173 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2174 if (useChecksum) {
2175 unsigned char *checksumBufPtr = NULL;
2176 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2177 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2178 stream->readback(checksumBufPtr, checksumSize);
2179 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2180 ALOGE("glGetProgramiv: GL communication error, please report this issue to b.android.com.\n");
2181 abort();
2182 }
2183 }
2184 }
2185
glGetProgramInfoLog_enc(void * self,GLuint program,GLsizei bufsize,GLsizei * length,GLchar * infolog)2186 void glGetProgramInfoLog_enc(void *self , GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
2187 {
2188 ENCODER_DEBUG_LOG("glGetProgramInfoLog(program:%u, bufsize:%d, length:0x%08x, infolog:0x%08x)", program, bufsize, length, infolog);
2189 AEMU_SCOPED_TRACE("glGetProgramInfoLog encode");
2190
2191 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2192 IOStream *stream = ctx->m_stream;
2193 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2194 bool useChecksum = checksumCalculator->getVersion() > 0;
2195
2196 const unsigned int __size_length = ((length != NULL) ? sizeof(GLsizei) : 0);
2197 const unsigned int __size_infolog = bufsize;
2198 unsigned char *ptr;
2199 unsigned char *buf;
2200 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2201 const size_t checksumSize = checksumCalculator->checksumByteSize();
2202 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2203 buf = stream->alloc(totalSize);
2204 ptr = buf;
2205 int tmp = OP_glGetProgramInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
2206 memcpy(ptr, &totalSize, 4); ptr += 4;
2207
2208 memcpy(ptr, &program, 4); ptr += 4;
2209 memcpy(ptr, &bufsize, 4); ptr += 4;
2210 memcpy(ptr, &__size_length, 4); ptr += 4;
2211 memcpy(ptr, &__size_infolog, 4); ptr += 4;
2212
2213 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2214 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2215
2216 if (length != NULL) {
2217 stream->readback(length, __size_length);
2218 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2219 }
2220 stream->readback(infolog, __size_infolog);
2221 if (useChecksum) checksumCalculator->addBuffer(infolog, __size_infolog);
2222 if (useChecksum) {
2223 unsigned char *checksumBufPtr = NULL;
2224 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2225 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2226 stream->readback(checksumBufPtr, checksumSize);
2227 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2228 ALOGE("glGetProgramInfoLog: GL communication error, please report this issue to b.android.com.\n");
2229 abort();
2230 }
2231 }
2232 }
2233
glGetRenderbufferParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)2234 void glGetRenderbufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
2235 {
2236 ENCODER_DEBUG_LOG("glGetRenderbufferParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
2237 AEMU_SCOPED_TRACE("glGetRenderbufferParameteriv encode");
2238
2239 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2240 IOStream *stream = ctx->m_stream;
2241 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2242 bool useChecksum = checksumCalculator->getVersion() > 0;
2243
2244 const unsigned int __size_params = sizeof(GLint);
2245 unsigned char *ptr;
2246 unsigned char *buf;
2247 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2248 const size_t checksumSize = checksumCalculator->checksumByteSize();
2249 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2250 buf = stream->alloc(totalSize);
2251 ptr = buf;
2252 int tmp = OP_glGetRenderbufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2253 memcpy(ptr, &totalSize, 4); ptr += 4;
2254
2255 memcpy(ptr, &target, 4); ptr += 4;
2256 memcpy(ptr, &pname, 4); ptr += 4;
2257 memcpy(ptr, &__size_params, 4); ptr += 4;
2258
2259 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2260 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2261
2262 stream->readback(params, __size_params);
2263 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2264 if (useChecksum) {
2265 unsigned char *checksumBufPtr = NULL;
2266 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2267 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2268 stream->readback(checksumBufPtr, checksumSize);
2269 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2270 ALOGE("glGetRenderbufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
2271 abort();
2272 }
2273 }
2274 }
2275
glGetShaderiv_enc(void * self,GLuint shader,GLenum pname,GLint * params)2276 void glGetShaderiv_enc(void *self , GLuint shader, GLenum pname, GLint* params)
2277 {
2278 ENCODER_DEBUG_LOG("glGetShaderiv(shader:%u, pname:0x%08x, params:0x%08x)", shader, pname, params);
2279 AEMU_SCOPED_TRACE("glGetShaderiv encode");
2280
2281 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2282 IOStream *stream = ctx->m_stream;
2283 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2284 bool useChecksum = checksumCalculator->getVersion() > 0;
2285
2286 const unsigned int __size_params = sizeof(GLint);
2287 unsigned char *ptr;
2288 unsigned char *buf;
2289 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2290 const size_t checksumSize = checksumCalculator->checksumByteSize();
2291 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2292 buf = stream->alloc(totalSize);
2293 ptr = buf;
2294 int tmp = OP_glGetShaderiv;memcpy(ptr, &tmp, 4); ptr += 4;
2295 memcpy(ptr, &totalSize, 4); ptr += 4;
2296
2297 memcpy(ptr, &shader, 4); ptr += 4;
2298 memcpy(ptr, &pname, 4); ptr += 4;
2299 memcpy(ptr, &__size_params, 4); ptr += 4;
2300
2301 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2302 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2303
2304 stream->readback(params, __size_params);
2305 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2306 if (useChecksum) {
2307 unsigned char *checksumBufPtr = NULL;
2308 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2309 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2310 stream->readback(checksumBufPtr, checksumSize);
2311 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2312 ALOGE("glGetShaderiv: GL communication error, please report this issue to b.android.com.\n");
2313 abort();
2314 }
2315 }
2316 }
2317
glGetShaderInfoLog_enc(void * self,GLuint shader,GLsizei bufsize,GLsizei * length,GLchar * infolog)2318 void glGetShaderInfoLog_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
2319 {
2320 ENCODER_DEBUG_LOG("glGetShaderInfoLog(shader:%u, bufsize:%d, length:0x%08x, infolog:0x%08x)", shader, bufsize, length, infolog);
2321 AEMU_SCOPED_TRACE("glGetShaderInfoLog encode");
2322
2323 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2324 IOStream *stream = ctx->m_stream;
2325 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2326 bool useChecksum = checksumCalculator->getVersion() > 0;
2327
2328 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
2329 const unsigned int __size_infolog = bufsize;
2330 unsigned char *ptr;
2331 unsigned char *buf;
2332 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2333 const size_t checksumSize = checksumCalculator->checksumByteSize();
2334 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2335 buf = stream->alloc(totalSize);
2336 ptr = buf;
2337 int tmp = OP_glGetShaderInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
2338 memcpy(ptr, &totalSize, 4); ptr += 4;
2339
2340 memcpy(ptr, &shader, 4); ptr += 4;
2341 memcpy(ptr, &bufsize, 4); ptr += 4;
2342 memcpy(ptr, &__size_length, 4); ptr += 4;
2343 memcpy(ptr, &__size_infolog, 4); ptr += 4;
2344
2345 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2346 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2347
2348 if (length != NULL) {
2349 stream->readback(length, __size_length);
2350 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2351 }
2352 stream->readback(infolog, __size_infolog);
2353 if (useChecksum) checksumCalculator->addBuffer(infolog, __size_infolog);
2354 if (useChecksum) {
2355 unsigned char *checksumBufPtr = NULL;
2356 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2357 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2358 stream->readback(checksumBufPtr, checksumSize);
2359 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2360 ALOGE("glGetShaderInfoLog: GL communication error, please report this issue to b.android.com.\n");
2361 abort();
2362 }
2363 }
2364 }
2365
glGetShaderPrecisionFormat_enc(void * self,GLenum shadertype,GLenum precisiontype,GLint * range,GLint * precision)2366 void glGetShaderPrecisionFormat_enc(void *self , GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
2367 {
2368 ENCODER_DEBUG_LOG("glGetShaderPrecisionFormat(shadertype:0x%08x, precisiontype:0x%08x, range:0x%08x, precision:0x%08x)", shadertype, precisiontype, range, precision);
2369 AEMU_SCOPED_TRACE("glGetShaderPrecisionFormat encode");
2370
2371 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2372 IOStream *stream = ctx->m_stream;
2373 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2374 bool useChecksum = checksumCalculator->getVersion() > 0;
2375
2376 const unsigned int __size_range = (2 * sizeof(GLint));
2377 const unsigned int __size_precision = (sizeof(GLint));
2378 unsigned char *ptr;
2379 unsigned char *buf;
2380 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2381 const size_t checksumSize = checksumCalculator->checksumByteSize();
2382 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2383 buf = stream->alloc(totalSize);
2384 ptr = buf;
2385 int tmp = OP_glGetShaderPrecisionFormat;memcpy(ptr, &tmp, 4); ptr += 4;
2386 memcpy(ptr, &totalSize, 4); ptr += 4;
2387
2388 memcpy(ptr, &shadertype, 4); ptr += 4;
2389 memcpy(ptr, &precisiontype, 4); ptr += 4;
2390 memcpy(ptr, &__size_range, 4); ptr += 4;
2391 memcpy(ptr, &__size_precision, 4); ptr += 4;
2392
2393 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2394 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2395
2396 stream->readback(range, __size_range);
2397 if (useChecksum) checksumCalculator->addBuffer(range, __size_range);
2398 stream->readback(precision, __size_precision);
2399 if (useChecksum) checksumCalculator->addBuffer(precision, __size_precision);
2400 if (useChecksum) {
2401 unsigned char *checksumBufPtr = NULL;
2402 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2403 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2404 stream->readback(checksumBufPtr, checksumSize);
2405 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2406 ALOGE("glGetShaderPrecisionFormat: GL communication error, please report this issue to b.android.com.\n");
2407 abort();
2408 }
2409 }
2410 }
2411
glGetShaderSource_enc(void * self,GLuint shader,GLsizei bufsize,GLsizei * length,GLchar * source)2412 void glGetShaderSource_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
2413 {
2414 ENCODER_DEBUG_LOG("glGetShaderSource(shader:%u, bufsize:%d, length:0x%08x, source:0x%08x)", shader, bufsize, length, source);
2415 AEMU_SCOPED_TRACE("glGetShaderSource encode");
2416
2417 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2418 IOStream *stream = ctx->m_stream;
2419 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2420 bool useChecksum = checksumCalculator->getVersion() > 0;
2421
2422 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
2423 const unsigned int __size_source = bufsize;
2424 unsigned char *ptr;
2425 unsigned char *buf;
2426 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2427 const size_t checksumSize = checksumCalculator->checksumByteSize();
2428 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2429 buf = stream->alloc(totalSize);
2430 ptr = buf;
2431 int tmp = OP_glGetShaderSource;memcpy(ptr, &tmp, 4); ptr += 4;
2432 memcpy(ptr, &totalSize, 4); ptr += 4;
2433
2434 memcpy(ptr, &shader, 4); ptr += 4;
2435 memcpy(ptr, &bufsize, 4); ptr += 4;
2436 memcpy(ptr, &__size_length, 4); ptr += 4;
2437 memcpy(ptr, &__size_source, 4); ptr += 4;
2438
2439 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2440 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2441
2442 if (length != NULL) {
2443 stream->readback(length, __size_length);
2444 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2445 }
2446 stream->readback(source, __size_source);
2447 if (useChecksum) checksumCalculator->addBuffer(source, __size_source);
2448 if (useChecksum) {
2449 unsigned char *checksumBufPtr = NULL;
2450 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2451 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2452 stream->readback(checksumBufPtr, checksumSize);
2453 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2454 ALOGE("glGetShaderSource: GL communication error, please report this issue to b.android.com.\n");
2455 abort();
2456 }
2457 }
2458 }
2459
glGetTexParameterfv_enc(void * self,GLenum target,GLenum pname,GLfloat * params)2460 void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* params)
2461 {
2462 ENCODER_DEBUG_LOG("glGetTexParameterfv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
2463 AEMU_SCOPED_TRACE("glGetTexParameterfv encode");
2464
2465 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2466 IOStream *stream = ctx->m_stream;
2467 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2468 bool useChecksum = checksumCalculator->getVersion() > 0;
2469
2470 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
2471 unsigned char *ptr;
2472 unsigned char *buf;
2473 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2474 const size_t checksumSize = checksumCalculator->checksumByteSize();
2475 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2476 buf = stream->alloc(totalSize);
2477 ptr = buf;
2478 int tmp = OP_glGetTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
2479 memcpy(ptr, &totalSize, 4); ptr += 4;
2480
2481 memcpy(ptr, &target, 4); ptr += 4;
2482 memcpy(ptr, &pname, 4); ptr += 4;
2483 memcpy(ptr, &__size_params, 4); ptr += 4;
2484
2485 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2486 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2487
2488 stream->readback(params, __size_params);
2489 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2490 if (useChecksum) {
2491 unsigned char *checksumBufPtr = NULL;
2492 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2493 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2494 stream->readback(checksumBufPtr, checksumSize);
2495 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2496 ALOGE("glGetTexParameterfv: GL communication error, please report this issue to b.android.com.\n");
2497 abort();
2498 }
2499 }
2500 }
2501
glGetTexParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)2502 void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
2503 {
2504 ENCODER_DEBUG_LOG("glGetTexParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
2505 AEMU_SCOPED_TRACE("glGetTexParameteriv encode");
2506
2507 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2508 IOStream *stream = ctx->m_stream;
2509 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2510 bool useChecksum = checksumCalculator->getVersion() > 0;
2511
2512 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
2513 unsigned char *ptr;
2514 unsigned char *buf;
2515 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2516 const size_t checksumSize = checksumCalculator->checksumByteSize();
2517 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2518 buf = stream->alloc(totalSize);
2519 ptr = buf;
2520 int tmp = OP_glGetTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2521 memcpy(ptr, &totalSize, 4); ptr += 4;
2522
2523 memcpy(ptr, &target, 4); ptr += 4;
2524 memcpy(ptr, &pname, 4); ptr += 4;
2525 memcpy(ptr, &__size_params, 4); ptr += 4;
2526
2527 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2528 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2529
2530 stream->readback(params, __size_params);
2531 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2532 if (useChecksum) {
2533 unsigned char *checksumBufPtr = NULL;
2534 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2535 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2536 stream->readback(checksumBufPtr, checksumSize);
2537 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2538 ALOGE("glGetTexParameteriv: GL communication error, please report this issue to b.android.com.\n");
2539 abort();
2540 }
2541 }
2542 }
2543
glGetUniformfv_enc(void * self,GLuint program,GLint location,GLfloat * params)2544 void glGetUniformfv_enc(void *self , GLuint program, GLint location, GLfloat* params)
2545 {
2546 ENCODER_DEBUG_LOG("glGetUniformfv(program:%u, location:%d, params:0x%08x)", program, location, params);
2547 AEMU_SCOPED_TRACE("glGetUniformfv encode");
2548
2549 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2550 IOStream *stream = ctx->m_stream;
2551 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2552 bool useChecksum = checksumCalculator->getVersion() > 0;
2553
2554 const unsigned int __size_params = glSizeof(glesv2_enc::uniformType(self, program, location));
2555 unsigned char *ptr;
2556 unsigned char *buf;
2557 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2558 const size_t checksumSize = checksumCalculator->checksumByteSize();
2559 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2560 buf = stream->alloc(totalSize);
2561 ptr = buf;
2562 int tmp = OP_glGetUniformfv;memcpy(ptr, &tmp, 4); ptr += 4;
2563 memcpy(ptr, &totalSize, 4); ptr += 4;
2564
2565 memcpy(ptr, &program, 4); ptr += 4;
2566 memcpy(ptr, &location, 4); ptr += 4;
2567 memcpy(ptr, &__size_params, 4); ptr += 4;
2568
2569 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2570 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2571
2572 stream->readback(params, __size_params);
2573 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2574 if (useChecksum) {
2575 unsigned char *checksumBufPtr = NULL;
2576 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2577 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2578 stream->readback(checksumBufPtr, checksumSize);
2579 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2580 ALOGE("glGetUniformfv: GL communication error, please report this issue to b.android.com.\n");
2581 abort();
2582 }
2583 }
2584 }
2585
glGetUniformiv_enc(void * self,GLuint program,GLint location,GLint * params)2586 void glGetUniformiv_enc(void *self , GLuint program, GLint location, GLint* params)
2587 {
2588 ENCODER_DEBUG_LOG("glGetUniformiv(program:%u, location:%d, params:0x%08x)", program, location, params);
2589 AEMU_SCOPED_TRACE("glGetUniformiv encode");
2590
2591 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2592 IOStream *stream = ctx->m_stream;
2593 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2594 bool useChecksum = checksumCalculator->getVersion() > 0;
2595
2596 const unsigned int __size_params = glSizeof(glesv2_enc::uniformType(self, program, location));
2597 unsigned char *ptr;
2598 unsigned char *buf;
2599 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2600 const size_t checksumSize = checksumCalculator->checksumByteSize();
2601 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2602 buf = stream->alloc(totalSize);
2603 ptr = buf;
2604 int tmp = OP_glGetUniformiv;memcpy(ptr, &tmp, 4); ptr += 4;
2605 memcpy(ptr, &totalSize, 4); ptr += 4;
2606
2607 memcpy(ptr, &program, 4); ptr += 4;
2608 memcpy(ptr, &location, 4); ptr += 4;
2609 memcpy(ptr, &__size_params, 4); ptr += 4;
2610
2611 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2612 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2613
2614 stream->readback(params, __size_params);
2615 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2616 if (useChecksum) {
2617 unsigned char *checksumBufPtr = NULL;
2618 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2619 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2620 stream->readback(checksumBufPtr, checksumSize);
2621 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2622 ALOGE("glGetUniformiv: GL communication error, please report this issue to b.android.com.\n");
2623 abort();
2624 }
2625 }
2626 }
2627
glGetUniformLocation_enc(void * self,GLuint program,const GLchar * name)2628 int glGetUniformLocation_enc(void *self , GLuint program, const GLchar* name)
2629 {
2630 ENCODER_DEBUG_LOG("glGetUniformLocation(program:%u, name:0x%08x)", program, name);
2631 AEMU_SCOPED_TRACE("glGetUniformLocation encode");
2632
2633 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2634 IOStream *stream = ctx->m_stream;
2635 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2636 bool useChecksum = checksumCalculator->getVersion() > 0;
2637
2638 const unsigned int __size_name = (strlen(name) + 1);
2639 unsigned char *ptr;
2640 unsigned char *buf;
2641 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
2642 const size_t checksumSize = checksumCalculator->checksumByteSize();
2643 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2644 buf = stream->alloc(totalSize);
2645 ptr = buf;
2646 int tmp = OP_glGetUniformLocation;memcpy(ptr, &tmp, 4); ptr += 4;
2647 memcpy(ptr, &totalSize, 4); ptr += 4;
2648
2649 memcpy(ptr, &program, 4); ptr += 4;
2650 memcpy(ptr, &__size_name, 4); ptr += 4;
2651 memcpy(ptr, name, __size_name);ptr += __size_name;
2652
2653 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2654 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2655
2656
2657 int retval;
2658 stream->readback(&retval, 4);
2659 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
2660 if (useChecksum) {
2661 unsigned char *checksumBufPtr = NULL;
2662 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2663 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2664 stream->readback(checksumBufPtr, checksumSize);
2665 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2666 ALOGE("glGetUniformLocation: GL communication error, please report this issue to b.android.com.\n");
2667 abort();
2668 }
2669 }
2670 return retval;
2671 }
2672
glGetVertexAttribfv_enc(void * self,GLuint index,GLenum pname,GLfloat * params)2673 void glGetVertexAttribfv_enc(void *self , GLuint index, GLenum pname, GLfloat* params)
2674 {
2675 ENCODER_DEBUG_LOG("glGetVertexAttribfv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
2676 AEMU_SCOPED_TRACE("glGetVertexAttribfv encode");
2677
2678 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2679 IOStream *stream = ctx->m_stream;
2680 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2681 bool useChecksum = checksumCalculator->getVersion() > 0;
2682
2683 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
2684 unsigned char *ptr;
2685 unsigned char *buf;
2686 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2687 const size_t checksumSize = checksumCalculator->checksumByteSize();
2688 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2689 buf = stream->alloc(totalSize);
2690 ptr = buf;
2691 int tmp = OP_glGetVertexAttribfv;memcpy(ptr, &tmp, 4); ptr += 4;
2692 memcpy(ptr, &totalSize, 4); ptr += 4;
2693
2694 memcpy(ptr, &index, 4); ptr += 4;
2695 memcpy(ptr, &pname, 4); ptr += 4;
2696 memcpy(ptr, &__size_params, 4); ptr += 4;
2697
2698 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2699 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2700
2701 stream->readback(params, __size_params);
2702 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2703 if (useChecksum) {
2704 unsigned char *checksumBufPtr = NULL;
2705 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2706 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2707 stream->readback(checksumBufPtr, checksumSize);
2708 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2709 ALOGE("glGetVertexAttribfv: GL communication error, please report this issue to b.android.com.\n");
2710 abort();
2711 }
2712 }
2713 }
2714
glGetVertexAttribiv_enc(void * self,GLuint index,GLenum pname,GLint * params)2715 void glGetVertexAttribiv_enc(void *self , GLuint index, GLenum pname, GLint* params)
2716 {
2717 ENCODER_DEBUG_LOG("glGetVertexAttribiv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
2718 AEMU_SCOPED_TRACE("glGetVertexAttribiv encode");
2719
2720 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2721 IOStream *stream = ctx->m_stream;
2722 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2723 bool useChecksum = checksumCalculator->getVersion() > 0;
2724
2725 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
2726 unsigned char *ptr;
2727 unsigned char *buf;
2728 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2729 const size_t checksumSize = checksumCalculator->checksumByteSize();
2730 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2731 buf = stream->alloc(totalSize);
2732 ptr = buf;
2733 int tmp = OP_glGetVertexAttribiv;memcpy(ptr, &tmp, 4); ptr += 4;
2734 memcpy(ptr, &totalSize, 4); ptr += 4;
2735
2736 memcpy(ptr, &index, 4); ptr += 4;
2737 memcpy(ptr, &pname, 4); ptr += 4;
2738 memcpy(ptr, &__size_params, 4); ptr += 4;
2739
2740 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2741 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2742
2743 stream->readback(params, __size_params);
2744 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2745 if (useChecksum) {
2746 unsigned char *checksumBufPtr = NULL;
2747 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2748 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2749 stream->readback(checksumBufPtr, checksumSize);
2750 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2751 ALOGE("glGetVertexAttribiv: GL communication error, please report this issue to b.android.com.\n");
2752 abort();
2753 }
2754 }
2755 }
2756
glHint_enc(void * self,GLenum target,GLenum mode)2757 void glHint_enc(void *self , GLenum target, GLenum mode)
2758 {
2759 ENCODER_DEBUG_LOG("glHint(target:0x%08x, mode:0x%08x)", target, mode);
2760 AEMU_SCOPED_TRACE("glHint encode");
2761
2762 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2763 IOStream *stream = ctx->m_stream;
2764 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2765 bool useChecksum = checksumCalculator->getVersion() > 0;
2766
2767 unsigned char *ptr;
2768 unsigned char *buf;
2769 const size_t sizeWithoutChecksum = 8 + 4 + 4;
2770 const size_t checksumSize = checksumCalculator->checksumByteSize();
2771 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2772 buf = stream->alloc(totalSize);
2773 ptr = buf;
2774 int tmp = OP_glHint;memcpy(ptr, &tmp, 4); ptr += 4;
2775 memcpy(ptr, &totalSize, 4); ptr += 4;
2776
2777 memcpy(ptr, &target, 4); ptr += 4;
2778 memcpy(ptr, &mode, 4); ptr += 4;
2779
2780 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2781 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2782
2783 }
2784
glIsBuffer_enc(void * self,GLuint buffer)2785 GLboolean glIsBuffer_enc(void *self , GLuint buffer)
2786 {
2787 ENCODER_DEBUG_LOG("glIsBuffer(buffer:%u)", buffer);
2788 AEMU_SCOPED_TRACE("glIsBuffer encode");
2789
2790 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2791 IOStream *stream = ctx->m_stream;
2792 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2793 bool useChecksum = checksumCalculator->getVersion() > 0;
2794
2795 unsigned char *ptr;
2796 unsigned char *buf;
2797 const size_t sizeWithoutChecksum = 8 + 4;
2798 const size_t checksumSize = checksumCalculator->checksumByteSize();
2799 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2800 buf = stream->alloc(totalSize);
2801 ptr = buf;
2802 int tmp = OP_glIsBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2803 memcpy(ptr, &totalSize, 4); ptr += 4;
2804
2805 memcpy(ptr, &buffer, 4); ptr += 4;
2806
2807 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2808 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2809
2810
2811 GLboolean retval;
2812 stream->readback(&retval, 1);
2813 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2814 if (useChecksum) {
2815 unsigned char *checksumBufPtr = NULL;
2816 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2817 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2818 stream->readback(checksumBufPtr, checksumSize);
2819 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2820 ALOGE("glIsBuffer: GL communication error, please report this issue to b.android.com.\n");
2821 abort();
2822 }
2823 }
2824 return retval;
2825 }
2826
glIsEnabled_enc(void * self,GLenum cap)2827 GLboolean glIsEnabled_enc(void *self , GLenum cap)
2828 {
2829 ENCODER_DEBUG_LOG("glIsEnabled(cap:0x%08x)", cap);
2830 AEMU_SCOPED_TRACE("glIsEnabled encode");
2831
2832 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2833 IOStream *stream = ctx->m_stream;
2834 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2835 bool useChecksum = checksumCalculator->getVersion() > 0;
2836
2837 unsigned char *ptr;
2838 unsigned char *buf;
2839 const size_t sizeWithoutChecksum = 8 + 4;
2840 const size_t checksumSize = checksumCalculator->checksumByteSize();
2841 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2842 buf = stream->alloc(totalSize);
2843 ptr = buf;
2844 int tmp = OP_glIsEnabled;memcpy(ptr, &tmp, 4); ptr += 4;
2845 memcpy(ptr, &totalSize, 4); ptr += 4;
2846
2847 memcpy(ptr, &cap, 4); ptr += 4;
2848
2849 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2850 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2851
2852
2853 GLboolean retval;
2854 stream->readback(&retval, 1);
2855 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2856 if (useChecksum) {
2857 unsigned char *checksumBufPtr = NULL;
2858 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2859 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2860 stream->readback(checksumBufPtr, checksumSize);
2861 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2862 ALOGE("glIsEnabled: GL communication error, please report this issue to b.android.com.\n");
2863 abort();
2864 }
2865 }
2866 return retval;
2867 }
2868
glIsFramebuffer_enc(void * self,GLuint framebuffer)2869 GLboolean glIsFramebuffer_enc(void *self , GLuint framebuffer)
2870 {
2871 ENCODER_DEBUG_LOG("glIsFramebuffer(framebuffer:%u)", framebuffer);
2872 AEMU_SCOPED_TRACE("glIsFramebuffer encode");
2873
2874 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2875 IOStream *stream = ctx->m_stream;
2876 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2877 bool useChecksum = checksumCalculator->getVersion() > 0;
2878
2879 unsigned char *ptr;
2880 unsigned char *buf;
2881 const size_t sizeWithoutChecksum = 8 + 4;
2882 const size_t checksumSize = checksumCalculator->checksumByteSize();
2883 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2884 buf = stream->alloc(totalSize);
2885 ptr = buf;
2886 int tmp = OP_glIsFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2887 memcpy(ptr, &totalSize, 4); ptr += 4;
2888
2889 memcpy(ptr, &framebuffer, 4); ptr += 4;
2890
2891 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2892 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2893
2894
2895 GLboolean retval;
2896 stream->readback(&retval, 1);
2897 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2898 if (useChecksum) {
2899 unsigned char *checksumBufPtr = NULL;
2900 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2901 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2902 stream->readback(checksumBufPtr, checksumSize);
2903 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2904 ALOGE("glIsFramebuffer: GL communication error, please report this issue to b.android.com.\n");
2905 abort();
2906 }
2907 }
2908 return retval;
2909 }
2910
glIsProgram_enc(void * self,GLuint program)2911 GLboolean glIsProgram_enc(void *self , GLuint program)
2912 {
2913 ENCODER_DEBUG_LOG("glIsProgram(program:%u)", program);
2914 AEMU_SCOPED_TRACE("glIsProgram encode");
2915
2916 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2917 IOStream *stream = ctx->m_stream;
2918 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2919 bool useChecksum = checksumCalculator->getVersion() > 0;
2920
2921 unsigned char *ptr;
2922 unsigned char *buf;
2923 const size_t sizeWithoutChecksum = 8 + 4;
2924 const size_t checksumSize = checksumCalculator->checksumByteSize();
2925 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2926 buf = stream->alloc(totalSize);
2927 ptr = buf;
2928 int tmp = OP_glIsProgram;memcpy(ptr, &tmp, 4); ptr += 4;
2929 memcpy(ptr, &totalSize, 4); ptr += 4;
2930
2931 memcpy(ptr, &program, 4); ptr += 4;
2932
2933 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2934 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2935
2936
2937 GLboolean retval;
2938 stream->readback(&retval, 1);
2939 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2940 if (useChecksum) {
2941 unsigned char *checksumBufPtr = NULL;
2942 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2943 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2944 stream->readback(checksumBufPtr, checksumSize);
2945 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2946 ALOGE("glIsProgram: GL communication error, please report this issue to b.android.com.\n");
2947 abort();
2948 }
2949 }
2950 return retval;
2951 }
2952
glIsRenderbuffer_enc(void * self,GLuint renderbuffer)2953 GLboolean glIsRenderbuffer_enc(void *self , GLuint renderbuffer)
2954 {
2955 ENCODER_DEBUG_LOG("glIsRenderbuffer(renderbuffer:%u)", renderbuffer);
2956 AEMU_SCOPED_TRACE("glIsRenderbuffer encode");
2957
2958 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2959 IOStream *stream = ctx->m_stream;
2960 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2961 bool useChecksum = checksumCalculator->getVersion() > 0;
2962
2963 unsigned char *ptr;
2964 unsigned char *buf;
2965 const size_t sizeWithoutChecksum = 8 + 4;
2966 const size_t checksumSize = checksumCalculator->checksumByteSize();
2967 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2968 buf = stream->alloc(totalSize);
2969 ptr = buf;
2970 int tmp = OP_glIsRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2971 memcpy(ptr, &totalSize, 4); ptr += 4;
2972
2973 memcpy(ptr, &renderbuffer, 4); ptr += 4;
2974
2975 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2976 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2977
2978
2979 GLboolean retval;
2980 stream->readback(&retval, 1);
2981 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2982 if (useChecksum) {
2983 unsigned char *checksumBufPtr = NULL;
2984 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2985 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2986 stream->readback(checksumBufPtr, checksumSize);
2987 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2988 ALOGE("glIsRenderbuffer: GL communication error, please report this issue to b.android.com.\n");
2989 abort();
2990 }
2991 }
2992 return retval;
2993 }
2994
glIsShader_enc(void * self,GLuint shader)2995 GLboolean glIsShader_enc(void *self , GLuint shader)
2996 {
2997 ENCODER_DEBUG_LOG("glIsShader(shader:%u)", shader);
2998 AEMU_SCOPED_TRACE("glIsShader encode");
2999
3000 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3001 IOStream *stream = ctx->m_stream;
3002 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3003 bool useChecksum = checksumCalculator->getVersion() > 0;
3004
3005 unsigned char *ptr;
3006 unsigned char *buf;
3007 const size_t sizeWithoutChecksum = 8 + 4;
3008 const size_t checksumSize = checksumCalculator->checksumByteSize();
3009 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3010 buf = stream->alloc(totalSize);
3011 ptr = buf;
3012 int tmp = OP_glIsShader;memcpy(ptr, &tmp, 4); ptr += 4;
3013 memcpy(ptr, &totalSize, 4); ptr += 4;
3014
3015 memcpy(ptr, &shader, 4); ptr += 4;
3016
3017 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3018 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3019
3020
3021 GLboolean retval;
3022 stream->readback(&retval, 1);
3023 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
3024 if (useChecksum) {
3025 unsigned char *checksumBufPtr = NULL;
3026 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
3027 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
3028 stream->readback(checksumBufPtr, checksumSize);
3029 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
3030 ALOGE("glIsShader: GL communication error, please report this issue to b.android.com.\n");
3031 abort();
3032 }
3033 }
3034 return retval;
3035 }
3036
glIsTexture_enc(void * self,GLuint texture)3037 GLboolean glIsTexture_enc(void *self , GLuint texture)
3038 {
3039 ENCODER_DEBUG_LOG("glIsTexture(texture:%u)", texture);
3040 AEMU_SCOPED_TRACE("glIsTexture encode");
3041
3042 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3043 IOStream *stream = ctx->m_stream;
3044 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3045 bool useChecksum = checksumCalculator->getVersion() > 0;
3046
3047 unsigned char *ptr;
3048 unsigned char *buf;
3049 const size_t sizeWithoutChecksum = 8 + 4;
3050 const size_t checksumSize = checksumCalculator->checksumByteSize();
3051 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3052 buf = stream->alloc(totalSize);
3053 ptr = buf;
3054 int tmp = OP_glIsTexture;memcpy(ptr, &tmp, 4); ptr += 4;
3055 memcpy(ptr, &totalSize, 4); ptr += 4;
3056
3057 memcpy(ptr, &texture, 4); ptr += 4;
3058
3059 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3060 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3061
3062
3063 GLboolean retval;
3064 stream->readback(&retval, 1);
3065 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
3066 if (useChecksum) {
3067 unsigned char *checksumBufPtr = NULL;
3068 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
3069 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
3070 stream->readback(checksumBufPtr, checksumSize);
3071 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
3072 ALOGE("glIsTexture: GL communication error, please report this issue to b.android.com.\n");
3073 abort();
3074 }
3075 }
3076 return retval;
3077 }
3078
glLineWidth_enc(void * self,GLfloat width)3079 void glLineWidth_enc(void *self , GLfloat width)
3080 {
3081 ENCODER_DEBUG_LOG("glLineWidth(width:%f)", width);
3082 AEMU_SCOPED_TRACE("glLineWidth encode");
3083
3084 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3085 IOStream *stream = ctx->m_stream;
3086 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3087 bool useChecksum = checksumCalculator->getVersion() > 0;
3088
3089 unsigned char *ptr;
3090 unsigned char *buf;
3091 const size_t sizeWithoutChecksum = 8 + 4;
3092 const size_t checksumSize = checksumCalculator->checksumByteSize();
3093 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3094 buf = stream->alloc(totalSize);
3095 ptr = buf;
3096 int tmp = OP_glLineWidth;memcpy(ptr, &tmp, 4); ptr += 4;
3097 memcpy(ptr, &totalSize, 4); ptr += 4;
3098
3099 memcpy(ptr, &width, 4); ptr += 4;
3100
3101 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3102 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3103
3104 }
3105
glLinkProgram_enc(void * self,GLuint program)3106 void glLinkProgram_enc(void *self , GLuint program)
3107 {
3108 ENCODER_DEBUG_LOG("glLinkProgram(program:%u)", program);
3109 AEMU_SCOPED_TRACE("glLinkProgram encode");
3110
3111 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3112 IOStream *stream = ctx->m_stream;
3113 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3114 bool useChecksum = checksumCalculator->getVersion() > 0;
3115
3116 unsigned char *ptr;
3117 unsigned char *buf;
3118 const size_t sizeWithoutChecksum = 8 + 4;
3119 const size_t checksumSize = checksumCalculator->checksumByteSize();
3120 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3121 buf = stream->alloc(totalSize);
3122 ptr = buf;
3123 int tmp = OP_glLinkProgram;memcpy(ptr, &tmp, 4); ptr += 4;
3124 memcpy(ptr, &totalSize, 4); ptr += 4;
3125
3126 memcpy(ptr, &program, 4); ptr += 4;
3127
3128 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3129 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3130
3131 }
3132
glPixelStorei_enc(void * self,GLenum pname,GLint param)3133 void glPixelStorei_enc(void *self , GLenum pname, GLint param)
3134 {
3135 ENCODER_DEBUG_LOG("glPixelStorei(pname:0x%08x, param:%d)", pname, param);
3136 AEMU_SCOPED_TRACE("glPixelStorei encode");
3137
3138 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3139 IOStream *stream = ctx->m_stream;
3140 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3141 bool useChecksum = checksumCalculator->getVersion() > 0;
3142
3143 unsigned char *ptr;
3144 unsigned char *buf;
3145 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3146 const size_t checksumSize = checksumCalculator->checksumByteSize();
3147 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3148 buf = stream->alloc(totalSize);
3149 ptr = buf;
3150 int tmp = OP_glPixelStorei;memcpy(ptr, &tmp, 4); ptr += 4;
3151 memcpy(ptr, &totalSize, 4); ptr += 4;
3152
3153 memcpy(ptr, &pname, 4); ptr += 4;
3154 memcpy(ptr, ¶m, 4); ptr += 4;
3155
3156 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3157 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3158
3159 }
3160
glPolygonOffset_enc(void * self,GLfloat factor,GLfloat units)3161 void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units)
3162 {
3163 ENCODER_DEBUG_LOG("glPolygonOffset(factor:%f, units:%f)", factor, units);
3164 AEMU_SCOPED_TRACE("glPolygonOffset encode");
3165
3166 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3167 IOStream *stream = ctx->m_stream;
3168 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3169 bool useChecksum = checksumCalculator->getVersion() > 0;
3170
3171 unsigned char *ptr;
3172 unsigned char *buf;
3173 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3174 const size_t checksumSize = checksumCalculator->checksumByteSize();
3175 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3176 buf = stream->alloc(totalSize);
3177 ptr = buf;
3178 int tmp = OP_glPolygonOffset;memcpy(ptr, &tmp, 4); ptr += 4;
3179 memcpy(ptr, &totalSize, 4); ptr += 4;
3180
3181 memcpy(ptr, &factor, 4); ptr += 4;
3182 memcpy(ptr, &units, 4); ptr += 4;
3183
3184 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3185 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3186
3187 }
3188
glReadPixels_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * pixels)3189 void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
3190 {
3191 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);
3192 AEMU_SCOPED_TRACE("glReadPixels encode");
3193
3194 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3195 IOStream *stream = ctx->m_stream;
3196 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3197 bool useChecksum = checksumCalculator->getVersion() > 0;
3198
3199 const unsigned int __size_pixels = glesv2_enc::pixelDataSize(self, width, height, format, type, 1);
3200 unsigned char *ptr;
3201 unsigned char *buf;
3202 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 0 + 1*4;
3203 const size_t checksumSize = checksumCalculator->checksumByteSize();
3204 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3205 buf = stream->alloc(totalSize);
3206 ptr = buf;
3207 int tmp = OP_glReadPixels;memcpy(ptr, &tmp, 4); ptr += 4;
3208 memcpy(ptr, &totalSize, 4); ptr += 4;
3209
3210 memcpy(ptr, &x, 4); ptr += 4;
3211 memcpy(ptr, &y, 4); ptr += 4;
3212 memcpy(ptr, &width, 4); ptr += 4;
3213 memcpy(ptr, &height, 4); ptr += 4;
3214 memcpy(ptr, &format, 4); ptr += 4;
3215 memcpy(ptr, &type, 4); ptr += 4;
3216 memcpy(ptr, &__size_pixels, 4); ptr += 4;
3217
3218 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3219 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3220
3221 stream->readbackPixels(self, width, height, format, type, pixels);
3222 if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3223 if (useChecksum) {
3224 unsigned char *checksumBufPtr = NULL;
3225 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
3226 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
3227 stream->readback(checksumBufPtr, checksumSize);
3228 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
3229 ALOGE("glReadPixels: GL communication error, please report this issue to b.android.com.\n");
3230 abort();
3231 }
3232 }
3233 }
3234
glReleaseShaderCompiler_enc(void * self)3235 void glReleaseShaderCompiler_enc(void *self )
3236 {
3237 ENCODER_DEBUG_LOG("glReleaseShaderCompiler()");
3238 AEMU_SCOPED_TRACE("glReleaseShaderCompiler encode");
3239
3240 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3241 IOStream *stream = ctx->m_stream;
3242 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3243 bool useChecksum = checksumCalculator->getVersion() > 0;
3244
3245 unsigned char *ptr;
3246 unsigned char *buf;
3247 const size_t sizeWithoutChecksum = 8;
3248 const size_t checksumSize = checksumCalculator->checksumByteSize();
3249 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3250 buf = stream->alloc(totalSize);
3251 ptr = buf;
3252 int tmp = OP_glReleaseShaderCompiler;memcpy(ptr, &tmp, 4); ptr += 4;
3253 memcpy(ptr, &totalSize, 4); ptr += 4;
3254
3255
3256 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3257 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3258
3259 }
3260
glRenderbufferStorage_enc(void * self,GLenum target,GLenum internalformat,GLsizei width,GLsizei height)3261 void glRenderbufferStorage_enc(void *self , GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
3262 {
3263 ENCODER_DEBUG_LOG("glRenderbufferStorage(target:0x%08x, internalformat:0x%08x, width:%d, height:%d)", target, internalformat, width, height);
3264 AEMU_SCOPED_TRACE("glRenderbufferStorage encode");
3265
3266 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3267 IOStream *stream = ctx->m_stream;
3268 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3269 bool useChecksum = checksumCalculator->getVersion() > 0;
3270
3271 unsigned char *ptr;
3272 unsigned char *buf;
3273 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3274 const size_t checksumSize = checksumCalculator->checksumByteSize();
3275 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3276 buf = stream->alloc(totalSize);
3277 ptr = buf;
3278 int tmp = OP_glRenderbufferStorage;memcpy(ptr, &tmp, 4); ptr += 4;
3279 memcpy(ptr, &totalSize, 4); ptr += 4;
3280
3281 memcpy(ptr, &target, 4); ptr += 4;
3282 memcpy(ptr, &internalformat, 4); ptr += 4;
3283 memcpy(ptr, &width, 4); ptr += 4;
3284 memcpy(ptr, &height, 4); ptr += 4;
3285
3286 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3287 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3288
3289 }
3290
glSampleCoverage_enc(void * self,GLclampf value,GLboolean invert)3291 void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert)
3292 {
3293 ENCODER_DEBUG_LOG("glSampleCoverage(value:%f, invert:%d)", value, invert);
3294 AEMU_SCOPED_TRACE("glSampleCoverage encode");
3295
3296 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3297 IOStream *stream = ctx->m_stream;
3298 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3299 bool useChecksum = checksumCalculator->getVersion() > 0;
3300
3301 unsigned char *ptr;
3302 unsigned char *buf;
3303 const size_t sizeWithoutChecksum = 8 + 4 + 1;
3304 const size_t checksumSize = checksumCalculator->checksumByteSize();
3305 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3306 buf = stream->alloc(totalSize);
3307 ptr = buf;
3308 int tmp = OP_glSampleCoverage;memcpy(ptr, &tmp, 4); ptr += 4;
3309 memcpy(ptr, &totalSize, 4); ptr += 4;
3310
3311 memcpy(ptr, &value, 4); ptr += 4;
3312 memcpy(ptr, &invert, 1); ptr += 1;
3313
3314 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3315 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3316
3317 }
3318
glScissor_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height)3319 void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
3320 {
3321 ENCODER_DEBUG_LOG("glScissor(x:%d, y:%d, width:%d, height:%d)", x, y, width, height);
3322 AEMU_SCOPED_TRACE("glScissor encode");
3323
3324 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3325 IOStream *stream = ctx->m_stream;
3326 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3327 bool useChecksum = checksumCalculator->getVersion() > 0;
3328
3329 unsigned char *ptr;
3330 unsigned char *buf;
3331 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3332 const size_t checksumSize = checksumCalculator->checksumByteSize();
3333 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3334 buf = stream->alloc(totalSize);
3335 ptr = buf;
3336 int tmp = OP_glScissor;memcpy(ptr, &tmp, 4); ptr += 4;
3337 memcpy(ptr, &totalSize, 4); ptr += 4;
3338
3339 memcpy(ptr, &x, 4); ptr += 4;
3340 memcpy(ptr, &y, 4); ptr += 4;
3341 memcpy(ptr, &width, 4); ptr += 4;
3342 memcpy(ptr, &height, 4); ptr += 4;
3343
3344 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3345 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3346
3347 }
3348
glStencilFunc_enc(void * self,GLenum func,GLint ref,GLuint mask)3349 void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask)
3350 {
3351 ENCODER_DEBUG_LOG("glStencilFunc(func:0x%08x, ref:%d, mask:%u)", func, ref, mask);
3352 AEMU_SCOPED_TRACE("glStencilFunc encode");
3353
3354 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3355 IOStream *stream = ctx->m_stream;
3356 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3357 bool useChecksum = checksumCalculator->getVersion() > 0;
3358
3359 unsigned char *ptr;
3360 unsigned char *buf;
3361 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3362 const size_t checksumSize = checksumCalculator->checksumByteSize();
3363 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3364 buf = stream->alloc(totalSize);
3365 ptr = buf;
3366 int tmp = OP_glStencilFunc;memcpy(ptr, &tmp, 4); ptr += 4;
3367 memcpy(ptr, &totalSize, 4); ptr += 4;
3368
3369 memcpy(ptr, &func, 4); ptr += 4;
3370 memcpy(ptr, &ref, 4); ptr += 4;
3371 memcpy(ptr, &mask, 4); ptr += 4;
3372
3373 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3374 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3375
3376 }
3377
glStencilFuncSeparate_enc(void * self,GLenum face,GLenum func,GLint ref,GLuint mask)3378 void glStencilFuncSeparate_enc(void *self , GLenum face, GLenum func, GLint ref, GLuint mask)
3379 {
3380 ENCODER_DEBUG_LOG("glStencilFuncSeparate(face:0x%08x, func:0x%08x, ref:%d, mask:%u)", face, func, ref, mask);
3381 AEMU_SCOPED_TRACE("glStencilFuncSeparate encode");
3382
3383 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3384 IOStream *stream = ctx->m_stream;
3385 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3386 bool useChecksum = checksumCalculator->getVersion() > 0;
3387
3388 unsigned char *ptr;
3389 unsigned char *buf;
3390 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3391 const size_t checksumSize = checksumCalculator->checksumByteSize();
3392 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3393 buf = stream->alloc(totalSize);
3394 ptr = buf;
3395 int tmp = OP_glStencilFuncSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3396 memcpy(ptr, &totalSize, 4); ptr += 4;
3397
3398 memcpy(ptr, &face, 4); ptr += 4;
3399 memcpy(ptr, &func, 4); ptr += 4;
3400 memcpy(ptr, &ref, 4); ptr += 4;
3401 memcpy(ptr, &mask, 4); ptr += 4;
3402
3403 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3404 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3405
3406 }
3407
glStencilMask_enc(void * self,GLuint mask)3408 void glStencilMask_enc(void *self , GLuint mask)
3409 {
3410 ENCODER_DEBUG_LOG("glStencilMask(mask:%u)", mask);
3411 AEMU_SCOPED_TRACE("glStencilMask encode");
3412
3413 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3414 IOStream *stream = ctx->m_stream;
3415 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3416 bool useChecksum = checksumCalculator->getVersion() > 0;
3417
3418 unsigned char *ptr;
3419 unsigned char *buf;
3420 const size_t sizeWithoutChecksum = 8 + 4;
3421 const size_t checksumSize = checksumCalculator->checksumByteSize();
3422 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3423 buf = stream->alloc(totalSize);
3424 ptr = buf;
3425 int tmp = OP_glStencilMask;memcpy(ptr, &tmp, 4); ptr += 4;
3426 memcpy(ptr, &totalSize, 4); ptr += 4;
3427
3428 memcpy(ptr, &mask, 4); ptr += 4;
3429
3430 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3431 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3432
3433 }
3434
glStencilMaskSeparate_enc(void * self,GLenum face,GLuint mask)3435 void glStencilMaskSeparate_enc(void *self , GLenum face, GLuint mask)
3436 {
3437 ENCODER_DEBUG_LOG("glStencilMaskSeparate(face:0x%08x, mask:%u)", face, mask);
3438 AEMU_SCOPED_TRACE("glStencilMaskSeparate encode");
3439
3440 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3441 IOStream *stream = ctx->m_stream;
3442 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3443 bool useChecksum = checksumCalculator->getVersion() > 0;
3444
3445 unsigned char *ptr;
3446 unsigned char *buf;
3447 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3448 const size_t checksumSize = checksumCalculator->checksumByteSize();
3449 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3450 buf = stream->alloc(totalSize);
3451 ptr = buf;
3452 int tmp = OP_glStencilMaskSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3453 memcpy(ptr, &totalSize, 4); ptr += 4;
3454
3455 memcpy(ptr, &face, 4); ptr += 4;
3456 memcpy(ptr, &mask, 4); ptr += 4;
3457
3458 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3459 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3460
3461 }
3462
glStencilOp_enc(void * self,GLenum fail,GLenum zfail,GLenum zpass)3463 void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass)
3464 {
3465 ENCODER_DEBUG_LOG("glStencilOp(fail:0x%08x, zfail:0x%08x, zpass:0x%08x)", fail, zfail, zpass);
3466 AEMU_SCOPED_TRACE("glStencilOp encode");
3467
3468 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3469 IOStream *stream = ctx->m_stream;
3470 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3471 bool useChecksum = checksumCalculator->getVersion() > 0;
3472
3473 unsigned char *ptr;
3474 unsigned char *buf;
3475 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3476 const size_t checksumSize = checksumCalculator->checksumByteSize();
3477 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3478 buf = stream->alloc(totalSize);
3479 ptr = buf;
3480 int tmp = OP_glStencilOp;memcpy(ptr, &tmp, 4); ptr += 4;
3481 memcpy(ptr, &totalSize, 4); ptr += 4;
3482
3483 memcpy(ptr, &fail, 4); ptr += 4;
3484 memcpy(ptr, &zfail, 4); ptr += 4;
3485 memcpy(ptr, &zpass, 4); ptr += 4;
3486
3487 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3488 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3489
3490 }
3491
glStencilOpSeparate_enc(void * self,GLenum face,GLenum fail,GLenum zfail,GLenum zpass)3492 void glStencilOpSeparate_enc(void *self , GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
3493 {
3494 ENCODER_DEBUG_LOG("glStencilOpSeparate(face:0x%08x, fail:0x%08x, zfail:0x%08x, zpass:0x%08x)", face, fail, zfail, zpass);
3495 AEMU_SCOPED_TRACE("glStencilOpSeparate encode");
3496
3497 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3498 IOStream *stream = ctx->m_stream;
3499 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3500 bool useChecksum = checksumCalculator->getVersion() > 0;
3501
3502 unsigned char *ptr;
3503 unsigned char *buf;
3504 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3505 const size_t checksumSize = checksumCalculator->checksumByteSize();
3506 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3507 buf = stream->alloc(totalSize);
3508 ptr = buf;
3509 int tmp = OP_glStencilOpSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3510 memcpy(ptr, &totalSize, 4); ptr += 4;
3511
3512 memcpy(ptr, &face, 4); ptr += 4;
3513 memcpy(ptr, &fail, 4); ptr += 4;
3514 memcpy(ptr, &zfail, 4); ptr += 4;
3515 memcpy(ptr, &zpass, 4); ptr += 4;
3516
3517 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3518 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3519
3520 }
3521
glTexImage2D_enc(void * self,GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * pixels)3522 void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
3523 {
3524 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);
3525 AEMU_SCOPED_TRACE("glTexImage2D encode");
3526
3527 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3528 IOStream *stream = ctx->m_stream;
3529 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3530 bool useChecksum = checksumCalculator->getVersion() > 0;
3531
3532 const unsigned int __size_pixels = ((pixels != NULL) ? glesv2_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
3533 unsigned char *ptr;
3534 unsigned char *buf;
3535 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
3536 const size_t checksumSize = checksumCalculator->checksumByteSize();
3537 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3538 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3539 ptr = buf;
3540 int tmp = OP_glTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
3541 memcpy(ptr, &totalSize, 4); ptr += 4;
3542
3543 memcpy(ptr, &target, 4); ptr += 4;
3544 memcpy(ptr, &level, 4); ptr += 4;
3545 memcpy(ptr, &internalformat, 4); ptr += 4;
3546 memcpy(ptr, &width, 4); ptr += 4;
3547 memcpy(ptr, &height, 4); ptr += 4;
3548 memcpy(ptr, &border, 4); ptr += 4;
3549 memcpy(ptr, &format, 4); ptr += 4;
3550 memcpy(ptr, &type, 4); ptr += 4;
3551
3552 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3553 stream->flush();
3554 stream->writeFully(&__size_pixels,4);
3555 if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
3556 if (pixels != NULL) {
3557 stream->uploadPixels(self, width, height, 1, format, type, pixels);
3558 if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3559 }
3560 buf = stream->alloc(checksumSize);
3561 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
3562
3563 }
3564
glTexParameterf_enc(void * self,GLenum target,GLenum pname,GLfloat param)3565 void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param)
3566 {
3567 ENCODER_DEBUG_LOG("glTexParameterf(target:0x%08x, pname:0x%08x, param:%f)", target, pname, param);
3568 AEMU_SCOPED_TRACE("glTexParameterf encode");
3569
3570 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3571 IOStream *stream = ctx->m_stream;
3572 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3573 bool useChecksum = checksumCalculator->getVersion() > 0;
3574
3575 unsigned char *ptr;
3576 unsigned char *buf;
3577 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3578 const size_t checksumSize = checksumCalculator->checksumByteSize();
3579 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3580 buf = stream->alloc(totalSize);
3581 ptr = buf;
3582 int tmp = OP_glTexParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
3583 memcpy(ptr, &totalSize, 4); ptr += 4;
3584
3585 memcpy(ptr, &target, 4); ptr += 4;
3586 memcpy(ptr, &pname, 4); ptr += 4;
3587 memcpy(ptr, ¶m, 4); ptr += 4;
3588
3589 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3590 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3591
3592 }
3593
glTexParameterfv_enc(void * self,GLenum target,GLenum pname,const GLfloat * params)3594 void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params)
3595 {
3596 ENCODER_DEBUG_LOG("glTexParameterfv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
3597 AEMU_SCOPED_TRACE("glTexParameterfv encode");
3598
3599 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3600 IOStream *stream = ctx->m_stream;
3601 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3602 bool useChecksum = checksumCalculator->getVersion() > 0;
3603
3604 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
3605 unsigned char *ptr;
3606 unsigned char *buf;
3607 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
3608 const size_t checksumSize = checksumCalculator->checksumByteSize();
3609 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3610 buf = stream->alloc(totalSize);
3611 ptr = buf;
3612 int tmp = OP_glTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
3613 memcpy(ptr, &totalSize, 4); ptr += 4;
3614
3615 memcpy(ptr, &target, 4); ptr += 4;
3616 memcpy(ptr, &pname, 4); ptr += 4;
3617 memcpy(ptr, &__size_params, 4); ptr += 4;
3618 memcpy(ptr, params, __size_params);ptr += __size_params;
3619
3620 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3621 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3622
3623 }
3624
glTexParameteri_enc(void * self,GLenum target,GLenum pname,GLint param)3625 void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
3626 {
3627 ENCODER_DEBUG_LOG("glTexParameteri(target:0x%08x, pname:0x%08x, param:%d)", target, pname, param);
3628 AEMU_SCOPED_TRACE("glTexParameteri encode");
3629
3630 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3631 IOStream *stream = ctx->m_stream;
3632 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3633 bool useChecksum = checksumCalculator->getVersion() > 0;
3634
3635 unsigned char *ptr;
3636 unsigned char *buf;
3637 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3638 const size_t checksumSize = checksumCalculator->checksumByteSize();
3639 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3640 buf = stream->alloc(totalSize);
3641 ptr = buf;
3642 int tmp = OP_glTexParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
3643 memcpy(ptr, &totalSize, 4); ptr += 4;
3644
3645 memcpy(ptr, &target, 4); ptr += 4;
3646 memcpy(ptr, &pname, 4); ptr += 4;
3647 memcpy(ptr, ¶m, 4); ptr += 4;
3648
3649 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3650 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3651
3652 }
3653
glTexParameteriv_enc(void * self,GLenum target,GLenum pname,const GLint * params)3654 void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* params)
3655 {
3656 ENCODER_DEBUG_LOG("glTexParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
3657 AEMU_SCOPED_TRACE("glTexParameteriv encode");
3658
3659 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3660 IOStream *stream = ctx->m_stream;
3661 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3662 bool useChecksum = checksumCalculator->getVersion() > 0;
3663
3664 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
3665 unsigned char *ptr;
3666 unsigned char *buf;
3667 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
3668 const size_t checksumSize = checksumCalculator->checksumByteSize();
3669 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3670 buf = stream->alloc(totalSize);
3671 ptr = buf;
3672 int tmp = OP_glTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
3673 memcpy(ptr, &totalSize, 4); ptr += 4;
3674
3675 memcpy(ptr, &target, 4); ptr += 4;
3676 memcpy(ptr, &pname, 4); ptr += 4;
3677 memcpy(ptr, &__size_params, 4); ptr += 4;
3678 memcpy(ptr, params, __size_params);ptr += __size_params;
3679
3680 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3681 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3682
3683 }
3684
glTexSubImage2D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * pixels)3685 void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
3686 {
3687 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);
3688 AEMU_SCOPED_TRACE("glTexSubImage2D encode");
3689
3690 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3691 IOStream *stream = ctx->m_stream;
3692 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3693 bool useChecksum = checksumCalculator->getVersion() > 0;
3694
3695 const unsigned int __size_pixels = ((pixels != NULL) ? glesv2_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
3696 unsigned char *ptr;
3697 unsigned char *buf;
3698 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
3699 const size_t checksumSize = checksumCalculator->checksumByteSize();
3700 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3701 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3702 ptr = buf;
3703 int tmp = OP_glTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
3704 memcpy(ptr, &totalSize, 4); ptr += 4;
3705
3706 memcpy(ptr, &target, 4); ptr += 4;
3707 memcpy(ptr, &level, 4); ptr += 4;
3708 memcpy(ptr, &xoffset, 4); ptr += 4;
3709 memcpy(ptr, &yoffset, 4); ptr += 4;
3710 memcpy(ptr, &width, 4); ptr += 4;
3711 memcpy(ptr, &height, 4); ptr += 4;
3712 memcpy(ptr, &format, 4); ptr += 4;
3713 memcpy(ptr, &type, 4); ptr += 4;
3714
3715 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3716 stream->flush();
3717 stream->writeFully(&__size_pixels,4);
3718 if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
3719 if (pixels != NULL) {
3720 stream->uploadPixels(self, width, height, 1, format, type, pixels);
3721 if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3722 }
3723 buf = stream->alloc(checksumSize);
3724 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
3725
3726 }
3727
glUniform1f_enc(void * self,GLint location,GLfloat x)3728 void glUniform1f_enc(void *self , GLint location, GLfloat x)
3729 {
3730 ENCODER_DEBUG_LOG("glUniform1f(location:%d, x:%f)", location, x);
3731 AEMU_SCOPED_TRACE("glUniform1f encode");
3732
3733 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3734 IOStream *stream = ctx->m_stream;
3735 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3736 bool useChecksum = checksumCalculator->getVersion() > 0;
3737
3738 unsigned char *ptr;
3739 unsigned char *buf;
3740 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3741 const size_t checksumSize = checksumCalculator->checksumByteSize();
3742 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3743 buf = stream->alloc(totalSize);
3744 ptr = buf;
3745 int tmp = OP_glUniform1f;memcpy(ptr, &tmp, 4); ptr += 4;
3746 memcpy(ptr, &totalSize, 4); ptr += 4;
3747
3748 memcpy(ptr, &location, 4); ptr += 4;
3749 memcpy(ptr, &x, 4); ptr += 4;
3750
3751 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3752 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3753
3754 }
3755
glUniform1fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)3756 void glUniform1fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3757 {
3758 ENCODER_DEBUG_LOG("glUniform1fv(location:%d, count:%d, v:0x%08x)", location, count, v);
3759 AEMU_SCOPED_TRACE("glUniform1fv encode");
3760
3761 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3762 IOStream *stream = ctx->m_stream;
3763 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3764 bool useChecksum = checksumCalculator->getVersion() > 0;
3765
3766 const unsigned int __size_v = (count * sizeof(GLfloat));
3767 unsigned char *ptr;
3768 unsigned char *buf;
3769 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3770 const size_t checksumSize = checksumCalculator->checksumByteSize();
3771 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3772 buf = stream->alloc(totalSize);
3773 ptr = buf;
3774 int tmp = OP_glUniform1fv;memcpy(ptr, &tmp, 4); ptr += 4;
3775 memcpy(ptr, &totalSize, 4); ptr += 4;
3776
3777 memcpy(ptr, &location, 4); ptr += 4;
3778 memcpy(ptr, &count, 4); ptr += 4;
3779 memcpy(ptr, &__size_v, 4); ptr += 4;
3780 memcpy(ptr, v, __size_v);ptr += __size_v;
3781
3782 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3783 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3784
3785 }
3786
glUniform1i_enc(void * self,GLint location,GLint x)3787 void glUniform1i_enc(void *self , GLint location, GLint x)
3788 {
3789 ENCODER_DEBUG_LOG("glUniform1i(location:%d, x:%d)", location, x);
3790 AEMU_SCOPED_TRACE("glUniform1i encode");
3791
3792 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3793 IOStream *stream = ctx->m_stream;
3794 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3795 bool useChecksum = checksumCalculator->getVersion() > 0;
3796
3797 unsigned char *ptr;
3798 unsigned char *buf;
3799 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3800 const size_t checksumSize = checksumCalculator->checksumByteSize();
3801 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3802 buf = stream->alloc(totalSize);
3803 ptr = buf;
3804 int tmp = OP_glUniform1i;memcpy(ptr, &tmp, 4); ptr += 4;
3805 memcpy(ptr, &totalSize, 4); ptr += 4;
3806
3807 memcpy(ptr, &location, 4); ptr += 4;
3808 memcpy(ptr, &x, 4); ptr += 4;
3809
3810 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3811 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3812
3813 }
3814
glUniform1iv_enc(void * self,GLint location,GLsizei count,const GLint * v)3815 void glUniform1iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
3816 {
3817 ENCODER_DEBUG_LOG("glUniform1iv(location:%d, count:%d, v:0x%08x)", location, count, v);
3818 AEMU_SCOPED_TRACE("glUniform1iv encode");
3819
3820 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3821 IOStream *stream = ctx->m_stream;
3822 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3823 bool useChecksum = checksumCalculator->getVersion() > 0;
3824
3825 const unsigned int __size_v = (count * sizeof(GLint));
3826 unsigned char *ptr;
3827 unsigned char *buf;
3828 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3829 const size_t checksumSize = checksumCalculator->checksumByteSize();
3830 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3831 buf = stream->alloc(totalSize);
3832 ptr = buf;
3833 int tmp = OP_glUniform1iv;memcpy(ptr, &tmp, 4); ptr += 4;
3834 memcpy(ptr, &totalSize, 4); ptr += 4;
3835
3836 memcpy(ptr, &location, 4); ptr += 4;
3837 memcpy(ptr, &count, 4); ptr += 4;
3838 memcpy(ptr, &__size_v, 4); ptr += 4;
3839 memcpy(ptr, v, __size_v);ptr += __size_v;
3840
3841 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3842 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3843
3844 }
3845
glUniform2f_enc(void * self,GLint location,GLfloat x,GLfloat y)3846 void glUniform2f_enc(void *self , GLint location, GLfloat x, GLfloat y)
3847 {
3848 ENCODER_DEBUG_LOG("glUniform2f(location:%d, x:%f, y:%f)", location, x, y);
3849 AEMU_SCOPED_TRACE("glUniform2f encode");
3850
3851 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3852 IOStream *stream = ctx->m_stream;
3853 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3854 bool useChecksum = checksumCalculator->getVersion() > 0;
3855
3856 unsigned char *ptr;
3857 unsigned char *buf;
3858 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3859 const size_t checksumSize = checksumCalculator->checksumByteSize();
3860 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3861 buf = stream->alloc(totalSize);
3862 ptr = buf;
3863 int tmp = OP_glUniform2f;memcpy(ptr, &tmp, 4); ptr += 4;
3864 memcpy(ptr, &totalSize, 4); ptr += 4;
3865
3866 memcpy(ptr, &location, 4); ptr += 4;
3867 memcpy(ptr, &x, 4); ptr += 4;
3868 memcpy(ptr, &y, 4); ptr += 4;
3869
3870 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3871 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3872
3873 }
3874
glUniform2fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)3875 void glUniform2fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3876 {
3877 ENCODER_DEBUG_LOG("glUniform2fv(location:%d, count:%d, v:0x%08x)", location, count, v);
3878 AEMU_SCOPED_TRACE("glUniform2fv encode");
3879
3880 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3881 IOStream *stream = ctx->m_stream;
3882 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3883 bool useChecksum = checksumCalculator->getVersion() > 0;
3884
3885 const unsigned int __size_v = (count * 2 * sizeof(GLfloat));
3886 unsigned char *ptr;
3887 unsigned char *buf;
3888 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3889 const size_t checksumSize = checksumCalculator->checksumByteSize();
3890 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3891 buf = stream->alloc(totalSize);
3892 ptr = buf;
3893 int tmp = OP_glUniform2fv;memcpy(ptr, &tmp, 4); ptr += 4;
3894 memcpy(ptr, &totalSize, 4); ptr += 4;
3895
3896 memcpy(ptr, &location, 4); ptr += 4;
3897 memcpy(ptr, &count, 4); ptr += 4;
3898 memcpy(ptr, &__size_v, 4); ptr += 4;
3899 memcpy(ptr, v, __size_v);ptr += __size_v;
3900
3901 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3902 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3903
3904 }
3905
glUniform2i_enc(void * self,GLint location,GLint x,GLint y)3906 void glUniform2i_enc(void *self , GLint location, GLint x, GLint y)
3907 {
3908 ENCODER_DEBUG_LOG("glUniform2i(location:%d, x:%d, y:%d)", location, x, y);
3909 AEMU_SCOPED_TRACE("glUniform2i encode");
3910
3911 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3912 IOStream *stream = ctx->m_stream;
3913 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3914 bool useChecksum = checksumCalculator->getVersion() > 0;
3915
3916 unsigned char *ptr;
3917 unsigned char *buf;
3918 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3919 const size_t checksumSize = checksumCalculator->checksumByteSize();
3920 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3921 buf = stream->alloc(totalSize);
3922 ptr = buf;
3923 int tmp = OP_glUniform2i;memcpy(ptr, &tmp, 4); ptr += 4;
3924 memcpy(ptr, &totalSize, 4); ptr += 4;
3925
3926 memcpy(ptr, &location, 4); ptr += 4;
3927 memcpy(ptr, &x, 4); ptr += 4;
3928 memcpy(ptr, &y, 4); ptr += 4;
3929
3930 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3931 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3932
3933 }
3934
glUniform2iv_enc(void * self,GLint location,GLsizei count,const GLint * v)3935 void glUniform2iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
3936 {
3937 ENCODER_DEBUG_LOG("glUniform2iv(location:%d, count:%d, v:0x%08x)", location, count, v);
3938 AEMU_SCOPED_TRACE("glUniform2iv encode");
3939
3940 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3941 IOStream *stream = ctx->m_stream;
3942 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3943 bool useChecksum = checksumCalculator->getVersion() > 0;
3944
3945 const unsigned int __size_v = (count * 2 * sizeof(GLint));
3946 unsigned char *ptr;
3947 unsigned char *buf;
3948 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3949 const size_t checksumSize = checksumCalculator->checksumByteSize();
3950 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3951 buf = stream->alloc(totalSize);
3952 ptr = buf;
3953 int tmp = OP_glUniform2iv;memcpy(ptr, &tmp, 4); ptr += 4;
3954 memcpy(ptr, &totalSize, 4); ptr += 4;
3955
3956 memcpy(ptr, &location, 4); ptr += 4;
3957 memcpy(ptr, &count, 4); ptr += 4;
3958 memcpy(ptr, &__size_v, 4); ptr += 4;
3959 memcpy(ptr, v, __size_v);ptr += __size_v;
3960
3961 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3962 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3963
3964 }
3965
glUniform3f_enc(void * self,GLint location,GLfloat x,GLfloat y,GLfloat z)3966 void glUniform3f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z)
3967 {
3968 ENCODER_DEBUG_LOG("glUniform3f(location:%d, x:%f, y:%f, z:%f)", location, x, y, z);
3969 AEMU_SCOPED_TRACE("glUniform3f encode");
3970
3971 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3972 IOStream *stream = ctx->m_stream;
3973 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3974 bool useChecksum = checksumCalculator->getVersion() > 0;
3975
3976 unsigned char *ptr;
3977 unsigned char *buf;
3978 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3979 const size_t checksumSize = checksumCalculator->checksumByteSize();
3980 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3981 buf = stream->alloc(totalSize);
3982 ptr = buf;
3983 int tmp = OP_glUniform3f;memcpy(ptr, &tmp, 4); ptr += 4;
3984 memcpy(ptr, &totalSize, 4); ptr += 4;
3985
3986 memcpy(ptr, &location, 4); ptr += 4;
3987 memcpy(ptr, &x, 4); ptr += 4;
3988 memcpy(ptr, &y, 4); ptr += 4;
3989 memcpy(ptr, &z, 4); ptr += 4;
3990
3991 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3992 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3993
3994 }
3995
glUniform3fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)3996 void glUniform3fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3997 {
3998 ENCODER_DEBUG_LOG("glUniform3fv(location:%d, count:%d, v:0x%08x)", location, count, v);
3999 AEMU_SCOPED_TRACE("glUniform3fv encode");
4000
4001 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4002 IOStream *stream = ctx->m_stream;
4003 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4004 bool useChecksum = checksumCalculator->getVersion() > 0;
4005
4006 const unsigned int __size_v = (count * 3 * sizeof(GLfloat));
4007 unsigned char *ptr;
4008 unsigned char *buf;
4009 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4010 const size_t checksumSize = checksumCalculator->checksumByteSize();
4011 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4012 buf = stream->alloc(totalSize);
4013 ptr = buf;
4014 int tmp = OP_glUniform3fv;memcpy(ptr, &tmp, 4); ptr += 4;
4015 memcpy(ptr, &totalSize, 4); ptr += 4;
4016
4017 memcpy(ptr, &location, 4); ptr += 4;
4018 memcpy(ptr, &count, 4); ptr += 4;
4019 memcpy(ptr, &__size_v, 4); ptr += 4;
4020 memcpy(ptr, v, __size_v);ptr += __size_v;
4021
4022 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4023 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4024
4025 }
4026
glUniform3i_enc(void * self,GLint location,GLint x,GLint y,GLint z)4027 void glUniform3i_enc(void *self , GLint location, GLint x, GLint y, GLint z)
4028 {
4029 ENCODER_DEBUG_LOG("glUniform3i(location:%d, x:%d, y:%d, z:%d)", location, x, y, z);
4030 AEMU_SCOPED_TRACE("glUniform3i encode");
4031
4032 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4033 IOStream *stream = ctx->m_stream;
4034 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4035 bool useChecksum = checksumCalculator->getVersion() > 0;
4036
4037 unsigned char *ptr;
4038 unsigned char *buf;
4039 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4040 const size_t checksumSize = checksumCalculator->checksumByteSize();
4041 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4042 buf = stream->alloc(totalSize);
4043 ptr = buf;
4044 int tmp = OP_glUniform3i;memcpy(ptr, &tmp, 4); ptr += 4;
4045 memcpy(ptr, &totalSize, 4); ptr += 4;
4046
4047 memcpy(ptr, &location, 4); ptr += 4;
4048 memcpy(ptr, &x, 4); ptr += 4;
4049 memcpy(ptr, &y, 4); ptr += 4;
4050 memcpy(ptr, &z, 4); ptr += 4;
4051
4052 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4053 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4054
4055 }
4056
glUniform3iv_enc(void * self,GLint location,GLsizei count,const GLint * v)4057 void glUniform3iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
4058 {
4059 ENCODER_DEBUG_LOG("glUniform3iv(location:%d, count:%d, v:0x%08x)", location, count, v);
4060 AEMU_SCOPED_TRACE("glUniform3iv encode");
4061
4062 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4063 IOStream *stream = ctx->m_stream;
4064 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4065 bool useChecksum = checksumCalculator->getVersion() > 0;
4066
4067 const unsigned int __size_v = (3 * count * sizeof(GLint));
4068 unsigned char *ptr;
4069 unsigned char *buf;
4070 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4071 const size_t checksumSize = checksumCalculator->checksumByteSize();
4072 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4073 buf = stream->alloc(totalSize);
4074 ptr = buf;
4075 int tmp = OP_glUniform3iv;memcpy(ptr, &tmp, 4); ptr += 4;
4076 memcpy(ptr, &totalSize, 4); ptr += 4;
4077
4078 memcpy(ptr, &location, 4); ptr += 4;
4079 memcpy(ptr, &count, 4); ptr += 4;
4080 memcpy(ptr, &__size_v, 4); ptr += 4;
4081 memcpy(ptr, v, __size_v);ptr += __size_v;
4082
4083 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4084 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4085
4086 }
4087
glUniform4f_enc(void * self,GLint location,GLfloat x,GLfloat y,GLfloat z,GLfloat w)4088 void glUniform4f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
4089 {
4090 ENCODER_DEBUG_LOG("glUniform4f(location:%d, x:%f, y:%f, z:%f, w:%f)", location, x, y, z, w);
4091 AEMU_SCOPED_TRACE("glUniform4f encode");
4092
4093 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4094 IOStream *stream = ctx->m_stream;
4095 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4096 bool useChecksum = checksumCalculator->getVersion() > 0;
4097
4098 unsigned char *ptr;
4099 unsigned char *buf;
4100 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4101 const size_t checksumSize = checksumCalculator->checksumByteSize();
4102 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4103 buf = stream->alloc(totalSize);
4104 ptr = buf;
4105 int tmp = OP_glUniform4f;memcpy(ptr, &tmp, 4); ptr += 4;
4106 memcpy(ptr, &totalSize, 4); ptr += 4;
4107
4108 memcpy(ptr, &location, 4); ptr += 4;
4109 memcpy(ptr, &x, 4); ptr += 4;
4110 memcpy(ptr, &y, 4); ptr += 4;
4111 memcpy(ptr, &z, 4); ptr += 4;
4112 memcpy(ptr, &w, 4); ptr += 4;
4113
4114 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4115 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4116
4117 }
4118
glUniform4fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)4119 void glUniform4fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
4120 {
4121 ENCODER_DEBUG_LOG("glUniform4fv(location:%d, count:%d, v:0x%08x)", location, count, v);
4122 AEMU_SCOPED_TRACE("glUniform4fv encode");
4123
4124 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4125 IOStream *stream = ctx->m_stream;
4126 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4127 bool useChecksum = checksumCalculator->getVersion() > 0;
4128
4129 const unsigned int __size_v = (4 * count * sizeof(GLfloat));
4130 unsigned char *ptr;
4131 unsigned char *buf;
4132 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4133 const size_t checksumSize = checksumCalculator->checksumByteSize();
4134 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4135 buf = stream->alloc(totalSize);
4136 ptr = buf;
4137 int tmp = OP_glUniform4fv;memcpy(ptr, &tmp, 4); ptr += 4;
4138 memcpy(ptr, &totalSize, 4); ptr += 4;
4139
4140 memcpy(ptr, &location, 4); ptr += 4;
4141 memcpy(ptr, &count, 4); ptr += 4;
4142 memcpy(ptr, &__size_v, 4); ptr += 4;
4143 memcpy(ptr, v, __size_v);ptr += __size_v;
4144
4145 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4146 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4147
4148 }
4149
glUniform4i_enc(void * self,GLint location,GLint x,GLint y,GLint z,GLint w)4150 void glUniform4i_enc(void *self , GLint location, GLint x, GLint y, GLint z, GLint w)
4151 {
4152 ENCODER_DEBUG_LOG("glUniform4i(location:%d, x:%d, y:%d, z:%d, w:%d)", location, x, y, z, w);
4153 AEMU_SCOPED_TRACE("glUniform4i encode");
4154
4155 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4156 IOStream *stream = ctx->m_stream;
4157 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4158 bool useChecksum = checksumCalculator->getVersion() > 0;
4159
4160 unsigned char *ptr;
4161 unsigned char *buf;
4162 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4163 const size_t checksumSize = checksumCalculator->checksumByteSize();
4164 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4165 buf = stream->alloc(totalSize);
4166 ptr = buf;
4167 int tmp = OP_glUniform4i;memcpy(ptr, &tmp, 4); ptr += 4;
4168 memcpy(ptr, &totalSize, 4); ptr += 4;
4169
4170 memcpy(ptr, &location, 4); ptr += 4;
4171 memcpy(ptr, &x, 4); ptr += 4;
4172 memcpy(ptr, &y, 4); ptr += 4;
4173 memcpy(ptr, &z, 4); ptr += 4;
4174 memcpy(ptr, &w, 4); ptr += 4;
4175
4176 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4177 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4178
4179 }
4180
glUniform4iv_enc(void * self,GLint location,GLsizei count,const GLint * v)4181 void glUniform4iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
4182 {
4183 ENCODER_DEBUG_LOG("glUniform4iv(location:%d, count:%d, v:0x%08x)", location, count, v);
4184 AEMU_SCOPED_TRACE("glUniform4iv encode");
4185
4186 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4187 IOStream *stream = ctx->m_stream;
4188 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4189 bool useChecksum = checksumCalculator->getVersion() > 0;
4190
4191 const unsigned int __size_v = (4 * count * sizeof(GLint));
4192 unsigned char *ptr;
4193 unsigned char *buf;
4194 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4195 const size_t checksumSize = checksumCalculator->checksumByteSize();
4196 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4197 buf = stream->alloc(totalSize);
4198 ptr = buf;
4199 int tmp = OP_glUniform4iv;memcpy(ptr, &tmp, 4); ptr += 4;
4200 memcpy(ptr, &totalSize, 4); ptr += 4;
4201
4202 memcpy(ptr, &location, 4); ptr += 4;
4203 memcpy(ptr, &count, 4); ptr += 4;
4204 memcpy(ptr, &__size_v, 4); ptr += 4;
4205 memcpy(ptr, v, __size_v);ptr += __size_v;
4206
4207 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4208 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4209
4210 }
4211
glUniformMatrix2fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)4212 void glUniformMatrix2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
4213 {
4214 ENCODER_DEBUG_LOG("glUniformMatrix2fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
4215 AEMU_SCOPED_TRACE("glUniformMatrix2fv encode");
4216
4217 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4218 IOStream *stream = ctx->m_stream;
4219 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4220 bool useChecksum = checksumCalculator->getVersion() > 0;
4221
4222 const unsigned int __size_value = (count * 4 * sizeof(GLfloat));
4223 unsigned char *ptr;
4224 unsigned char *buf;
4225 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
4226 const size_t checksumSize = checksumCalculator->checksumByteSize();
4227 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4228 buf = stream->alloc(totalSize);
4229 ptr = buf;
4230 int tmp = OP_glUniformMatrix2fv;memcpy(ptr, &tmp, 4); ptr += 4;
4231 memcpy(ptr, &totalSize, 4); ptr += 4;
4232
4233 memcpy(ptr, &location, 4); ptr += 4;
4234 memcpy(ptr, &count, 4); ptr += 4;
4235 memcpy(ptr, &transpose, 1); ptr += 1;
4236 memcpy(ptr, &__size_value, 4); ptr += 4;
4237 memcpy(ptr, value, __size_value);ptr += __size_value;
4238
4239 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4240 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4241
4242 }
4243
glUniformMatrix3fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)4244 void glUniformMatrix3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
4245 {
4246 ENCODER_DEBUG_LOG("glUniformMatrix3fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
4247 AEMU_SCOPED_TRACE("glUniformMatrix3fv encode");
4248
4249 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4250 IOStream *stream = ctx->m_stream;
4251 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4252 bool useChecksum = checksumCalculator->getVersion() > 0;
4253
4254 const unsigned int __size_value = (count * 9 * sizeof(GLfloat));
4255 unsigned char *ptr;
4256 unsigned char *buf;
4257 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
4258 const size_t checksumSize = checksumCalculator->checksumByteSize();
4259 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4260 buf = stream->alloc(totalSize);
4261 ptr = buf;
4262 int tmp = OP_glUniformMatrix3fv;memcpy(ptr, &tmp, 4); ptr += 4;
4263 memcpy(ptr, &totalSize, 4); ptr += 4;
4264
4265 memcpy(ptr, &location, 4); ptr += 4;
4266 memcpy(ptr, &count, 4); ptr += 4;
4267 memcpy(ptr, &transpose, 1); ptr += 1;
4268 memcpy(ptr, &__size_value, 4); ptr += 4;
4269 memcpy(ptr, value, __size_value);ptr += __size_value;
4270
4271 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4272 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4273
4274 }
4275
glUniformMatrix4fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)4276 void glUniformMatrix4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
4277 {
4278 ENCODER_DEBUG_LOG("glUniformMatrix4fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
4279 AEMU_SCOPED_TRACE("glUniformMatrix4fv encode");
4280
4281 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4282 IOStream *stream = ctx->m_stream;
4283 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4284 bool useChecksum = checksumCalculator->getVersion() > 0;
4285
4286 const unsigned int __size_value = (count * 16 * sizeof(GLfloat));
4287 unsigned char *ptr;
4288 unsigned char *buf;
4289 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
4290 const size_t checksumSize = checksumCalculator->checksumByteSize();
4291 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4292 buf = stream->alloc(totalSize);
4293 ptr = buf;
4294 int tmp = OP_glUniformMatrix4fv;memcpy(ptr, &tmp, 4); ptr += 4;
4295 memcpy(ptr, &totalSize, 4); ptr += 4;
4296
4297 memcpy(ptr, &location, 4); ptr += 4;
4298 memcpy(ptr, &count, 4); ptr += 4;
4299 memcpy(ptr, &transpose, 1); ptr += 1;
4300 memcpy(ptr, &__size_value, 4); ptr += 4;
4301 memcpy(ptr, value, __size_value);ptr += __size_value;
4302
4303 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4304 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4305
4306 }
4307
glUseProgram_enc(void * self,GLuint program)4308 void glUseProgram_enc(void *self , GLuint program)
4309 {
4310 ENCODER_DEBUG_LOG("glUseProgram(program:%u)", program);
4311 AEMU_SCOPED_TRACE("glUseProgram encode");
4312
4313 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4314 IOStream *stream = ctx->m_stream;
4315 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4316 bool useChecksum = checksumCalculator->getVersion() > 0;
4317
4318 unsigned char *ptr;
4319 unsigned char *buf;
4320 const size_t sizeWithoutChecksum = 8 + 4;
4321 const size_t checksumSize = checksumCalculator->checksumByteSize();
4322 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4323 buf = stream->alloc(totalSize);
4324 ptr = buf;
4325 int tmp = OP_glUseProgram;memcpy(ptr, &tmp, 4); ptr += 4;
4326 memcpy(ptr, &totalSize, 4); ptr += 4;
4327
4328 memcpy(ptr, &program, 4); ptr += 4;
4329
4330 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4331 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4332
4333 }
4334
glValidateProgram_enc(void * self,GLuint program)4335 void glValidateProgram_enc(void *self , GLuint program)
4336 {
4337 ENCODER_DEBUG_LOG("glValidateProgram(program:%u)", program);
4338 AEMU_SCOPED_TRACE("glValidateProgram encode");
4339
4340 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4341 IOStream *stream = ctx->m_stream;
4342 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4343 bool useChecksum = checksumCalculator->getVersion() > 0;
4344
4345 unsigned char *ptr;
4346 unsigned char *buf;
4347 const size_t sizeWithoutChecksum = 8 + 4;
4348 const size_t checksumSize = checksumCalculator->checksumByteSize();
4349 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4350 buf = stream->alloc(totalSize);
4351 ptr = buf;
4352 int tmp = OP_glValidateProgram;memcpy(ptr, &tmp, 4); ptr += 4;
4353 memcpy(ptr, &totalSize, 4); ptr += 4;
4354
4355 memcpy(ptr, &program, 4); ptr += 4;
4356
4357 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4358 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4359
4360 }
4361
glVertexAttrib1f_enc(void * self,GLuint indx,GLfloat x)4362 void glVertexAttrib1f_enc(void *self , GLuint indx, GLfloat x)
4363 {
4364 ENCODER_DEBUG_LOG("glVertexAttrib1f(indx:%u, x:%f)", indx, x);
4365 AEMU_SCOPED_TRACE("glVertexAttrib1f encode");
4366
4367 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4368 IOStream *stream = ctx->m_stream;
4369 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4370 bool useChecksum = checksumCalculator->getVersion() > 0;
4371
4372 unsigned char *ptr;
4373 unsigned char *buf;
4374 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4375 const size_t checksumSize = checksumCalculator->checksumByteSize();
4376 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4377 buf = stream->alloc(totalSize);
4378 ptr = buf;
4379 int tmp = OP_glVertexAttrib1f;memcpy(ptr, &tmp, 4); ptr += 4;
4380 memcpy(ptr, &totalSize, 4); ptr += 4;
4381
4382 memcpy(ptr, &indx, 4); ptr += 4;
4383 memcpy(ptr, &x, 4); ptr += 4;
4384
4385 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4386 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4387
4388 }
4389
glVertexAttrib1fv_enc(void * self,GLuint indx,const GLfloat * values)4390 void glVertexAttrib1fv_enc(void *self , GLuint indx, const GLfloat* values)
4391 {
4392 ENCODER_DEBUG_LOG("glVertexAttrib1fv(indx:%u, values:0x%08x)", indx, values);
4393 AEMU_SCOPED_TRACE("glVertexAttrib1fv encode");
4394
4395 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4396 IOStream *stream = ctx->m_stream;
4397 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4398 bool useChecksum = checksumCalculator->getVersion() > 0;
4399
4400 const unsigned int __size_values = (sizeof(GLfloat));
4401 unsigned char *ptr;
4402 unsigned char *buf;
4403 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4404 const size_t checksumSize = checksumCalculator->checksumByteSize();
4405 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4406 buf = stream->alloc(totalSize);
4407 ptr = buf;
4408 int tmp = OP_glVertexAttrib1fv;memcpy(ptr, &tmp, 4); ptr += 4;
4409 memcpy(ptr, &totalSize, 4); ptr += 4;
4410
4411 memcpy(ptr, &indx, 4); ptr += 4;
4412 memcpy(ptr, &__size_values, 4); ptr += 4;
4413 memcpy(ptr, values, __size_values);ptr += __size_values;
4414
4415 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4416 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4417
4418 }
4419
glVertexAttrib2f_enc(void * self,GLuint indx,GLfloat x,GLfloat y)4420 void glVertexAttrib2f_enc(void *self , GLuint indx, GLfloat x, GLfloat y)
4421 {
4422 ENCODER_DEBUG_LOG("glVertexAttrib2f(indx:%u, x:%f, y:%f)", indx, x, y);
4423 AEMU_SCOPED_TRACE("glVertexAttrib2f encode");
4424
4425 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4426 IOStream *stream = ctx->m_stream;
4427 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4428 bool useChecksum = checksumCalculator->getVersion() > 0;
4429
4430 unsigned char *ptr;
4431 unsigned char *buf;
4432 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
4433 const size_t checksumSize = checksumCalculator->checksumByteSize();
4434 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4435 buf = stream->alloc(totalSize);
4436 ptr = buf;
4437 int tmp = OP_glVertexAttrib2f;memcpy(ptr, &tmp, 4); ptr += 4;
4438 memcpy(ptr, &totalSize, 4); ptr += 4;
4439
4440 memcpy(ptr, &indx, 4); ptr += 4;
4441 memcpy(ptr, &x, 4); ptr += 4;
4442 memcpy(ptr, &y, 4); ptr += 4;
4443
4444 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4445 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4446
4447 }
4448
glVertexAttrib2fv_enc(void * self,GLuint indx,const GLfloat * values)4449 void glVertexAttrib2fv_enc(void *self , GLuint indx, const GLfloat* values)
4450 {
4451 ENCODER_DEBUG_LOG("glVertexAttrib2fv(indx:%u, values:0x%08x)", indx, values);
4452 AEMU_SCOPED_TRACE("glVertexAttrib2fv encode");
4453
4454 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4455 IOStream *stream = ctx->m_stream;
4456 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4457 bool useChecksum = checksumCalculator->getVersion() > 0;
4458
4459 const unsigned int __size_values = (2 * sizeof(GLfloat));
4460 unsigned char *ptr;
4461 unsigned char *buf;
4462 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4463 const size_t checksumSize = checksumCalculator->checksumByteSize();
4464 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4465 buf = stream->alloc(totalSize);
4466 ptr = buf;
4467 int tmp = OP_glVertexAttrib2fv;memcpy(ptr, &tmp, 4); ptr += 4;
4468 memcpy(ptr, &totalSize, 4); ptr += 4;
4469
4470 memcpy(ptr, &indx, 4); ptr += 4;
4471 memcpy(ptr, &__size_values, 4); ptr += 4;
4472 memcpy(ptr, values, __size_values);ptr += __size_values;
4473
4474 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4475 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4476
4477 }
4478
glVertexAttrib3f_enc(void * self,GLuint indx,GLfloat x,GLfloat y,GLfloat z)4479 void glVertexAttrib3f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z)
4480 {
4481 ENCODER_DEBUG_LOG("glVertexAttrib3f(indx:%u, x:%f, y:%f, z:%f)", indx, x, y, z);
4482 AEMU_SCOPED_TRACE("glVertexAttrib3f encode");
4483
4484 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4485 IOStream *stream = ctx->m_stream;
4486 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4487 bool useChecksum = checksumCalculator->getVersion() > 0;
4488
4489 unsigned char *ptr;
4490 unsigned char *buf;
4491 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4492 const size_t checksumSize = checksumCalculator->checksumByteSize();
4493 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4494 buf = stream->alloc(totalSize);
4495 ptr = buf;
4496 int tmp = OP_glVertexAttrib3f;memcpy(ptr, &tmp, 4); ptr += 4;
4497 memcpy(ptr, &totalSize, 4); ptr += 4;
4498
4499 memcpy(ptr, &indx, 4); ptr += 4;
4500 memcpy(ptr, &x, 4); ptr += 4;
4501 memcpy(ptr, &y, 4); ptr += 4;
4502 memcpy(ptr, &z, 4); ptr += 4;
4503
4504 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4505 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4506
4507 }
4508
glVertexAttrib3fv_enc(void * self,GLuint indx,const GLfloat * values)4509 void glVertexAttrib3fv_enc(void *self , GLuint indx, const GLfloat* values)
4510 {
4511 ENCODER_DEBUG_LOG("glVertexAttrib3fv(indx:%u, values:0x%08x)", indx, values);
4512 AEMU_SCOPED_TRACE("glVertexAttrib3fv encode");
4513
4514 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4515 IOStream *stream = ctx->m_stream;
4516 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4517 bool useChecksum = checksumCalculator->getVersion() > 0;
4518
4519 const unsigned int __size_values = (3 * sizeof(GLfloat));
4520 unsigned char *ptr;
4521 unsigned char *buf;
4522 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4523 const size_t checksumSize = checksumCalculator->checksumByteSize();
4524 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4525 buf = stream->alloc(totalSize);
4526 ptr = buf;
4527 int tmp = OP_glVertexAttrib3fv;memcpy(ptr, &tmp, 4); ptr += 4;
4528 memcpy(ptr, &totalSize, 4); ptr += 4;
4529
4530 memcpy(ptr, &indx, 4); ptr += 4;
4531 memcpy(ptr, &__size_values, 4); ptr += 4;
4532 memcpy(ptr, values, __size_values);ptr += __size_values;
4533
4534 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4535 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4536
4537 }
4538
glVertexAttrib4f_enc(void * self,GLuint indx,GLfloat x,GLfloat y,GLfloat z,GLfloat w)4539 void glVertexAttrib4f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
4540 {
4541 ENCODER_DEBUG_LOG("glVertexAttrib4f(indx:%u, x:%f, y:%f, z:%f, w:%f)", indx, x, y, z, w);
4542 AEMU_SCOPED_TRACE("glVertexAttrib4f encode");
4543
4544 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4545 IOStream *stream = ctx->m_stream;
4546 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4547 bool useChecksum = checksumCalculator->getVersion() > 0;
4548
4549 unsigned char *ptr;
4550 unsigned char *buf;
4551 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4552 const size_t checksumSize = checksumCalculator->checksumByteSize();
4553 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4554 buf = stream->alloc(totalSize);
4555 ptr = buf;
4556 int tmp = OP_glVertexAttrib4f;memcpy(ptr, &tmp, 4); ptr += 4;
4557 memcpy(ptr, &totalSize, 4); ptr += 4;
4558
4559 memcpy(ptr, &indx, 4); ptr += 4;
4560 memcpy(ptr, &x, 4); ptr += 4;
4561 memcpy(ptr, &y, 4); ptr += 4;
4562 memcpy(ptr, &z, 4); ptr += 4;
4563 memcpy(ptr, &w, 4); ptr += 4;
4564
4565 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4566 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4567
4568 }
4569
glVertexAttrib4fv_enc(void * self,GLuint indx,const GLfloat * values)4570 void glVertexAttrib4fv_enc(void *self , GLuint indx, const GLfloat* values)
4571 {
4572 ENCODER_DEBUG_LOG("glVertexAttrib4fv(indx:%u, values:0x%08x)", indx, values);
4573 AEMU_SCOPED_TRACE("glVertexAttrib4fv encode");
4574
4575 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4576 IOStream *stream = ctx->m_stream;
4577 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4578 bool useChecksum = checksumCalculator->getVersion() > 0;
4579
4580 const unsigned int __size_values = (4 * sizeof(GLfloat));
4581 unsigned char *ptr;
4582 unsigned char *buf;
4583 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4584 const size_t checksumSize = checksumCalculator->checksumByteSize();
4585 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4586 buf = stream->alloc(totalSize);
4587 ptr = buf;
4588 int tmp = OP_glVertexAttrib4fv;memcpy(ptr, &tmp, 4); ptr += 4;
4589 memcpy(ptr, &totalSize, 4); ptr += 4;
4590
4591 memcpy(ptr, &indx, 4); ptr += 4;
4592 memcpy(ptr, &__size_values, 4); ptr += 4;
4593 memcpy(ptr, values, __size_values);ptr += __size_values;
4594
4595 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4596 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4597
4598 }
4599
glViewport_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height)4600 void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
4601 {
4602 ENCODER_DEBUG_LOG("glViewport(x:%d, y:%d, width:%d, height:%d)", x, y, width, height);
4603 AEMU_SCOPED_TRACE("glViewport encode");
4604
4605 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4606 IOStream *stream = ctx->m_stream;
4607 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4608 bool useChecksum = checksumCalculator->getVersion() > 0;
4609
4610 unsigned char *ptr;
4611 unsigned char *buf;
4612 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4613 const size_t checksumSize = checksumCalculator->checksumByteSize();
4614 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4615 buf = stream->alloc(totalSize);
4616 ptr = buf;
4617 int tmp = OP_glViewport;memcpy(ptr, &tmp, 4); ptr += 4;
4618 memcpy(ptr, &totalSize, 4); ptr += 4;
4619
4620 memcpy(ptr, &x, 4); ptr += 4;
4621 memcpy(ptr, &y, 4); ptr += 4;
4622 memcpy(ptr, &width, 4); ptr += 4;
4623 memcpy(ptr, &height, 4); ptr += 4;
4624
4625 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4626 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4627
4628 }
4629
glEGLImageTargetTexture2DOES_enc(void * self,GLenum target,GLeglImageOES image)4630 void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES image)
4631 {
4632 ENCODER_DEBUG_LOG("glEGLImageTargetTexture2DOES(target:0x%08x, image:%p)", target, image);
4633 AEMU_SCOPED_TRACE("glEGLImageTargetTexture2DOES encode");
4634
4635 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4636 IOStream *stream = ctx->m_stream;
4637 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4638 bool useChecksum = checksumCalculator->getVersion() > 0;
4639
4640 unsigned char *ptr;
4641 unsigned char *buf;
4642 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4643 const size_t checksumSize = checksumCalculator->checksumByteSize();
4644 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4645 buf = stream->alloc(totalSize);
4646 ptr = buf;
4647 int tmp = OP_glEGLImageTargetTexture2DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4648 memcpy(ptr, &totalSize, 4); ptr += 4;
4649
4650 memcpy(ptr, &target, 4); ptr += 4;
4651 memcpy(ptr, &image, 4); ptr += 4;
4652
4653 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4654 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4655
4656 }
4657
glEGLImageTargetRenderbufferStorageOES_enc(void * self,GLenum target,GLeglImageOES image)4658 void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeglImageOES image)
4659 {
4660 ENCODER_DEBUG_LOG("glEGLImageTargetRenderbufferStorageOES(target:0x%08x, image:%p)", target, image);
4661 AEMU_SCOPED_TRACE("glEGLImageTargetRenderbufferStorageOES encode");
4662
4663 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4664 IOStream *stream = ctx->m_stream;
4665 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4666 bool useChecksum = checksumCalculator->getVersion() > 0;
4667
4668 unsigned char *ptr;
4669 unsigned char *buf;
4670 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4671 const size_t checksumSize = checksumCalculator->checksumByteSize();
4672 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4673 buf = stream->alloc(totalSize);
4674 ptr = buf;
4675 int tmp = OP_glEGLImageTargetRenderbufferStorageOES;memcpy(ptr, &tmp, 4); ptr += 4;
4676 memcpy(ptr, &totalSize, 4); ptr += 4;
4677
4678 memcpy(ptr, &target, 4); ptr += 4;
4679 memcpy(ptr, &image, 4); ptr += 4;
4680
4681 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4682 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4683
4684 }
4685
glUnmapBufferOES_enc(void * self,GLenum target)4686 GLboolean glUnmapBufferOES_enc(void *self , GLenum target)
4687 {
4688 ENCODER_DEBUG_LOG("glUnmapBufferOES(target:0x%08x)", target);
4689 AEMU_SCOPED_TRACE("glUnmapBufferOES encode");
4690
4691 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4692 IOStream *stream = ctx->m_stream;
4693 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4694 bool useChecksum = checksumCalculator->getVersion() > 0;
4695
4696 unsigned char *ptr;
4697 unsigned char *buf;
4698 const size_t sizeWithoutChecksum = 8 + 4;
4699 const size_t checksumSize = checksumCalculator->checksumByteSize();
4700 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4701 buf = stream->alloc(totalSize);
4702 ptr = buf;
4703 int tmp = OP_glUnmapBufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
4704 memcpy(ptr, &totalSize, 4); ptr += 4;
4705
4706 memcpy(ptr, &target, 4); ptr += 4;
4707
4708 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4709 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4710
4711
4712 GLboolean retval;
4713 stream->readback(&retval, 1);
4714 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
4715 if (useChecksum) {
4716 unsigned char *checksumBufPtr = NULL;
4717 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
4718 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
4719 stream->readback(checksumBufPtr, checksumSize);
4720 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
4721 ALOGE("glUnmapBufferOES: GL communication error, please report this issue to b.android.com.\n");
4722 abort();
4723 }
4724 }
4725 return retval;
4726 }
4727
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)4728 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)
4729 {
4730 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);
4731 AEMU_SCOPED_TRACE("glTexImage3DOES encode");
4732
4733 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4734 IOStream *stream = ctx->m_stream;
4735 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4736 bool useChecksum = checksumCalculator->getVersion() > 0;
4737
4738 const unsigned int __size_pixels = ((pixels != NULL) ? glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
4739 unsigned char *ptr;
4740 unsigned char *buf;
4741 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
4742 const size_t checksumSize = checksumCalculator->checksumByteSize();
4743 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4744 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4745 ptr = buf;
4746 int tmp = OP_glTexImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4747 memcpy(ptr, &totalSize, 4); ptr += 4;
4748
4749 memcpy(ptr, &target, 4); ptr += 4;
4750 memcpy(ptr, &level, 4); ptr += 4;
4751 memcpy(ptr, &internalformat, 4); ptr += 4;
4752 memcpy(ptr, &width, 4); ptr += 4;
4753 memcpy(ptr, &height, 4); ptr += 4;
4754 memcpy(ptr, &depth, 4); ptr += 4;
4755 memcpy(ptr, &border, 4); ptr += 4;
4756 memcpy(ptr, &format, 4); ptr += 4;
4757 memcpy(ptr, &type, 4); ptr += 4;
4758
4759 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4760 stream->flush();
4761 stream->writeFully(&__size_pixels,4);
4762 if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
4763 if (pixels != NULL) {
4764 stream->writeFully(pixels, __size_pixels);
4765 if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
4766 }
4767 buf = stream->alloc(checksumSize);
4768 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4769
4770 }
4771
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)4772 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)
4773 {
4774 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);
4775 AEMU_SCOPED_TRACE("glTexSubImage3DOES encode");
4776
4777 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4778 IOStream *stream = ctx->m_stream;
4779 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4780 bool useChecksum = checksumCalculator->getVersion() > 0;
4781
4782 const unsigned int __size_pixels = ((pixels != NULL) ? glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
4783 unsigned char *ptr;
4784 unsigned char *buf;
4785 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
4786 const size_t checksumSize = checksumCalculator->checksumByteSize();
4787 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4788 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4789 ptr = buf;
4790 int tmp = OP_glTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4791 memcpy(ptr, &totalSize, 4); ptr += 4;
4792
4793 memcpy(ptr, &target, 4); ptr += 4;
4794 memcpy(ptr, &level, 4); ptr += 4;
4795 memcpy(ptr, &xoffset, 4); ptr += 4;
4796 memcpy(ptr, &yoffset, 4); ptr += 4;
4797 memcpy(ptr, &zoffset, 4); ptr += 4;
4798 memcpy(ptr, &width, 4); ptr += 4;
4799 memcpy(ptr, &height, 4); ptr += 4;
4800 memcpy(ptr, &depth, 4); ptr += 4;
4801 memcpy(ptr, &format, 4); ptr += 4;
4802 memcpy(ptr, &type, 4); ptr += 4;
4803
4804 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4805 stream->flush();
4806 stream->writeFully(&__size_pixels,4);
4807 if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
4808 if (pixels != NULL) {
4809 stream->writeFully(pixels, __size_pixels);
4810 if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
4811 }
4812 buf = stream->alloc(checksumSize);
4813 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4814
4815 }
4816
glCopyTexSubImage3DOES_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)4817 void glCopyTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
4818 {
4819 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);
4820 AEMU_SCOPED_TRACE("glCopyTexSubImage3DOES encode");
4821
4822 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4823 IOStream *stream = ctx->m_stream;
4824 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4825 bool useChecksum = checksumCalculator->getVersion() > 0;
4826
4827 unsigned char *ptr;
4828 unsigned char *buf;
4829 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
4830 const size_t checksumSize = checksumCalculator->checksumByteSize();
4831 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4832 buf = stream->alloc(totalSize);
4833 ptr = buf;
4834 int tmp = OP_glCopyTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4835 memcpy(ptr, &totalSize, 4); ptr += 4;
4836
4837 memcpy(ptr, &target, 4); ptr += 4;
4838 memcpy(ptr, &level, 4); ptr += 4;
4839 memcpy(ptr, &xoffset, 4); ptr += 4;
4840 memcpy(ptr, &yoffset, 4); ptr += 4;
4841 memcpy(ptr, &zoffset, 4); ptr += 4;
4842 memcpy(ptr, &x, 4); ptr += 4;
4843 memcpy(ptr, &y, 4); ptr += 4;
4844 memcpy(ptr, &width, 4); ptr += 4;
4845 memcpy(ptr, &height, 4); ptr += 4;
4846
4847 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4848 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4849
4850 }
4851
glCompressedTexImage3DOES_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)4852 void glCompressedTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
4853 {
4854 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);
4855 AEMU_SCOPED_TRACE("glCompressedTexImage3DOES encode");
4856
4857 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4858 IOStream *stream = ctx->m_stream;
4859 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4860 bool useChecksum = checksumCalculator->getVersion() > 0;
4861
4862 const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
4863 unsigned char *ptr;
4864 unsigned char *buf;
4865 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
4866 const size_t checksumSize = checksumCalculator->checksumByteSize();
4867 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4868 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4869 ptr = buf;
4870 int tmp = OP_glCompressedTexImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4871 memcpy(ptr, &totalSize, 4); ptr += 4;
4872
4873 memcpy(ptr, &target, 4); ptr += 4;
4874 memcpy(ptr, &level, 4); ptr += 4;
4875 memcpy(ptr, &internalformat, 4); ptr += 4;
4876 memcpy(ptr, &width, 4); ptr += 4;
4877 memcpy(ptr, &height, 4); ptr += 4;
4878 memcpy(ptr, &depth, 4); ptr += 4;
4879 memcpy(ptr, &border, 4); ptr += 4;
4880 memcpy(ptr, &imageSize, 4); ptr += 4;
4881
4882 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4883 stream->flush();
4884 stream->writeFully(&__size_data,4);
4885 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
4886 if (data != NULL) {
4887 stream->writeFully(data, __size_data);
4888 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
4889 }
4890 buf = stream->alloc(checksumSize);
4891 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4892
4893 }
4894
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)4895 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)
4896 {
4897 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);
4898 AEMU_SCOPED_TRACE("glCompressedTexSubImage3DOES encode");
4899
4900 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4901 IOStream *stream = ctx->m_stream;
4902 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4903 bool useChecksum = checksumCalculator->getVersion() > 0;
4904
4905 const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
4906 unsigned char *ptr;
4907 unsigned char *buf;
4908 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
4909 const size_t checksumSize = checksumCalculator->checksumByteSize();
4910 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4911 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4912 ptr = buf;
4913 int tmp = OP_glCompressedTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4914 memcpy(ptr, &totalSize, 4); ptr += 4;
4915
4916 memcpy(ptr, &target, 4); ptr += 4;
4917 memcpy(ptr, &level, 4); ptr += 4;
4918 memcpy(ptr, &xoffset, 4); ptr += 4;
4919 memcpy(ptr, &yoffset, 4); ptr += 4;
4920 memcpy(ptr, &zoffset, 4); ptr += 4;
4921 memcpy(ptr, &width, 4); ptr += 4;
4922 memcpy(ptr, &height, 4); ptr += 4;
4923 memcpy(ptr, &depth, 4); ptr += 4;
4924 memcpy(ptr, &format, 4); ptr += 4;
4925 memcpy(ptr, &imageSize, 4); ptr += 4;
4926
4927 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4928 stream->flush();
4929 stream->writeFully(&__size_data,4);
4930 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
4931 if (data != NULL) {
4932 stream->writeFully(data, __size_data);
4933 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
4934 }
4935 buf = stream->alloc(checksumSize);
4936 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4937
4938 }
4939
glFramebufferTexture3DOES_enc(void * self,GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level,GLint zoffset)4940 void glFramebufferTexture3DOES_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
4941 {
4942 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);
4943 AEMU_SCOPED_TRACE("glFramebufferTexture3DOES encode");
4944
4945 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4946 IOStream *stream = ctx->m_stream;
4947 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4948 bool useChecksum = checksumCalculator->getVersion() > 0;
4949
4950 unsigned char *ptr;
4951 unsigned char *buf;
4952 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
4953 const size_t checksumSize = checksumCalculator->checksumByteSize();
4954 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4955 buf = stream->alloc(totalSize);
4956 ptr = buf;
4957 int tmp = OP_glFramebufferTexture3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4958 memcpy(ptr, &totalSize, 4); ptr += 4;
4959
4960 memcpy(ptr, &target, 4); ptr += 4;
4961 memcpy(ptr, &attachment, 4); ptr += 4;
4962 memcpy(ptr, &textarget, 4); ptr += 4;
4963 memcpy(ptr, &texture, 4); ptr += 4;
4964 memcpy(ptr, &level, 4); ptr += 4;
4965 memcpy(ptr, &zoffset, 4); ptr += 4;
4966
4967 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4968 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4969
4970 }
4971
glBindVertexArrayOES_enc(void * self,GLuint array)4972 void glBindVertexArrayOES_enc(void *self , GLuint array)
4973 {
4974 ENCODER_DEBUG_LOG("glBindVertexArrayOES(array:%u)", array);
4975 AEMU_SCOPED_TRACE("glBindVertexArrayOES encode");
4976
4977 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4978 IOStream *stream = ctx->m_stream;
4979 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4980 bool useChecksum = checksumCalculator->getVersion() > 0;
4981
4982 unsigned char *ptr;
4983 unsigned char *buf;
4984 const size_t sizeWithoutChecksum = 8 + 4;
4985 const size_t checksumSize = checksumCalculator->checksumByteSize();
4986 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4987 buf = stream->alloc(totalSize);
4988 ptr = buf;
4989 int tmp = OP_glBindVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
4990 memcpy(ptr, &totalSize, 4); ptr += 4;
4991
4992 memcpy(ptr, &array, 4); ptr += 4;
4993
4994 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4995 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4996
4997 }
4998
glDeleteVertexArraysOES_enc(void * self,GLsizei n,const GLuint * arrays)4999 void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays)
5000 {
5001 ENCODER_DEBUG_LOG("glDeleteVertexArraysOES(n:%d, arrays:0x%08x)", n, arrays);
5002 AEMU_SCOPED_TRACE("glDeleteVertexArraysOES encode");
5003
5004 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5005 IOStream *stream = ctx->m_stream;
5006 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5007 bool useChecksum = checksumCalculator->getVersion() > 0;
5008
5009 const unsigned int __size_arrays = (n * sizeof(GLuint));
5010 unsigned char *ptr;
5011 unsigned char *buf;
5012 const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
5013 const size_t checksumSize = checksumCalculator->checksumByteSize();
5014 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5015 buf = stream->alloc(totalSize);
5016 ptr = buf;
5017 int tmp = OP_glDeleteVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
5018 memcpy(ptr, &totalSize, 4); ptr += 4;
5019
5020 memcpy(ptr, &n, 4); ptr += 4;
5021 memcpy(ptr, &__size_arrays, 4); ptr += 4;
5022 memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
5023
5024 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5025 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5026
5027 }
5028
glGenVertexArraysOES_enc(void * self,GLsizei n,GLuint * arrays)5029 void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays)
5030 {
5031 ENCODER_DEBUG_LOG("glGenVertexArraysOES(n:%d, arrays:0x%08x)", n, arrays);
5032 AEMU_SCOPED_TRACE("glGenVertexArraysOES encode");
5033
5034 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5035 IOStream *stream = ctx->m_stream;
5036 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5037 bool useChecksum = checksumCalculator->getVersion() > 0;
5038
5039 const unsigned int __size_arrays = (n * sizeof(GLuint));
5040 unsigned char *ptr;
5041 unsigned char *buf;
5042 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5043 const size_t checksumSize = checksumCalculator->checksumByteSize();
5044 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5045 buf = stream->alloc(totalSize);
5046 ptr = buf;
5047 int tmp = OP_glGenVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
5048 memcpy(ptr, &totalSize, 4); ptr += 4;
5049
5050 memcpy(ptr, &n, 4); ptr += 4;
5051 memcpy(ptr, &__size_arrays, 4); ptr += 4;
5052
5053 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5054 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5055
5056 stream->readback(arrays, __size_arrays);
5057 if (useChecksum) checksumCalculator->addBuffer(arrays, __size_arrays);
5058 if (useChecksum) {
5059 unsigned char *checksumBufPtr = NULL;
5060 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5061 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5062 stream->readback(checksumBufPtr, checksumSize);
5063 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5064 ALOGE("glGenVertexArraysOES: GL communication error, please report this issue to b.android.com.\n");
5065 abort();
5066 }
5067 }
5068 }
5069
glIsVertexArrayOES_enc(void * self,GLuint array)5070 GLboolean glIsVertexArrayOES_enc(void *self , GLuint array)
5071 {
5072 ENCODER_DEBUG_LOG("glIsVertexArrayOES(array:%u)", array);
5073 AEMU_SCOPED_TRACE("glIsVertexArrayOES encode");
5074
5075 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5076 IOStream *stream = ctx->m_stream;
5077 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5078 bool useChecksum = checksumCalculator->getVersion() > 0;
5079
5080 unsigned char *ptr;
5081 unsigned char *buf;
5082 const size_t sizeWithoutChecksum = 8 + 4;
5083 const size_t checksumSize = checksumCalculator->checksumByteSize();
5084 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5085 buf = stream->alloc(totalSize);
5086 ptr = buf;
5087 int tmp = OP_glIsVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
5088 memcpy(ptr, &totalSize, 4); ptr += 4;
5089
5090 memcpy(ptr, &array, 4); ptr += 4;
5091
5092 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5093 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5094
5095
5096 GLboolean retval;
5097 stream->readback(&retval, 1);
5098 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
5099 if (useChecksum) {
5100 unsigned char *checksumBufPtr = NULL;
5101 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5102 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5103 stream->readback(checksumBufPtr, checksumSize);
5104 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5105 ALOGE("glIsVertexArrayOES: GL communication error, please report this issue to b.android.com.\n");
5106 abort();
5107 }
5108 }
5109 return retval;
5110 }
5111
glDiscardFramebufferEXT_enc(void * self,GLenum target,GLsizei numAttachments,const GLenum * attachments)5112 void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments)
5113 {
5114 ENCODER_DEBUG_LOG("glDiscardFramebufferEXT(target:0x%08x, numAttachments:%d, attachments:0x%08x)", target, numAttachments, attachments);
5115 AEMU_SCOPED_TRACE("glDiscardFramebufferEXT encode");
5116
5117 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5118 IOStream *stream = ctx->m_stream;
5119 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5120 bool useChecksum = checksumCalculator->getVersion() > 0;
5121
5122 const unsigned int __size_attachments = (numAttachments * sizeof(GLenum));
5123 unsigned char *ptr;
5124 unsigned char *buf;
5125 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 1*4;
5126 const size_t checksumSize = checksumCalculator->checksumByteSize();
5127 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5128 buf = stream->alloc(totalSize);
5129 ptr = buf;
5130 int tmp = OP_glDiscardFramebufferEXT;memcpy(ptr, &tmp, 4); ptr += 4;
5131 memcpy(ptr, &totalSize, 4); ptr += 4;
5132
5133 memcpy(ptr, &target, 4); ptr += 4;
5134 memcpy(ptr, &numAttachments, 4); ptr += 4;
5135 memcpy(ptr, &__size_attachments, 4); ptr += 4;
5136 memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
5137
5138 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5139 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5140
5141 }
5142
glVertexAttribPointerData_enc(void * self,GLuint indx,GLint size,GLenum type,GLboolean normalized,GLsizei stride,void * data,GLuint datalen)5143 void glVertexAttribPointerData_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void* data, GLuint datalen)
5144 {
5145 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);
5146 AEMU_SCOPED_TRACE("glVertexAttribPointerData encode");
5147
5148 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5149 IOStream *stream = ctx->m_stream;
5150 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5151 bool useChecksum = checksumCalculator->getVersion() > 0;
5152
5153 const unsigned int __size_data = datalen;
5154 unsigned char *ptr;
5155 unsigned char *buf;
5156 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + __size_data + 4 + 1*4;
5157 const size_t checksumSize = checksumCalculator->checksumByteSize();
5158 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5159 buf = stream->alloc(totalSize);
5160 ptr = buf;
5161 int tmp = OP_glVertexAttribPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
5162 memcpy(ptr, &totalSize, 4); ptr += 4;
5163
5164 memcpy(ptr, &indx, 4); ptr += 4;
5165 memcpy(ptr, &size, 4); ptr += 4;
5166 memcpy(ptr, &type, 4); ptr += 4;
5167 memcpy(ptr, &normalized, 1); ptr += 1;
5168 memcpy(ptr, &stride, 4); ptr += 4;
5169 memcpy(ptr, &__size_data, 4); ptr += 4;
5170 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
5171 memcpy(ptr, &datalen, 4); ptr += 4;
5172
5173 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5174 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5175
5176 }
5177
glVertexAttribPointerOffset_enc(void * self,GLuint indx,GLint size,GLenum type,GLboolean normalized,GLsizei stride,GLuint offset)5178 void glVertexAttribPointerOffset_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint offset)
5179 {
5180 ENCODER_DEBUG_LOG("glVertexAttribPointerOffset(indx:%u, size:%d, type:0x%08x, normalized:%d, stride:%d, offset:%u)", indx, size, type, normalized, stride, offset);
5181 AEMU_SCOPED_TRACE("glVertexAttribPointerOffset encode");
5182
5183 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5184 IOStream *stream = ctx->m_stream;
5185 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5186 bool useChecksum = checksumCalculator->getVersion() > 0;
5187
5188 unsigned char *ptr;
5189 unsigned char *buf;
5190 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + 4;
5191 const size_t checksumSize = checksumCalculator->checksumByteSize();
5192 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5193 buf = stream->alloc(totalSize);
5194 ptr = buf;
5195 int tmp = OP_glVertexAttribPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
5196 memcpy(ptr, &totalSize, 4); ptr += 4;
5197
5198 memcpy(ptr, &indx, 4); ptr += 4;
5199 memcpy(ptr, &size, 4); ptr += 4;
5200 memcpy(ptr, &type, 4); ptr += 4;
5201 memcpy(ptr, &normalized, 1); ptr += 1;
5202 memcpy(ptr, &stride, 4); ptr += 4;
5203 memcpy(ptr, &offset, 4); ptr += 4;
5204
5205 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5206 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5207
5208 }
5209
glDrawElementsOffset_enc(void * self,GLenum mode,GLsizei count,GLenum type,GLuint offset)5210 void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset)
5211 {
5212 ENCODER_DEBUG_LOG("glDrawElementsOffset(mode:0x%08x, count:%d, type:0x%08x, offset:%u)", mode, count, type, offset);
5213 AEMU_SCOPED_TRACE("glDrawElementsOffset encode");
5214
5215 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5216 IOStream *stream = ctx->m_stream;
5217 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5218 bool useChecksum = checksumCalculator->getVersion() > 0;
5219
5220 unsigned char *ptr;
5221 unsigned char *buf;
5222 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
5223 const size_t checksumSize = checksumCalculator->checksumByteSize();
5224 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5225 buf = stream->alloc(totalSize);
5226 ptr = buf;
5227 int tmp = OP_glDrawElementsOffset;memcpy(ptr, &tmp, 4); ptr += 4;
5228 memcpy(ptr, &totalSize, 4); ptr += 4;
5229
5230 memcpy(ptr, &mode, 4); ptr += 4;
5231 memcpy(ptr, &count, 4); ptr += 4;
5232 memcpy(ptr, &type, 4); ptr += 4;
5233 memcpy(ptr, &offset, 4); ptr += 4;
5234
5235 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5236 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5237
5238 }
5239
glDrawElementsData_enc(void * self,GLenum mode,GLsizei count,GLenum type,void * data,GLuint datalen)5240 void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
5241 {
5242 ENCODER_DEBUG_LOG("glDrawElementsData(mode:0x%08x, count:%d, type:0x%08x, data:0x%08x, datalen:%u)", mode, count, type, data, datalen);
5243 AEMU_SCOPED_TRACE("glDrawElementsData encode");
5244
5245 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5246 IOStream *stream = ctx->m_stream;
5247 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5248 bool useChecksum = checksumCalculator->getVersion() > 0;
5249
5250 const unsigned int __size_data = datalen;
5251 unsigned char *ptr;
5252 unsigned char *buf;
5253 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
5254 const size_t checksumSize = checksumCalculator->checksumByteSize();
5255 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5256 buf = stream->alloc(totalSize);
5257 ptr = buf;
5258 int tmp = OP_glDrawElementsData;memcpy(ptr, &tmp, 4); ptr += 4;
5259 memcpy(ptr, &totalSize, 4); ptr += 4;
5260
5261 memcpy(ptr, &mode, 4); ptr += 4;
5262 memcpy(ptr, &count, 4); ptr += 4;
5263 memcpy(ptr, &type, 4); ptr += 4;
5264 memcpy(ptr, &__size_data, 4); ptr += 4;
5265 memcpy(ptr, data, __size_data);ptr += __size_data;
5266 memcpy(ptr, &datalen, 4); ptr += 4;
5267
5268 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5269 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5270
5271 }
5272
glGetCompressedTextureFormats_enc(void * self,int count,GLint * formats)5273 void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats)
5274 {
5275 ENCODER_DEBUG_LOG("glGetCompressedTextureFormats(count:%d, formats:0x%08x)", count, formats);
5276 AEMU_SCOPED_TRACE("glGetCompressedTextureFormats encode");
5277
5278 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5279 IOStream *stream = ctx->m_stream;
5280 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5281 bool useChecksum = checksumCalculator->getVersion() > 0;
5282
5283 const unsigned int __size_formats = (count * sizeof(GLint));
5284 unsigned char *ptr;
5285 unsigned char *buf;
5286 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5287 const size_t checksumSize = checksumCalculator->checksumByteSize();
5288 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5289 buf = stream->alloc(totalSize);
5290 ptr = buf;
5291 int tmp = OP_glGetCompressedTextureFormats;memcpy(ptr, &tmp, 4); ptr += 4;
5292 memcpy(ptr, &totalSize, 4); ptr += 4;
5293
5294 memcpy(ptr, &count, 4); ptr += 4;
5295 memcpy(ptr, &__size_formats, 4); ptr += 4;
5296
5297 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5298 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5299
5300 stream->readback(formats, __size_formats);
5301 if (useChecksum) checksumCalculator->addBuffer(formats, __size_formats);
5302 if (useChecksum) {
5303 unsigned char *checksumBufPtr = NULL;
5304 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5305 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5306 stream->readback(checksumBufPtr, checksumSize);
5307 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5308 ALOGE("glGetCompressedTextureFormats: GL communication error, please report this issue to b.android.com.\n");
5309 abort();
5310 }
5311 }
5312 }
5313
glShaderString_enc(void * self,GLuint shader,const GLchar * string,GLsizei len)5314 void glShaderString_enc(void *self , GLuint shader, const GLchar* string, GLsizei len)
5315 {
5316 ENCODER_DEBUG_LOG("glShaderString(shader:%u, string:0x%08x, len:%d)", shader, string, len);
5317 AEMU_SCOPED_TRACE("glShaderString encode");
5318
5319 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5320 IOStream *stream = ctx->m_stream;
5321 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5322 bool useChecksum = checksumCalculator->getVersion() > 0;
5323
5324 const unsigned int __size_string = len;
5325 unsigned char *ptr;
5326 unsigned char *buf;
5327 const size_t sizeWithoutChecksum = 8 + 4 + __size_string + 4 + 1*4;
5328 const size_t checksumSize = checksumCalculator->checksumByteSize();
5329 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5330 buf = stream->alloc(totalSize);
5331 ptr = buf;
5332 int tmp = OP_glShaderString;memcpy(ptr, &tmp, 4); ptr += 4;
5333 memcpy(ptr, &totalSize, 4); ptr += 4;
5334
5335 memcpy(ptr, &shader, 4); ptr += 4;
5336 memcpy(ptr, &__size_string, 4); ptr += 4;
5337 memcpy(ptr, string, __size_string);ptr += __size_string;
5338 memcpy(ptr, &len, 4); ptr += 4;
5339
5340 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5341 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5342
5343 }
5344
glFinishRoundTrip_enc(void * self)5345 int glFinishRoundTrip_enc(void *self )
5346 {
5347 ENCODER_DEBUG_LOG("glFinishRoundTrip()");
5348 AEMU_SCOPED_TRACE("glFinishRoundTrip encode");
5349
5350 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5351 IOStream *stream = ctx->m_stream;
5352 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5353 bool useChecksum = checksumCalculator->getVersion() > 0;
5354
5355 unsigned char *ptr;
5356 unsigned char *buf;
5357 const size_t sizeWithoutChecksum = 8;
5358 const size_t checksumSize = checksumCalculator->checksumByteSize();
5359 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5360 buf = stream->alloc(totalSize);
5361 ptr = buf;
5362 int tmp = OP_glFinishRoundTrip;memcpy(ptr, &tmp, 4); ptr += 4;
5363 memcpy(ptr, &totalSize, 4); ptr += 4;
5364
5365
5366 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5367 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5368
5369
5370 int retval;
5371 stream->readback(&retval, 4);
5372 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
5373 if (useChecksum) {
5374 unsigned char *checksumBufPtr = NULL;
5375 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5376 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5377 stream->readback(checksumBufPtr, checksumSize);
5378 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5379 ALOGE("glFinishRoundTrip: GL communication error, please report this issue to b.android.com.\n");
5380 abort();
5381 }
5382 }
5383 return retval;
5384 }
5385
glGenVertexArrays_enc(void * self,GLsizei n,GLuint * arrays)5386 void glGenVertexArrays_enc(void *self , GLsizei n, GLuint* arrays)
5387 {
5388 ENCODER_DEBUG_LOG("glGenVertexArrays(n:%d, arrays:0x%08x)", n, arrays);
5389 AEMU_SCOPED_TRACE("glGenVertexArrays encode");
5390
5391 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5392 IOStream *stream = ctx->m_stream;
5393 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5394 bool useChecksum = checksumCalculator->getVersion() > 0;
5395
5396 const unsigned int __size_arrays = (n * sizeof(GLuint));
5397 unsigned char *ptr;
5398 unsigned char *buf;
5399 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5400 const size_t checksumSize = checksumCalculator->checksumByteSize();
5401 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5402 buf = stream->alloc(totalSize);
5403 ptr = buf;
5404 int tmp = OP_glGenVertexArrays;memcpy(ptr, &tmp, 4); ptr += 4;
5405 memcpy(ptr, &totalSize, 4); ptr += 4;
5406
5407 memcpy(ptr, &n, 4); ptr += 4;
5408 memcpy(ptr, &__size_arrays, 4); ptr += 4;
5409
5410 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5411 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5412
5413 stream->readback(arrays, __size_arrays);
5414 if (useChecksum) checksumCalculator->addBuffer(arrays, __size_arrays);
5415 if (useChecksum) {
5416 unsigned char *checksumBufPtr = NULL;
5417 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5418 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5419 stream->readback(checksumBufPtr, checksumSize);
5420 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5421 ALOGE("glGenVertexArrays: GL communication error, please report this issue to b.android.com.\n");
5422 abort();
5423 }
5424 }
5425 }
5426
glBindVertexArray_enc(void * self,GLuint array)5427 void glBindVertexArray_enc(void *self , GLuint array)
5428 {
5429 ENCODER_DEBUG_LOG("glBindVertexArray(array:%u)", array);
5430 AEMU_SCOPED_TRACE("glBindVertexArray encode");
5431
5432 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5433 IOStream *stream = ctx->m_stream;
5434 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5435 bool useChecksum = checksumCalculator->getVersion() > 0;
5436
5437 unsigned char *ptr;
5438 unsigned char *buf;
5439 const size_t sizeWithoutChecksum = 8 + 4;
5440 const size_t checksumSize = checksumCalculator->checksumByteSize();
5441 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5442 buf = stream->alloc(totalSize);
5443 ptr = buf;
5444 int tmp = OP_glBindVertexArray;memcpy(ptr, &tmp, 4); ptr += 4;
5445 memcpy(ptr, &totalSize, 4); ptr += 4;
5446
5447 memcpy(ptr, &array, 4); ptr += 4;
5448
5449 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5450 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5451
5452 }
5453
glDeleteVertexArrays_enc(void * self,GLsizei n,const GLuint * arrays)5454 void glDeleteVertexArrays_enc(void *self , GLsizei n, const GLuint* arrays)
5455 {
5456 ENCODER_DEBUG_LOG("glDeleteVertexArrays(n:%d, arrays:0x%08x)", n, arrays);
5457 AEMU_SCOPED_TRACE("glDeleteVertexArrays encode");
5458
5459 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5460 IOStream *stream = ctx->m_stream;
5461 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5462 bool useChecksum = checksumCalculator->getVersion() > 0;
5463
5464 const unsigned int __size_arrays = (n * sizeof(GLuint));
5465 unsigned char *ptr;
5466 unsigned char *buf;
5467 const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
5468 const size_t checksumSize = checksumCalculator->checksumByteSize();
5469 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5470 buf = stream->alloc(totalSize);
5471 ptr = buf;
5472 int tmp = OP_glDeleteVertexArrays;memcpy(ptr, &tmp, 4); ptr += 4;
5473 memcpy(ptr, &totalSize, 4); ptr += 4;
5474
5475 memcpy(ptr, &n, 4); ptr += 4;
5476 memcpy(ptr, &__size_arrays, 4); ptr += 4;
5477 memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
5478
5479 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5480 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5481
5482 }
5483
glIsVertexArray_enc(void * self,GLuint array)5484 GLboolean glIsVertexArray_enc(void *self , GLuint array)
5485 {
5486 ENCODER_DEBUG_LOG("glIsVertexArray(array:%u)", array);
5487 AEMU_SCOPED_TRACE("glIsVertexArray encode");
5488
5489 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5490 IOStream *stream = ctx->m_stream;
5491 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5492 bool useChecksum = checksumCalculator->getVersion() > 0;
5493
5494 unsigned char *ptr;
5495 unsigned char *buf;
5496 const size_t sizeWithoutChecksum = 8 + 4;
5497 const size_t checksumSize = checksumCalculator->checksumByteSize();
5498 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5499 buf = stream->alloc(totalSize);
5500 ptr = buf;
5501 int tmp = OP_glIsVertexArray;memcpy(ptr, &tmp, 4); ptr += 4;
5502 memcpy(ptr, &totalSize, 4); ptr += 4;
5503
5504 memcpy(ptr, &array, 4); ptr += 4;
5505
5506 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5507 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5508
5509
5510 GLboolean retval;
5511 stream->readback(&retval, 1);
5512 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
5513 if (useChecksum) {
5514 unsigned char *checksumBufPtr = NULL;
5515 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5516 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5517 stream->readback(checksumBufPtr, checksumSize);
5518 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5519 ALOGE("glIsVertexArray: GL communication error, please report this issue to b.android.com.\n");
5520 abort();
5521 }
5522 }
5523 return retval;
5524 }
5525
glMapBufferRangeAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * mapped)5526 void glMapBufferRangeAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* mapped)
5527 {
5528 ENCODER_DEBUG_LOG("glMapBufferRangeAEMU(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, mapped:0x%08x)", target, offset, length, access, mapped);
5529 AEMU_SCOPED_TRACE("glMapBufferRangeAEMU encode");
5530
5531 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5532 IOStream *stream = ctx->m_stream;
5533 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5534 bool useChecksum = checksumCalculator->getVersion() > 0;
5535
5536 const unsigned int __size_mapped = ((mapped != NULL) ? length : 0);
5537 unsigned char *ptr;
5538 unsigned char *buf;
5539 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 1*4;
5540 const size_t checksumSize = checksumCalculator->checksumByteSize();
5541 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5542 buf = stream->alloc(totalSize);
5543 ptr = buf;
5544 int tmp = OP_glMapBufferRangeAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5545 memcpy(ptr, &totalSize, 4); ptr += 4;
5546
5547 memcpy(ptr, &target, 4); ptr += 4;
5548 memcpy(ptr, &offset, 4); ptr += 4;
5549 memcpy(ptr, &length, 4); ptr += 4;
5550 memcpy(ptr, &access, 4); ptr += 4;
5551 memcpy(ptr, &__size_mapped, 4); ptr += 4;
5552
5553 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5554 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5555
5556 if (mapped != NULL) {
5557 stream->readback(mapped, __size_mapped);
5558 if (useChecksum) checksumCalculator->addBuffer(mapped, __size_mapped);
5559 }
5560 if (useChecksum) {
5561 unsigned char *checksumBufPtr = NULL;
5562 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5563 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5564 stream->readback(checksumBufPtr, checksumSize);
5565 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5566 ALOGE("glMapBufferRangeAEMU: GL communication error, please report this issue to b.android.com.\n");
5567 abort();
5568 }
5569 }
5570 }
5571
glUnmapBufferAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer,GLboolean * out_res)5572 void glUnmapBufferAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer, GLboolean* out_res)
5573 {
5574 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);
5575 AEMU_SCOPED_TRACE("glUnmapBufferAEMU encode");
5576
5577 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5578 IOStream *stream = ctx->m_stream;
5579 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5580 bool useChecksum = checksumCalculator->getVersion() > 0;
5581
5582 const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ? length : 0);
5583 const unsigned int __size_out_res = (sizeof(GLboolean));
5584 unsigned char *ptr;
5585 unsigned char *buf;
5586 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + 0 + 2*4;
5587 const size_t checksumSize = checksumCalculator->checksumByteSize();
5588 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5589 buf = stream->alloc(totalSize);
5590 ptr = buf;
5591 int tmp = OP_glUnmapBufferAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5592 memcpy(ptr, &totalSize, 4); ptr += 4;
5593
5594 memcpy(ptr, &target, 4); ptr += 4;
5595 memcpy(ptr, &offset, 4); ptr += 4;
5596 memcpy(ptr, &length, 4); ptr += 4;
5597 memcpy(ptr, &access, 4); ptr += 4;
5598 memcpy(ptr, &__size_guest_buffer, 4); ptr += 4;
5599 if (guest_buffer != NULL) memcpy(ptr, guest_buffer, __size_guest_buffer);ptr += __size_guest_buffer;
5600 memcpy(ptr, &__size_out_res, 4); ptr += 4;
5601
5602 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5603 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5604
5605 stream->readback(out_res, __size_out_res);
5606 if (useChecksum) checksumCalculator->addBuffer(out_res, __size_out_res);
5607 if (useChecksum) {
5608 unsigned char *checksumBufPtr = NULL;
5609 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5610 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5611 stream->readback(checksumBufPtr, checksumSize);
5612 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5613 ALOGE("glUnmapBufferAEMU: GL communication error, please report this issue to b.android.com.\n");
5614 abort();
5615 }
5616 }
5617 }
5618
glFlushMappedBufferRangeAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer)5619 void glFlushMappedBufferRangeAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer)
5620 {
5621 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);
5622 AEMU_SCOPED_TRACE("glFlushMappedBufferRangeAEMU encode");
5623
5624 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5625 IOStream *stream = ctx->m_stream;
5626 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5627 bool useChecksum = checksumCalculator->getVersion() > 0;
5628
5629 const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ? length : 0);
5630 unsigned char *ptr;
5631 unsigned char *buf;
5632 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + 1*4;
5633 const size_t checksumSize = checksumCalculator->checksumByteSize();
5634 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5635 buf = stream->alloc(totalSize);
5636 ptr = buf;
5637 int tmp = OP_glFlushMappedBufferRangeAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5638 memcpy(ptr, &totalSize, 4); ptr += 4;
5639
5640 memcpy(ptr, &target, 4); ptr += 4;
5641 memcpy(ptr, &offset, 4); ptr += 4;
5642 memcpy(ptr, &length, 4); ptr += 4;
5643 memcpy(ptr, &access, 4); ptr += 4;
5644 memcpy(ptr, &__size_guest_buffer, 4); ptr += 4;
5645 if (guest_buffer != NULL) memcpy(ptr, guest_buffer, __size_guest_buffer);ptr += __size_guest_buffer;
5646
5647 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5648 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5649
5650 }
5651
glReadPixelsOffsetAEMU_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLuint offset)5652 void glReadPixelsOffsetAEMU_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLuint offset)
5653 {
5654 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);
5655 AEMU_SCOPED_TRACE("glReadPixelsOffsetAEMU encode");
5656
5657 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5658 IOStream *stream = ctx->m_stream;
5659 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5660 bool useChecksum = checksumCalculator->getVersion() > 0;
5661
5662 unsigned char *ptr;
5663 unsigned char *buf;
5664 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5665 const size_t checksumSize = checksumCalculator->checksumByteSize();
5666 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5667 buf = stream->alloc(totalSize);
5668 ptr = buf;
5669 int tmp = OP_glReadPixelsOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5670 memcpy(ptr, &totalSize, 4); ptr += 4;
5671
5672 memcpy(ptr, &x, 4); ptr += 4;
5673 memcpy(ptr, &y, 4); ptr += 4;
5674 memcpy(ptr, &width, 4); ptr += 4;
5675 memcpy(ptr, &height, 4); ptr += 4;
5676 memcpy(ptr, &format, 4); ptr += 4;
5677 memcpy(ptr, &type, 4); ptr += 4;
5678 memcpy(ptr, &offset, 4); ptr += 4;
5679
5680 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5681 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5682
5683 }
5684
glCompressedTexImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,GLuint offset)5685 void glCompressedTexImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, GLuint offset)
5686 {
5687 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);
5688 AEMU_SCOPED_TRACE("glCompressedTexImage2DOffsetAEMU encode");
5689
5690 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5691 IOStream *stream = ctx->m_stream;
5692 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5693 bool useChecksum = checksumCalculator->getVersion() > 0;
5694
5695 unsigned char *ptr;
5696 unsigned char *buf;
5697 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5698 const size_t checksumSize = checksumCalculator->checksumByteSize();
5699 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5700 buf = stream->alloc(totalSize);
5701 ptr = buf;
5702 int tmp = OP_glCompressedTexImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5703 memcpy(ptr, &totalSize, 4); ptr += 4;
5704
5705 memcpy(ptr, &target, 4); ptr += 4;
5706 memcpy(ptr, &level, 4); ptr += 4;
5707 memcpy(ptr, &internalformat, 4); ptr += 4;
5708 memcpy(ptr, &width, 4); ptr += 4;
5709 memcpy(ptr, &height, 4); ptr += 4;
5710 memcpy(ptr, &border, 4); ptr += 4;
5711 memcpy(ptr, &imageSize, 4); ptr += 4;
5712 memcpy(ptr, &offset, 4); ptr += 4;
5713
5714 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5715 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5716
5717 }
5718
glCompressedTexSubImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,GLuint offset)5719 void glCompressedTexSubImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLuint offset)
5720 {
5721 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);
5722 AEMU_SCOPED_TRACE("glCompressedTexSubImage2DOffsetAEMU encode");
5723
5724 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5725 IOStream *stream = ctx->m_stream;
5726 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5727 bool useChecksum = checksumCalculator->getVersion() > 0;
5728
5729 unsigned char *ptr;
5730 unsigned char *buf;
5731 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5732 const size_t checksumSize = checksumCalculator->checksumByteSize();
5733 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5734 buf = stream->alloc(totalSize);
5735 ptr = buf;
5736 int tmp = OP_glCompressedTexSubImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5737 memcpy(ptr, &totalSize, 4); ptr += 4;
5738
5739 memcpy(ptr, &target, 4); ptr += 4;
5740 memcpy(ptr, &level, 4); ptr += 4;
5741 memcpy(ptr, &xoffset, 4); ptr += 4;
5742 memcpy(ptr, &yoffset, 4); ptr += 4;
5743 memcpy(ptr, &width, 4); ptr += 4;
5744 memcpy(ptr, &height, 4); ptr += 4;
5745 memcpy(ptr, &format, 4); ptr += 4;
5746 memcpy(ptr, &imageSize, 4); ptr += 4;
5747 memcpy(ptr, &offset, 4); ptr += 4;
5748
5749 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5750 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5751
5752 }
5753
glTexImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,GLuint offset)5754 void glTexImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLuint offset)
5755 {
5756 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);
5757 AEMU_SCOPED_TRACE("glTexImage2DOffsetAEMU encode");
5758
5759 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5760 IOStream *stream = ctx->m_stream;
5761 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5762 bool useChecksum = checksumCalculator->getVersion() > 0;
5763
5764 unsigned char *ptr;
5765 unsigned char *buf;
5766 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5767 const size_t checksumSize = checksumCalculator->checksumByteSize();
5768 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5769 buf = stream->alloc(totalSize);
5770 ptr = buf;
5771 int tmp = OP_glTexImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5772 memcpy(ptr, &totalSize, 4); ptr += 4;
5773
5774 memcpy(ptr, &target, 4); ptr += 4;
5775 memcpy(ptr, &level, 4); ptr += 4;
5776 memcpy(ptr, &internalformat, 4); ptr += 4;
5777 memcpy(ptr, &width, 4); ptr += 4;
5778 memcpy(ptr, &height, 4); ptr += 4;
5779 memcpy(ptr, &border, 4); ptr += 4;
5780 memcpy(ptr, &format, 4); ptr += 4;
5781 memcpy(ptr, &type, 4); ptr += 4;
5782 memcpy(ptr, &offset, 4); ptr += 4;
5783
5784 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5785 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5786
5787 }
5788
glTexSubImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,GLuint offset)5789 void glTexSubImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLuint offset)
5790 {
5791 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);
5792 AEMU_SCOPED_TRACE("glTexSubImage2DOffsetAEMU encode");
5793
5794 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5795 IOStream *stream = ctx->m_stream;
5796 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5797 bool useChecksum = checksumCalculator->getVersion() > 0;
5798
5799 unsigned char *ptr;
5800 unsigned char *buf;
5801 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5802 const size_t checksumSize = checksumCalculator->checksumByteSize();
5803 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5804 buf = stream->alloc(totalSize);
5805 ptr = buf;
5806 int tmp = OP_glTexSubImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5807 memcpy(ptr, &totalSize, 4); ptr += 4;
5808
5809 memcpy(ptr, &target, 4); ptr += 4;
5810 memcpy(ptr, &level, 4); ptr += 4;
5811 memcpy(ptr, &xoffset, 4); ptr += 4;
5812 memcpy(ptr, &yoffset, 4); ptr += 4;
5813 memcpy(ptr, &width, 4); ptr += 4;
5814 memcpy(ptr, &height, 4); ptr += 4;
5815 memcpy(ptr, &format, 4); ptr += 4;
5816 memcpy(ptr, &type, 4); ptr += 4;
5817 memcpy(ptr, &offset, 4); ptr += 4;
5818
5819 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5820 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5821
5822 }
5823
glBindBufferRange_enc(void * self,GLenum target,GLuint index,GLuint buffer,GLintptr offset,GLsizeiptr size)5824 void glBindBufferRange_enc(void *self , GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
5825 {
5826 ENCODER_DEBUG_LOG("glBindBufferRange(target:0x%08x, index:%u, buffer:%u, offset:0x%08lx, size:0x%08lx)", target, index, buffer, offset, size);
5827 AEMU_SCOPED_TRACE("glBindBufferRange encode");
5828
5829 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5830 IOStream *stream = ctx->m_stream;
5831 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5832 bool useChecksum = checksumCalculator->getVersion() > 0;
5833
5834 unsigned char *ptr;
5835 unsigned char *buf;
5836 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
5837 const size_t checksumSize = checksumCalculator->checksumByteSize();
5838 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5839 buf = stream->alloc(totalSize);
5840 ptr = buf;
5841 int tmp = OP_glBindBufferRange;memcpy(ptr, &tmp, 4); ptr += 4;
5842 memcpy(ptr, &totalSize, 4); ptr += 4;
5843
5844 memcpy(ptr, &target, 4); ptr += 4;
5845 memcpy(ptr, &index, 4); ptr += 4;
5846 memcpy(ptr, &buffer, 4); ptr += 4;
5847 memcpy(ptr, &offset, 4); ptr += 4;
5848 memcpy(ptr, &size, 4); ptr += 4;
5849
5850 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5851 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5852
5853 }
5854
glBindBufferBase_enc(void * self,GLenum target,GLuint index,GLuint buffer)5855 void glBindBufferBase_enc(void *self , GLenum target, GLuint index, GLuint buffer)
5856 {
5857 ENCODER_DEBUG_LOG("glBindBufferBase(target:0x%08x, index:%u, buffer:%u)", target, index, buffer);
5858 AEMU_SCOPED_TRACE("glBindBufferBase encode");
5859
5860 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5861 IOStream *stream = ctx->m_stream;
5862 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5863 bool useChecksum = checksumCalculator->getVersion() > 0;
5864
5865 unsigned char *ptr;
5866 unsigned char *buf;
5867 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
5868 const size_t checksumSize = checksumCalculator->checksumByteSize();
5869 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5870 buf = stream->alloc(totalSize);
5871 ptr = buf;
5872 int tmp = OP_glBindBufferBase;memcpy(ptr, &tmp, 4); ptr += 4;
5873 memcpy(ptr, &totalSize, 4); ptr += 4;
5874
5875 memcpy(ptr, &target, 4); ptr += 4;
5876 memcpy(ptr, &index, 4); ptr += 4;
5877 memcpy(ptr, &buffer, 4); ptr += 4;
5878
5879 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5880 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5881
5882 }
5883
glCopyBufferSubData_enc(void * self,GLenum readtarget,GLenum writetarget,GLintptr readoffset,GLintptr writeoffset,GLsizeiptr size)5884 void glCopyBufferSubData_enc(void *self , GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size)
5885 {
5886 ENCODER_DEBUG_LOG("glCopyBufferSubData(readtarget:0x%08x, writetarget:0x%08x, readoffset:0x%08lx, writeoffset:0x%08lx, size:0x%08lx)", readtarget, writetarget, readoffset, writeoffset, size);
5887 AEMU_SCOPED_TRACE("glCopyBufferSubData encode");
5888
5889 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5890 IOStream *stream = ctx->m_stream;
5891 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5892 bool useChecksum = checksumCalculator->getVersion() > 0;
5893
5894 unsigned char *ptr;
5895 unsigned char *buf;
5896 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
5897 const size_t checksumSize = checksumCalculator->checksumByteSize();
5898 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5899 buf = stream->alloc(totalSize);
5900 ptr = buf;
5901 int tmp = OP_glCopyBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
5902 memcpy(ptr, &totalSize, 4); ptr += 4;
5903
5904 memcpy(ptr, &readtarget, 4); ptr += 4;
5905 memcpy(ptr, &writetarget, 4); ptr += 4;
5906 memcpy(ptr, &readoffset, 4); ptr += 4;
5907 memcpy(ptr, &writeoffset, 4); ptr += 4;
5908 memcpy(ptr, &size, 4); ptr += 4;
5909
5910 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5911 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5912
5913 stream->flush();
5914 }
5915
glClearBufferiv_enc(void * self,GLenum buffer,GLint drawBuffer,const GLint * value)5916 void glClearBufferiv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLint* value)
5917 {
5918 ENCODER_DEBUG_LOG("glClearBufferiv(buffer:0x%08x, drawBuffer:%d, value:0x%08x)", buffer, drawBuffer, value);
5919 AEMU_SCOPED_TRACE("glClearBufferiv encode");
5920
5921 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5922 IOStream *stream = ctx->m_stream;
5923 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5924 bool useChecksum = checksumCalculator->getVersion() > 0;
5925
5926 const unsigned int __size_value = (sizeof(GLint) * glesv2_enc::clearBufferNumElts(self, buffer));
5927 unsigned char *ptr;
5928 unsigned char *buf;
5929 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5930 const size_t checksumSize = checksumCalculator->checksumByteSize();
5931 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5932 buf = stream->alloc(totalSize);
5933 ptr = buf;
5934 int tmp = OP_glClearBufferiv;memcpy(ptr, &tmp, 4); ptr += 4;
5935 memcpy(ptr, &totalSize, 4); ptr += 4;
5936
5937 memcpy(ptr, &buffer, 4); ptr += 4;
5938 memcpy(ptr, &drawBuffer, 4); ptr += 4;
5939 memcpy(ptr, &__size_value, 4); ptr += 4;
5940 memcpy(ptr, value, __size_value);ptr += __size_value;
5941
5942 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5943 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5944
5945 }
5946
glClearBufferuiv_enc(void * self,GLenum buffer,GLint drawBuffer,const GLuint * value)5947 void glClearBufferuiv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLuint* value)
5948 {
5949 ENCODER_DEBUG_LOG("glClearBufferuiv(buffer:0x%08x, drawBuffer:%d, value:0x%08x)", buffer, drawBuffer, value);
5950 AEMU_SCOPED_TRACE("glClearBufferuiv encode");
5951
5952 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5953 IOStream *stream = ctx->m_stream;
5954 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5955 bool useChecksum = checksumCalculator->getVersion() > 0;
5956
5957 const unsigned int __size_value = (sizeof(GLuint) * glesv2_enc::clearBufferNumElts(self, buffer));
5958 unsigned char *ptr;
5959 unsigned char *buf;
5960 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5961 const size_t checksumSize = checksumCalculator->checksumByteSize();
5962 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5963 buf = stream->alloc(totalSize);
5964 ptr = buf;
5965 int tmp = OP_glClearBufferuiv;memcpy(ptr, &tmp, 4); ptr += 4;
5966 memcpy(ptr, &totalSize, 4); ptr += 4;
5967
5968 memcpy(ptr, &buffer, 4); ptr += 4;
5969 memcpy(ptr, &drawBuffer, 4); ptr += 4;
5970 memcpy(ptr, &__size_value, 4); ptr += 4;
5971 memcpy(ptr, value, __size_value);ptr += __size_value;
5972
5973 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5974 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5975
5976 }
5977
glClearBufferfv_enc(void * self,GLenum buffer,GLint drawBuffer,const GLfloat * value)5978 void glClearBufferfv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLfloat* value)
5979 {
5980 ENCODER_DEBUG_LOG("glClearBufferfv(buffer:0x%08x, drawBuffer:%d, value:0x%08x)", buffer, drawBuffer, value);
5981 AEMU_SCOPED_TRACE("glClearBufferfv encode");
5982
5983 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5984 IOStream *stream = ctx->m_stream;
5985 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5986 bool useChecksum = checksumCalculator->getVersion() > 0;
5987
5988 const unsigned int __size_value = (sizeof(GLfloat) * glesv2_enc::clearBufferNumElts(self, buffer));
5989 unsigned char *ptr;
5990 unsigned char *buf;
5991 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5992 const size_t checksumSize = checksumCalculator->checksumByteSize();
5993 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5994 buf = stream->alloc(totalSize);
5995 ptr = buf;
5996 int tmp = OP_glClearBufferfv;memcpy(ptr, &tmp, 4); ptr += 4;
5997 memcpy(ptr, &totalSize, 4); ptr += 4;
5998
5999 memcpy(ptr, &buffer, 4); ptr += 4;
6000 memcpy(ptr, &drawBuffer, 4); ptr += 4;
6001 memcpy(ptr, &__size_value, 4); ptr += 4;
6002 memcpy(ptr, value, __size_value);ptr += __size_value;
6003
6004 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6005 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6006
6007 }
6008
glClearBufferfi_enc(void * self,GLenum buffer,GLint drawBuffer,GLfloat depth,GLint stencil)6009 void glClearBufferfi_enc(void *self , GLenum buffer, GLint drawBuffer, GLfloat depth, GLint stencil)
6010 {
6011 ENCODER_DEBUG_LOG("glClearBufferfi(buffer:0x%08x, drawBuffer:%d, depth:%f, stencil:%d)", buffer, drawBuffer, depth, stencil);
6012 AEMU_SCOPED_TRACE("glClearBufferfi encode");
6013
6014 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6015 IOStream *stream = ctx->m_stream;
6016 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6017 bool useChecksum = checksumCalculator->getVersion() > 0;
6018
6019 unsigned char *ptr;
6020 unsigned char *buf;
6021 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
6022 const size_t checksumSize = checksumCalculator->checksumByteSize();
6023 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6024 buf = stream->alloc(totalSize);
6025 ptr = buf;
6026 int tmp = OP_glClearBufferfi;memcpy(ptr, &tmp, 4); ptr += 4;
6027 memcpy(ptr, &totalSize, 4); ptr += 4;
6028
6029 memcpy(ptr, &buffer, 4); ptr += 4;
6030 memcpy(ptr, &drawBuffer, 4); ptr += 4;
6031 memcpy(ptr, &depth, 4); ptr += 4;
6032 memcpy(ptr, &stencil, 4); ptr += 4;
6033
6034 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6035 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6036
6037 }
6038
glUniformBlockBinding_enc(void * self,GLuint program,GLuint uniformBlockIndex,GLuint uniformBlockBinding)6039 void glUniformBlockBinding_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
6040 {
6041 ENCODER_DEBUG_LOG("glUniformBlockBinding(program:%u, uniformBlockIndex:%u, uniformBlockBinding:%u)", program, uniformBlockIndex, uniformBlockBinding);
6042 AEMU_SCOPED_TRACE("glUniformBlockBinding encode");
6043
6044 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6045 IOStream *stream = ctx->m_stream;
6046 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6047 bool useChecksum = checksumCalculator->getVersion() > 0;
6048
6049 unsigned char *ptr;
6050 unsigned char *buf;
6051 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
6052 const size_t checksumSize = checksumCalculator->checksumByteSize();
6053 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6054 buf = stream->alloc(totalSize);
6055 ptr = buf;
6056 int tmp = OP_glUniformBlockBinding;memcpy(ptr, &tmp, 4); ptr += 4;
6057 memcpy(ptr, &totalSize, 4); ptr += 4;
6058
6059 memcpy(ptr, &program, 4); ptr += 4;
6060 memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
6061 memcpy(ptr, &uniformBlockBinding, 4); ptr += 4;
6062
6063 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6064 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6065
6066 }
6067
glGetUniformBlockIndex_enc(void * self,GLuint program,const GLchar * uniformBlockName)6068 GLuint glGetUniformBlockIndex_enc(void *self , GLuint program, const GLchar* uniformBlockName)
6069 {
6070 ENCODER_DEBUG_LOG("glGetUniformBlockIndex(program:%u, uniformBlockName:0x%08x)", program, uniformBlockName);
6071 AEMU_SCOPED_TRACE("glGetUniformBlockIndex encode");
6072
6073 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6074 IOStream *stream = ctx->m_stream;
6075 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6076 bool useChecksum = checksumCalculator->getVersion() > 0;
6077
6078 const unsigned int __size_uniformBlockName = (strlen(uniformBlockName) + 1);
6079 unsigned char *ptr;
6080 unsigned char *buf;
6081 const size_t sizeWithoutChecksum = 8 + 4 + __size_uniformBlockName + 1*4;
6082 const size_t checksumSize = checksumCalculator->checksumByteSize();
6083 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6084 buf = stream->alloc(totalSize);
6085 ptr = buf;
6086 int tmp = OP_glGetUniformBlockIndex;memcpy(ptr, &tmp, 4); ptr += 4;
6087 memcpy(ptr, &totalSize, 4); ptr += 4;
6088
6089 memcpy(ptr, &program, 4); ptr += 4;
6090 memcpy(ptr, &__size_uniformBlockName, 4); ptr += 4;
6091 memcpy(ptr, uniformBlockName, __size_uniformBlockName);ptr += __size_uniformBlockName;
6092
6093 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6094 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6095
6096
6097 GLuint retval;
6098 stream->readback(&retval, 4);
6099 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
6100 if (useChecksum) {
6101 unsigned char *checksumBufPtr = NULL;
6102 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
6103 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6104 stream->readback(checksumBufPtr, checksumSize);
6105 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6106 ALOGE("glGetUniformBlockIndex: GL communication error, please report this issue to b.android.com.\n");
6107 abort();
6108 }
6109 }
6110 return retval;
6111 }
6112
glGetUniformIndicesAEMU_enc(void * self,GLuint program,GLsizei uniformCount,const GLchar * packedUniformNames,GLsizei packedLen,GLuint * uniformIndices)6113 void glGetUniformIndicesAEMU_enc(void *self , GLuint program, GLsizei uniformCount, const GLchar* packedUniformNames, GLsizei packedLen, GLuint* uniformIndices)
6114 {
6115 ENCODER_DEBUG_LOG("glGetUniformIndicesAEMU(program:%u, uniformCount:%d, packedUniformNames:0x%08x, packedLen:%d, uniformIndices:0x%08x)", program, uniformCount, packedUniformNames, packedLen, uniformIndices);
6116 AEMU_SCOPED_TRACE("glGetUniformIndicesAEMU encode");
6117
6118 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6119 IOStream *stream = ctx->m_stream;
6120 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6121 bool useChecksum = checksumCalculator->getVersion() > 0;
6122
6123 const unsigned int __size_packedUniformNames = packedLen;
6124 const unsigned int __size_uniformIndices = (uniformCount * sizeof(GLuint));
6125 unsigned char *ptr;
6126 unsigned char *buf;
6127 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedUniformNames + 4 + 0 + 2*4;
6128 const size_t checksumSize = checksumCalculator->checksumByteSize();
6129 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6130 buf = stream->alloc(totalSize);
6131 ptr = buf;
6132 int tmp = OP_glGetUniformIndicesAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6133 memcpy(ptr, &totalSize, 4); ptr += 4;
6134
6135 memcpy(ptr, &program, 4); ptr += 4;
6136 memcpy(ptr, &uniformCount, 4); ptr += 4;
6137 memcpy(ptr, &__size_packedUniformNames, 4); ptr += 4;
6138 memcpy(ptr, packedUniformNames, __size_packedUniformNames);ptr += __size_packedUniformNames;
6139 memcpy(ptr, &packedLen, 4); ptr += 4;
6140 memcpy(ptr, &__size_uniformIndices, 4); ptr += 4;
6141
6142 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6143 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6144
6145 stream->readback(uniformIndices, __size_uniformIndices);
6146 if (useChecksum) checksumCalculator->addBuffer(uniformIndices, __size_uniformIndices);
6147 if (useChecksum) {
6148 unsigned char *checksumBufPtr = NULL;
6149 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
6150 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6151 stream->readback(checksumBufPtr, checksumSize);
6152 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6153 ALOGE("glGetUniformIndicesAEMU: GL communication error, please report this issue to b.android.com.\n");
6154 abort();
6155 }
6156 }
6157 }
6158
glGetActiveUniformBlockiv_enc(void * self,GLuint program,GLuint uniformBlockIndex,GLenum pname,GLint * params)6159 void glGetActiveUniformBlockiv_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params)
6160 {
6161 ENCODER_DEBUG_LOG("glGetActiveUniformBlockiv(program:%u, uniformBlockIndex:%u, pname:0x%08x, params:0x%08x)", program, uniformBlockIndex, pname, params);
6162 AEMU_SCOPED_TRACE("glGetActiveUniformBlockiv encode");
6163
6164 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6165 IOStream *stream = ctx->m_stream;
6166 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6167 bool useChecksum = checksumCalculator->getVersion() > 0;
6168
6169 const unsigned int __size_params = (glesv2_enc::glActiveUniformBlockivParamSize(self, program, uniformBlockIndex, pname) * sizeof(GLint));
6170 unsigned char *ptr;
6171 unsigned char *buf;
6172 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
6173 const size_t checksumSize = checksumCalculator->checksumByteSize();
6174 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6175 buf = stream->alloc(totalSize);
6176 ptr = buf;
6177 int tmp = OP_glGetActiveUniformBlockiv;memcpy(ptr, &tmp, 4); ptr += 4;
6178 memcpy(ptr, &totalSize, 4); ptr += 4;
6179
6180 memcpy(ptr, &program, 4); ptr += 4;
6181 memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
6182 memcpy(ptr, &pname, 4); ptr += 4;
6183 memcpy(ptr, &__size_params, 4); ptr += 4;
6184
6185 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6186 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6187
6188 stream->readback(params, __size_params);
6189 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6190 if (useChecksum) {
6191 unsigned char *checksumBufPtr = NULL;
6192 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
6193 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6194 stream->readback(checksumBufPtr, checksumSize);
6195 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6196 ALOGE("glGetActiveUniformBlockiv: GL communication error, please report this issue to b.android.com.\n");
6197 abort();
6198 }
6199 }
6200 }
6201
glGetActiveUniformBlockName_enc(void * self,GLuint program,GLuint uniformBlockIndex,GLsizei bufSize,GLsizei * length,GLchar * uniformBlockName)6202 void glGetActiveUniformBlockName_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName)
6203 {
6204 ENCODER_DEBUG_LOG("glGetActiveUniformBlockName(program:%u, uniformBlockIndex:%u, bufSize:%d, length:0x%08x, uniformBlockName:0x%08x)", program, uniformBlockIndex, bufSize, length, uniformBlockName);
6205 AEMU_SCOPED_TRACE("glGetActiveUniformBlockName encode");
6206
6207 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6208 IOStream *stream = ctx->m_stream;
6209 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6210 bool useChecksum = checksumCalculator->getVersion() > 0;
6211
6212 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
6213 const unsigned int __size_uniformBlockName = ((uniformBlockName != NULL) ? bufSize : 0);
6214 unsigned char *ptr;
6215 unsigned char *buf;
6216 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 2*4;
6217 const size_t checksumSize = checksumCalculator->checksumByteSize();
6218 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6219 buf = stream->alloc(totalSize);
6220 ptr = buf;
6221 int tmp = OP_glGetActiveUniformBlockName;memcpy(ptr, &tmp, 4); ptr += 4;
6222 memcpy(ptr, &totalSize, 4); ptr += 4;
6223
6224 memcpy(ptr, &program, 4); ptr += 4;
6225 memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
6226 memcpy(ptr, &bufSize, 4); ptr += 4;
6227 memcpy(ptr, &__size_length, 4); ptr += 4;
6228 memcpy(ptr, &__size_uniformBlockName, 4); ptr += 4;
6229
6230 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6231 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6232
6233 if (length != NULL) {
6234 stream->readback(length, __size_length);
6235 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
6236 }
6237 if (uniformBlockName != NULL) {
6238 stream->readback(uniformBlockName, __size_uniformBlockName);
6239 if (useChecksum) checksumCalculator->addBuffer(uniformBlockName, __size_uniformBlockName);
6240 }
6241 if (useChecksum) {
6242 unsigned char *checksumBufPtr = NULL;
6243 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
6244 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6245 stream->readback(checksumBufPtr, checksumSize);
6246 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6247 ALOGE("glGetActiveUniformBlockName: GL communication error, please report this issue to b.android.com.\n");
6248 abort();
6249 }
6250 }
6251 }
6252
glUniform1ui_enc(void * self,GLint location,GLuint v0)6253 void glUniform1ui_enc(void *self , GLint location, GLuint v0)
6254 {
6255 ENCODER_DEBUG_LOG("glUniform1ui(location:%d, v0:%u)", location, v0);
6256 AEMU_SCOPED_TRACE("glUniform1ui encode");
6257
6258 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6259 IOStream *stream = ctx->m_stream;
6260 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6261 bool useChecksum = checksumCalculator->getVersion() > 0;
6262
6263 unsigned char *ptr;
6264 unsigned char *buf;
6265 const size_t sizeWithoutChecksum = 8 + 4 + 4;
6266 const size_t checksumSize = checksumCalculator->checksumByteSize();
6267 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6268 buf = stream->alloc(totalSize);
6269 ptr = buf;
6270 int tmp = OP_glUniform1ui;memcpy(ptr, &tmp, 4); ptr += 4;
6271 memcpy(ptr, &totalSize, 4); ptr += 4;
6272
6273 memcpy(ptr, &location, 4); ptr += 4;
6274 memcpy(ptr, &v0, 4); ptr += 4;
6275
6276 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6277 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6278
6279 }
6280
glUniform2ui_enc(void * self,GLint location,GLuint v0,GLuint v1)6281 void glUniform2ui_enc(void *self , GLint location, GLuint v0, GLuint v1)
6282 {
6283 ENCODER_DEBUG_LOG("glUniform2ui(location:%d, v0:%u, v1:%u)", location, v0, v1);
6284 AEMU_SCOPED_TRACE("glUniform2ui encode");
6285
6286 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6287 IOStream *stream = ctx->m_stream;
6288 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6289 bool useChecksum = checksumCalculator->getVersion() > 0;
6290
6291 unsigned char *ptr;
6292 unsigned char *buf;
6293 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
6294 const size_t checksumSize = checksumCalculator->checksumByteSize();
6295 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6296 buf = stream->alloc(totalSize);
6297 ptr = buf;
6298 int tmp = OP_glUniform2ui;memcpy(ptr, &tmp, 4); ptr += 4;
6299 memcpy(ptr, &totalSize, 4); ptr += 4;
6300
6301 memcpy(ptr, &location, 4); ptr += 4;
6302 memcpy(ptr, &v0, 4); ptr += 4;
6303 memcpy(ptr, &v1, 4); ptr += 4;
6304
6305 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6306 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6307
6308 }
6309
glUniform3ui_enc(void * self,GLint location,GLuint v0,GLuint v1,GLuint v2)6310 void glUniform3ui_enc(void *self , GLint location, GLuint v0, GLuint v1, GLuint v2)
6311 {
6312 ENCODER_DEBUG_LOG("glUniform3ui(location:%d, v0:%u, v1:%u, v2:%u)", location, v0, v1, v2);
6313 AEMU_SCOPED_TRACE("glUniform3ui encode");
6314
6315 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6316 IOStream *stream = ctx->m_stream;
6317 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6318 bool useChecksum = checksumCalculator->getVersion() > 0;
6319
6320 unsigned char *ptr;
6321 unsigned char *buf;
6322 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
6323 const size_t checksumSize = checksumCalculator->checksumByteSize();
6324 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6325 buf = stream->alloc(totalSize);
6326 ptr = buf;
6327 int tmp = OP_glUniform3ui;memcpy(ptr, &tmp, 4); ptr += 4;
6328 memcpy(ptr, &totalSize, 4); ptr += 4;
6329
6330 memcpy(ptr, &location, 4); ptr += 4;
6331 memcpy(ptr, &v0, 4); ptr += 4;
6332 memcpy(ptr, &v1, 4); ptr += 4;
6333 memcpy(ptr, &v2, 4); ptr += 4;
6334
6335 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6336 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6337
6338 }
6339
glUniform4ui_enc(void * self,GLint location,GLint v0,GLuint v1,GLuint v2,GLuint v3)6340 void glUniform4ui_enc(void *self , GLint location, GLint v0, GLuint v1, GLuint v2, GLuint v3)
6341 {
6342 ENCODER_DEBUG_LOG("glUniform4ui(location:%d, v0:%d, v1:%u, v2:%u, v3:%u)", location, v0, v1, v2, v3);
6343 AEMU_SCOPED_TRACE("glUniform4ui encode");
6344
6345 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6346 IOStream *stream = ctx->m_stream;
6347 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6348 bool useChecksum = checksumCalculator->getVersion() > 0;
6349
6350 unsigned char *ptr;
6351 unsigned char *buf;
6352 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6353 const size_t checksumSize = checksumCalculator->checksumByteSize();
6354 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6355 buf = stream->alloc(totalSize);
6356 ptr = buf;
6357 int tmp = OP_glUniform4ui;memcpy(ptr, &tmp, 4); ptr += 4;
6358 memcpy(ptr, &totalSize, 4); ptr += 4;
6359
6360 memcpy(ptr, &location, 4); ptr += 4;
6361 memcpy(ptr, &v0, 4); ptr += 4;
6362 memcpy(ptr, &v1, 4); ptr += 4;
6363 memcpy(ptr, &v2, 4); ptr += 4;
6364 memcpy(ptr, &v3, 4); ptr += 4;
6365
6366 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6367 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6368
6369 }
6370
glUniform1uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6371 void glUniform1uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6372 {
6373 ENCODER_DEBUG_LOG("glUniform1uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6374 AEMU_SCOPED_TRACE("glUniform1uiv encode");
6375
6376 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6377 IOStream *stream = ctx->m_stream;
6378 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6379 bool useChecksum = checksumCalculator->getVersion() > 0;
6380
6381 const unsigned int __size_value = (count * sizeof(GLuint));
6382 unsigned char *ptr;
6383 unsigned char *buf;
6384 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6385 const size_t checksumSize = checksumCalculator->checksumByteSize();
6386 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6387 buf = stream->alloc(totalSize);
6388 ptr = buf;
6389 int tmp = OP_glUniform1uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6390 memcpy(ptr, &totalSize, 4); ptr += 4;
6391
6392 memcpy(ptr, &location, 4); ptr += 4;
6393 memcpy(ptr, &count, 4); ptr += 4;
6394 memcpy(ptr, &__size_value, 4); ptr += 4;
6395 memcpy(ptr, value, __size_value);ptr += __size_value;
6396
6397 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6398 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6399
6400 }
6401
glUniform2uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6402 void glUniform2uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6403 {
6404 ENCODER_DEBUG_LOG("glUniform2uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6405 AEMU_SCOPED_TRACE("glUniform2uiv encode");
6406
6407 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6408 IOStream *stream = ctx->m_stream;
6409 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6410 bool useChecksum = checksumCalculator->getVersion() > 0;
6411
6412 const unsigned int __size_value = (count * 2 * sizeof(GLuint));
6413 unsigned char *ptr;
6414 unsigned char *buf;
6415 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6416 const size_t checksumSize = checksumCalculator->checksumByteSize();
6417 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6418 buf = stream->alloc(totalSize);
6419 ptr = buf;
6420 int tmp = OP_glUniform2uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6421 memcpy(ptr, &totalSize, 4); ptr += 4;
6422
6423 memcpy(ptr, &location, 4); ptr += 4;
6424 memcpy(ptr, &count, 4); ptr += 4;
6425 memcpy(ptr, &__size_value, 4); ptr += 4;
6426 memcpy(ptr, value, __size_value);ptr += __size_value;
6427
6428 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6429 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6430
6431 }
6432
glUniform3uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6433 void glUniform3uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6434 {
6435 ENCODER_DEBUG_LOG("glUniform3uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6436 AEMU_SCOPED_TRACE("glUniform3uiv encode");
6437
6438 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6439 IOStream *stream = ctx->m_stream;
6440 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6441 bool useChecksum = checksumCalculator->getVersion() > 0;
6442
6443 const unsigned int __size_value = (count * 3 * sizeof(GLuint));
6444 unsigned char *ptr;
6445 unsigned char *buf;
6446 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6447 const size_t checksumSize = checksumCalculator->checksumByteSize();
6448 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6449 buf = stream->alloc(totalSize);
6450 ptr = buf;
6451 int tmp = OP_glUniform3uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6452 memcpy(ptr, &totalSize, 4); ptr += 4;
6453
6454 memcpy(ptr, &location, 4); ptr += 4;
6455 memcpy(ptr, &count, 4); ptr += 4;
6456 memcpy(ptr, &__size_value, 4); ptr += 4;
6457 memcpy(ptr, value, __size_value);ptr += __size_value;
6458
6459 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6460 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6461
6462 }
6463
glUniform4uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6464 void glUniform4uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6465 {
6466 ENCODER_DEBUG_LOG("glUniform4uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6467 AEMU_SCOPED_TRACE("glUniform4uiv encode");
6468
6469 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6470 IOStream *stream = ctx->m_stream;
6471 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6472 bool useChecksum = checksumCalculator->getVersion() > 0;
6473
6474 const unsigned int __size_value = (count * 4 * sizeof(GLuint));
6475 unsigned char *ptr;
6476 unsigned char *buf;
6477 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6478 const size_t checksumSize = checksumCalculator->checksumByteSize();
6479 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6480 buf = stream->alloc(totalSize);
6481 ptr = buf;
6482 int tmp = OP_glUniform4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6483 memcpy(ptr, &totalSize, 4); ptr += 4;
6484
6485 memcpy(ptr, &location, 4); ptr += 4;
6486 memcpy(ptr, &count, 4); ptr += 4;
6487 memcpy(ptr, &__size_value, 4); ptr += 4;
6488 memcpy(ptr, value, __size_value);ptr += __size_value;
6489
6490 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6491 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6492
6493 }
6494
glUniformMatrix2x3fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6495 void glUniformMatrix2x3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6496 {
6497 ENCODER_DEBUG_LOG("glUniformMatrix2x3fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6498 AEMU_SCOPED_TRACE("glUniformMatrix2x3fv encode");
6499
6500 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6501 IOStream *stream = ctx->m_stream;
6502 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6503 bool useChecksum = checksumCalculator->getVersion() > 0;
6504
6505 const unsigned int __size_value = (count * 6 * sizeof(GLfloat));
6506 unsigned char *ptr;
6507 unsigned char *buf;
6508 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6509 const size_t checksumSize = checksumCalculator->checksumByteSize();
6510 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6511 buf = stream->alloc(totalSize);
6512 ptr = buf;
6513 int tmp = OP_glUniformMatrix2x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
6514 memcpy(ptr, &totalSize, 4); ptr += 4;
6515
6516 memcpy(ptr, &location, 4); ptr += 4;
6517 memcpy(ptr, &count, 4); ptr += 4;
6518 memcpy(ptr, &transpose, 1); ptr += 1;
6519 memcpy(ptr, &__size_value, 4); ptr += 4;
6520 memcpy(ptr, value, __size_value);ptr += __size_value;
6521
6522 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6523 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6524
6525 }
6526
glUniformMatrix3x2fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6527 void glUniformMatrix3x2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6528 {
6529 ENCODER_DEBUG_LOG("glUniformMatrix3x2fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6530 AEMU_SCOPED_TRACE("glUniformMatrix3x2fv encode");
6531
6532 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6533 IOStream *stream = ctx->m_stream;
6534 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6535 bool useChecksum = checksumCalculator->getVersion() > 0;
6536
6537 const unsigned int __size_value = (count * 6 * sizeof(GLfloat));
6538 unsigned char *ptr;
6539 unsigned char *buf;
6540 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6541 const size_t checksumSize = checksumCalculator->checksumByteSize();
6542 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6543 buf = stream->alloc(totalSize);
6544 ptr = buf;
6545 int tmp = OP_glUniformMatrix3x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
6546 memcpy(ptr, &totalSize, 4); ptr += 4;
6547
6548 memcpy(ptr, &location, 4); ptr += 4;
6549 memcpy(ptr, &count, 4); ptr += 4;
6550 memcpy(ptr, &transpose, 1); ptr += 1;
6551 memcpy(ptr, &__size_value, 4); ptr += 4;
6552 memcpy(ptr, value, __size_value);ptr += __size_value;
6553
6554 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6555 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6556
6557 }
6558
glUniformMatrix2x4fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6559 void glUniformMatrix2x4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6560 {
6561 ENCODER_DEBUG_LOG("glUniformMatrix2x4fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6562 AEMU_SCOPED_TRACE("glUniformMatrix2x4fv encode");
6563
6564 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6565 IOStream *stream = ctx->m_stream;
6566 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6567 bool useChecksum = checksumCalculator->getVersion() > 0;
6568
6569 const unsigned int __size_value = (count * 8 * sizeof(GLfloat));
6570 unsigned char *ptr;
6571 unsigned char *buf;
6572 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6573 const size_t checksumSize = checksumCalculator->checksumByteSize();
6574 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6575 buf = stream->alloc(totalSize);
6576 ptr = buf;
6577 int tmp = OP_glUniformMatrix2x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
6578 memcpy(ptr, &totalSize, 4); ptr += 4;
6579
6580 memcpy(ptr, &location, 4); ptr += 4;
6581 memcpy(ptr, &count, 4); ptr += 4;
6582 memcpy(ptr, &transpose, 1); ptr += 1;
6583 memcpy(ptr, &__size_value, 4); ptr += 4;
6584 memcpy(ptr, value, __size_value);ptr += __size_value;
6585
6586 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6587 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6588
6589 }
6590
glUniformMatrix4x2fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6591 void glUniformMatrix4x2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6592 {
6593 ENCODER_DEBUG_LOG("glUniformMatrix4x2fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6594 AEMU_SCOPED_TRACE("glUniformMatrix4x2fv encode");
6595
6596 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6597 IOStream *stream = ctx->m_stream;
6598 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6599 bool useChecksum = checksumCalculator->getVersion() > 0;
6600
6601 const unsigned int __size_value = (count * 8 * sizeof(GLfloat));
6602 unsigned char *ptr;
6603 unsigned char *buf;
6604 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6605 const size_t checksumSize = checksumCalculator->checksumByteSize();
6606 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6607 buf = stream->alloc(totalSize);
6608 ptr = buf;
6609 int tmp = OP_glUniformMatrix4x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
6610 memcpy(ptr, &totalSize, 4); ptr += 4;
6611
6612 memcpy(ptr, &location, 4); ptr += 4;
6613 memcpy(ptr, &count, 4); ptr += 4;
6614 memcpy(ptr, &transpose, 1); ptr += 1;
6615 memcpy(ptr, &__size_value, 4); ptr += 4;
6616 memcpy(ptr, value, __size_value);ptr += __size_value;
6617
6618 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6619 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6620
6621 }
6622
glUniformMatrix3x4fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6623 void glUniformMatrix3x4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6624 {
6625 ENCODER_DEBUG_LOG("glUniformMatrix3x4fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6626 AEMU_SCOPED_TRACE("glUniformMatrix3x4fv encode");
6627
6628 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6629 IOStream *stream = ctx->m_stream;
6630 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6631 bool useChecksum = checksumCalculator->getVersion() > 0;
6632
6633 const unsigned int __size_value = (count * 12 * sizeof(GLfloat));
6634 unsigned char *ptr;
6635 unsigned char *buf;
6636 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6637 const size_t checksumSize = checksumCalculator->checksumByteSize();
6638 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6639 buf = stream->alloc(totalSize);
6640 ptr = buf;
6641 int tmp = OP_glUniformMatrix3x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
6642 memcpy(ptr, &totalSize, 4); ptr += 4;
6643
6644 memcpy(ptr, &location, 4); ptr += 4;
6645 memcpy(ptr, &count, 4); ptr += 4;
6646 memcpy(ptr, &transpose, 1); ptr += 1;
6647 memcpy(ptr, &__size_value, 4); ptr += 4;
6648 memcpy(ptr, value, __size_value);ptr += __size_value;
6649
6650 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6651 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6652
6653 }
6654
glUniformMatrix4x3fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6655 void glUniformMatrix4x3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6656 {
6657 ENCODER_DEBUG_LOG("glUniformMatrix4x3fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6658 AEMU_SCOPED_TRACE("glUniformMatrix4x3fv encode");
6659
6660 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6661 IOStream *stream = ctx->m_stream;
6662 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6663 bool useChecksum = checksumCalculator->getVersion() > 0;
6664
6665 const unsigned int __size_value = (count * 12 * sizeof(GLfloat));
6666 unsigned char *ptr;
6667 unsigned char *buf;
6668 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6669 const size_t checksumSize = checksumCalculator->checksumByteSize();
6670 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6671 buf = stream->alloc(totalSize);
6672 ptr = buf;
6673 int tmp = OP_glUniformMatrix4x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
6674 memcpy(ptr, &totalSize, 4); ptr += 4;
6675
6676 memcpy(ptr, &location, 4); ptr += 4;
6677 memcpy(ptr, &count, 4); ptr += 4;
6678 memcpy(ptr, &transpose, 1); ptr += 1;
6679 memcpy(ptr, &__size_value, 4); ptr += 4;
6680 memcpy(ptr, value, __size_value);ptr += __size_value;
6681
6682 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6683 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6684
6685 }
6686
glGetUniformuiv_enc(void * self,GLuint program,GLint location,GLuint * params)6687 void glGetUniformuiv_enc(void *self , GLuint program, GLint location, GLuint* params)
6688 {
6689 ENCODER_DEBUG_LOG("glGetUniformuiv(program:%u, location:%d, params:0x%08x)", program, location, params);
6690 AEMU_SCOPED_TRACE("glGetUniformuiv encode");
6691
6692 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6693 IOStream *stream = ctx->m_stream;
6694 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6695 bool useChecksum = checksumCalculator->getVersion() > 0;
6696
6697 const unsigned int __size_params = glSizeof(glesv2_enc::uniformType(self, program, location));
6698 unsigned char *ptr;
6699 unsigned char *buf;
6700 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
6701 const size_t checksumSize = checksumCalculator->checksumByteSize();
6702 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6703 buf = stream->alloc(totalSize);
6704 ptr = buf;
6705 int tmp = OP_glGetUniformuiv;memcpy(ptr, &tmp, 4); ptr += 4;
6706 memcpy(ptr, &totalSize, 4); ptr += 4;
6707
6708 memcpy(ptr, &program, 4); ptr += 4;
6709 memcpy(ptr, &location, 4); ptr += 4;
6710 memcpy(ptr, &__size_params, 4); ptr += 4;
6711
6712 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6713 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6714
6715 stream->readback(params, __size_params);
6716 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6717 if (useChecksum) {
6718 unsigned char *checksumBufPtr = NULL;
6719 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
6720 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6721 stream->readback(checksumBufPtr, checksumSize);
6722 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6723 ALOGE("glGetUniformuiv: GL communication error, please report this issue to b.android.com.\n");
6724 abort();
6725 }
6726 }
6727 }
6728
glGetActiveUniformsiv_enc(void * self,GLuint program,GLsizei uniformCount,const GLuint * uniformIndices,GLenum pname,GLint * params)6729 void glGetActiveUniformsiv_enc(void *self , GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params)
6730 {
6731 ENCODER_DEBUG_LOG("glGetActiveUniformsiv(program:%u, uniformCount:%d, uniformIndices:0x%08x, pname:0x%08x, params:0x%08x)", program, uniformCount, uniformIndices, pname, params);
6732 AEMU_SCOPED_TRACE("glGetActiveUniformsiv encode");
6733
6734 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6735 IOStream *stream = ctx->m_stream;
6736 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6737 bool useChecksum = checksumCalculator->getVersion() > 0;
6738
6739 const unsigned int __size_uniformIndices = (uniformCount * sizeof(GLuint));
6740 const unsigned int __size_params = (uniformCount * sizeof(GLint));
6741 unsigned char *ptr;
6742 unsigned char *buf;
6743 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_uniformIndices + 4 + 0 + 2*4;
6744 const size_t checksumSize = checksumCalculator->checksumByteSize();
6745 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6746 buf = stream->alloc(totalSize);
6747 ptr = buf;
6748 int tmp = OP_glGetActiveUniformsiv;memcpy(ptr, &tmp, 4); ptr += 4;
6749 memcpy(ptr, &totalSize, 4); ptr += 4;
6750
6751 memcpy(ptr, &program, 4); ptr += 4;
6752 memcpy(ptr, &uniformCount, 4); ptr += 4;
6753 memcpy(ptr, &__size_uniformIndices, 4); ptr += 4;
6754 memcpy(ptr, uniformIndices, __size_uniformIndices);ptr += __size_uniformIndices;
6755 memcpy(ptr, &pname, 4); ptr += 4;
6756 memcpy(ptr, &__size_params, 4); ptr += 4;
6757
6758 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6759 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6760
6761 stream->readback(params, __size_params);
6762 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6763 if (useChecksum) {
6764 unsigned char *checksumBufPtr = NULL;
6765 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
6766 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6767 stream->readback(checksumBufPtr, checksumSize);
6768 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6769 ALOGE("glGetActiveUniformsiv: GL communication error, please report this issue to b.android.com.\n");
6770 abort();
6771 }
6772 }
6773 }
6774
glVertexAttribI4i_enc(void * self,GLuint index,GLint v0,GLint v1,GLint v2,GLint v3)6775 void glVertexAttribI4i_enc(void *self , GLuint index, GLint v0, GLint v1, GLint v2, GLint v3)
6776 {
6777 ENCODER_DEBUG_LOG("glVertexAttribI4i(index:%u, v0:%d, v1:%d, v2:%d, v3:%d)", index, v0, v1, v2, v3);
6778 AEMU_SCOPED_TRACE("glVertexAttribI4i encode");
6779
6780 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6781 IOStream *stream = ctx->m_stream;
6782 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6783 bool useChecksum = checksumCalculator->getVersion() > 0;
6784
6785 unsigned char *ptr;
6786 unsigned char *buf;
6787 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6788 const size_t checksumSize = checksumCalculator->checksumByteSize();
6789 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6790 buf = stream->alloc(totalSize);
6791 ptr = buf;
6792 int tmp = OP_glVertexAttribI4i;memcpy(ptr, &tmp, 4); ptr += 4;
6793 memcpy(ptr, &totalSize, 4); ptr += 4;
6794
6795 memcpy(ptr, &index, 4); ptr += 4;
6796 memcpy(ptr, &v0, 4); ptr += 4;
6797 memcpy(ptr, &v1, 4); ptr += 4;
6798 memcpy(ptr, &v2, 4); ptr += 4;
6799 memcpy(ptr, &v3, 4); ptr += 4;
6800
6801 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6802 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6803
6804 }
6805
glVertexAttribI4ui_enc(void * self,GLuint index,GLuint v0,GLuint v1,GLuint v2,GLuint v3)6806 void glVertexAttribI4ui_enc(void *self , GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
6807 {
6808 ENCODER_DEBUG_LOG("glVertexAttribI4ui(index:%u, v0:%u, v1:%u, v2:%u, v3:%u)", index, v0, v1, v2, v3);
6809 AEMU_SCOPED_TRACE("glVertexAttribI4ui encode");
6810
6811 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6812 IOStream *stream = ctx->m_stream;
6813 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6814 bool useChecksum = checksumCalculator->getVersion() > 0;
6815
6816 unsigned char *ptr;
6817 unsigned char *buf;
6818 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6819 const size_t checksumSize = checksumCalculator->checksumByteSize();
6820 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6821 buf = stream->alloc(totalSize);
6822 ptr = buf;
6823 int tmp = OP_glVertexAttribI4ui;memcpy(ptr, &tmp, 4); ptr += 4;
6824 memcpy(ptr, &totalSize, 4); ptr += 4;
6825
6826 memcpy(ptr, &index, 4); ptr += 4;
6827 memcpy(ptr, &v0, 4); ptr += 4;
6828 memcpy(ptr, &v1, 4); ptr += 4;
6829 memcpy(ptr, &v2, 4); ptr += 4;
6830 memcpy(ptr, &v3, 4); ptr += 4;
6831
6832 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6833 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6834
6835 }
6836
glVertexAttribI4iv_enc(void * self,GLuint index,const GLint * v)6837 void glVertexAttribI4iv_enc(void *self , GLuint index, const GLint* v)
6838 {
6839 ENCODER_DEBUG_LOG("glVertexAttribI4iv(index:%u, v:0x%08x)", index, v);
6840 AEMU_SCOPED_TRACE("glVertexAttribI4iv encode");
6841
6842 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6843 IOStream *stream = ctx->m_stream;
6844 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6845 bool useChecksum = checksumCalculator->getVersion() > 0;
6846
6847 const unsigned int __size_v = (4 * sizeof(GLint));
6848 unsigned char *ptr;
6849 unsigned char *buf;
6850 const size_t sizeWithoutChecksum = 8 + 4 + __size_v + 1*4;
6851 const size_t checksumSize = checksumCalculator->checksumByteSize();
6852 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6853 buf = stream->alloc(totalSize);
6854 ptr = buf;
6855 int tmp = OP_glVertexAttribI4iv;memcpy(ptr, &tmp, 4); ptr += 4;
6856 memcpy(ptr, &totalSize, 4); ptr += 4;
6857
6858 memcpy(ptr, &index, 4); ptr += 4;
6859 memcpy(ptr, &__size_v, 4); ptr += 4;
6860 memcpy(ptr, v, __size_v);ptr += __size_v;
6861
6862 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6863 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6864
6865 }
6866
glVertexAttribI4uiv_enc(void * self,GLuint index,const GLuint * v)6867 void glVertexAttribI4uiv_enc(void *self , GLuint index, const GLuint* v)
6868 {
6869 ENCODER_DEBUG_LOG("glVertexAttribI4uiv(index:%u, v:0x%08x)", index, v);
6870 AEMU_SCOPED_TRACE("glVertexAttribI4uiv encode");
6871
6872 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6873 IOStream *stream = ctx->m_stream;
6874 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6875 bool useChecksum = checksumCalculator->getVersion() > 0;
6876
6877 const unsigned int __size_v = (4 * sizeof(GLuint));
6878 unsigned char *ptr;
6879 unsigned char *buf;
6880 const size_t sizeWithoutChecksum = 8 + 4 + __size_v + 1*4;
6881 const size_t checksumSize = checksumCalculator->checksumByteSize();
6882 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6883 buf = stream->alloc(totalSize);
6884 ptr = buf;
6885 int tmp = OP_glVertexAttribI4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6886 memcpy(ptr, &totalSize, 4); ptr += 4;
6887
6888 memcpy(ptr, &index, 4); ptr += 4;
6889 memcpy(ptr, &__size_v, 4); ptr += 4;
6890 memcpy(ptr, v, __size_v);ptr += __size_v;
6891
6892 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6893 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6894
6895 }
6896
glVertexAttribIPointerOffsetAEMU_enc(void * self,GLuint index,GLint size,GLenum type,GLsizei stride,GLuint offset)6897 void glVertexAttribIPointerOffsetAEMU_enc(void *self , GLuint index, GLint size, GLenum type, GLsizei stride, GLuint offset)
6898 {
6899 ENCODER_DEBUG_LOG("glVertexAttribIPointerOffsetAEMU(index:%u, size:%d, type:0x%08x, stride:%d, offset:%u)", index, size, type, stride, offset);
6900 AEMU_SCOPED_TRACE("glVertexAttribIPointerOffsetAEMU encode");
6901
6902 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6903 IOStream *stream = ctx->m_stream;
6904 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6905 bool useChecksum = checksumCalculator->getVersion() > 0;
6906
6907 unsigned char *ptr;
6908 unsigned char *buf;
6909 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6910 const size_t checksumSize = checksumCalculator->checksumByteSize();
6911 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6912 buf = stream->alloc(totalSize);
6913 ptr = buf;
6914 int tmp = OP_glVertexAttribIPointerOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6915 memcpy(ptr, &totalSize, 4); ptr += 4;
6916
6917 memcpy(ptr, &index, 4); ptr += 4;
6918 memcpy(ptr, &size, 4); ptr += 4;
6919 memcpy(ptr, &type, 4); ptr += 4;
6920 memcpy(ptr, &stride, 4); ptr += 4;
6921 memcpy(ptr, &offset, 4); ptr += 4;
6922
6923 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6924 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6925
6926 }
6927
glVertexAttribIPointerDataAEMU_enc(void * self,GLuint index,GLint size,GLenum type,GLsizei stride,void * data,GLuint datalen)6928 void glVertexAttribIPointerDataAEMU_enc(void *self , GLuint index, GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
6929 {
6930 ENCODER_DEBUG_LOG("glVertexAttribIPointerDataAEMU(index:%u, size:%d, type:0x%08x, stride:%d, data:0x%08x, datalen:%u)", index, size, type, stride, data, datalen);
6931 AEMU_SCOPED_TRACE("glVertexAttribIPointerDataAEMU encode");
6932
6933 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6934 IOStream *stream = ctx->m_stream;
6935 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6936 bool useChecksum = checksumCalculator->getVersion() > 0;
6937
6938 const unsigned int __size_data = datalen;
6939 unsigned char *ptr;
6940 unsigned char *buf;
6941 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_data + 4 + 1*4;
6942 const size_t checksumSize = checksumCalculator->checksumByteSize();
6943 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6944 buf = stream->alloc(totalSize);
6945 ptr = buf;
6946 int tmp = OP_glVertexAttribIPointerDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6947 memcpy(ptr, &totalSize, 4); ptr += 4;
6948
6949 memcpy(ptr, &index, 4); ptr += 4;
6950 memcpy(ptr, &size, 4); ptr += 4;
6951 memcpy(ptr, &type, 4); ptr += 4;
6952 memcpy(ptr, &stride, 4); ptr += 4;
6953 memcpy(ptr, &__size_data, 4); ptr += 4;
6954 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
6955 memcpy(ptr, &datalen, 4); ptr += 4;
6956
6957 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6958 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6959
6960 }
6961
glGetVertexAttribIiv_enc(void * self,GLuint index,GLenum pname,GLint * params)6962 void glGetVertexAttribIiv_enc(void *self , GLuint index, GLenum pname, GLint* params)
6963 {
6964 ENCODER_DEBUG_LOG("glGetVertexAttribIiv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
6965 AEMU_SCOPED_TRACE("glGetVertexAttribIiv encode");
6966
6967 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6968 IOStream *stream = ctx->m_stream;
6969 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6970 bool useChecksum = checksumCalculator->getVersion() > 0;
6971
6972 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
6973 unsigned char *ptr;
6974 unsigned char *buf;
6975 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
6976 const size_t checksumSize = checksumCalculator->checksumByteSize();
6977 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6978 buf = stream->alloc(totalSize);
6979 ptr = buf;
6980 int tmp = OP_glGetVertexAttribIiv;memcpy(ptr, &tmp, 4); ptr += 4;
6981 memcpy(ptr, &totalSize, 4); ptr += 4;
6982
6983 memcpy(ptr, &index, 4); ptr += 4;
6984 memcpy(ptr, &pname, 4); ptr += 4;
6985 memcpy(ptr, &__size_params, 4); ptr += 4;
6986
6987 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6988 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6989
6990 stream->readback(params, __size_params);
6991 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6992 if (useChecksum) {
6993 unsigned char *checksumBufPtr = NULL;
6994 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
6995 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6996 stream->readback(checksumBufPtr, checksumSize);
6997 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6998 ALOGE("glGetVertexAttribIiv: GL communication error, please report this issue to b.android.com.\n");
6999 abort();
7000 }
7001 }
7002 }
7003
glGetVertexAttribIuiv_enc(void * self,GLuint index,GLenum pname,GLuint * params)7004 void glGetVertexAttribIuiv_enc(void *self , GLuint index, GLenum pname, GLuint* params)
7005 {
7006 ENCODER_DEBUG_LOG("glGetVertexAttribIuiv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
7007 AEMU_SCOPED_TRACE("glGetVertexAttribIuiv encode");
7008
7009 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7010 IOStream *stream = ctx->m_stream;
7011 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7012 bool useChecksum = checksumCalculator->getVersion() > 0;
7013
7014 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLuint));
7015 unsigned char *ptr;
7016 unsigned char *buf;
7017 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
7018 const size_t checksumSize = checksumCalculator->checksumByteSize();
7019 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7020 buf = stream->alloc(totalSize);
7021 ptr = buf;
7022 int tmp = OP_glGetVertexAttribIuiv;memcpy(ptr, &tmp, 4); ptr += 4;
7023 memcpy(ptr, &totalSize, 4); ptr += 4;
7024
7025 memcpy(ptr, &index, 4); ptr += 4;
7026 memcpy(ptr, &pname, 4); ptr += 4;
7027 memcpy(ptr, &__size_params, 4); ptr += 4;
7028
7029 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7030 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7031
7032 stream->readback(params, __size_params);
7033 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
7034 if (useChecksum) {
7035 unsigned char *checksumBufPtr = NULL;
7036 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
7037 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7038 stream->readback(checksumBufPtr, checksumSize);
7039 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7040 ALOGE("glGetVertexAttribIuiv: GL communication error, please report this issue to b.android.com.\n");
7041 abort();
7042 }
7043 }
7044 }
7045
glVertexAttribDivisor_enc(void * self,GLuint index,GLuint divisor)7046 void glVertexAttribDivisor_enc(void *self , GLuint index, GLuint divisor)
7047 {
7048 ENCODER_DEBUG_LOG("glVertexAttribDivisor(index:%u, divisor:%u)", index, divisor);
7049 AEMU_SCOPED_TRACE("glVertexAttribDivisor encode");
7050
7051 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7052 IOStream *stream = ctx->m_stream;
7053 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7054 bool useChecksum = checksumCalculator->getVersion() > 0;
7055
7056 unsigned char *ptr;
7057 unsigned char *buf;
7058 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7059 const size_t checksumSize = checksumCalculator->checksumByteSize();
7060 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7061 buf = stream->alloc(totalSize);
7062 ptr = buf;
7063 int tmp = OP_glVertexAttribDivisor;memcpy(ptr, &tmp, 4); ptr += 4;
7064 memcpy(ptr, &totalSize, 4); ptr += 4;
7065
7066 memcpy(ptr, &index, 4); ptr += 4;
7067 memcpy(ptr, &divisor, 4); ptr += 4;
7068
7069 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7070 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7071
7072 }
7073
glDrawArraysInstanced_enc(void * self,GLenum mode,GLint first,GLsizei count,GLsizei primcount)7074 void glDrawArraysInstanced_enc(void *self , GLenum mode, GLint first, GLsizei count, GLsizei primcount)
7075 {
7076 ENCODER_DEBUG_LOG("glDrawArraysInstanced(mode:0x%08x, first:%d, count:%d, primcount:%d)", mode, first, count, primcount);
7077 AEMU_SCOPED_TRACE("glDrawArraysInstanced encode");
7078
7079 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7080 IOStream *stream = ctx->m_stream;
7081 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7082 bool useChecksum = checksumCalculator->getVersion() > 0;
7083
7084 unsigned char *ptr;
7085 unsigned char *buf;
7086 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
7087 const size_t checksumSize = checksumCalculator->checksumByteSize();
7088 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7089 buf = stream->alloc(totalSize);
7090 ptr = buf;
7091 int tmp = OP_glDrawArraysInstanced;memcpy(ptr, &tmp, 4); ptr += 4;
7092 memcpy(ptr, &totalSize, 4); ptr += 4;
7093
7094 memcpy(ptr, &mode, 4); ptr += 4;
7095 memcpy(ptr, &first, 4); ptr += 4;
7096 memcpy(ptr, &count, 4); ptr += 4;
7097 memcpy(ptr, &primcount, 4); ptr += 4;
7098
7099 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7100 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7101
7102 }
7103
glDrawElementsInstancedDataAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei primcount,GLsizei datalen)7104 void glDrawElementsInstancedDataAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLsizei datalen)
7105 {
7106 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);
7107 AEMU_SCOPED_TRACE("glDrawElementsInstancedDataAEMU encode");
7108
7109 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7110 IOStream *stream = ctx->m_stream;
7111 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7112 bool useChecksum = checksumCalculator->getVersion() > 0;
7113
7114 const unsigned int __size_indices = datalen;
7115 unsigned char *ptr;
7116 unsigned char *buf;
7117 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_indices + 4 + 4 + 1*4;
7118 const size_t checksumSize = checksumCalculator->checksumByteSize();
7119 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7120 buf = stream->alloc(totalSize);
7121 ptr = buf;
7122 int tmp = OP_glDrawElementsInstancedDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7123 memcpy(ptr, &totalSize, 4); ptr += 4;
7124
7125 memcpy(ptr, &mode, 4); ptr += 4;
7126 memcpy(ptr, &count, 4); ptr += 4;
7127 memcpy(ptr, &type, 4); ptr += 4;
7128 memcpy(ptr, &__size_indices, 4); ptr += 4;
7129 memcpy(ptr, indices, __size_indices);ptr += __size_indices;
7130 memcpy(ptr, &primcount, 4); ptr += 4;
7131 memcpy(ptr, &datalen, 4); ptr += 4;
7132
7133 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7134 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7135
7136 }
7137
glDrawElementsInstancedOffsetAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,GLuint offset,GLsizei primcount)7138 void glDrawElementsInstancedOffsetAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset, GLsizei primcount)
7139 {
7140 ENCODER_DEBUG_LOG("glDrawElementsInstancedOffsetAEMU(mode:0x%08x, count:%d, type:0x%08x, offset:%u, primcount:%d)", mode, count, type, offset, primcount);
7141 AEMU_SCOPED_TRACE("glDrawElementsInstancedOffsetAEMU encode");
7142
7143 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7144 IOStream *stream = ctx->m_stream;
7145 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7146 bool useChecksum = checksumCalculator->getVersion() > 0;
7147
7148 unsigned char *ptr;
7149 unsigned char *buf;
7150 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7151 const size_t checksumSize = checksumCalculator->checksumByteSize();
7152 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7153 buf = stream->alloc(totalSize);
7154 ptr = buf;
7155 int tmp = OP_glDrawElementsInstancedOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7156 memcpy(ptr, &totalSize, 4); ptr += 4;
7157
7158 memcpy(ptr, &mode, 4); ptr += 4;
7159 memcpy(ptr, &count, 4); ptr += 4;
7160 memcpy(ptr, &type, 4); ptr += 4;
7161 memcpy(ptr, &offset, 4); ptr += 4;
7162 memcpy(ptr, &primcount, 4); ptr += 4;
7163
7164 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7165 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7166
7167 }
7168
glDrawRangeElementsDataAEMU_enc(void * self,GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices,GLsizei datalen)7169 void glDrawRangeElementsDataAEMU_enc(void *self , GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices, GLsizei datalen)
7170 {
7171 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);
7172 AEMU_SCOPED_TRACE("glDrawRangeElementsDataAEMU encode");
7173
7174 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7175 IOStream *stream = ctx->m_stream;
7176 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7177 bool useChecksum = checksumCalculator->getVersion() > 0;
7178
7179 const unsigned int __size_indices = datalen;
7180 unsigned char *ptr;
7181 unsigned char *buf;
7182 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + __size_indices + 4 + 1*4;
7183 const size_t checksumSize = checksumCalculator->checksumByteSize();
7184 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7185 buf = stream->alloc(totalSize);
7186 ptr = buf;
7187 int tmp = OP_glDrawRangeElementsDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7188 memcpy(ptr, &totalSize, 4); ptr += 4;
7189
7190 memcpy(ptr, &mode, 4); ptr += 4;
7191 memcpy(ptr, &start, 4); ptr += 4;
7192 memcpy(ptr, &end, 4); ptr += 4;
7193 memcpy(ptr, &count, 4); ptr += 4;
7194 memcpy(ptr, &type, 4); ptr += 4;
7195 memcpy(ptr, &__size_indices, 4); ptr += 4;
7196 memcpy(ptr, indices, __size_indices);ptr += __size_indices;
7197 memcpy(ptr, &datalen, 4); ptr += 4;
7198
7199 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7200 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7201
7202 }
7203
glDrawRangeElementsOffsetAEMU_enc(void * self,GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,GLuint offset)7204 void glDrawRangeElementsOffsetAEMU_enc(void *self , GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLuint offset)
7205 {
7206 ENCODER_DEBUG_LOG("glDrawRangeElementsOffsetAEMU(mode:0x%08x, start:%u, end:%u, count:%d, type:0x%08x, offset:%u)", mode, start, end, count, type, offset);
7207 AEMU_SCOPED_TRACE("glDrawRangeElementsOffsetAEMU encode");
7208
7209 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7210 IOStream *stream = ctx->m_stream;
7211 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7212 bool useChecksum = checksumCalculator->getVersion() > 0;
7213
7214 unsigned char *ptr;
7215 unsigned char *buf;
7216 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
7217 const size_t checksumSize = checksumCalculator->checksumByteSize();
7218 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7219 buf = stream->alloc(totalSize);
7220 ptr = buf;
7221 int tmp = OP_glDrawRangeElementsOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7222 memcpy(ptr, &totalSize, 4); ptr += 4;
7223
7224 memcpy(ptr, &mode, 4); ptr += 4;
7225 memcpy(ptr, &start, 4); ptr += 4;
7226 memcpy(ptr, &end, 4); ptr += 4;
7227 memcpy(ptr, &count, 4); ptr += 4;
7228 memcpy(ptr, &type, 4); ptr += 4;
7229 memcpy(ptr, &offset, 4); ptr += 4;
7230
7231 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7232 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7233
7234 }
7235
glFenceSyncAEMU_enc(void * self,GLenum condition,GLbitfield flags)7236 uint64_t glFenceSyncAEMU_enc(void *self , GLenum condition, GLbitfield flags)
7237 {
7238 ENCODER_DEBUG_LOG("glFenceSyncAEMU(condition:0x%08x, flags:0x%08x)", condition, flags);
7239 AEMU_SCOPED_TRACE("glFenceSyncAEMU encode");
7240
7241 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7242 IOStream *stream = ctx->m_stream;
7243 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7244 bool useChecksum = checksumCalculator->getVersion() > 0;
7245
7246 unsigned char *ptr;
7247 unsigned char *buf;
7248 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7249 const size_t checksumSize = checksumCalculator->checksumByteSize();
7250 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7251 buf = stream->alloc(totalSize);
7252 ptr = buf;
7253 int tmp = OP_glFenceSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7254 memcpy(ptr, &totalSize, 4); ptr += 4;
7255
7256 memcpy(ptr, &condition, 4); ptr += 4;
7257 memcpy(ptr, &flags, 4); ptr += 4;
7258
7259 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7260 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7261
7262
7263 uint64_t retval;
7264 stream->readback(&retval, 8);
7265 if (useChecksum) checksumCalculator->addBuffer(&retval, 8);
7266 if (useChecksum) {
7267 unsigned char *checksumBufPtr = NULL;
7268 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
7269 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7270 stream->readback(checksumBufPtr, checksumSize);
7271 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7272 ALOGE("glFenceSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
7273 abort();
7274 }
7275 }
7276 return retval;
7277 }
7278
glClientWaitSyncAEMU_enc(void * self,uint64_t wait_on,GLbitfield flags,GLuint64 timeout)7279 GLenum glClientWaitSyncAEMU_enc(void *self , uint64_t wait_on, GLbitfield flags, GLuint64 timeout)
7280 {
7281 ENCODER_DEBUG_LOG("glClientWaitSyncAEMU(wait_on:0x%016lx, flags:0x%08x, timeout:0x%016lx)", wait_on, flags, timeout);
7282 AEMU_SCOPED_TRACE("glClientWaitSyncAEMU encode");
7283
7284 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7285 IOStream *stream = ctx->m_stream;
7286 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7287 bool useChecksum = checksumCalculator->getVersion() > 0;
7288
7289 unsigned char *ptr;
7290 unsigned char *buf;
7291 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 8;
7292 const size_t checksumSize = checksumCalculator->checksumByteSize();
7293 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7294 buf = stream->alloc(totalSize);
7295 ptr = buf;
7296 int tmp = OP_glClientWaitSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7297 memcpy(ptr, &totalSize, 4); ptr += 4;
7298
7299 memcpy(ptr, &wait_on, 8); ptr += 8;
7300 memcpy(ptr, &flags, 4); ptr += 4;
7301 memcpy(ptr, &timeout, 8); ptr += 8;
7302
7303 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7304 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7305
7306
7307 GLenum retval;
7308 stream->readback(&retval, 4);
7309 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
7310 if (useChecksum) {
7311 unsigned char *checksumBufPtr = NULL;
7312 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
7313 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7314 stream->readback(checksumBufPtr, checksumSize);
7315 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7316 ALOGE("glClientWaitSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
7317 abort();
7318 }
7319 }
7320 return retval;
7321 }
7322
glWaitSyncAEMU_enc(void * self,uint64_t wait_on,GLbitfield flags,GLuint64 timeout)7323 void glWaitSyncAEMU_enc(void *self , uint64_t wait_on, GLbitfield flags, GLuint64 timeout)
7324 {
7325 ENCODER_DEBUG_LOG("glWaitSyncAEMU(wait_on:0x%016lx, flags:0x%08x, timeout:0x%016lx)", wait_on, flags, timeout);
7326 AEMU_SCOPED_TRACE("glWaitSyncAEMU encode");
7327
7328 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7329 IOStream *stream = ctx->m_stream;
7330 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7331 bool useChecksum = checksumCalculator->getVersion() > 0;
7332
7333 unsigned char *ptr;
7334 unsigned char *buf;
7335 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 8;
7336 const size_t checksumSize = checksumCalculator->checksumByteSize();
7337 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7338 buf = stream->alloc(totalSize);
7339 ptr = buf;
7340 int tmp = OP_glWaitSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7341 memcpy(ptr, &totalSize, 4); ptr += 4;
7342
7343 memcpy(ptr, &wait_on, 8); ptr += 8;
7344 memcpy(ptr, &flags, 4); ptr += 4;
7345 memcpy(ptr, &timeout, 8); ptr += 8;
7346
7347 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7348 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7349
7350 }
7351
glDeleteSyncAEMU_enc(void * self,uint64_t to_delete)7352 void glDeleteSyncAEMU_enc(void *self , uint64_t to_delete)
7353 {
7354 ENCODER_DEBUG_LOG("glDeleteSyncAEMU(to_delete:0x%016lx)", to_delete);
7355 AEMU_SCOPED_TRACE("glDeleteSyncAEMU encode");
7356
7357 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7358 IOStream *stream = ctx->m_stream;
7359 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7360 bool useChecksum = checksumCalculator->getVersion() > 0;
7361
7362 unsigned char *ptr;
7363 unsigned char *buf;
7364 const size_t sizeWithoutChecksum = 8 + 8;
7365 const size_t checksumSize = checksumCalculator->checksumByteSize();
7366 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7367 buf = stream->alloc(totalSize);
7368 ptr = buf;
7369 int tmp = OP_glDeleteSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7370 memcpy(ptr, &totalSize, 4); ptr += 4;
7371
7372 memcpy(ptr, &to_delete, 8); ptr += 8;
7373
7374 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7375 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7376
7377 }
7378
glIsSyncAEMU_enc(void * self,uint64_t sync)7379 GLboolean glIsSyncAEMU_enc(void *self , uint64_t sync)
7380 {
7381 ENCODER_DEBUG_LOG("glIsSyncAEMU(sync:0x%016lx)", sync);
7382 AEMU_SCOPED_TRACE("glIsSyncAEMU encode");
7383
7384 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7385 IOStream *stream = ctx->m_stream;
7386 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7387 bool useChecksum = checksumCalculator->getVersion() > 0;
7388
7389 unsigned char *ptr;
7390 unsigned char *buf;
7391 const size_t sizeWithoutChecksum = 8 + 8;
7392 const size_t checksumSize = checksumCalculator->checksumByteSize();
7393 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7394 buf = stream->alloc(totalSize);
7395 ptr = buf;
7396 int tmp = OP_glIsSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7397 memcpy(ptr, &totalSize, 4); ptr += 4;
7398
7399 memcpy(ptr, &sync, 8); ptr += 8;
7400
7401 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7402 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7403
7404
7405 GLboolean retval;
7406 stream->readback(&retval, 1);
7407 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
7408 if (useChecksum) {
7409 unsigned char *checksumBufPtr = NULL;
7410 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
7411 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7412 stream->readback(checksumBufPtr, checksumSize);
7413 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7414 ALOGE("glIsSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
7415 abort();
7416 }
7417 }
7418 return retval;
7419 }
7420
glGetSyncivAEMU_enc(void * self,uint64_t sync,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * values)7421 void glGetSyncivAEMU_enc(void *self , uint64_t sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values)
7422 {
7423 ENCODER_DEBUG_LOG("glGetSyncivAEMU(sync:0x%016lx, pname:0x%08x, bufSize:%d, length:0x%08x, values:0x%08x)", sync, pname, bufSize, length, values);
7424 AEMU_SCOPED_TRACE("glGetSyncivAEMU encode");
7425
7426 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7427 IOStream *stream = ctx->m_stream;
7428 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7429 bool useChecksum = checksumCalculator->getVersion() > 0;
7430
7431 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
7432 const unsigned int __size_values = (bufSize * sizeof(GLint));
7433 unsigned char *ptr;
7434 unsigned char *buf;
7435 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 4 + 0 + 0 + 2*4;
7436 const size_t checksumSize = checksumCalculator->checksumByteSize();
7437 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7438 buf = stream->alloc(totalSize);
7439 ptr = buf;
7440 int tmp = OP_glGetSyncivAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7441 memcpy(ptr, &totalSize, 4); ptr += 4;
7442
7443 memcpy(ptr, &sync, 8); ptr += 8;
7444 memcpy(ptr, &pname, 4); ptr += 4;
7445 memcpy(ptr, &bufSize, 4); ptr += 4;
7446 memcpy(ptr, &__size_length, 4); ptr += 4;
7447 memcpy(ptr, &__size_values, 4); ptr += 4;
7448
7449 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7450 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7451
7452 if (length != NULL) {
7453 stream->readback(length, __size_length);
7454 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
7455 }
7456 stream->readback(values, __size_values);
7457 if (useChecksum) checksumCalculator->addBuffer(values, __size_values);
7458 if (useChecksum) {
7459 unsigned char *checksumBufPtr = NULL;
7460 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
7461 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7462 stream->readback(checksumBufPtr, checksumSize);
7463 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7464 ALOGE("glGetSyncivAEMU: GL communication error, please report this issue to b.android.com.\n");
7465 abort();
7466 }
7467 }
7468 }
7469
glDrawBuffers_enc(void * self,GLsizei n,const GLenum * bufs)7470 void glDrawBuffers_enc(void *self , GLsizei n, const GLenum* bufs)
7471 {
7472 ENCODER_DEBUG_LOG("glDrawBuffers(n:%d, bufs:0x%08x)", n, bufs);
7473 AEMU_SCOPED_TRACE("glDrawBuffers encode");
7474
7475 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7476 IOStream *stream = ctx->m_stream;
7477 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7478 bool useChecksum = checksumCalculator->getVersion() > 0;
7479
7480 const unsigned int __size_bufs = (n * sizeof(GLenum));
7481 unsigned char *ptr;
7482 unsigned char *buf;
7483 const size_t sizeWithoutChecksum = 8 + 4 + __size_bufs + 1*4;
7484 const size_t checksumSize = checksumCalculator->checksumByteSize();
7485 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7486 buf = stream->alloc(totalSize);
7487 ptr = buf;
7488 int tmp = OP_glDrawBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
7489 memcpy(ptr, &totalSize, 4); ptr += 4;
7490
7491 memcpy(ptr, &n, 4); ptr += 4;
7492 memcpy(ptr, &__size_bufs, 4); ptr += 4;
7493 memcpy(ptr, bufs, __size_bufs);ptr += __size_bufs;
7494
7495 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7496 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7497
7498 }
7499
glReadBuffer_enc(void * self,GLenum src)7500 void glReadBuffer_enc(void *self , GLenum src)
7501 {
7502 ENCODER_DEBUG_LOG("glReadBuffer(src:0x%08x)", src);
7503 AEMU_SCOPED_TRACE("glReadBuffer encode");
7504
7505 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7506 IOStream *stream = ctx->m_stream;
7507 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7508 bool useChecksum = checksumCalculator->getVersion() > 0;
7509
7510 unsigned char *ptr;
7511 unsigned char *buf;
7512 const size_t sizeWithoutChecksum = 8 + 4;
7513 const size_t checksumSize = checksumCalculator->checksumByteSize();
7514 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7515 buf = stream->alloc(totalSize);
7516 ptr = buf;
7517 int tmp = OP_glReadBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7518 memcpy(ptr, &totalSize, 4); ptr += 4;
7519
7520 memcpy(ptr, &src, 4); ptr += 4;
7521
7522 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7523 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7524
7525 }
7526
glBlitFramebuffer_enc(void * self,GLint srcX0,GLint srcY0,GLint srcX1,GLint srcY1,GLint dstX0,GLint dstY0,GLint dstX1,GLint dstY1,GLbitfield mask,GLenum filter)7527 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)
7528 {
7529 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);
7530 AEMU_SCOPED_TRACE("glBlitFramebuffer encode");
7531
7532 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7533 IOStream *stream = ctx->m_stream;
7534 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7535 bool useChecksum = checksumCalculator->getVersion() > 0;
7536
7537 unsigned char *ptr;
7538 unsigned char *buf;
7539 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
7540 const size_t checksumSize = checksumCalculator->checksumByteSize();
7541 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7542 buf = stream->alloc(totalSize);
7543 ptr = buf;
7544 int tmp = OP_glBlitFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7545 memcpy(ptr, &totalSize, 4); ptr += 4;
7546
7547 memcpy(ptr, &srcX0, 4); ptr += 4;
7548 memcpy(ptr, &srcY0, 4); ptr += 4;
7549 memcpy(ptr, &srcX1, 4); ptr += 4;
7550 memcpy(ptr, &srcY1, 4); ptr += 4;
7551 memcpy(ptr, &dstX0, 4); ptr += 4;
7552 memcpy(ptr, &dstY0, 4); ptr += 4;
7553 memcpy(ptr, &dstX1, 4); ptr += 4;
7554 memcpy(ptr, &dstY1, 4); ptr += 4;
7555 memcpy(ptr, &mask, 4); ptr += 4;
7556 memcpy(ptr, &filter, 4); ptr += 4;
7557
7558 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7559 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7560
7561 }
7562
glInvalidateFramebuffer_enc(void * self,GLenum target,GLsizei numAttachments,const GLenum * attachments)7563 void glInvalidateFramebuffer_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments)
7564 {
7565 ENCODER_DEBUG_LOG("glInvalidateFramebuffer(target:0x%08x, numAttachments:%d, attachments:0x%08x)", target, numAttachments, attachments);
7566 AEMU_SCOPED_TRACE("glInvalidateFramebuffer encode");
7567
7568 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7569 IOStream *stream = ctx->m_stream;
7570 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7571 bool useChecksum = checksumCalculator->getVersion() > 0;
7572
7573 const unsigned int __size_attachments = (numAttachments * sizeof(GLenum));
7574 unsigned char *ptr;
7575 unsigned char *buf;
7576 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 1*4;
7577 const size_t checksumSize = checksumCalculator->checksumByteSize();
7578 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7579 buf = stream->alloc(totalSize);
7580 ptr = buf;
7581 int tmp = OP_glInvalidateFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7582 memcpy(ptr, &totalSize, 4); ptr += 4;
7583
7584 memcpy(ptr, &target, 4); ptr += 4;
7585 memcpy(ptr, &numAttachments, 4); ptr += 4;
7586 memcpy(ptr, &__size_attachments, 4); ptr += 4;
7587 memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
7588
7589 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7590 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7591
7592 }
7593
glInvalidateSubFramebuffer_enc(void * self,GLenum target,GLsizei numAttachments,const GLenum * attachments,GLint x,GLint y,GLsizei width,GLsizei height)7594 void glInvalidateSubFramebuffer_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height)
7595 {
7596 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);
7597 AEMU_SCOPED_TRACE("glInvalidateSubFramebuffer encode");
7598
7599 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7600 IOStream *stream = ctx->m_stream;
7601 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7602 bool useChecksum = checksumCalculator->getVersion() > 0;
7603
7604 const unsigned int __size_attachments = (numAttachments * sizeof(GLenum));
7605 unsigned char *ptr;
7606 unsigned char *buf;
7607 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 4 + 4 + 4 + 4 + 1*4;
7608 const size_t checksumSize = checksumCalculator->checksumByteSize();
7609 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7610 buf = stream->alloc(totalSize);
7611 ptr = buf;
7612 int tmp = OP_glInvalidateSubFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7613 memcpy(ptr, &totalSize, 4); ptr += 4;
7614
7615 memcpy(ptr, &target, 4); ptr += 4;
7616 memcpy(ptr, &numAttachments, 4); ptr += 4;
7617 memcpy(ptr, &__size_attachments, 4); ptr += 4;
7618 memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
7619 memcpy(ptr, &x, 4); ptr += 4;
7620 memcpy(ptr, &y, 4); ptr += 4;
7621 memcpy(ptr, &width, 4); ptr += 4;
7622 memcpy(ptr, &height, 4); ptr += 4;
7623
7624 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7625 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7626
7627 }
7628
glFramebufferTextureLayer_enc(void * self,GLenum target,GLenum attachment,GLuint texture,GLint level,GLint layer)7629 void glFramebufferTextureLayer_enc(void *self , GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
7630 {
7631 ENCODER_DEBUG_LOG("glFramebufferTextureLayer(target:0x%08x, attachment:0x%08x, texture:%u, level:%d, layer:%d)", target, attachment, texture, level, layer);
7632 AEMU_SCOPED_TRACE("glFramebufferTextureLayer encode");
7633
7634 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7635 IOStream *stream = ctx->m_stream;
7636 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7637 bool useChecksum = checksumCalculator->getVersion() > 0;
7638
7639 unsigned char *ptr;
7640 unsigned char *buf;
7641 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7642 const size_t checksumSize = checksumCalculator->checksumByteSize();
7643 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7644 buf = stream->alloc(totalSize);
7645 ptr = buf;
7646 int tmp = OP_glFramebufferTextureLayer;memcpy(ptr, &tmp, 4); ptr += 4;
7647 memcpy(ptr, &totalSize, 4); ptr += 4;
7648
7649 memcpy(ptr, &target, 4); ptr += 4;
7650 memcpy(ptr, &attachment, 4); ptr += 4;
7651 memcpy(ptr, &texture, 4); ptr += 4;
7652 memcpy(ptr, &level, 4); ptr += 4;
7653 memcpy(ptr, &layer, 4); ptr += 4;
7654
7655 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7656 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7657
7658 }
7659
glRenderbufferStorageMultisample_enc(void * self,GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height)7660 void glRenderbufferStorageMultisample_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
7661 {
7662 ENCODER_DEBUG_LOG("glRenderbufferStorageMultisample(target:0x%08x, samples:%d, internalformat:0x%08x, width:%d, height:%d)", target, samples, internalformat, width, height);
7663 AEMU_SCOPED_TRACE("glRenderbufferStorageMultisample encode");
7664
7665 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7666 IOStream *stream = ctx->m_stream;
7667 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7668 bool useChecksum = checksumCalculator->getVersion() > 0;
7669
7670 unsigned char *ptr;
7671 unsigned char *buf;
7672 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7673 const size_t checksumSize = checksumCalculator->checksumByteSize();
7674 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7675 buf = stream->alloc(totalSize);
7676 ptr = buf;
7677 int tmp = OP_glRenderbufferStorageMultisample;memcpy(ptr, &tmp, 4); ptr += 4;
7678 memcpy(ptr, &totalSize, 4); ptr += 4;
7679
7680 memcpy(ptr, &target, 4); ptr += 4;
7681 memcpy(ptr, &samples, 4); ptr += 4;
7682 memcpy(ptr, &internalformat, 4); ptr += 4;
7683 memcpy(ptr, &width, 4); ptr += 4;
7684 memcpy(ptr, &height, 4); ptr += 4;
7685
7686 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7687 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7688
7689 }
7690
glTexStorage2D_enc(void * self,GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height)7691 void glTexStorage2D_enc(void *self , GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
7692 {
7693 ENCODER_DEBUG_LOG("glTexStorage2D(target:0x%08x, levels:%d, internalformat:0x%08x, width:%d, height:%d)", target, levels, internalformat, width, height);
7694 AEMU_SCOPED_TRACE("glTexStorage2D encode");
7695
7696 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7697 IOStream *stream = ctx->m_stream;
7698 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7699 bool useChecksum = checksumCalculator->getVersion() > 0;
7700
7701 unsigned char *ptr;
7702 unsigned char *buf;
7703 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7704 const size_t checksumSize = checksumCalculator->checksumByteSize();
7705 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7706 buf = stream->alloc(totalSize);
7707 ptr = buf;
7708 int tmp = OP_glTexStorage2D;memcpy(ptr, &tmp, 4); ptr += 4;
7709 memcpy(ptr, &totalSize, 4); ptr += 4;
7710
7711 memcpy(ptr, &target, 4); ptr += 4;
7712 memcpy(ptr, &levels, 4); ptr += 4;
7713 memcpy(ptr, &internalformat, 4); ptr += 4;
7714 memcpy(ptr, &width, 4); ptr += 4;
7715 memcpy(ptr, &height, 4); ptr += 4;
7716
7717 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7718 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7719
7720 }
7721
glGetInternalformativ_enc(void * self,GLenum target,GLenum internalformat,GLenum pname,GLsizei bufSize,GLint * params)7722 void glGetInternalformativ_enc(void *self , GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params)
7723 {
7724 ENCODER_DEBUG_LOG("glGetInternalformativ(target:0x%08x, internalformat:0x%08x, pname:0x%08x, bufSize:%d, params:0x%08x)", target, internalformat, pname, bufSize, params);
7725 AEMU_SCOPED_TRACE("glGetInternalformativ encode");
7726
7727 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7728 IOStream *stream = ctx->m_stream;
7729 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7730 bool useChecksum = checksumCalculator->getVersion() > 0;
7731
7732 const unsigned int __size_params = (sizeof(GLint) * bufSize);
7733 unsigned char *ptr;
7734 unsigned char *buf;
7735 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 1*4;
7736 const size_t checksumSize = checksumCalculator->checksumByteSize();
7737 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7738 buf = stream->alloc(totalSize);
7739 ptr = buf;
7740 int tmp = OP_glGetInternalformativ;memcpy(ptr, &tmp, 4); ptr += 4;
7741 memcpy(ptr, &totalSize, 4); ptr += 4;
7742
7743 memcpy(ptr, &target, 4); ptr += 4;
7744 memcpy(ptr, &internalformat, 4); ptr += 4;
7745 memcpy(ptr, &pname, 4); ptr += 4;
7746 memcpy(ptr, &bufSize, 4); ptr += 4;
7747 memcpy(ptr, &__size_params, 4); ptr += 4;
7748
7749 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7750 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7751
7752 stream->readback(params, __size_params);
7753 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
7754 if (useChecksum) {
7755 unsigned char *checksumBufPtr = NULL;
7756 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
7757 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7758 stream->readback(checksumBufPtr, checksumSize);
7759 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7760 ALOGE("glGetInternalformativ: GL communication error, please report this issue to b.android.com.\n");
7761 abort();
7762 }
7763 }
7764 }
7765
glBeginTransformFeedback_enc(void * self,GLenum primitiveMode)7766 void glBeginTransformFeedback_enc(void *self , GLenum primitiveMode)
7767 {
7768 ENCODER_DEBUG_LOG("glBeginTransformFeedback(primitiveMode:0x%08x)", primitiveMode);
7769 AEMU_SCOPED_TRACE("glBeginTransformFeedback encode");
7770
7771 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7772 IOStream *stream = ctx->m_stream;
7773 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7774 bool useChecksum = checksumCalculator->getVersion() > 0;
7775
7776 unsigned char *ptr;
7777 unsigned char *buf;
7778 const size_t sizeWithoutChecksum = 8 + 4;
7779 const size_t checksumSize = checksumCalculator->checksumByteSize();
7780 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7781 buf = stream->alloc(totalSize);
7782 ptr = buf;
7783 int tmp = OP_glBeginTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7784 memcpy(ptr, &totalSize, 4); ptr += 4;
7785
7786 memcpy(ptr, &primitiveMode, 4); ptr += 4;
7787
7788 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7789 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7790
7791 }
7792
glEndTransformFeedback_enc(void * self)7793 void glEndTransformFeedback_enc(void *self )
7794 {
7795 ENCODER_DEBUG_LOG("glEndTransformFeedback()");
7796 AEMU_SCOPED_TRACE("glEndTransformFeedback encode");
7797
7798 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7799 IOStream *stream = ctx->m_stream;
7800 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7801 bool useChecksum = checksumCalculator->getVersion() > 0;
7802
7803 unsigned char *ptr;
7804 unsigned char *buf;
7805 const size_t sizeWithoutChecksum = 8;
7806 const size_t checksumSize = checksumCalculator->checksumByteSize();
7807 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7808 buf = stream->alloc(totalSize);
7809 ptr = buf;
7810 int tmp = OP_glEndTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7811 memcpy(ptr, &totalSize, 4); ptr += 4;
7812
7813
7814 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7815 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7816
7817 }
7818
glGenTransformFeedbacks_enc(void * self,GLsizei n,GLuint * ids)7819 void glGenTransformFeedbacks_enc(void *self , GLsizei n, GLuint* ids)
7820 {
7821 ENCODER_DEBUG_LOG("glGenTransformFeedbacks(n:%d, ids:0x%08x)", n, ids);
7822 AEMU_SCOPED_TRACE("glGenTransformFeedbacks encode");
7823
7824 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7825 IOStream *stream = ctx->m_stream;
7826 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7827 bool useChecksum = checksumCalculator->getVersion() > 0;
7828
7829 const unsigned int __size_ids = (n * sizeof(GLuint));
7830 unsigned char *ptr;
7831 unsigned char *buf;
7832 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
7833 const size_t checksumSize = checksumCalculator->checksumByteSize();
7834 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7835 buf = stream->alloc(totalSize);
7836 ptr = buf;
7837 int tmp = OP_glGenTransformFeedbacks;memcpy(ptr, &tmp, 4); ptr += 4;
7838 memcpy(ptr, &totalSize, 4); ptr += 4;
7839
7840 memcpy(ptr, &n, 4); ptr += 4;
7841 memcpy(ptr, &__size_ids, 4); ptr += 4;
7842
7843 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7844 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7845
7846 stream->readback(ids, __size_ids);
7847 if (useChecksum) checksumCalculator->addBuffer(ids, __size_ids);
7848 if (useChecksum) {
7849 unsigned char *checksumBufPtr = NULL;
7850 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
7851 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7852 stream->readback(checksumBufPtr, checksumSize);
7853 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7854 ALOGE("glGenTransformFeedbacks: GL communication error, please report this issue to b.android.com.\n");
7855 abort();
7856 }
7857 }
7858 }
7859
glDeleteTransformFeedbacks_enc(void * self,GLsizei n,const GLuint * ids)7860 void glDeleteTransformFeedbacks_enc(void *self , GLsizei n, const GLuint* ids)
7861 {
7862 ENCODER_DEBUG_LOG("glDeleteTransformFeedbacks(n:%d, ids:0x%08x)", n, ids);
7863 AEMU_SCOPED_TRACE("glDeleteTransformFeedbacks encode");
7864
7865 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7866 IOStream *stream = ctx->m_stream;
7867 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7868 bool useChecksum = checksumCalculator->getVersion() > 0;
7869
7870 const unsigned int __size_ids = (n * sizeof(GLuint));
7871 unsigned char *ptr;
7872 unsigned char *buf;
7873 const size_t sizeWithoutChecksum = 8 + 4 + __size_ids + 1*4;
7874 const size_t checksumSize = checksumCalculator->checksumByteSize();
7875 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7876 buf = stream->alloc(totalSize);
7877 ptr = buf;
7878 int tmp = OP_glDeleteTransformFeedbacks;memcpy(ptr, &tmp, 4); ptr += 4;
7879 memcpy(ptr, &totalSize, 4); ptr += 4;
7880
7881 memcpy(ptr, &n, 4); ptr += 4;
7882 memcpy(ptr, &__size_ids, 4); ptr += 4;
7883 memcpy(ptr, ids, __size_ids);ptr += __size_ids;
7884
7885 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7886 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7887
7888 }
7889
glBindTransformFeedback_enc(void * self,GLenum target,GLuint id)7890 void glBindTransformFeedback_enc(void *self , GLenum target, GLuint id)
7891 {
7892 ENCODER_DEBUG_LOG("glBindTransformFeedback(target:0x%08x, id:%u)", target, id);
7893 AEMU_SCOPED_TRACE("glBindTransformFeedback encode");
7894
7895 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7896 IOStream *stream = ctx->m_stream;
7897 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7898 bool useChecksum = checksumCalculator->getVersion() > 0;
7899
7900 unsigned char *ptr;
7901 unsigned char *buf;
7902 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7903 const size_t checksumSize = checksumCalculator->checksumByteSize();
7904 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7905 buf = stream->alloc(totalSize);
7906 ptr = buf;
7907 int tmp = OP_glBindTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7908 memcpy(ptr, &totalSize, 4); ptr += 4;
7909
7910 memcpy(ptr, &target, 4); ptr += 4;
7911 memcpy(ptr, &id, 4); ptr += 4;
7912
7913 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7914 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7915
7916 }
7917
glPauseTransformFeedback_enc(void * self)7918 void glPauseTransformFeedback_enc(void *self )
7919 {
7920 ENCODER_DEBUG_LOG("glPauseTransformFeedback()");
7921 AEMU_SCOPED_TRACE("glPauseTransformFeedback encode");
7922
7923 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7924 IOStream *stream = ctx->m_stream;
7925 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7926 bool useChecksum = checksumCalculator->getVersion() > 0;
7927
7928 unsigned char *ptr;
7929 unsigned char *buf;
7930 const size_t sizeWithoutChecksum = 8;
7931 const size_t checksumSize = checksumCalculator->checksumByteSize();
7932 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7933 buf = stream->alloc(totalSize);
7934 ptr = buf;
7935 int tmp = OP_glPauseTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7936 memcpy(ptr, &totalSize, 4); ptr += 4;
7937
7938
7939 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7940 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7941
7942 }
7943
glResumeTransformFeedback_enc(void * self)7944 void glResumeTransformFeedback_enc(void *self )
7945 {
7946 ENCODER_DEBUG_LOG("glResumeTransformFeedback()");
7947 AEMU_SCOPED_TRACE("glResumeTransformFeedback encode");
7948
7949 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7950 IOStream *stream = ctx->m_stream;
7951 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7952 bool useChecksum = checksumCalculator->getVersion() > 0;
7953
7954 unsigned char *ptr;
7955 unsigned char *buf;
7956 const size_t sizeWithoutChecksum = 8;
7957 const size_t checksumSize = checksumCalculator->checksumByteSize();
7958 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7959 buf = stream->alloc(totalSize);
7960 ptr = buf;
7961 int tmp = OP_glResumeTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7962 memcpy(ptr, &totalSize, 4); ptr += 4;
7963
7964
7965 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7966 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7967
7968 }
7969
glIsTransformFeedback_enc(void * self,GLuint id)7970 GLboolean glIsTransformFeedback_enc(void *self , GLuint id)
7971 {
7972 ENCODER_DEBUG_LOG("glIsTransformFeedback(id:%u)", id);
7973 AEMU_SCOPED_TRACE("glIsTransformFeedback encode");
7974
7975 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7976 IOStream *stream = ctx->m_stream;
7977 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7978 bool useChecksum = checksumCalculator->getVersion() > 0;
7979
7980 unsigned char *ptr;
7981 unsigned char *buf;
7982 const size_t sizeWithoutChecksum = 8 + 4;
7983 const size_t checksumSize = checksumCalculator->checksumByteSize();
7984 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7985 buf = stream->alloc(totalSize);
7986 ptr = buf;
7987 int tmp = OP_glIsTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7988 memcpy(ptr, &totalSize, 4); ptr += 4;
7989
7990 memcpy(ptr, &id, 4); ptr += 4;
7991
7992 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7993 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7994
7995
7996 GLboolean retval;
7997 stream->readback(&retval, 1);
7998 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
7999 if (useChecksum) {
8000 unsigned char *checksumBufPtr = NULL;
8001 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8002 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8003 stream->readback(checksumBufPtr, checksumSize);
8004 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8005 ALOGE("glIsTransformFeedback: GL communication error, please report this issue to b.android.com.\n");
8006 abort();
8007 }
8008 }
8009 return retval;
8010 }
8011
glTransformFeedbackVaryingsAEMU_enc(void * self,GLuint program,GLsizei count,const char * packedVaryings,GLuint packedVaryingsLen,GLenum bufferMode)8012 void glTransformFeedbackVaryingsAEMU_enc(void *self , GLuint program, GLsizei count, const char* packedVaryings, GLuint packedVaryingsLen, GLenum bufferMode)
8013 {
8014 ENCODER_DEBUG_LOG("glTransformFeedbackVaryingsAEMU(program:%u, count:%d, packedVaryings:0x%08x, packedVaryingsLen:%u, bufferMode:0x%08x)", program, count, packedVaryings, packedVaryingsLen, bufferMode);
8015 AEMU_SCOPED_TRACE("glTransformFeedbackVaryingsAEMU encode");
8016
8017 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8018 IOStream *stream = ctx->m_stream;
8019 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8020 bool useChecksum = checksumCalculator->getVersion() > 0;
8021
8022 const unsigned int __size_packedVaryings = packedVaryingsLen;
8023 unsigned char *ptr;
8024 unsigned char *buf;
8025 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedVaryings + 4 + 4 + 1*4;
8026 const size_t checksumSize = checksumCalculator->checksumByteSize();
8027 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8028 buf = stream->alloc(totalSize);
8029 ptr = buf;
8030 int tmp = OP_glTransformFeedbackVaryingsAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
8031 memcpy(ptr, &totalSize, 4); ptr += 4;
8032
8033 memcpy(ptr, &program, 4); ptr += 4;
8034 memcpy(ptr, &count, 4); ptr += 4;
8035 memcpy(ptr, &__size_packedVaryings, 4); ptr += 4;
8036 memcpy(ptr, packedVaryings, __size_packedVaryings);ptr += __size_packedVaryings;
8037 memcpy(ptr, &packedVaryingsLen, 4); ptr += 4;
8038 memcpy(ptr, &bufferMode, 4); ptr += 4;
8039
8040 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8041 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8042
8043 }
8044
glGetTransformFeedbackVarying_enc(void * self,GLuint program,GLuint index,GLsizei bufSize,GLsizei * length,GLsizei * size,GLenum * type,char * name)8045 void glGetTransformFeedbackVarying_enc(void *self , GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, char* name)
8046 {
8047 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);
8048 AEMU_SCOPED_TRACE("glGetTransformFeedbackVarying encode");
8049
8050 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8051 IOStream *stream = ctx->m_stream;
8052 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8053 bool useChecksum = checksumCalculator->getVersion() > 0;
8054
8055 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
8056 const unsigned int __size_size = (sizeof(GLsizei));
8057 const unsigned int __size_type = ((type != NULL) ? (sizeof(GLenum)) : 0);
8058 const unsigned int __size_name = ((name != NULL) ? bufSize : 0);
8059 unsigned char *ptr;
8060 unsigned char *buf;
8061 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
8062 const size_t checksumSize = checksumCalculator->checksumByteSize();
8063 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8064 buf = stream->alloc(totalSize);
8065 ptr = buf;
8066 int tmp = OP_glGetTransformFeedbackVarying;memcpy(ptr, &tmp, 4); ptr += 4;
8067 memcpy(ptr, &totalSize, 4); ptr += 4;
8068
8069 memcpy(ptr, &program, 4); ptr += 4;
8070 memcpy(ptr, &index, 4); ptr += 4;
8071 memcpy(ptr, &bufSize, 4); ptr += 4;
8072 memcpy(ptr, &__size_length, 4); ptr += 4;
8073 memcpy(ptr, &__size_size, 4); ptr += 4;
8074 memcpy(ptr, &__size_type, 4); ptr += 4;
8075 memcpy(ptr, &__size_name, 4); ptr += 4;
8076
8077 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8078 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8079
8080 if (length != NULL) {
8081 stream->readback(length, __size_length);
8082 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
8083 }
8084 stream->readback(size, __size_size);
8085 if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
8086 if (type != NULL) {
8087 stream->readback(type, __size_type);
8088 if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
8089 }
8090 if (name != NULL) {
8091 stream->readback(name, __size_name);
8092 if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
8093 }
8094 if (useChecksum) {
8095 unsigned char *checksumBufPtr = NULL;
8096 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8097 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8098 stream->readback(checksumBufPtr, checksumSize);
8099 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8100 ALOGE("glGetTransformFeedbackVarying: GL communication error, please report this issue to b.android.com.\n");
8101 abort();
8102 }
8103 }
8104 }
8105
glGenSamplers_enc(void * self,GLsizei n,GLuint * samplers)8106 void glGenSamplers_enc(void *self , GLsizei n, GLuint* samplers)
8107 {
8108 ENCODER_DEBUG_LOG("glGenSamplers(n:%d, samplers:0x%08x)", n, samplers);
8109 AEMU_SCOPED_TRACE("glGenSamplers encode");
8110
8111 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8112 IOStream *stream = ctx->m_stream;
8113 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8114 bool useChecksum = checksumCalculator->getVersion() > 0;
8115
8116 const unsigned int __size_samplers = (n * sizeof(GLuint));
8117 unsigned char *ptr;
8118 unsigned char *buf;
8119 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
8120 const size_t checksumSize = checksumCalculator->checksumByteSize();
8121 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8122 buf = stream->alloc(totalSize);
8123 ptr = buf;
8124 int tmp = OP_glGenSamplers;memcpy(ptr, &tmp, 4); ptr += 4;
8125 memcpy(ptr, &totalSize, 4); ptr += 4;
8126
8127 memcpy(ptr, &n, 4); ptr += 4;
8128 memcpy(ptr, &__size_samplers, 4); ptr += 4;
8129
8130 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8131 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8132
8133 stream->readback(samplers, __size_samplers);
8134 if (useChecksum) checksumCalculator->addBuffer(samplers, __size_samplers);
8135 if (useChecksum) {
8136 unsigned char *checksumBufPtr = NULL;
8137 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8138 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8139 stream->readback(checksumBufPtr, checksumSize);
8140 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8141 ALOGE("glGenSamplers: GL communication error, please report this issue to b.android.com.\n");
8142 abort();
8143 }
8144 }
8145 }
8146
glDeleteSamplers_enc(void * self,GLsizei n,const GLuint * samplers)8147 void glDeleteSamplers_enc(void *self , GLsizei n, const GLuint* samplers)
8148 {
8149 ENCODER_DEBUG_LOG("glDeleteSamplers(n:%d, samplers:0x%08x)", n, samplers);
8150 AEMU_SCOPED_TRACE("glDeleteSamplers encode");
8151
8152 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8153 IOStream *stream = ctx->m_stream;
8154 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8155 bool useChecksum = checksumCalculator->getVersion() > 0;
8156
8157 const unsigned int __size_samplers = (n * sizeof(GLuint));
8158 unsigned char *ptr;
8159 unsigned char *buf;
8160 const size_t sizeWithoutChecksum = 8 + 4 + __size_samplers + 1*4;
8161 const size_t checksumSize = checksumCalculator->checksumByteSize();
8162 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8163 buf = stream->alloc(totalSize);
8164 ptr = buf;
8165 int tmp = OP_glDeleteSamplers;memcpy(ptr, &tmp, 4); ptr += 4;
8166 memcpy(ptr, &totalSize, 4); ptr += 4;
8167
8168 memcpy(ptr, &n, 4); ptr += 4;
8169 memcpy(ptr, &__size_samplers, 4); ptr += 4;
8170 memcpy(ptr, samplers, __size_samplers);ptr += __size_samplers;
8171
8172 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8173 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8174
8175 }
8176
glBindSampler_enc(void * self,GLuint unit,GLuint sampler)8177 void glBindSampler_enc(void *self , GLuint unit, GLuint sampler)
8178 {
8179 ENCODER_DEBUG_LOG("glBindSampler(unit:%u, sampler:%u)", unit, sampler);
8180 AEMU_SCOPED_TRACE("glBindSampler encode");
8181
8182 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8183 IOStream *stream = ctx->m_stream;
8184 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8185 bool useChecksum = checksumCalculator->getVersion() > 0;
8186
8187 unsigned char *ptr;
8188 unsigned char *buf;
8189 const size_t sizeWithoutChecksum = 8 + 4 + 4;
8190 const size_t checksumSize = checksumCalculator->checksumByteSize();
8191 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8192 buf = stream->alloc(totalSize);
8193 ptr = buf;
8194 int tmp = OP_glBindSampler;memcpy(ptr, &tmp, 4); ptr += 4;
8195 memcpy(ptr, &totalSize, 4); ptr += 4;
8196
8197 memcpy(ptr, &unit, 4); ptr += 4;
8198 memcpy(ptr, &sampler, 4); ptr += 4;
8199
8200 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8201 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8202
8203 }
8204
glSamplerParameterf_enc(void * self,GLuint sampler,GLenum pname,GLfloat param)8205 void glSamplerParameterf_enc(void *self , GLuint sampler, GLenum pname, GLfloat param)
8206 {
8207 ENCODER_DEBUG_LOG("glSamplerParameterf(sampler:%u, pname:0x%08x, param:%f)", sampler, pname, param);
8208 AEMU_SCOPED_TRACE("glSamplerParameterf encode");
8209
8210 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8211 IOStream *stream = ctx->m_stream;
8212 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8213 bool useChecksum = checksumCalculator->getVersion() > 0;
8214
8215 unsigned char *ptr;
8216 unsigned char *buf;
8217 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
8218 const size_t checksumSize = checksumCalculator->checksumByteSize();
8219 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8220 buf = stream->alloc(totalSize);
8221 ptr = buf;
8222 int tmp = OP_glSamplerParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
8223 memcpy(ptr, &totalSize, 4); ptr += 4;
8224
8225 memcpy(ptr, &sampler, 4); ptr += 4;
8226 memcpy(ptr, &pname, 4); ptr += 4;
8227 memcpy(ptr, ¶m, 4); ptr += 4;
8228
8229 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8230 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8231
8232 }
8233
glSamplerParameteri_enc(void * self,GLuint sampler,GLenum pname,GLint param)8234 void glSamplerParameteri_enc(void *self , GLuint sampler, GLenum pname, GLint param)
8235 {
8236 ENCODER_DEBUG_LOG("glSamplerParameteri(sampler:%u, pname:0x%08x, param:%d)", sampler, pname, param);
8237 AEMU_SCOPED_TRACE("glSamplerParameteri encode");
8238
8239 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8240 IOStream *stream = ctx->m_stream;
8241 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8242 bool useChecksum = checksumCalculator->getVersion() > 0;
8243
8244 unsigned char *ptr;
8245 unsigned char *buf;
8246 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
8247 const size_t checksumSize = checksumCalculator->checksumByteSize();
8248 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8249 buf = stream->alloc(totalSize);
8250 ptr = buf;
8251 int tmp = OP_glSamplerParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
8252 memcpy(ptr, &totalSize, 4); ptr += 4;
8253
8254 memcpy(ptr, &sampler, 4); ptr += 4;
8255 memcpy(ptr, &pname, 4); ptr += 4;
8256 memcpy(ptr, ¶m, 4); ptr += 4;
8257
8258 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8259 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8260
8261 }
8262
glSamplerParameterfv_enc(void * self,GLuint sampler,GLenum pname,const GLfloat * params)8263 void glSamplerParameterfv_enc(void *self , GLuint sampler, GLenum pname, const GLfloat* params)
8264 {
8265 ENCODER_DEBUG_LOG("glSamplerParameterfv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8266 AEMU_SCOPED_TRACE("glSamplerParameterfv encode");
8267
8268 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8269 IOStream *stream = ctx->m_stream;
8270 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8271 bool useChecksum = checksumCalculator->getVersion() > 0;
8272
8273 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
8274 unsigned char *ptr;
8275 unsigned char *buf;
8276 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
8277 const size_t checksumSize = checksumCalculator->checksumByteSize();
8278 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8279 buf = stream->alloc(totalSize);
8280 ptr = buf;
8281 int tmp = OP_glSamplerParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
8282 memcpy(ptr, &totalSize, 4); ptr += 4;
8283
8284 memcpy(ptr, &sampler, 4); ptr += 4;
8285 memcpy(ptr, &pname, 4); ptr += 4;
8286 memcpy(ptr, &__size_params, 4); ptr += 4;
8287 memcpy(ptr, params, __size_params);ptr += __size_params;
8288
8289 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8290 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8291
8292 }
8293
glSamplerParameteriv_enc(void * self,GLuint sampler,GLenum pname,const GLint * params)8294 void glSamplerParameteriv_enc(void *self , GLuint sampler, GLenum pname, const GLint* params)
8295 {
8296 ENCODER_DEBUG_LOG("glSamplerParameteriv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8297 AEMU_SCOPED_TRACE("glSamplerParameteriv encode");
8298
8299 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8300 IOStream *stream = ctx->m_stream;
8301 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8302 bool useChecksum = checksumCalculator->getVersion() > 0;
8303
8304 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
8305 unsigned char *ptr;
8306 unsigned char *buf;
8307 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
8308 const size_t checksumSize = checksumCalculator->checksumByteSize();
8309 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8310 buf = stream->alloc(totalSize);
8311 ptr = buf;
8312 int tmp = OP_glSamplerParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
8313 memcpy(ptr, &totalSize, 4); ptr += 4;
8314
8315 memcpy(ptr, &sampler, 4); ptr += 4;
8316 memcpy(ptr, &pname, 4); ptr += 4;
8317 memcpy(ptr, &__size_params, 4); ptr += 4;
8318 memcpy(ptr, params, __size_params);ptr += __size_params;
8319
8320 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8321 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8322
8323 }
8324
glGetSamplerParameterfv_enc(void * self,GLuint sampler,GLenum pname,GLfloat * params)8325 void glGetSamplerParameterfv_enc(void *self , GLuint sampler, GLenum pname, GLfloat* params)
8326 {
8327 ENCODER_DEBUG_LOG("glGetSamplerParameterfv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8328 AEMU_SCOPED_TRACE("glGetSamplerParameterfv encode");
8329
8330 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8331 IOStream *stream = ctx->m_stream;
8332 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8333 bool useChecksum = checksumCalculator->getVersion() > 0;
8334
8335 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
8336 unsigned char *ptr;
8337 unsigned char *buf;
8338 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8339 const size_t checksumSize = checksumCalculator->checksumByteSize();
8340 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8341 buf = stream->alloc(totalSize);
8342 ptr = buf;
8343 int tmp = OP_glGetSamplerParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
8344 memcpy(ptr, &totalSize, 4); ptr += 4;
8345
8346 memcpy(ptr, &sampler, 4); ptr += 4;
8347 memcpy(ptr, &pname, 4); ptr += 4;
8348 memcpy(ptr, &__size_params, 4); ptr += 4;
8349
8350 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8351 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8352
8353 stream->readback(params, __size_params);
8354 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8355 if (useChecksum) {
8356 unsigned char *checksumBufPtr = NULL;
8357 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8358 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8359 stream->readback(checksumBufPtr, checksumSize);
8360 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8361 ALOGE("glGetSamplerParameterfv: GL communication error, please report this issue to b.android.com.\n");
8362 abort();
8363 }
8364 }
8365 }
8366
glGetSamplerParameteriv_enc(void * self,GLuint sampler,GLenum pname,GLint * params)8367 void glGetSamplerParameteriv_enc(void *self , GLuint sampler, GLenum pname, GLint* params)
8368 {
8369 ENCODER_DEBUG_LOG("glGetSamplerParameteriv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8370 AEMU_SCOPED_TRACE("glGetSamplerParameteriv encode");
8371
8372 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8373 IOStream *stream = ctx->m_stream;
8374 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8375 bool useChecksum = checksumCalculator->getVersion() > 0;
8376
8377 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
8378 unsigned char *ptr;
8379 unsigned char *buf;
8380 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8381 const size_t checksumSize = checksumCalculator->checksumByteSize();
8382 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8383 buf = stream->alloc(totalSize);
8384 ptr = buf;
8385 int tmp = OP_glGetSamplerParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
8386 memcpy(ptr, &totalSize, 4); ptr += 4;
8387
8388 memcpy(ptr, &sampler, 4); ptr += 4;
8389 memcpy(ptr, &pname, 4); ptr += 4;
8390 memcpy(ptr, &__size_params, 4); ptr += 4;
8391
8392 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8393 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8394
8395 stream->readback(params, __size_params);
8396 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8397 if (useChecksum) {
8398 unsigned char *checksumBufPtr = NULL;
8399 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8400 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8401 stream->readback(checksumBufPtr, checksumSize);
8402 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8403 ALOGE("glGetSamplerParameteriv: GL communication error, please report this issue to b.android.com.\n");
8404 abort();
8405 }
8406 }
8407 }
8408
glIsSampler_enc(void * self,GLuint sampler)8409 GLboolean glIsSampler_enc(void *self , GLuint sampler)
8410 {
8411 ENCODER_DEBUG_LOG("glIsSampler(sampler:%u)", sampler);
8412 AEMU_SCOPED_TRACE("glIsSampler encode");
8413
8414 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8415 IOStream *stream = ctx->m_stream;
8416 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8417 bool useChecksum = checksumCalculator->getVersion() > 0;
8418
8419 unsigned char *ptr;
8420 unsigned char *buf;
8421 const size_t sizeWithoutChecksum = 8 + 4;
8422 const size_t checksumSize = checksumCalculator->checksumByteSize();
8423 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8424 buf = stream->alloc(totalSize);
8425 ptr = buf;
8426 int tmp = OP_glIsSampler;memcpy(ptr, &tmp, 4); ptr += 4;
8427 memcpy(ptr, &totalSize, 4); ptr += 4;
8428
8429 memcpy(ptr, &sampler, 4); ptr += 4;
8430
8431 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8432 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8433
8434
8435 GLboolean retval;
8436 stream->readback(&retval, 1);
8437 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
8438 if (useChecksum) {
8439 unsigned char *checksumBufPtr = NULL;
8440 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8441 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8442 stream->readback(checksumBufPtr, checksumSize);
8443 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8444 ALOGE("glIsSampler: GL communication error, please report this issue to b.android.com.\n");
8445 abort();
8446 }
8447 }
8448 return retval;
8449 }
8450
glGenQueries_enc(void * self,GLsizei n,GLuint * queries)8451 void glGenQueries_enc(void *self , GLsizei n, GLuint* queries)
8452 {
8453 ENCODER_DEBUG_LOG("glGenQueries(n:%d, queries:0x%08x)", n, queries);
8454 AEMU_SCOPED_TRACE("glGenQueries encode");
8455
8456 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8457 IOStream *stream = ctx->m_stream;
8458 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8459 bool useChecksum = checksumCalculator->getVersion() > 0;
8460
8461 const unsigned int __size_queries = (n * sizeof(GLuint));
8462 unsigned char *ptr;
8463 unsigned char *buf;
8464 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
8465 const size_t checksumSize = checksumCalculator->checksumByteSize();
8466 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8467 buf = stream->alloc(totalSize);
8468 ptr = buf;
8469 int tmp = OP_glGenQueries;memcpy(ptr, &tmp, 4); ptr += 4;
8470 memcpy(ptr, &totalSize, 4); ptr += 4;
8471
8472 memcpy(ptr, &n, 4); ptr += 4;
8473 memcpy(ptr, &__size_queries, 4); ptr += 4;
8474
8475 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8476 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8477
8478 stream->readback(queries, __size_queries);
8479 if (useChecksum) checksumCalculator->addBuffer(queries, __size_queries);
8480 if (useChecksum) {
8481 unsigned char *checksumBufPtr = NULL;
8482 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8483 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8484 stream->readback(checksumBufPtr, checksumSize);
8485 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8486 ALOGE("glGenQueries: GL communication error, please report this issue to b.android.com.\n");
8487 abort();
8488 }
8489 }
8490 }
8491
glDeleteQueries_enc(void * self,GLsizei n,const GLuint * queries)8492 void glDeleteQueries_enc(void *self , GLsizei n, const GLuint* queries)
8493 {
8494 ENCODER_DEBUG_LOG("glDeleteQueries(n:%d, queries:0x%08x)", n, queries);
8495 AEMU_SCOPED_TRACE("glDeleteQueries encode");
8496
8497 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8498 IOStream *stream = ctx->m_stream;
8499 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8500 bool useChecksum = checksumCalculator->getVersion() > 0;
8501
8502 const unsigned int __size_queries = (n * sizeof(GLuint));
8503 unsigned char *ptr;
8504 unsigned char *buf;
8505 const size_t sizeWithoutChecksum = 8 + 4 + __size_queries + 1*4;
8506 const size_t checksumSize = checksumCalculator->checksumByteSize();
8507 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8508 buf = stream->alloc(totalSize);
8509 ptr = buf;
8510 int tmp = OP_glDeleteQueries;memcpy(ptr, &tmp, 4); ptr += 4;
8511 memcpy(ptr, &totalSize, 4); ptr += 4;
8512
8513 memcpy(ptr, &n, 4); ptr += 4;
8514 memcpy(ptr, &__size_queries, 4); ptr += 4;
8515 memcpy(ptr, queries, __size_queries);ptr += __size_queries;
8516
8517 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8518 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8519
8520 }
8521
glBeginQuery_enc(void * self,GLenum target,GLuint query)8522 void glBeginQuery_enc(void *self , GLenum target, GLuint query)
8523 {
8524 ENCODER_DEBUG_LOG("glBeginQuery(target:0x%08x, query:%u)", target, query);
8525 AEMU_SCOPED_TRACE("glBeginQuery encode");
8526
8527 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8528 IOStream *stream = ctx->m_stream;
8529 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8530 bool useChecksum = checksumCalculator->getVersion() > 0;
8531
8532 unsigned char *ptr;
8533 unsigned char *buf;
8534 const size_t sizeWithoutChecksum = 8 + 4 + 4;
8535 const size_t checksumSize = checksumCalculator->checksumByteSize();
8536 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8537 buf = stream->alloc(totalSize);
8538 ptr = buf;
8539 int tmp = OP_glBeginQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8540 memcpy(ptr, &totalSize, 4); ptr += 4;
8541
8542 memcpy(ptr, &target, 4); ptr += 4;
8543 memcpy(ptr, &query, 4); ptr += 4;
8544
8545 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8546 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8547
8548 }
8549
glEndQuery_enc(void * self,GLenum target)8550 void glEndQuery_enc(void *self , GLenum target)
8551 {
8552 ENCODER_DEBUG_LOG("glEndQuery(target:0x%08x)", target);
8553 AEMU_SCOPED_TRACE("glEndQuery encode");
8554
8555 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8556 IOStream *stream = ctx->m_stream;
8557 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8558 bool useChecksum = checksumCalculator->getVersion() > 0;
8559
8560 unsigned char *ptr;
8561 unsigned char *buf;
8562 const size_t sizeWithoutChecksum = 8 + 4;
8563 const size_t checksumSize = checksumCalculator->checksumByteSize();
8564 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8565 buf = stream->alloc(totalSize);
8566 ptr = buf;
8567 int tmp = OP_glEndQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8568 memcpy(ptr, &totalSize, 4); ptr += 4;
8569
8570 memcpy(ptr, &target, 4); ptr += 4;
8571
8572 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8573 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8574
8575 }
8576
glGetQueryiv_enc(void * self,GLenum target,GLenum pname,GLint * params)8577 void glGetQueryiv_enc(void *self , GLenum target, GLenum pname, GLint* params)
8578 {
8579 ENCODER_DEBUG_LOG("glGetQueryiv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
8580 AEMU_SCOPED_TRACE("glGetQueryiv encode");
8581
8582 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8583 IOStream *stream = ctx->m_stream;
8584 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8585 bool useChecksum = checksumCalculator->getVersion() > 0;
8586
8587 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
8588 unsigned char *ptr;
8589 unsigned char *buf;
8590 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8591 const size_t checksumSize = checksumCalculator->checksumByteSize();
8592 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8593 buf = stream->alloc(totalSize);
8594 ptr = buf;
8595 int tmp = OP_glGetQueryiv;memcpy(ptr, &tmp, 4); ptr += 4;
8596 memcpy(ptr, &totalSize, 4); ptr += 4;
8597
8598 memcpy(ptr, &target, 4); ptr += 4;
8599 memcpy(ptr, &pname, 4); ptr += 4;
8600 memcpy(ptr, &__size_params, 4); ptr += 4;
8601
8602 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8603 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8604
8605 stream->readback(params, __size_params);
8606 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8607 if (useChecksum) {
8608 unsigned char *checksumBufPtr = NULL;
8609 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8610 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8611 stream->readback(checksumBufPtr, checksumSize);
8612 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8613 ALOGE("glGetQueryiv: GL communication error, please report this issue to b.android.com.\n");
8614 abort();
8615 }
8616 }
8617 }
8618
glGetQueryObjectuiv_enc(void * self,GLuint query,GLenum pname,GLuint * params)8619 void glGetQueryObjectuiv_enc(void *self , GLuint query, GLenum pname, GLuint* params)
8620 {
8621 ENCODER_DEBUG_LOG("glGetQueryObjectuiv(query:%u, pname:0x%08x, params:0x%08x)", query, pname, params);
8622 AEMU_SCOPED_TRACE("glGetQueryObjectuiv encode");
8623
8624 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8625 IOStream *stream = ctx->m_stream;
8626 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8627 bool useChecksum = checksumCalculator->getVersion() > 0;
8628
8629 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLuint));
8630 unsigned char *ptr;
8631 unsigned char *buf;
8632 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8633 const size_t checksumSize = checksumCalculator->checksumByteSize();
8634 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8635 buf = stream->alloc(totalSize);
8636 ptr = buf;
8637 int tmp = OP_glGetQueryObjectuiv;memcpy(ptr, &tmp, 4); ptr += 4;
8638 memcpy(ptr, &totalSize, 4); ptr += 4;
8639
8640 memcpy(ptr, &query, 4); ptr += 4;
8641 memcpy(ptr, &pname, 4); ptr += 4;
8642 memcpy(ptr, &__size_params, 4); ptr += 4;
8643
8644 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8645 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8646
8647 stream->readback(params, __size_params);
8648 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8649 if (useChecksum) {
8650 unsigned char *checksumBufPtr = NULL;
8651 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8652 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8653 stream->readback(checksumBufPtr, checksumSize);
8654 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8655 ALOGE("glGetQueryObjectuiv: GL communication error, please report this issue to b.android.com.\n");
8656 abort();
8657 }
8658 }
8659 }
8660
glIsQuery_enc(void * self,GLuint query)8661 GLboolean glIsQuery_enc(void *self , GLuint query)
8662 {
8663 ENCODER_DEBUG_LOG("glIsQuery(query:%u)", query);
8664 AEMU_SCOPED_TRACE("glIsQuery encode");
8665
8666 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8667 IOStream *stream = ctx->m_stream;
8668 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8669 bool useChecksum = checksumCalculator->getVersion() > 0;
8670
8671 unsigned char *ptr;
8672 unsigned char *buf;
8673 const size_t sizeWithoutChecksum = 8 + 4;
8674 const size_t checksumSize = checksumCalculator->checksumByteSize();
8675 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8676 buf = stream->alloc(totalSize);
8677 ptr = buf;
8678 int tmp = OP_glIsQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8679 memcpy(ptr, &totalSize, 4); ptr += 4;
8680
8681 memcpy(ptr, &query, 4); ptr += 4;
8682
8683 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8684 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8685
8686
8687 GLboolean retval;
8688 stream->readback(&retval, 1);
8689 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
8690 if (useChecksum) {
8691 unsigned char *checksumBufPtr = NULL;
8692 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8693 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8694 stream->readback(checksumBufPtr, checksumSize);
8695 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8696 ALOGE("glIsQuery: GL communication error, please report this issue to b.android.com.\n");
8697 abort();
8698 }
8699 }
8700 return retval;
8701 }
8702
glProgramParameteri_enc(void * self,GLuint program,GLenum pname,GLint value)8703 void glProgramParameteri_enc(void *self , GLuint program, GLenum pname, GLint value)
8704 {
8705 ENCODER_DEBUG_LOG("glProgramParameteri(program:%u, pname:0x%08x, value:%d)", program, pname, value);
8706 AEMU_SCOPED_TRACE("glProgramParameteri encode");
8707
8708 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8709 IOStream *stream = ctx->m_stream;
8710 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8711 bool useChecksum = checksumCalculator->getVersion() > 0;
8712
8713 unsigned char *ptr;
8714 unsigned char *buf;
8715 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
8716 const size_t checksumSize = checksumCalculator->checksumByteSize();
8717 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8718 buf = stream->alloc(totalSize);
8719 ptr = buf;
8720 int tmp = OP_glProgramParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
8721 memcpy(ptr, &totalSize, 4); ptr += 4;
8722
8723 memcpy(ptr, &program, 4); ptr += 4;
8724 memcpy(ptr, &pname, 4); ptr += 4;
8725 memcpy(ptr, &value, 4); ptr += 4;
8726
8727 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8728 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8729
8730 }
8731
glProgramBinary_enc(void * self,GLuint program,GLenum binaryFormat,const void * binary,GLsizei length)8732 void glProgramBinary_enc(void *self , GLuint program, GLenum binaryFormat, const void* binary, GLsizei length)
8733 {
8734 ENCODER_DEBUG_LOG("glProgramBinary(program:%u, binaryFormat:0x%08x, binary:0x%08x, length:%d)", program, binaryFormat, binary, length);
8735 AEMU_SCOPED_TRACE("glProgramBinary encode");
8736
8737 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8738 IOStream *stream = ctx->m_stream;
8739 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8740 bool useChecksum = checksumCalculator->getVersion() > 0;
8741
8742 const unsigned int __size_binary = length;
8743 unsigned char *ptr;
8744 unsigned char *buf;
8745 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_binary + 4 + 1*4;
8746 const size_t checksumSize = checksumCalculator->checksumByteSize();
8747 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8748 buf = stream->alloc(totalSize);
8749 ptr = buf;
8750 int tmp = OP_glProgramBinary;memcpy(ptr, &tmp, 4); ptr += 4;
8751 memcpy(ptr, &totalSize, 4); ptr += 4;
8752
8753 memcpy(ptr, &program, 4); ptr += 4;
8754 memcpy(ptr, &binaryFormat, 4); ptr += 4;
8755 memcpy(ptr, &__size_binary, 4); ptr += 4;
8756 memcpy(ptr, binary, __size_binary);ptr += __size_binary;
8757 memcpy(ptr, &length, 4); ptr += 4;
8758
8759 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8760 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8761
8762 }
8763
glGetProgramBinary_enc(void * self,GLuint program,GLsizei bufSize,GLsizei * length,GLenum * binaryFormat,void * binary)8764 void glGetProgramBinary_enc(void *self , GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void* binary)
8765 {
8766 ENCODER_DEBUG_LOG("glGetProgramBinary(program:%u, bufSize:%d, length:0x%08x, binaryFormat:0x%08x, binary:0x%08x)", program, bufSize, length, binaryFormat, binary);
8767 AEMU_SCOPED_TRACE("glGetProgramBinary encode");
8768
8769 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8770 IOStream *stream = ctx->m_stream;
8771 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8772 bool useChecksum = checksumCalculator->getVersion() > 0;
8773
8774 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
8775 const unsigned int __size_binaryFormat = (sizeof(GLenum));
8776 const unsigned int __size_binary = bufSize;
8777 unsigned char *ptr;
8778 unsigned char *buf;
8779 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 0 + 3*4;
8780 const size_t checksumSize = checksumCalculator->checksumByteSize();
8781 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8782 buf = stream->alloc(totalSize);
8783 ptr = buf;
8784 int tmp = OP_glGetProgramBinary;memcpy(ptr, &tmp, 4); ptr += 4;
8785 memcpy(ptr, &totalSize, 4); ptr += 4;
8786
8787 memcpy(ptr, &program, 4); ptr += 4;
8788 memcpy(ptr, &bufSize, 4); ptr += 4;
8789 memcpy(ptr, &__size_length, 4); ptr += 4;
8790 memcpy(ptr, &__size_binaryFormat, 4); ptr += 4;
8791 memcpy(ptr, &__size_binary, 4); ptr += 4;
8792
8793 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8794 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8795
8796 if (length != NULL) {
8797 stream->readback(length, __size_length);
8798 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
8799 }
8800 stream->readback(binaryFormat, __size_binaryFormat);
8801 if (useChecksum) checksumCalculator->addBuffer(binaryFormat, __size_binaryFormat);
8802 stream->readback(binary, __size_binary);
8803 if (useChecksum) checksumCalculator->addBuffer(binary, __size_binary);
8804 if (useChecksum) {
8805 unsigned char *checksumBufPtr = NULL;
8806 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8807 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8808 stream->readback(checksumBufPtr, checksumSize);
8809 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8810 ALOGE("glGetProgramBinary: GL communication error, please report this issue to b.android.com.\n");
8811 abort();
8812 }
8813 }
8814 }
8815
glGetFragDataLocation_enc(void * self,GLuint program,const char * name)8816 GLint glGetFragDataLocation_enc(void *self , GLuint program, const char* name)
8817 {
8818 ENCODER_DEBUG_LOG("glGetFragDataLocation(program:%u, name:0x%08x)", program, name);
8819 AEMU_SCOPED_TRACE("glGetFragDataLocation encode");
8820
8821 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8822 IOStream *stream = ctx->m_stream;
8823 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8824 bool useChecksum = checksumCalculator->getVersion() > 0;
8825
8826 const unsigned int __size_name = (strlen(name) + 1);
8827 unsigned char *ptr;
8828 unsigned char *buf;
8829 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
8830 const size_t checksumSize = checksumCalculator->checksumByteSize();
8831 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8832 buf = stream->alloc(totalSize);
8833 ptr = buf;
8834 int tmp = OP_glGetFragDataLocation;memcpy(ptr, &tmp, 4); ptr += 4;
8835 memcpy(ptr, &totalSize, 4); ptr += 4;
8836
8837 memcpy(ptr, &program, 4); ptr += 4;
8838 memcpy(ptr, &__size_name, 4); ptr += 4;
8839 memcpy(ptr, name, __size_name);ptr += __size_name;
8840
8841 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8842 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8843
8844
8845 GLint retval;
8846 stream->readback(&retval, 4);
8847 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
8848 if (useChecksum) {
8849 unsigned char *checksumBufPtr = NULL;
8850 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8851 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8852 stream->readback(checksumBufPtr, checksumSize);
8853 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8854 ALOGE("glGetFragDataLocation: GL communication error, please report this issue to b.android.com.\n");
8855 abort();
8856 }
8857 }
8858 return retval;
8859 }
8860
glGetInteger64v_enc(void * self,GLenum pname,GLint64 * data)8861 void glGetInteger64v_enc(void *self , GLenum pname, GLint64* data)
8862 {
8863 ENCODER_DEBUG_LOG("glGetInteger64v(pname:0x%08x, data:%p)", pname, data);
8864 AEMU_SCOPED_TRACE("glGetInteger64v encode");
8865
8866 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8867 IOStream *stream = ctx->m_stream;
8868 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8869 bool useChecksum = checksumCalculator->getVersion() > 0;
8870
8871 const unsigned int __size_data = (glUtilsParamSize(pname) * sizeof(GLint64));
8872 unsigned char *ptr;
8873 unsigned char *buf;
8874 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
8875 const size_t checksumSize = checksumCalculator->checksumByteSize();
8876 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8877 buf = stream->alloc(totalSize);
8878 ptr = buf;
8879 int tmp = OP_glGetInteger64v;memcpy(ptr, &tmp, 4); ptr += 4;
8880 memcpy(ptr, &totalSize, 4); ptr += 4;
8881
8882 memcpy(ptr, &pname, 4); ptr += 4;
8883 memcpy(ptr, &__size_data, 4); ptr += 4;
8884
8885 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8886 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8887
8888 stream->readback(data, __size_data);
8889 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8890 if (useChecksum) {
8891 unsigned char *checksumBufPtr = NULL;
8892 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8893 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8894 stream->readback(checksumBufPtr, checksumSize);
8895 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8896 ALOGE("glGetInteger64v: GL communication error, please report this issue to b.android.com.\n");
8897 abort();
8898 }
8899 }
8900 }
8901
glGetIntegeri_v_enc(void * self,GLenum target,GLuint index,GLint * data)8902 void glGetIntegeri_v_enc(void *self , GLenum target, GLuint index, GLint* data)
8903 {
8904 ENCODER_DEBUG_LOG("glGetIntegeri_v(target:0x%08x, index:%u, data:0x%08x)", target, index, data);
8905 AEMU_SCOPED_TRACE("glGetIntegeri_v encode");
8906
8907 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8908 IOStream *stream = ctx->m_stream;
8909 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8910 bool useChecksum = checksumCalculator->getVersion() > 0;
8911
8912 const unsigned int __size_data = (sizeof(GLint));
8913 unsigned char *ptr;
8914 unsigned char *buf;
8915 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8916 const size_t checksumSize = checksumCalculator->checksumByteSize();
8917 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8918 buf = stream->alloc(totalSize);
8919 ptr = buf;
8920 int tmp = OP_glGetIntegeri_v;memcpy(ptr, &tmp, 4); ptr += 4;
8921 memcpy(ptr, &totalSize, 4); ptr += 4;
8922
8923 memcpy(ptr, &target, 4); ptr += 4;
8924 memcpy(ptr, &index, 4); ptr += 4;
8925 memcpy(ptr, &__size_data, 4); ptr += 4;
8926
8927 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8928 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8929
8930 stream->readback(data, __size_data);
8931 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8932 if (useChecksum) {
8933 unsigned char *checksumBufPtr = NULL;
8934 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8935 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8936 stream->readback(checksumBufPtr, checksumSize);
8937 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8938 ALOGE("glGetIntegeri_v: GL communication error, please report this issue to b.android.com.\n");
8939 abort();
8940 }
8941 }
8942 }
8943
glGetInteger64i_v_enc(void * self,GLenum target,GLuint index,GLint64 * data)8944 void glGetInteger64i_v_enc(void *self , GLenum target, GLuint index, GLint64* data)
8945 {
8946 ENCODER_DEBUG_LOG("glGetInteger64i_v(target:0x%08x, index:%u, data:%p)", target, index, data);
8947 AEMU_SCOPED_TRACE("glGetInteger64i_v encode");
8948
8949 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8950 IOStream *stream = ctx->m_stream;
8951 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8952 bool useChecksum = checksumCalculator->getVersion() > 0;
8953
8954 const unsigned int __size_data = (sizeof(GLint64));
8955 unsigned char *ptr;
8956 unsigned char *buf;
8957 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8958 const size_t checksumSize = checksumCalculator->checksumByteSize();
8959 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8960 buf = stream->alloc(totalSize);
8961 ptr = buf;
8962 int tmp = OP_glGetInteger64i_v;memcpy(ptr, &tmp, 4); ptr += 4;
8963 memcpy(ptr, &totalSize, 4); ptr += 4;
8964
8965 memcpy(ptr, &target, 4); ptr += 4;
8966 memcpy(ptr, &index, 4); ptr += 4;
8967 memcpy(ptr, &__size_data, 4); ptr += 4;
8968
8969 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8970 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8971
8972 stream->readback(data, __size_data);
8973 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8974 if (useChecksum) {
8975 unsigned char *checksumBufPtr = NULL;
8976 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8977 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8978 stream->readback(checksumBufPtr, checksumSize);
8979 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8980 ALOGE("glGetInteger64i_v: GL communication error, please report this issue to b.android.com.\n");
8981 abort();
8982 }
8983 }
8984 }
8985
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)8986 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)
8987 {
8988 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);
8989 AEMU_SCOPED_TRACE("glTexImage3D encode");
8990
8991 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8992 IOStream *stream = ctx->m_stream;
8993 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8994 bool useChecksum = checksumCalculator->getVersion() > 0;
8995
8996 const unsigned int __size_data = ((data != NULL) ? glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
8997 unsigned char *ptr;
8998 unsigned char *buf;
8999 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
9000 const size_t checksumSize = checksumCalculator->checksumByteSize();
9001 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9002 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9003 ptr = buf;
9004 int tmp = OP_glTexImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9005 memcpy(ptr, &totalSize, 4); ptr += 4;
9006
9007 memcpy(ptr, &target, 4); ptr += 4;
9008 memcpy(ptr, &level, 4); ptr += 4;
9009 memcpy(ptr, &internalFormat, 4); ptr += 4;
9010 memcpy(ptr, &width, 4); ptr += 4;
9011 memcpy(ptr, &height, 4); ptr += 4;
9012 memcpy(ptr, &depth, 4); ptr += 4;
9013 memcpy(ptr, &border, 4); ptr += 4;
9014 memcpy(ptr, &format, 4); ptr += 4;
9015 memcpy(ptr, &type, 4); ptr += 4;
9016
9017 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9018 stream->flush();
9019 stream->writeFully(&__size_data,4);
9020 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9021 if (data != NULL) {
9022 stream->uploadPixels(self, width, height, depth, format, type, data);
9023 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9024 }
9025 buf = stream->alloc(checksumSize);
9026 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9027
9028 }
9029
glTexImage3DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,GLuint offset)9030 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)
9031 {
9032 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);
9033 AEMU_SCOPED_TRACE("glTexImage3DOffsetAEMU encode");
9034
9035 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9036 IOStream *stream = ctx->m_stream;
9037 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9038 bool useChecksum = checksumCalculator->getVersion() > 0;
9039
9040 unsigned char *ptr;
9041 unsigned char *buf;
9042 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9043 const size_t checksumSize = checksumCalculator->checksumByteSize();
9044 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9045 buf = stream->alloc(totalSize);
9046 ptr = buf;
9047 int tmp = OP_glTexImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9048 memcpy(ptr, &totalSize, 4); ptr += 4;
9049
9050 memcpy(ptr, &target, 4); ptr += 4;
9051 memcpy(ptr, &level, 4); ptr += 4;
9052 memcpy(ptr, &internalFormat, 4); ptr += 4;
9053 memcpy(ptr, &width, 4); ptr += 4;
9054 memcpy(ptr, &height, 4); ptr += 4;
9055 memcpy(ptr, &depth, 4); ptr += 4;
9056 memcpy(ptr, &border, 4); ptr += 4;
9057 memcpy(ptr, &format, 4); ptr += 4;
9058 memcpy(ptr, &type, 4); ptr += 4;
9059 memcpy(ptr, &offset, 4); ptr += 4;
9060
9061 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9062 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9063
9064 }
9065
glTexStorage3D_enc(void * self,GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth)9066 void glTexStorage3D_enc(void *self , GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
9067 {
9068 ENCODER_DEBUG_LOG("glTexStorage3D(target:0x%08x, levels:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d)", target, levels, internalformat, width, height, depth);
9069 AEMU_SCOPED_TRACE("glTexStorage3D encode");
9070
9071 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9072 IOStream *stream = ctx->m_stream;
9073 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9074 bool useChecksum = checksumCalculator->getVersion() > 0;
9075
9076 unsigned char *ptr;
9077 unsigned char *buf;
9078 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
9079 const size_t checksumSize = checksumCalculator->checksumByteSize();
9080 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9081 buf = stream->alloc(totalSize);
9082 ptr = buf;
9083 int tmp = OP_glTexStorage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9084 memcpy(ptr, &totalSize, 4); ptr += 4;
9085
9086 memcpy(ptr, &target, 4); ptr += 4;
9087 memcpy(ptr, &levels, 4); ptr += 4;
9088 memcpy(ptr, &internalformat, 4); ptr += 4;
9089 memcpy(ptr, &width, 4); ptr += 4;
9090 memcpy(ptr, &height, 4); ptr += 4;
9091 memcpy(ptr, &depth, 4); ptr += 4;
9092
9093 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9094 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9095
9096 }
9097
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)9098 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)
9099 {
9100 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);
9101 AEMU_SCOPED_TRACE("glTexSubImage3D encode");
9102
9103 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9104 IOStream *stream = ctx->m_stream;
9105 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9106 bool useChecksum = checksumCalculator->getVersion() > 0;
9107
9108 const unsigned int __size_data = ((data != NULL) ? glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
9109 unsigned char *ptr;
9110 unsigned char *buf;
9111 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
9112 const size_t checksumSize = checksumCalculator->checksumByteSize();
9113 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9114 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9115 ptr = buf;
9116 int tmp = OP_glTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9117 memcpy(ptr, &totalSize, 4); ptr += 4;
9118
9119 memcpy(ptr, &target, 4); ptr += 4;
9120 memcpy(ptr, &level, 4); ptr += 4;
9121 memcpy(ptr, &xoffset, 4); ptr += 4;
9122 memcpy(ptr, &yoffset, 4); ptr += 4;
9123 memcpy(ptr, &zoffset, 4); ptr += 4;
9124 memcpy(ptr, &width, 4); ptr += 4;
9125 memcpy(ptr, &height, 4); ptr += 4;
9126 memcpy(ptr, &depth, 4); ptr += 4;
9127 memcpy(ptr, &format, 4); ptr += 4;
9128 memcpy(ptr, &type, 4); ptr += 4;
9129
9130 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9131 stream->flush();
9132 stream->writeFully(&__size_data,4);
9133 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9134 if (data != NULL) {
9135 stream->uploadPixels(self, width, height, depth, format, type, data);
9136 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9137 }
9138 buf = stream->alloc(checksumSize);
9139 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9140
9141 }
9142
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)9143 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)
9144 {
9145 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);
9146 AEMU_SCOPED_TRACE("glTexSubImage3DOffsetAEMU encode");
9147
9148 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9149 IOStream *stream = ctx->m_stream;
9150 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9151 bool useChecksum = checksumCalculator->getVersion() > 0;
9152
9153 unsigned char *ptr;
9154 unsigned char *buf;
9155 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9156 const size_t checksumSize = checksumCalculator->checksumByteSize();
9157 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9158 buf = stream->alloc(totalSize);
9159 ptr = buf;
9160 int tmp = OP_glTexSubImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9161 memcpy(ptr, &totalSize, 4); ptr += 4;
9162
9163 memcpy(ptr, &target, 4); ptr += 4;
9164 memcpy(ptr, &level, 4); ptr += 4;
9165 memcpy(ptr, &xoffset, 4); ptr += 4;
9166 memcpy(ptr, &yoffset, 4); ptr += 4;
9167 memcpy(ptr, &zoffset, 4); ptr += 4;
9168 memcpy(ptr, &width, 4); ptr += 4;
9169 memcpy(ptr, &height, 4); ptr += 4;
9170 memcpy(ptr, &depth, 4); ptr += 4;
9171 memcpy(ptr, &format, 4); ptr += 4;
9172 memcpy(ptr, &type, 4); ptr += 4;
9173 memcpy(ptr, &offset, 4); ptr += 4;
9174
9175 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9176 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9177
9178 }
9179
glCompressedTexImage3D_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)9180 void glCompressedTexImage3D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
9181 {
9182 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);
9183 AEMU_SCOPED_TRACE("glCompressedTexImage3D encode");
9184
9185 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9186 IOStream *stream = ctx->m_stream;
9187 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9188 bool useChecksum = checksumCalculator->getVersion() > 0;
9189
9190 const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
9191 unsigned char *ptr;
9192 unsigned char *buf;
9193 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
9194 const size_t checksumSize = checksumCalculator->checksumByteSize();
9195 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9196 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9197 ptr = buf;
9198 int tmp = OP_glCompressedTexImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9199 memcpy(ptr, &totalSize, 4); ptr += 4;
9200
9201 memcpy(ptr, &target, 4); ptr += 4;
9202 memcpy(ptr, &level, 4); ptr += 4;
9203 memcpy(ptr, &internalformat, 4); ptr += 4;
9204 memcpy(ptr, &width, 4); ptr += 4;
9205 memcpy(ptr, &height, 4); ptr += 4;
9206 memcpy(ptr, &depth, 4); ptr += 4;
9207 memcpy(ptr, &border, 4); ptr += 4;
9208 memcpy(ptr, &imageSize, 4); ptr += 4;
9209
9210 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9211 stream->flush();
9212 stream->writeFully(&__size_data,4);
9213 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9214 if (data != NULL) {
9215 stream->writeFully(data, __size_data);
9216 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9217 }
9218 buf = stream->alloc(checksumSize);
9219 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9220
9221 }
9222
glCompressedTexImage3DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,GLuint offset)9223 void glCompressedTexImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLuint offset)
9224 {
9225 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);
9226 AEMU_SCOPED_TRACE("glCompressedTexImage3DOffsetAEMU encode");
9227
9228 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9229 IOStream *stream = ctx->m_stream;
9230 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9231 bool useChecksum = checksumCalculator->getVersion() > 0;
9232
9233 unsigned char *ptr;
9234 unsigned char *buf;
9235 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9236 const size_t checksumSize = checksumCalculator->checksumByteSize();
9237 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9238 buf = stream->alloc(totalSize);
9239 ptr = buf;
9240 int tmp = OP_glCompressedTexImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9241 memcpy(ptr, &totalSize, 4); ptr += 4;
9242
9243 memcpy(ptr, &target, 4); ptr += 4;
9244 memcpy(ptr, &level, 4); ptr += 4;
9245 memcpy(ptr, &internalformat, 4); ptr += 4;
9246 memcpy(ptr, &width, 4); ptr += 4;
9247 memcpy(ptr, &height, 4); ptr += 4;
9248 memcpy(ptr, &depth, 4); ptr += 4;
9249 memcpy(ptr, &border, 4); ptr += 4;
9250 memcpy(ptr, &imageSize, 4); ptr += 4;
9251 memcpy(ptr, &offset, 4); ptr += 4;
9252
9253 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9254 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9255
9256 }
9257
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)9258 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)
9259 {
9260 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);
9261 AEMU_SCOPED_TRACE("glCompressedTexSubImage3D encode");
9262
9263 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9264 IOStream *stream = ctx->m_stream;
9265 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9266 bool useChecksum = checksumCalculator->getVersion() > 0;
9267
9268 const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
9269 unsigned char *ptr;
9270 unsigned char *buf;
9271 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
9272 const size_t checksumSize = checksumCalculator->checksumByteSize();
9273 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9274 buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9275 ptr = buf;
9276 int tmp = OP_glCompressedTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9277 memcpy(ptr, &totalSize, 4); ptr += 4;
9278
9279 memcpy(ptr, &target, 4); ptr += 4;
9280 memcpy(ptr, &level, 4); ptr += 4;
9281 memcpy(ptr, &xoffset, 4); ptr += 4;
9282 memcpy(ptr, &yoffset, 4); ptr += 4;
9283 memcpy(ptr, &zoffset, 4); ptr += 4;
9284 memcpy(ptr, &width, 4); ptr += 4;
9285 memcpy(ptr, &height, 4); ptr += 4;
9286 memcpy(ptr, &depth, 4); ptr += 4;
9287 memcpy(ptr, &format, 4); ptr += 4;
9288 memcpy(ptr, &imageSize, 4); ptr += 4;
9289
9290 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9291 stream->flush();
9292 stream->writeFully(&__size_data,4);
9293 if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9294 if (data != NULL) {
9295 stream->writeFully(data, __size_data);
9296 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9297 }
9298 buf = stream->alloc(checksumSize);
9299 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9300
9301 }
9302
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)9303 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)
9304 {
9305 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);
9306 AEMU_SCOPED_TRACE("glCompressedTexSubImage3DOffsetAEMU encode");
9307
9308 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9309 IOStream *stream = ctx->m_stream;
9310 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9311 bool useChecksum = checksumCalculator->getVersion() > 0;
9312
9313 unsigned char *ptr;
9314 unsigned char *buf;
9315 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9316 const size_t checksumSize = checksumCalculator->checksumByteSize();
9317 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9318 buf = stream->alloc(totalSize);
9319 ptr = buf;
9320 int tmp = OP_glCompressedTexSubImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9321 memcpy(ptr, &totalSize, 4); ptr += 4;
9322
9323 memcpy(ptr, &target, 4); ptr += 4;
9324 memcpy(ptr, &level, 4); ptr += 4;
9325 memcpy(ptr, &xoffset, 4); ptr += 4;
9326 memcpy(ptr, &yoffset, 4); ptr += 4;
9327 memcpy(ptr, &zoffset, 4); ptr += 4;
9328 memcpy(ptr, &width, 4); ptr += 4;
9329 memcpy(ptr, &height, 4); ptr += 4;
9330 memcpy(ptr, &depth, 4); ptr += 4;
9331 memcpy(ptr, &format, 4); ptr += 4;
9332 memcpy(ptr, &imageSize, 4); ptr += 4;
9333 memcpy(ptr, &data, 4); ptr += 4;
9334
9335 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9336 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9337
9338 }
9339
glCopyTexSubImage3D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)9340 void glCopyTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
9341 {
9342 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);
9343 AEMU_SCOPED_TRACE("glCopyTexSubImage3D encode");
9344
9345 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9346 IOStream *stream = ctx->m_stream;
9347 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9348 bool useChecksum = checksumCalculator->getVersion() > 0;
9349
9350 unsigned char *ptr;
9351 unsigned char *buf;
9352 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9353 const size_t checksumSize = checksumCalculator->checksumByteSize();
9354 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9355 buf = stream->alloc(totalSize);
9356 ptr = buf;
9357 int tmp = OP_glCopyTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9358 memcpy(ptr, &totalSize, 4); ptr += 4;
9359
9360 memcpy(ptr, &target, 4); ptr += 4;
9361 memcpy(ptr, &level, 4); ptr += 4;
9362 memcpy(ptr, &xoffset, 4); ptr += 4;
9363 memcpy(ptr, &yoffset, 4); ptr += 4;
9364 memcpy(ptr, &zoffset, 4); ptr += 4;
9365 memcpy(ptr, &x, 4); ptr += 4;
9366 memcpy(ptr, &y, 4); ptr += 4;
9367 memcpy(ptr, &width, 4); ptr += 4;
9368 memcpy(ptr, &height, 4); ptr += 4;
9369
9370 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9371 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9372
9373 }
9374
glGetBooleani_v_enc(void * self,GLenum target,GLuint index,GLboolean * data)9375 void glGetBooleani_v_enc(void *self , GLenum target, GLuint index, GLboolean* data)
9376 {
9377 ENCODER_DEBUG_LOG("glGetBooleani_v(target:0x%08x, index:%u, data:0x%08x)", target, index, data);
9378 AEMU_SCOPED_TRACE("glGetBooleani_v encode");
9379
9380 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9381 IOStream *stream = ctx->m_stream;
9382 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9383 bool useChecksum = checksumCalculator->getVersion() > 0;
9384
9385 const unsigned int __size_data = (sizeof(GLboolean));
9386 unsigned char *ptr;
9387 unsigned char *buf;
9388 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
9389 const size_t checksumSize = checksumCalculator->checksumByteSize();
9390 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9391 buf = stream->alloc(totalSize);
9392 ptr = buf;
9393 int tmp = OP_glGetBooleani_v;memcpy(ptr, &tmp, 4); ptr += 4;
9394 memcpy(ptr, &totalSize, 4); ptr += 4;
9395
9396 memcpy(ptr, &target, 4); ptr += 4;
9397 memcpy(ptr, &index, 4); ptr += 4;
9398 memcpy(ptr, &__size_data, 4); ptr += 4;
9399
9400 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9401 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9402
9403 stream->readback(data, __size_data);
9404 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9405 if (useChecksum) {
9406 unsigned char *checksumBufPtr = NULL;
9407 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
9408 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9409 stream->readback(checksumBufPtr, checksumSize);
9410 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9411 ALOGE("glGetBooleani_v: GL communication error, please report this issue to b.android.com.\n");
9412 abort();
9413 }
9414 }
9415 }
9416
glMemoryBarrier_enc(void * self,GLbitfield barriers)9417 void glMemoryBarrier_enc(void *self , GLbitfield barriers)
9418 {
9419 ENCODER_DEBUG_LOG("glMemoryBarrier(barriers:0x%08x)", barriers);
9420 AEMU_SCOPED_TRACE("glMemoryBarrier encode");
9421
9422 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9423 IOStream *stream = ctx->m_stream;
9424 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9425 bool useChecksum = checksumCalculator->getVersion() > 0;
9426
9427 unsigned char *ptr;
9428 unsigned char *buf;
9429 const size_t sizeWithoutChecksum = 8 + 4;
9430 const size_t checksumSize = checksumCalculator->checksumByteSize();
9431 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9432 buf = stream->alloc(totalSize);
9433 ptr = buf;
9434 int tmp = OP_glMemoryBarrier;memcpy(ptr, &tmp, 4); ptr += 4;
9435 memcpy(ptr, &totalSize, 4); ptr += 4;
9436
9437 memcpy(ptr, &barriers, 4); ptr += 4;
9438
9439 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9440 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9441
9442 }
9443
glMemoryBarrierByRegion_enc(void * self,GLbitfield barriers)9444 void glMemoryBarrierByRegion_enc(void *self , GLbitfield barriers)
9445 {
9446 ENCODER_DEBUG_LOG("glMemoryBarrierByRegion(barriers:0x%08x)", barriers);
9447 AEMU_SCOPED_TRACE("glMemoryBarrierByRegion encode");
9448
9449 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9450 IOStream *stream = ctx->m_stream;
9451 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9452 bool useChecksum = checksumCalculator->getVersion() > 0;
9453
9454 unsigned char *ptr;
9455 unsigned char *buf;
9456 const size_t sizeWithoutChecksum = 8 + 4;
9457 const size_t checksumSize = checksumCalculator->checksumByteSize();
9458 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9459 buf = stream->alloc(totalSize);
9460 ptr = buf;
9461 int tmp = OP_glMemoryBarrierByRegion;memcpy(ptr, &tmp, 4); ptr += 4;
9462 memcpy(ptr, &totalSize, 4); ptr += 4;
9463
9464 memcpy(ptr, &barriers, 4); ptr += 4;
9465
9466 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9467 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9468
9469 }
9470
glGenProgramPipelines_enc(void * self,GLsizei n,GLuint * pipelines)9471 void glGenProgramPipelines_enc(void *self , GLsizei n, GLuint* pipelines)
9472 {
9473 ENCODER_DEBUG_LOG("glGenProgramPipelines(n:%d, pipelines:0x%08x)", n, pipelines);
9474 AEMU_SCOPED_TRACE("glGenProgramPipelines encode");
9475
9476 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9477 IOStream *stream = ctx->m_stream;
9478 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9479 bool useChecksum = checksumCalculator->getVersion() > 0;
9480
9481 const unsigned int __size_pipelines = (n * sizeof(GLuint));
9482 unsigned char *ptr;
9483 unsigned char *buf;
9484 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
9485 const size_t checksumSize = checksumCalculator->checksumByteSize();
9486 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9487 buf = stream->alloc(totalSize);
9488 ptr = buf;
9489 int tmp = OP_glGenProgramPipelines;memcpy(ptr, &tmp, 4); ptr += 4;
9490 memcpy(ptr, &totalSize, 4); ptr += 4;
9491
9492 memcpy(ptr, &n, 4); ptr += 4;
9493 memcpy(ptr, &__size_pipelines, 4); ptr += 4;
9494
9495 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9496 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9497
9498 stream->readback(pipelines, __size_pipelines);
9499 if (useChecksum) checksumCalculator->addBuffer(pipelines, __size_pipelines);
9500 if (useChecksum) {
9501 unsigned char *checksumBufPtr = NULL;
9502 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
9503 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9504 stream->readback(checksumBufPtr, checksumSize);
9505 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9506 ALOGE("glGenProgramPipelines: GL communication error, please report this issue to b.android.com.\n");
9507 abort();
9508 }
9509 }
9510 }
9511
glDeleteProgramPipelines_enc(void * self,GLsizei n,const GLuint * pipelines)9512 void glDeleteProgramPipelines_enc(void *self , GLsizei n, const GLuint* pipelines)
9513 {
9514 ENCODER_DEBUG_LOG("glDeleteProgramPipelines(n:%d, pipelines:0x%08x)", n, pipelines);
9515 AEMU_SCOPED_TRACE("glDeleteProgramPipelines encode");
9516
9517 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9518 IOStream *stream = ctx->m_stream;
9519 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9520 bool useChecksum = checksumCalculator->getVersion() > 0;
9521
9522 const unsigned int __size_pipelines = (n * sizeof(GLuint));
9523 unsigned char *ptr;
9524 unsigned char *buf;
9525 const size_t sizeWithoutChecksum = 8 + 4 + __size_pipelines + 1*4;
9526 const size_t checksumSize = checksumCalculator->checksumByteSize();
9527 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9528 buf = stream->alloc(totalSize);
9529 ptr = buf;
9530 int tmp = OP_glDeleteProgramPipelines;memcpy(ptr, &tmp, 4); ptr += 4;
9531 memcpy(ptr, &totalSize, 4); ptr += 4;
9532
9533 memcpy(ptr, &n, 4); ptr += 4;
9534 memcpy(ptr, &__size_pipelines, 4); ptr += 4;
9535 memcpy(ptr, pipelines, __size_pipelines);ptr += __size_pipelines;
9536
9537 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9538 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9539
9540 }
9541
glBindProgramPipeline_enc(void * self,GLuint pipeline)9542 void glBindProgramPipeline_enc(void *self , GLuint pipeline)
9543 {
9544 ENCODER_DEBUG_LOG("glBindProgramPipeline(pipeline:%u)", pipeline);
9545 AEMU_SCOPED_TRACE("glBindProgramPipeline encode");
9546
9547 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9548 IOStream *stream = ctx->m_stream;
9549 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9550 bool useChecksum = checksumCalculator->getVersion() > 0;
9551
9552 unsigned char *ptr;
9553 unsigned char *buf;
9554 const size_t sizeWithoutChecksum = 8 + 4;
9555 const size_t checksumSize = checksumCalculator->checksumByteSize();
9556 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9557 buf = stream->alloc(totalSize);
9558 ptr = buf;
9559 int tmp = OP_glBindProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
9560 memcpy(ptr, &totalSize, 4); ptr += 4;
9561
9562 memcpy(ptr, &pipeline, 4); ptr += 4;
9563
9564 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9565 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9566
9567 }
9568
glGetProgramPipelineiv_enc(void * self,GLuint pipeline,GLenum pname,GLint * params)9569 void glGetProgramPipelineiv_enc(void *self , GLuint pipeline, GLenum pname, GLint* params)
9570 {
9571 ENCODER_DEBUG_LOG("glGetProgramPipelineiv(pipeline:%u, pname:0x%08x, params:0x%08x)", pipeline, pname, params);
9572 AEMU_SCOPED_TRACE("glGetProgramPipelineiv encode");
9573
9574 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9575 IOStream *stream = ctx->m_stream;
9576 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9577 bool useChecksum = checksumCalculator->getVersion() > 0;
9578
9579 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
9580 unsigned char *ptr;
9581 unsigned char *buf;
9582 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
9583 const size_t checksumSize = checksumCalculator->checksumByteSize();
9584 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9585 buf = stream->alloc(totalSize);
9586 ptr = buf;
9587 int tmp = OP_glGetProgramPipelineiv;memcpy(ptr, &tmp, 4); ptr += 4;
9588 memcpy(ptr, &totalSize, 4); ptr += 4;
9589
9590 memcpy(ptr, &pipeline, 4); ptr += 4;
9591 memcpy(ptr, &pname, 4); ptr += 4;
9592 memcpy(ptr, &__size_params, 4); ptr += 4;
9593
9594 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9595 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9596
9597 stream->readback(params, __size_params);
9598 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
9599 if (useChecksum) {
9600 unsigned char *checksumBufPtr = NULL;
9601 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
9602 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9603 stream->readback(checksumBufPtr, checksumSize);
9604 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9605 ALOGE("glGetProgramPipelineiv: GL communication error, please report this issue to b.android.com.\n");
9606 abort();
9607 }
9608 }
9609 }
9610
glGetProgramPipelineInfoLog_enc(void * self,GLuint pipeline,GLsizei bufSize,GLsizei * length,GLchar * infoLog)9611 void glGetProgramPipelineInfoLog_enc(void *self , GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog)
9612 {
9613 ENCODER_DEBUG_LOG("glGetProgramPipelineInfoLog(pipeline:%u, bufSize:%d, length:0x%08x, infoLog:0x%08x)", pipeline, bufSize, length, infoLog);
9614 AEMU_SCOPED_TRACE("glGetProgramPipelineInfoLog encode");
9615
9616 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9617 IOStream *stream = ctx->m_stream;
9618 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9619 bool useChecksum = checksumCalculator->getVersion() > 0;
9620
9621 const unsigned int __size_length = ((length != NULL) ? sizeof(GLsizei) : 0);
9622 const unsigned int __size_infoLog = bufSize;
9623 unsigned char *ptr;
9624 unsigned char *buf;
9625 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
9626 const size_t checksumSize = checksumCalculator->checksumByteSize();
9627 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9628 buf = stream->alloc(totalSize);
9629 ptr = buf;
9630 int tmp = OP_glGetProgramPipelineInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
9631 memcpy(ptr, &totalSize, 4); ptr += 4;
9632
9633 memcpy(ptr, &pipeline, 4); ptr += 4;
9634 memcpy(ptr, &bufSize, 4); ptr += 4;
9635 memcpy(ptr, &__size_length, 4); ptr += 4;
9636 memcpy(ptr, &__size_infoLog, 4); ptr += 4;
9637
9638 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9639 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9640
9641 if (length != NULL) {
9642 stream->readback(length, __size_length);
9643 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
9644 }
9645 stream->readback(infoLog, __size_infoLog);
9646 if (useChecksum) checksumCalculator->addBuffer(infoLog, __size_infoLog);
9647 if (useChecksum) {
9648 unsigned char *checksumBufPtr = NULL;
9649 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
9650 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9651 stream->readback(checksumBufPtr, checksumSize);
9652 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9653 ALOGE("glGetProgramPipelineInfoLog: GL communication error, please report this issue to b.android.com.\n");
9654 abort();
9655 }
9656 }
9657 }
9658
glValidateProgramPipeline_enc(void * self,GLuint pipeline)9659 void glValidateProgramPipeline_enc(void *self , GLuint pipeline)
9660 {
9661 ENCODER_DEBUG_LOG("glValidateProgramPipeline(pipeline:%u)", pipeline);
9662 AEMU_SCOPED_TRACE("glValidateProgramPipeline encode");
9663
9664 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9665 IOStream *stream = ctx->m_stream;
9666 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9667 bool useChecksum = checksumCalculator->getVersion() > 0;
9668
9669 unsigned char *ptr;
9670 unsigned char *buf;
9671 const size_t sizeWithoutChecksum = 8 + 4;
9672 const size_t checksumSize = checksumCalculator->checksumByteSize();
9673 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9674 buf = stream->alloc(totalSize);
9675 ptr = buf;
9676 int tmp = OP_glValidateProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
9677 memcpy(ptr, &totalSize, 4); ptr += 4;
9678
9679 memcpy(ptr, &pipeline, 4); ptr += 4;
9680
9681 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9682 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9683
9684 }
9685
glIsProgramPipeline_enc(void * self,GLuint pipeline)9686 GLboolean glIsProgramPipeline_enc(void *self , GLuint pipeline)
9687 {
9688 ENCODER_DEBUG_LOG("glIsProgramPipeline(pipeline:%u)", pipeline);
9689 AEMU_SCOPED_TRACE("glIsProgramPipeline encode");
9690
9691 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9692 IOStream *stream = ctx->m_stream;
9693 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9694 bool useChecksum = checksumCalculator->getVersion() > 0;
9695
9696 unsigned char *ptr;
9697 unsigned char *buf;
9698 const size_t sizeWithoutChecksum = 8 + 4;
9699 const size_t checksumSize = checksumCalculator->checksumByteSize();
9700 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9701 buf = stream->alloc(totalSize);
9702 ptr = buf;
9703 int tmp = OP_glIsProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
9704 memcpy(ptr, &totalSize, 4); ptr += 4;
9705
9706 memcpy(ptr, &pipeline, 4); ptr += 4;
9707
9708 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9709 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9710
9711
9712 GLboolean retval;
9713 stream->readback(&retval, 1);
9714 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
9715 if (useChecksum) {
9716 unsigned char *checksumBufPtr = NULL;
9717 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
9718 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9719 stream->readback(checksumBufPtr, checksumSize);
9720 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9721 ALOGE("glIsProgramPipeline: GL communication error, please report this issue to b.android.com.\n");
9722 abort();
9723 }
9724 }
9725 return retval;
9726 }
9727
glUseProgramStages_enc(void * self,GLuint pipeline,GLbitfield stages,GLuint program)9728 void glUseProgramStages_enc(void *self , GLuint pipeline, GLbitfield stages, GLuint program)
9729 {
9730 ENCODER_DEBUG_LOG("glUseProgramStages(pipeline:%u, stages:0x%08x, program:%u)", pipeline, stages, program);
9731 AEMU_SCOPED_TRACE("glUseProgramStages encode");
9732
9733 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9734 IOStream *stream = ctx->m_stream;
9735 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9736 bool useChecksum = checksumCalculator->getVersion() > 0;
9737
9738 unsigned char *ptr;
9739 unsigned char *buf;
9740 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9741 const size_t checksumSize = checksumCalculator->checksumByteSize();
9742 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9743 buf = stream->alloc(totalSize);
9744 ptr = buf;
9745 int tmp = OP_glUseProgramStages;memcpy(ptr, &tmp, 4); ptr += 4;
9746 memcpy(ptr, &totalSize, 4); ptr += 4;
9747
9748 memcpy(ptr, &pipeline, 4); ptr += 4;
9749 memcpy(ptr, &stages, 4); ptr += 4;
9750 memcpy(ptr, &program, 4); ptr += 4;
9751
9752 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9753 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9754
9755 }
9756
glActiveShaderProgram_enc(void * self,GLuint pipeline,GLuint program)9757 void glActiveShaderProgram_enc(void *self , GLuint pipeline, GLuint program)
9758 {
9759 ENCODER_DEBUG_LOG("glActiveShaderProgram(pipeline:%u, program:%u)", pipeline, program);
9760 AEMU_SCOPED_TRACE("glActiveShaderProgram encode");
9761
9762 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9763 IOStream *stream = ctx->m_stream;
9764 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9765 bool useChecksum = checksumCalculator->getVersion() > 0;
9766
9767 unsigned char *ptr;
9768 unsigned char *buf;
9769 const size_t sizeWithoutChecksum = 8 + 4 + 4;
9770 const size_t checksumSize = checksumCalculator->checksumByteSize();
9771 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9772 buf = stream->alloc(totalSize);
9773 ptr = buf;
9774 int tmp = OP_glActiveShaderProgram;memcpy(ptr, &tmp, 4); ptr += 4;
9775 memcpy(ptr, &totalSize, 4); ptr += 4;
9776
9777 memcpy(ptr, &pipeline, 4); ptr += 4;
9778 memcpy(ptr, &program, 4); ptr += 4;
9779
9780 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9781 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9782
9783 }
9784
glCreateShaderProgramvAEMU_enc(void * self,GLenum type,GLsizei count,const char * packedStrings,GLuint packedLen)9785 GLuint glCreateShaderProgramvAEMU_enc(void *self , GLenum type, GLsizei count, const char* packedStrings, GLuint packedLen)
9786 {
9787 ENCODER_DEBUG_LOG("glCreateShaderProgramvAEMU(type:0x%08x, count:%d, packedStrings:0x%08x, packedLen:%u)", type, count, packedStrings, packedLen);
9788 AEMU_SCOPED_TRACE("glCreateShaderProgramvAEMU encode");
9789
9790 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9791 IOStream *stream = ctx->m_stream;
9792 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9793 bool useChecksum = checksumCalculator->getVersion() > 0;
9794
9795 const unsigned int __size_packedStrings = packedLen;
9796 unsigned char *ptr;
9797 unsigned char *buf;
9798 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedStrings + 4 + 1*4;
9799 const size_t checksumSize = checksumCalculator->checksumByteSize();
9800 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9801 buf = stream->alloc(totalSize);
9802 ptr = buf;
9803 int tmp = OP_glCreateShaderProgramvAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9804 memcpy(ptr, &totalSize, 4); ptr += 4;
9805
9806 memcpy(ptr, &type, 4); ptr += 4;
9807 memcpy(ptr, &count, 4); ptr += 4;
9808 memcpy(ptr, &__size_packedStrings, 4); ptr += 4;
9809 memcpy(ptr, packedStrings, __size_packedStrings);ptr += __size_packedStrings;
9810 memcpy(ptr, &packedLen, 4); ptr += 4;
9811
9812 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9813 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9814
9815
9816 GLuint retval;
9817 stream->readback(&retval, 4);
9818 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
9819 if (useChecksum) {
9820 unsigned char *checksumBufPtr = NULL;
9821 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
9822 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9823 stream->readback(checksumBufPtr, checksumSize);
9824 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9825 ALOGE("glCreateShaderProgramvAEMU: GL communication error, please report this issue to b.android.com.\n");
9826 abort();
9827 }
9828 }
9829 return retval;
9830 }
9831
glProgramUniform1f_enc(void * self,GLuint program,GLint location,GLfloat v0)9832 void glProgramUniform1f_enc(void *self , GLuint program, GLint location, GLfloat v0)
9833 {
9834 ENCODER_DEBUG_LOG("glProgramUniform1f(program:%u, location:%d, v0:%f)", program, location, v0);
9835 AEMU_SCOPED_TRACE("glProgramUniform1f encode");
9836
9837 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9838 IOStream *stream = ctx->m_stream;
9839 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9840 bool useChecksum = checksumCalculator->getVersion() > 0;
9841
9842 unsigned char *ptr;
9843 unsigned char *buf;
9844 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9845 const size_t checksumSize = checksumCalculator->checksumByteSize();
9846 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9847 buf = stream->alloc(totalSize);
9848 ptr = buf;
9849 int tmp = OP_glProgramUniform1f;memcpy(ptr, &tmp, 4); ptr += 4;
9850 memcpy(ptr, &totalSize, 4); ptr += 4;
9851
9852 memcpy(ptr, &program, 4); ptr += 4;
9853 memcpy(ptr, &location, 4); ptr += 4;
9854 memcpy(ptr, &v0, 4); ptr += 4;
9855
9856 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9857 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9858
9859 }
9860
glProgramUniform2f_enc(void * self,GLuint program,GLint location,GLfloat v0,GLfloat v1)9861 void glProgramUniform2f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1)
9862 {
9863 ENCODER_DEBUG_LOG("glProgramUniform2f(program:%u, location:%d, v0:%f, v1:%f)", program, location, v0, v1);
9864 AEMU_SCOPED_TRACE("glProgramUniform2f encode");
9865
9866 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9867 IOStream *stream = ctx->m_stream;
9868 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9869 bool useChecksum = checksumCalculator->getVersion() > 0;
9870
9871 unsigned char *ptr;
9872 unsigned char *buf;
9873 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
9874 const size_t checksumSize = checksumCalculator->checksumByteSize();
9875 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9876 buf = stream->alloc(totalSize);
9877 ptr = buf;
9878 int tmp = OP_glProgramUniform2f;memcpy(ptr, &tmp, 4); ptr += 4;
9879 memcpy(ptr, &totalSize, 4); ptr += 4;
9880
9881 memcpy(ptr, &program, 4); ptr += 4;
9882 memcpy(ptr, &location, 4); ptr += 4;
9883 memcpy(ptr, &v0, 4); ptr += 4;
9884 memcpy(ptr, &v1, 4); ptr += 4;
9885
9886 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9887 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9888
9889 }
9890
glProgramUniform3f_enc(void * self,GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2)9891 void glProgramUniform3f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
9892 {
9893 ENCODER_DEBUG_LOG("glProgramUniform3f(program:%u, location:%d, v0:%f, v1:%f, v2:%f)", program, location, v0, v1, v2);
9894 AEMU_SCOPED_TRACE("glProgramUniform3f encode");
9895
9896 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9897 IOStream *stream = ctx->m_stream;
9898 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9899 bool useChecksum = checksumCalculator->getVersion() > 0;
9900
9901 unsigned char *ptr;
9902 unsigned char *buf;
9903 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
9904 const size_t checksumSize = checksumCalculator->checksumByteSize();
9905 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9906 buf = stream->alloc(totalSize);
9907 ptr = buf;
9908 int tmp = OP_glProgramUniform3f;memcpy(ptr, &tmp, 4); ptr += 4;
9909 memcpy(ptr, &totalSize, 4); ptr += 4;
9910
9911 memcpy(ptr, &program, 4); ptr += 4;
9912 memcpy(ptr, &location, 4); ptr += 4;
9913 memcpy(ptr, &v0, 4); ptr += 4;
9914 memcpy(ptr, &v1, 4); ptr += 4;
9915 memcpy(ptr, &v2, 4); ptr += 4;
9916
9917 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9918 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9919
9920 }
9921
glProgramUniform4f_enc(void * self,GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)9922 void glProgramUniform4f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
9923 {
9924 ENCODER_DEBUG_LOG("glProgramUniform4f(program:%u, location:%d, v0:%f, v1:%f, v2:%f, v3:%f)", program, location, v0, v1, v2, v3);
9925 AEMU_SCOPED_TRACE("glProgramUniform4f encode");
9926
9927 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9928 IOStream *stream = ctx->m_stream;
9929 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9930 bool useChecksum = checksumCalculator->getVersion() > 0;
9931
9932 unsigned char *ptr;
9933 unsigned char *buf;
9934 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
9935 const size_t checksumSize = checksumCalculator->checksumByteSize();
9936 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9937 buf = stream->alloc(totalSize);
9938 ptr = buf;
9939 int tmp = OP_glProgramUniform4f;memcpy(ptr, &tmp, 4); ptr += 4;
9940 memcpy(ptr, &totalSize, 4); ptr += 4;
9941
9942 memcpy(ptr, &program, 4); ptr += 4;
9943 memcpy(ptr, &location, 4); ptr += 4;
9944 memcpy(ptr, &v0, 4); ptr += 4;
9945 memcpy(ptr, &v1, 4); ptr += 4;
9946 memcpy(ptr, &v2, 4); ptr += 4;
9947 memcpy(ptr, &v3, 4); ptr += 4;
9948
9949 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9950 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9951
9952 }
9953
glProgramUniform1i_enc(void * self,GLuint program,GLint location,GLint v0)9954 void glProgramUniform1i_enc(void *self , GLuint program, GLint location, GLint v0)
9955 {
9956 ENCODER_DEBUG_LOG("glProgramUniform1i(program:%u, location:%d, v0:%d)", program, location, v0);
9957 AEMU_SCOPED_TRACE("glProgramUniform1i encode");
9958
9959 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9960 IOStream *stream = ctx->m_stream;
9961 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9962 bool useChecksum = checksumCalculator->getVersion() > 0;
9963
9964 unsigned char *ptr;
9965 unsigned char *buf;
9966 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9967 const size_t checksumSize = checksumCalculator->checksumByteSize();
9968 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9969 buf = stream->alloc(totalSize);
9970 ptr = buf;
9971 int tmp = OP_glProgramUniform1i;memcpy(ptr, &tmp, 4); ptr += 4;
9972 memcpy(ptr, &totalSize, 4); ptr += 4;
9973
9974 memcpy(ptr, &program, 4); ptr += 4;
9975 memcpy(ptr, &location, 4); ptr += 4;
9976 memcpy(ptr, &v0, 4); ptr += 4;
9977
9978 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9979 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9980
9981 }
9982
glProgramUniform2i_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1)9983 void glProgramUniform2i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1)
9984 {
9985 ENCODER_DEBUG_LOG("glProgramUniform2i(program:%u, location:%d, v0:%d, v1:%d)", program, location, v0, v1);
9986 AEMU_SCOPED_TRACE("glProgramUniform2i encode");
9987
9988 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9989 IOStream *stream = ctx->m_stream;
9990 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9991 bool useChecksum = checksumCalculator->getVersion() > 0;
9992
9993 unsigned char *ptr;
9994 unsigned char *buf;
9995 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
9996 const size_t checksumSize = checksumCalculator->checksumByteSize();
9997 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9998 buf = stream->alloc(totalSize);
9999 ptr = buf;
10000 int tmp = OP_glProgramUniform2i;memcpy(ptr, &tmp, 4); ptr += 4;
10001 memcpy(ptr, &totalSize, 4); ptr += 4;
10002
10003 memcpy(ptr, &program, 4); ptr += 4;
10004 memcpy(ptr, &location, 4); ptr += 4;
10005 memcpy(ptr, &v0, 4); ptr += 4;
10006 memcpy(ptr, &v1, 4); ptr += 4;
10007
10008 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10009 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10010
10011 }
10012
glProgramUniform3i_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLint v2)10013 void glProgramUniform3i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
10014 {
10015 ENCODER_DEBUG_LOG("glProgramUniform3i(program:%u, location:%d, v0:%d, v1:%d, v2:%d)", program, location, v0, v1, v2);
10016 AEMU_SCOPED_TRACE("glProgramUniform3i encode");
10017
10018 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10019 IOStream *stream = ctx->m_stream;
10020 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10021 bool useChecksum = checksumCalculator->getVersion() > 0;
10022
10023 unsigned char *ptr;
10024 unsigned char *buf;
10025 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
10026 const size_t checksumSize = checksumCalculator->checksumByteSize();
10027 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10028 buf = stream->alloc(totalSize);
10029 ptr = buf;
10030 int tmp = OP_glProgramUniform3i;memcpy(ptr, &tmp, 4); ptr += 4;
10031 memcpy(ptr, &totalSize, 4); ptr += 4;
10032
10033 memcpy(ptr, &program, 4); ptr += 4;
10034 memcpy(ptr, &location, 4); ptr += 4;
10035 memcpy(ptr, &v0, 4); ptr += 4;
10036 memcpy(ptr, &v1, 4); ptr += 4;
10037 memcpy(ptr, &v2, 4); ptr += 4;
10038
10039 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10040 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10041
10042 }
10043
glProgramUniform4i_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLint v2,GLint v3)10044 void glProgramUniform4i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
10045 {
10046 ENCODER_DEBUG_LOG("glProgramUniform4i(program:%u, location:%d, v0:%d, v1:%d, v2:%d, v3:%d)", program, location, v0, v1, v2, v3);
10047 AEMU_SCOPED_TRACE("glProgramUniform4i encode");
10048
10049 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10050 IOStream *stream = ctx->m_stream;
10051 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10052 bool useChecksum = checksumCalculator->getVersion() > 0;
10053
10054 unsigned char *ptr;
10055 unsigned char *buf;
10056 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
10057 const size_t checksumSize = checksumCalculator->checksumByteSize();
10058 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10059 buf = stream->alloc(totalSize);
10060 ptr = buf;
10061 int tmp = OP_glProgramUniform4i;memcpy(ptr, &tmp, 4); ptr += 4;
10062 memcpy(ptr, &totalSize, 4); ptr += 4;
10063
10064 memcpy(ptr, &program, 4); ptr += 4;
10065 memcpy(ptr, &location, 4); ptr += 4;
10066 memcpy(ptr, &v0, 4); ptr += 4;
10067 memcpy(ptr, &v1, 4); ptr += 4;
10068 memcpy(ptr, &v2, 4); ptr += 4;
10069 memcpy(ptr, &v3, 4); ptr += 4;
10070
10071 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10072 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10073
10074 }
10075
glProgramUniform1ui_enc(void * self,GLuint program,GLint location,GLuint v0)10076 void glProgramUniform1ui_enc(void *self , GLuint program, GLint location, GLuint v0)
10077 {
10078 ENCODER_DEBUG_LOG("glProgramUniform1ui(program:%u, location:%d, v0:%u)", program, location, v0);
10079 AEMU_SCOPED_TRACE("glProgramUniform1ui encode");
10080
10081 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10082 IOStream *stream = ctx->m_stream;
10083 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10084 bool useChecksum = checksumCalculator->getVersion() > 0;
10085
10086 unsigned char *ptr;
10087 unsigned char *buf;
10088 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
10089 const size_t checksumSize = checksumCalculator->checksumByteSize();
10090 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10091 buf = stream->alloc(totalSize);
10092 ptr = buf;
10093 int tmp = OP_glProgramUniform1ui;memcpy(ptr, &tmp, 4); ptr += 4;
10094 memcpy(ptr, &totalSize, 4); ptr += 4;
10095
10096 memcpy(ptr, &program, 4); ptr += 4;
10097 memcpy(ptr, &location, 4); ptr += 4;
10098 memcpy(ptr, &v0, 4); ptr += 4;
10099
10100 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10101 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10102
10103 }
10104
glProgramUniform2ui_enc(void * self,GLuint program,GLint location,GLint v0,GLuint v1)10105 void glProgramUniform2ui_enc(void *self , GLuint program, GLint location, GLint v0, GLuint v1)
10106 {
10107 ENCODER_DEBUG_LOG("glProgramUniform2ui(program:%u, location:%d, v0:%d, v1:%u)", program, location, v0, v1);
10108 AEMU_SCOPED_TRACE("glProgramUniform2ui encode");
10109
10110 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10111 IOStream *stream = ctx->m_stream;
10112 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10113 bool useChecksum = checksumCalculator->getVersion() > 0;
10114
10115 unsigned char *ptr;
10116 unsigned char *buf;
10117 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
10118 const size_t checksumSize = checksumCalculator->checksumByteSize();
10119 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10120 buf = stream->alloc(totalSize);
10121 ptr = buf;
10122 int tmp = OP_glProgramUniform2ui;memcpy(ptr, &tmp, 4); ptr += 4;
10123 memcpy(ptr, &totalSize, 4); ptr += 4;
10124
10125 memcpy(ptr, &program, 4); ptr += 4;
10126 memcpy(ptr, &location, 4); ptr += 4;
10127 memcpy(ptr, &v0, 4); ptr += 4;
10128 memcpy(ptr, &v1, 4); ptr += 4;
10129
10130 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10131 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10132
10133 }
10134
glProgramUniform3ui_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLuint v2)10135 void glProgramUniform3ui_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLuint v2)
10136 {
10137 ENCODER_DEBUG_LOG("glProgramUniform3ui(program:%u, location:%d, v0:%d, v1:%d, v2:%u)", program, location, v0, v1, v2);
10138 AEMU_SCOPED_TRACE("glProgramUniform3ui encode");
10139
10140 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10141 IOStream *stream = ctx->m_stream;
10142 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10143 bool useChecksum = checksumCalculator->getVersion() > 0;
10144
10145 unsigned char *ptr;
10146 unsigned char *buf;
10147 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
10148 const size_t checksumSize = checksumCalculator->checksumByteSize();
10149 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10150 buf = stream->alloc(totalSize);
10151 ptr = buf;
10152 int tmp = OP_glProgramUniform3ui;memcpy(ptr, &tmp, 4); ptr += 4;
10153 memcpy(ptr, &totalSize, 4); ptr += 4;
10154
10155 memcpy(ptr, &program, 4); ptr += 4;
10156 memcpy(ptr, &location, 4); ptr += 4;
10157 memcpy(ptr, &v0, 4); ptr += 4;
10158 memcpy(ptr, &v1, 4); ptr += 4;
10159 memcpy(ptr, &v2, 4); ptr += 4;
10160
10161 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10162 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10163
10164 }
10165
glProgramUniform4ui_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLint v2,GLuint v3)10166 void glProgramUniform4ui_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLuint v3)
10167 {
10168 ENCODER_DEBUG_LOG("glProgramUniform4ui(program:%u, location:%d, v0:%d, v1:%d, v2:%d, v3:%u)", program, location, v0, v1, v2, v3);
10169 AEMU_SCOPED_TRACE("glProgramUniform4ui encode");
10170
10171 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10172 IOStream *stream = ctx->m_stream;
10173 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10174 bool useChecksum = checksumCalculator->getVersion() > 0;
10175
10176 unsigned char *ptr;
10177 unsigned char *buf;
10178 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
10179 const size_t checksumSize = checksumCalculator->checksumByteSize();
10180 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10181 buf = stream->alloc(totalSize);
10182 ptr = buf;
10183 int tmp = OP_glProgramUniform4ui;memcpy(ptr, &tmp, 4); ptr += 4;
10184 memcpy(ptr, &totalSize, 4); ptr += 4;
10185
10186 memcpy(ptr, &program, 4); ptr += 4;
10187 memcpy(ptr, &location, 4); ptr += 4;
10188 memcpy(ptr, &v0, 4); ptr += 4;
10189 memcpy(ptr, &v1, 4); ptr += 4;
10190 memcpy(ptr, &v2, 4); ptr += 4;
10191 memcpy(ptr, &v3, 4); ptr += 4;
10192
10193 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10194 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10195
10196 }
10197
glProgramUniform1fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10198 void glProgramUniform1fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10199 {
10200 ENCODER_DEBUG_LOG("glProgramUniform1fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10201 AEMU_SCOPED_TRACE("glProgramUniform1fv encode");
10202
10203 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10204 IOStream *stream = ctx->m_stream;
10205 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10206 bool useChecksum = checksumCalculator->getVersion() > 0;
10207
10208 const unsigned int __size_value = (count * sizeof(GLfloat));
10209 unsigned char *ptr;
10210 unsigned char *buf;
10211 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10212 const size_t checksumSize = checksumCalculator->checksumByteSize();
10213 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10214 buf = stream->alloc(totalSize);
10215 ptr = buf;
10216 int tmp = OP_glProgramUniform1fv;memcpy(ptr, &tmp, 4); ptr += 4;
10217 memcpy(ptr, &totalSize, 4); ptr += 4;
10218
10219 memcpy(ptr, &program, 4); ptr += 4;
10220 memcpy(ptr, &location, 4); ptr += 4;
10221 memcpy(ptr, &count, 4); ptr += 4;
10222 memcpy(ptr, &__size_value, 4); ptr += 4;
10223 memcpy(ptr, value, __size_value);ptr += __size_value;
10224
10225 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10226 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10227
10228 }
10229
glProgramUniform2fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10230 void glProgramUniform2fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10231 {
10232 ENCODER_DEBUG_LOG("glProgramUniform2fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10233 AEMU_SCOPED_TRACE("glProgramUniform2fv encode");
10234
10235 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10236 IOStream *stream = ctx->m_stream;
10237 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10238 bool useChecksum = checksumCalculator->getVersion() > 0;
10239
10240 const unsigned int __size_value = (count * 2 * sizeof(GLfloat));
10241 unsigned char *ptr;
10242 unsigned char *buf;
10243 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10244 const size_t checksumSize = checksumCalculator->checksumByteSize();
10245 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10246 buf = stream->alloc(totalSize);
10247 ptr = buf;
10248 int tmp = OP_glProgramUniform2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10249 memcpy(ptr, &totalSize, 4); ptr += 4;
10250
10251 memcpy(ptr, &program, 4); ptr += 4;
10252 memcpy(ptr, &location, 4); ptr += 4;
10253 memcpy(ptr, &count, 4); ptr += 4;
10254 memcpy(ptr, &__size_value, 4); ptr += 4;
10255 memcpy(ptr, value, __size_value);ptr += __size_value;
10256
10257 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10258 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10259
10260 }
10261
glProgramUniform3fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10262 void glProgramUniform3fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10263 {
10264 ENCODER_DEBUG_LOG("glProgramUniform3fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10265 AEMU_SCOPED_TRACE("glProgramUniform3fv encode");
10266
10267 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10268 IOStream *stream = ctx->m_stream;
10269 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10270 bool useChecksum = checksumCalculator->getVersion() > 0;
10271
10272 const unsigned int __size_value = (count * 3 * sizeof(GLfloat));
10273 unsigned char *ptr;
10274 unsigned char *buf;
10275 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10276 const size_t checksumSize = checksumCalculator->checksumByteSize();
10277 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10278 buf = stream->alloc(totalSize);
10279 ptr = buf;
10280 int tmp = OP_glProgramUniform3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10281 memcpy(ptr, &totalSize, 4); ptr += 4;
10282
10283 memcpy(ptr, &program, 4); ptr += 4;
10284 memcpy(ptr, &location, 4); ptr += 4;
10285 memcpy(ptr, &count, 4); ptr += 4;
10286 memcpy(ptr, &__size_value, 4); ptr += 4;
10287 memcpy(ptr, value, __size_value);ptr += __size_value;
10288
10289 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10290 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10291
10292 }
10293
glProgramUniform4fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10294 void glProgramUniform4fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10295 {
10296 ENCODER_DEBUG_LOG("glProgramUniform4fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10297 AEMU_SCOPED_TRACE("glProgramUniform4fv encode");
10298
10299 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10300 IOStream *stream = ctx->m_stream;
10301 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10302 bool useChecksum = checksumCalculator->getVersion() > 0;
10303
10304 const unsigned int __size_value = (count * 4 * sizeof(GLfloat));
10305 unsigned char *ptr;
10306 unsigned char *buf;
10307 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10308 const size_t checksumSize = checksumCalculator->checksumByteSize();
10309 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10310 buf = stream->alloc(totalSize);
10311 ptr = buf;
10312 int tmp = OP_glProgramUniform4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10313 memcpy(ptr, &totalSize, 4); ptr += 4;
10314
10315 memcpy(ptr, &program, 4); ptr += 4;
10316 memcpy(ptr, &location, 4); ptr += 4;
10317 memcpy(ptr, &count, 4); ptr += 4;
10318 memcpy(ptr, &__size_value, 4); ptr += 4;
10319 memcpy(ptr, value, __size_value);ptr += __size_value;
10320
10321 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10322 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10323
10324 }
10325
glProgramUniform1iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10326 void glProgramUniform1iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10327 {
10328 ENCODER_DEBUG_LOG("glProgramUniform1iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10329 AEMU_SCOPED_TRACE("glProgramUniform1iv encode");
10330
10331 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10332 IOStream *stream = ctx->m_stream;
10333 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10334 bool useChecksum = checksumCalculator->getVersion() > 0;
10335
10336 const unsigned int __size_value = (count * sizeof(GLint));
10337 unsigned char *ptr;
10338 unsigned char *buf;
10339 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10340 const size_t checksumSize = checksumCalculator->checksumByteSize();
10341 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10342 buf = stream->alloc(totalSize);
10343 ptr = buf;
10344 int tmp = OP_glProgramUniform1iv;memcpy(ptr, &tmp, 4); ptr += 4;
10345 memcpy(ptr, &totalSize, 4); ptr += 4;
10346
10347 memcpy(ptr, &program, 4); ptr += 4;
10348 memcpy(ptr, &location, 4); ptr += 4;
10349 memcpy(ptr, &count, 4); ptr += 4;
10350 memcpy(ptr, &__size_value, 4); ptr += 4;
10351 memcpy(ptr, value, __size_value);ptr += __size_value;
10352
10353 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10354 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10355
10356 }
10357
glProgramUniform2iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10358 void glProgramUniform2iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10359 {
10360 ENCODER_DEBUG_LOG("glProgramUniform2iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10361 AEMU_SCOPED_TRACE("glProgramUniform2iv encode");
10362
10363 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10364 IOStream *stream = ctx->m_stream;
10365 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10366 bool useChecksum = checksumCalculator->getVersion() > 0;
10367
10368 const unsigned int __size_value = (count * 2 * sizeof(GLint));
10369 unsigned char *ptr;
10370 unsigned char *buf;
10371 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10372 const size_t checksumSize = checksumCalculator->checksumByteSize();
10373 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10374 buf = stream->alloc(totalSize);
10375 ptr = buf;
10376 int tmp = OP_glProgramUniform2iv;memcpy(ptr, &tmp, 4); ptr += 4;
10377 memcpy(ptr, &totalSize, 4); ptr += 4;
10378
10379 memcpy(ptr, &program, 4); ptr += 4;
10380 memcpy(ptr, &location, 4); ptr += 4;
10381 memcpy(ptr, &count, 4); ptr += 4;
10382 memcpy(ptr, &__size_value, 4); ptr += 4;
10383 memcpy(ptr, value, __size_value);ptr += __size_value;
10384
10385 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10386 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10387
10388 }
10389
glProgramUniform3iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10390 void glProgramUniform3iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10391 {
10392 ENCODER_DEBUG_LOG("glProgramUniform3iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10393 AEMU_SCOPED_TRACE("glProgramUniform3iv encode");
10394
10395 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10396 IOStream *stream = ctx->m_stream;
10397 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10398 bool useChecksum = checksumCalculator->getVersion() > 0;
10399
10400 const unsigned int __size_value = (count * 3 * sizeof(GLint));
10401 unsigned char *ptr;
10402 unsigned char *buf;
10403 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10404 const size_t checksumSize = checksumCalculator->checksumByteSize();
10405 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10406 buf = stream->alloc(totalSize);
10407 ptr = buf;
10408 int tmp = OP_glProgramUniform3iv;memcpy(ptr, &tmp, 4); ptr += 4;
10409 memcpy(ptr, &totalSize, 4); ptr += 4;
10410
10411 memcpy(ptr, &program, 4); ptr += 4;
10412 memcpy(ptr, &location, 4); ptr += 4;
10413 memcpy(ptr, &count, 4); ptr += 4;
10414 memcpy(ptr, &__size_value, 4); ptr += 4;
10415 memcpy(ptr, value, __size_value);ptr += __size_value;
10416
10417 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10418 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10419
10420 }
10421
glProgramUniform4iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10422 void glProgramUniform4iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10423 {
10424 ENCODER_DEBUG_LOG("glProgramUniform4iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10425 AEMU_SCOPED_TRACE("glProgramUniform4iv encode");
10426
10427 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10428 IOStream *stream = ctx->m_stream;
10429 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10430 bool useChecksum = checksumCalculator->getVersion() > 0;
10431
10432 const unsigned int __size_value = (count * 4 * sizeof(GLint));
10433 unsigned char *ptr;
10434 unsigned char *buf;
10435 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10436 const size_t checksumSize = checksumCalculator->checksumByteSize();
10437 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10438 buf = stream->alloc(totalSize);
10439 ptr = buf;
10440 int tmp = OP_glProgramUniform4iv;memcpy(ptr, &tmp, 4); ptr += 4;
10441 memcpy(ptr, &totalSize, 4); ptr += 4;
10442
10443 memcpy(ptr, &program, 4); ptr += 4;
10444 memcpy(ptr, &location, 4); ptr += 4;
10445 memcpy(ptr, &count, 4); ptr += 4;
10446 memcpy(ptr, &__size_value, 4); ptr += 4;
10447 memcpy(ptr, value, __size_value);ptr += __size_value;
10448
10449 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10450 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10451
10452 }
10453
glProgramUniform1uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10454 void glProgramUniform1uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10455 {
10456 ENCODER_DEBUG_LOG("glProgramUniform1uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10457 AEMU_SCOPED_TRACE("glProgramUniform1uiv encode");
10458
10459 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10460 IOStream *stream = ctx->m_stream;
10461 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10462 bool useChecksum = checksumCalculator->getVersion() > 0;
10463
10464 const unsigned int __size_value = (count * sizeof(GLuint));
10465 unsigned char *ptr;
10466 unsigned char *buf;
10467 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10468 const size_t checksumSize = checksumCalculator->checksumByteSize();
10469 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10470 buf = stream->alloc(totalSize);
10471 ptr = buf;
10472 int tmp = OP_glProgramUniform1uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10473 memcpy(ptr, &totalSize, 4); ptr += 4;
10474
10475 memcpy(ptr, &program, 4); ptr += 4;
10476 memcpy(ptr, &location, 4); ptr += 4;
10477 memcpy(ptr, &count, 4); ptr += 4;
10478 memcpy(ptr, &__size_value, 4); ptr += 4;
10479 memcpy(ptr, value, __size_value);ptr += __size_value;
10480
10481 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10482 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10483
10484 }
10485
glProgramUniform2uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10486 void glProgramUniform2uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10487 {
10488 ENCODER_DEBUG_LOG("glProgramUniform2uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10489 AEMU_SCOPED_TRACE("glProgramUniform2uiv encode");
10490
10491 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10492 IOStream *stream = ctx->m_stream;
10493 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10494 bool useChecksum = checksumCalculator->getVersion() > 0;
10495
10496 const unsigned int __size_value = (count * 2 * sizeof(GLuint));
10497 unsigned char *ptr;
10498 unsigned char *buf;
10499 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10500 const size_t checksumSize = checksumCalculator->checksumByteSize();
10501 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10502 buf = stream->alloc(totalSize);
10503 ptr = buf;
10504 int tmp = OP_glProgramUniform2uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10505 memcpy(ptr, &totalSize, 4); ptr += 4;
10506
10507 memcpy(ptr, &program, 4); ptr += 4;
10508 memcpy(ptr, &location, 4); ptr += 4;
10509 memcpy(ptr, &count, 4); ptr += 4;
10510 memcpy(ptr, &__size_value, 4); ptr += 4;
10511 memcpy(ptr, value, __size_value);ptr += __size_value;
10512
10513 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10514 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10515
10516 }
10517
glProgramUniform3uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10518 void glProgramUniform3uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10519 {
10520 ENCODER_DEBUG_LOG("glProgramUniform3uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10521 AEMU_SCOPED_TRACE("glProgramUniform3uiv encode");
10522
10523 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10524 IOStream *stream = ctx->m_stream;
10525 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10526 bool useChecksum = checksumCalculator->getVersion() > 0;
10527
10528 const unsigned int __size_value = (count * 3 * sizeof(GLuint));
10529 unsigned char *ptr;
10530 unsigned char *buf;
10531 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10532 const size_t checksumSize = checksumCalculator->checksumByteSize();
10533 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10534 buf = stream->alloc(totalSize);
10535 ptr = buf;
10536 int tmp = OP_glProgramUniform3uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10537 memcpy(ptr, &totalSize, 4); ptr += 4;
10538
10539 memcpy(ptr, &program, 4); ptr += 4;
10540 memcpy(ptr, &location, 4); ptr += 4;
10541 memcpy(ptr, &count, 4); ptr += 4;
10542 memcpy(ptr, &__size_value, 4); ptr += 4;
10543 memcpy(ptr, value, __size_value);ptr += __size_value;
10544
10545 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10546 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10547
10548 }
10549
glProgramUniform4uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10550 void glProgramUniform4uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10551 {
10552 ENCODER_DEBUG_LOG("glProgramUniform4uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10553 AEMU_SCOPED_TRACE("glProgramUniform4uiv encode");
10554
10555 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10556 IOStream *stream = ctx->m_stream;
10557 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10558 bool useChecksum = checksumCalculator->getVersion() > 0;
10559
10560 const unsigned int __size_value = (count * 4 * sizeof(GLuint));
10561 unsigned char *ptr;
10562 unsigned char *buf;
10563 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10564 const size_t checksumSize = checksumCalculator->checksumByteSize();
10565 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10566 buf = stream->alloc(totalSize);
10567 ptr = buf;
10568 int tmp = OP_glProgramUniform4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10569 memcpy(ptr, &totalSize, 4); ptr += 4;
10570
10571 memcpy(ptr, &program, 4); ptr += 4;
10572 memcpy(ptr, &location, 4); ptr += 4;
10573 memcpy(ptr, &count, 4); ptr += 4;
10574 memcpy(ptr, &__size_value, 4); ptr += 4;
10575 memcpy(ptr, value, __size_value);ptr += __size_value;
10576
10577 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10578 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10579
10580 }
10581
glProgramUniformMatrix2fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10582 void glProgramUniformMatrix2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10583 {
10584 ENCODER_DEBUG_LOG("glProgramUniformMatrix2fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10585 AEMU_SCOPED_TRACE("glProgramUniformMatrix2fv encode");
10586
10587 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10588 IOStream *stream = ctx->m_stream;
10589 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10590 bool useChecksum = checksumCalculator->getVersion() > 0;
10591
10592 const unsigned int __size_value = (count * 4 * sizeof(GLfloat));
10593 unsigned char *ptr;
10594 unsigned char *buf;
10595 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10596 const size_t checksumSize = checksumCalculator->checksumByteSize();
10597 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10598 buf = stream->alloc(totalSize);
10599 ptr = buf;
10600 int tmp = OP_glProgramUniformMatrix2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10601 memcpy(ptr, &totalSize, 4); ptr += 4;
10602
10603 memcpy(ptr, &program, 4); ptr += 4;
10604 memcpy(ptr, &location, 4); ptr += 4;
10605 memcpy(ptr, &count, 4); ptr += 4;
10606 memcpy(ptr, &transpose, 1); ptr += 1;
10607 memcpy(ptr, &__size_value, 4); ptr += 4;
10608 memcpy(ptr, value, __size_value);ptr += __size_value;
10609
10610 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10611 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10612
10613 }
10614
glProgramUniformMatrix3fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10615 void glProgramUniformMatrix3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10616 {
10617 ENCODER_DEBUG_LOG("glProgramUniformMatrix3fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10618 AEMU_SCOPED_TRACE("glProgramUniformMatrix3fv encode");
10619
10620 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10621 IOStream *stream = ctx->m_stream;
10622 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10623 bool useChecksum = checksumCalculator->getVersion() > 0;
10624
10625 const unsigned int __size_value = (count * 9 * sizeof(GLfloat));
10626 unsigned char *ptr;
10627 unsigned char *buf;
10628 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10629 const size_t checksumSize = checksumCalculator->checksumByteSize();
10630 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10631 buf = stream->alloc(totalSize);
10632 ptr = buf;
10633 int tmp = OP_glProgramUniformMatrix3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10634 memcpy(ptr, &totalSize, 4); ptr += 4;
10635
10636 memcpy(ptr, &program, 4); ptr += 4;
10637 memcpy(ptr, &location, 4); ptr += 4;
10638 memcpy(ptr, &count, 4); ptr += 4;
10639 memcpy(ptr, &transpose, 1); ptr += 1;
10640 memcpy(ptr, &__size_value, 4); ptr += 4;
10641 memcpy(ptr, value, __size_value);ptr += __size_value;
10642
10643 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10644 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10645
10646 }
10647
glProgramUniformMatrix4fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10648 void glProgramUniformMatrix4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10649 {
10650 ENCODER_DEBUG_LOG("glProgramUniformMatrix4fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10651 AEMU_SCOPED_TRACE("glProgramUniformMatrix4fv encode");
10652
10653 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10654 IOStream *stream = ctx->m_stream;
10655 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10656 bool useChecksum = checksumCalculator->getVersion() > 0;
10657
10658 const unsigned int __size_value = (count * 16 * sizeof(GLfloat));
10659 unsigned char *ptr;
10660 unsigned char *buf;
10661 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10662 const size_t checksumSize = checksumCalculator->checksumByteSize();
10663 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10664 buf = stream->alloc(totalSize);
10665 ptr = buf;
10666 int tmp = OP_glProgramUniformMatrix4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10667 memcpy(ptr, &totalSize, 4); ptr += 4;
10668
10669 memcpy(ptr, &program, 4); ptr += 4;
10670 memcpy(ptr, &location, 4); ptr += 4;
10671 memcpy(ptr, &count, 4); ptr += 4;
10672 memcpy(ptr, &transpose, 1); ptr += 1;
10673 memcpy(ptr, &__size_value, 4); ptr += 4;
10674 memcpy(ptr, value, __size_value);ptr += __size_value;
10675
10676 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10677 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10678
10679 }
10680
glProgramUniformMatrix2x3fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10681 void glProgramUniformMatrix2x3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10682 {
10683 ENCODER_DEBUG_LOG("glProgramUniformMatrix2x3fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10684 AEMU_SCOPED_TRACE("glProgramUniformMatrix2x3fv encode");
10685
10686 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10687 IOStream *stream = ctx->m_stream;
10688 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10689 bool useChecksum = checksumCalculator->getVersion() > 0;
10690
10691 const unsigned int __size_value = (count * 6 * sizeof(GLfloat));
10692 unsigned char *ptr;
10693 unsigned char *buf;
10694 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10695 const size_t checksumSize = checksumCalculator->checksumByteSize();
10696 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10697 buf = stream->alloc(totalSize);
10698 ptr = buf;
10699 int tmp = OP_glProgramUniformMatrix2x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10700 memcpy(ptr, &totalSize, 4); ptr += 4;
10701
10702 memcpy(ptr, &program, 4); ptr += 4;
10703 memcpy(ptr, &location, 4); ptr += 4;
10704 memcpy(ptr, &count, 4); ptr += 4;
10705 memcpy(ptr, &transpose, 1); ptr += 1;
10706 memcpy(ptr, &__size_value, 4); ptr += 4;
10707 memcpy(ptr, value, __size_value);ptr += __size_value;
10708
10709 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10710 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10711
10712 }
10713
glProgramUniformMatrix3x2fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10714 void glProgramUniformMatrix3x2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10715 {
10716 ENCODER_DEBUG_LOG("glProgramUniformMatrix3x2fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10717 AEMU_SCOPED_TRACE("glProgramUniformMatrix3x2fv encode");
10718
10719 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10720 IOStream *stream = ctx->m_stream;
10721 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10722 bool useChecksum = checksumCalculator->getVersion() > 0;
10723
10724 const unsigned int __size_value = (count * 6 * sizeof(GLfloat));
10725 unsigned char *ptr;
10726 unsigned char *buf;
10727 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10728 const size_t checksumSize = checksumCalculator->checksumByteSize();
10729 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10730 buf = stream->alloc(totalSize);
10731 ptr = buf;
10732 int tmp = OP_glProgramUniformMatrix3x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10733 memcpy(ptr, &totalSize, 4); ptr += 4;
10734
10735 memcpy(ptr, &program, 4); ptr += 4;
10736 memcpy(ptr, &location, 4); ptr += 4;
10737 memcpy(ptr, &count, 4); ptr += 4;
10738 memcpy(ptr, &transpose, 1); ptr += 1;
10739 memcpy(ptr, &__size_value, 4); ptr += 4;
10740 memcpy(ptr, value, __size_value);ptr += __size_value;
10741
10742 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10743 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10744
10745 }
10746
glProgramUniformMatrix2x4fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10747 void glProgramUniformMatrix2x4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10748 {
10749 ENCODER_DEBUG_LOG("glProgramUniformMatrix2x4fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10750 AEMU_SCOPED_TRACE("glProgramUniformMatrix2x4fv encode");
10751
10752 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10753 IOStream *stream = ctx->m_stream;
10754 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10755 bool useChecksum = checksumCalculator->getVersion() > 0;
10756
10757 const unsigned int __size_value = (count * 8 * sizeof(GLfloat));
10758 unsigned char *ptr;
10759 unsigned char *buf;
10760 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10761 const size_t checksumSize = checksumCalculator->checksumByteSize();
10762 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10763 buf = stream->alloc(totalSize);
10764 ptr = buf;
10765 int tmp = OP_glProgramUniformMatrix2x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10766 memcpy(ptr, &totalSize, 4); ptr += 4;
10767
10768 memcpy(ptr, &program, 4); ptr += 4;
10769 memcpy(ptr, &location, 4); ptr += 4;
10770 memcpy(ptr, &count, 4); ptr += 4;
10771 memcpy(ptr, &transpose, 1); ptr += 1;
10772 memcpy(ptr, &__size_value, 4); ptr += 4;
10773 memcpy(ptr, value, __size_value);ptr += __size_value;
10774
10775 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10776 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10777
10778 }
10779
glProgramUniformMatrix4x2fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10780 void glProgramUniformMatrix4x2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10781 {
10782 ENCODER_DEBUG_LOG("glProgramUniformMatrix4x2fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10783 AEMU_SCOPED_TRACE("glProgramUniformMatrix4x2fv encode");
10784
10785 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10786 IOStream *stream = ctx->m_stream;
10787 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10788 bool useChecksum = checksumCalculator->getVersion() > 0;
10789
10790 const unsigned int __size_value = (count * 8 * sizeof(GLfloat));
10791 unsigned char *ptr;
10792 unsigned char *buf;
10793 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10794 const size_t checksumSize = checksumCalculator->checksumByteSize();
10795 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10796 buf = stream->alloc(totalSize);
10797 ptr = buf;
10798 int tmp = OP_glProgramUniformMatrix4x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10799 memcpy(ptr, &totalSize, 4); ptr += 4;
10800
10801 memcpy(ptr, &program, 4); ptr += 4;
10802 memcpy(ptr, &location, 4); ptr += 4;
10803 memcpy(ptr, &count, 4); ptr += 4;
10804 memcpy(ptr, &transpose, 1); ptr += 1;
10805 memcpy(ptr, &__size_value, 4); ptr += 4;
10806 memcpy(ptr, value, __size_value);ptr += __size_value;
10807
10808 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10809 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10810
10811 }
10812
glProgramUniformMatrix3x4fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10813 void glProgramUniformMatrix3x4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10814 {
10815 ENCODER_DEBUG_LOG("glProgramUniformMatrix3x4fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10816 AEMU_SCOPED_TRACE("glProgramUniformMatrix3x4fv encode");
10817
10818 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10819 IOStream *stream = ctx->m_stream;
10820 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10821 bool useChecksum = checksumCalculator->getVersion() > 0;
10822
10823 const unsigned int __size_value = (count * 12 * sizeof(GLfloat));
10824 unsigned char *ptr;
10825 unsigned char *buf;
10826 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10827 const size_t checksumSize = checksumCalculator->checksumByteSize();
10828 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10829 buf = stream->alloc(totalSize);
10830 ptr = buf;
10831 int tmp = OP_glProgramUniformMatrix3x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10832 memcpy(ptr, &totalSize, 4); ptr += 4;
10833
10834 memcpy(ptr, &program, 4); ptr += 4;
10835 memcpy(ptr, &location, 4); ptr += 4;
10836 memcpy(ptr, &count, 4); ptr += 4;
10837 memcpy(ptr, &transpose, 1); ptr += 1;
10838 memcpy(ptr, &__size_value, 4); ptr += 4;
10839 memcpy(ptr, value, __size_value);ptr += __size_value;
10840
10841 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10842 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10843
10844 }
10845
glProgramUniformMatrix4x3fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10846 void glProgramUniformMatrix4x3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10847 {
10848 ENCODER_DEBUG_LOG("glProgramUniformMatrix4x3fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10849 AEMU_SCOPED_TRACE("glProgramUniformMatrix4x3fv encode");
10850
10851 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10852 IOStream *stream = ctx->m_stream;
10853 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10854 bool useChecksum = checksumCalculator->getVersion() > 0;
10855
10856 const unsigned int __size_value = (count * 12 * sizeof(GLfloat));
10857 unsigned char *ptr;
10858 unsigned char *buf;
10859 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10860 const size_t checksumSize = checksumCalculator->checksumByteSize();
10861 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10862 buf = stream->alloc(totalSize);
10863 ptr = buf;
10864 int tmp = OP_glProgramUniformMatrix4x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10865 memcpy(ptr, &totalSize, 4); ptr += 4;
10866
10867 memcpy(ptr, &program, 4); ptr += 4;
10868 memcpy(ptr, &location, 4); ptr += 4;
10869 memcpy(ptr, &count, 4); ptr += 4;
10870 memcpy(ptr, &transpose, 1); ptr += 1;
10871 memcpy(ptr, &__size_value, 4); ptr += 4;
10872 memcpy(ptr, value, __size_value);ptr += __size_value;
10873
10874 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10875 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10876
10877 }
10878
glGetProgramInterfaceiv_enc(void * self,GLuint program,GLenum programInterface,GLenum pname,GLint * params)10879 void glGetProgramInterfaceiv_enc(void *self , GLuint program, GLenum programInterface, GLenum pname, GLint* params)
10880 {
10881 ENCODER_DEBUG_LOG("glGetProgramInterfaceiv(program:%u, programInterface:0x%08x, pname:0x%08x, params:0x%08x)", program, programInterface, pname, params);
10882 AEMU_SCOPED_TRACE("glGetProgramInterfaceiv encode");
10883
10884 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10885 IOStream *stream = ctx->m_stream;
10886 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10887 bool useChecksum = checksumCalculator->getVersion() > 0;
10888
10889 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
10890 unsigned char *ptr;
10891 unsigned char *buf;
10892 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
10893 const size_t checksumSize = checksumCalculator->checksumByteSize();
10894 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10895 buf = stream->alloc(totalSize);
10896 ptr = buf;
10897 int tmp = OP_glGetProgramInterfaceiv;memcpy(ptr, &tmp, 4); ptr += 4;
10898 memcpy(ptr, &totalSize, 4); ptr += 4;
10899
10900 memcpy(ptr, &program, 4); ptr += 4;
10901 memcpy(ptr, &programInterface, 4); ptr += 4;
10902 memcpy(ptr, &pname, 4); ptr += 4;
10903 memcpy(ptr, &__size_params, 4); ptr += 4;
10904
10905 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10906 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10907
10908 stream->readback(params, __size_params);
10909 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
10910 if (useChecksum) {
10911 unsigned char *checksumBufPtr = NULL;
10912 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
10913 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10914 stream->readback(checksumBufPtr, checksumSize);
10915 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10916 ALOGE("glGetProgramInterfaceiv: GL communication error, please report this issue to b.android.com.\n");
10917 abort();
10918 }
10919 }
10920 }
10921
glGetProgramResourceiv_enc(void * self,GLuint program,GLenum programInterface,GLuint index,GLsizei propCount,const GLenum * props,GLsizei bufSize,GLsizei * length,GLint * params)10922 void glGetProgramResourceiv_enc(void *self , GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei* length, GLint* params)
10923 {
10924 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);
10925 AEMU_SCOPED_TRACE("glGetProgramResourceiv encode");
10926
10927 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10928 IOStream *stream = ctx->m_stream;
10929 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10930 bool useChecksum = checksumCalculator->getVersion() > 0;
10931
10932 const unsigned int __size_props = (propCount * sizeof(GLenum));
10933 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
10934 const unsigned int __size_params = (bufSize * sizeof(GLint));
10935 unsigned char *ptr;
10936 unsigned char *buf;
10937 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_props + 4 + 0 + 0 + 3*4;
10938 const size_t checksumSize = checksumCalculator->checksumByteSize();
10939 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10940 buf = stream->alloc(totalSize);
10941 ptr = buf;
10942 int tmp = OP_glGetProgramResourceiv;memcpy(ptr, &tmp, 4); ptr += 4;
10943 memcpy(ptr, &totalSize, 4); ptr += 4;
10944
10945 memcpy(ptr, &program, 4); ptr += 4;
10946 memcpy(ptr, &programInterface, 4); ptr += 4;
10947 memcpy(ptr, &index, 4); ptr += 4;
10948 memcpy(ptr, &propCount, 4); ptr += 4;
10949 memcpy(ptr, &__size_props, 4); ptr += 4;
10950 memcpy(ptr, props, __size_props);ptr += __size_props;
10951 memcpy(ptr, &bufSize, 4); ptr += 4;
10952 memcpy(ptr, &__size_length, 4); ptr += 4;
10953 memcpy(ptr, &__size_params, 4); ptr += 4;
10954
10955 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10956 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10957
10958 if (length != NULL) {
10959 stream->readback(length, __size_length);
10960 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
10961 }
10962 stream->readback(params, __size_params);
10963 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
10964 if (useChecksum) {
10965 unsigned char *checksumBufPtr = NULL;
10966 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
10967 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10968 stream->readback(checksumBufPtr, checksumSize);
10969 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10970 ALOGE("glGetProgramResourceiv: GL communication error, please report this issue to b.android.com.\n");
10971 abort();
10972 }
10973 }
10974 }
10975
glGetProgramResourceIndex_enc(void * self,GLuint program,GLenum programInterface,const char * name)10976 GLuint glGetProgramResourceIndex_enc(void *self , GLuint program, GLenum programInterface, const char* name)
10977 {
10978 ENCODER_DEBUG_LOG("glGetProgramResourceIndex(program:%u, programInterface:0x%08x, name:0x%08x)", program, programInterface, name);
10979 AEMU_SCOPED_TRACE("glGetProgramResourceIndex encode");
10980
10981 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10982 IOStream *stream = ctx->m_stream;
10983 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10984 bool useChecksum = checksumCalculator->getVersion() > 0;
10985
10986 const unsigned int __size_name = (strlen(name) + 1);
10987 unsigned char *ptr;
10988 unsigned char *buf;
10989 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
10990 const size_t checksumSize = checksumCalculator->checksumByteSize();
10991 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10992 buf = stream->alloc(totalSize);
10993 ptr = buf;
10994 int tmp = OP_glGetProgramResourceIndex;memcpy(ptr, &tmp, 4); ptr += 4;
10995 memcpy(ptr, &totalSize, 4); ptr += 4;
10996
10997 memcpy(ptr, &program, 4); ptr += 4;
10998 memcpy(ptr, &programInterface, 4); ptr += 4;
10999 memcpy(ptr, &__size_name, 4); ptr += 4;
11000 memcpy(ptr, name, __size_name);ptr += __size_name;
11001
11002 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11003 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11004
11005
11006 GLuint retval;
11007 stream->readback(&retval, 4);
11008 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
11009 if (useChecksum) {
11010 unsigned char *checksumBufPtr = NULL;
11011 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11012 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11013 stream->readback(checksumBufPtr, checksumSize);
11014 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11015 ALOGE("glGetProgramResourceIndex: GL communication error, please report this issue to b.android.com.\n");
11016 abort();
11017 }
11018 }
11019 return retval;
11020 }
11021
glGetProgramResourceLocation_enc(void * self,GLuint program,GLenum programInterface,const char * name)11022 GLint glGetProgramResourceLocation_enc(void *self , GLuint program, GLenum programInterface, const char* name)
11023 {
11024 ENCODER_DEBUG_LOG("glGetProgramResourceLocation(program:%u, programInterface:0x%08x, name:0x%08x)", program, programInterface, name);
11025 AEMU_SCOPED_TRACE("glGetProgramResourceLocation encode");
11026
11027 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11028 IOStream *stream = ctx->m_stream;
11029 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11030 bool useChecksum = checksumCalculator->getVersion() > 0;
11031
11032 const unsigned int __size_name = (strlen(name) + 1);
11033 unsigned char *ptr;
11034 unsigned char *buf;
11035 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
11036 const size_t checksumSize = checksumCalculator->checksumByteSize();
11037 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11038 buf = stream->alloc(totalSize);
11039 ptr = buf;
11040 int tmp = OP_glGetProgramResourceLocation;memcpy(ptr, &tmp, 4); ptr += 4;
11041 memcpy(ptr, &totalSize, 4); ptr += 4;
11042
11043 memcpy(ptr, &program, 4); ptr += 4;
11044 memcpy(ptr, &programInterface, 4); ptr += 4;
11045 memcpy(ptr, &__size_name, 4); ptr += 4;
11046 memcpy(ptr, name, __size_name);ptr += __size_name;
11047
11048 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11049 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11050
11051
11052 GLint retval;
11053 stream->readback(&retval, 4);
11054 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
11055 if (useChecksum) {
11056 unsigned char *checksumBufPtr = NULL;
11057 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11058 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11059 stream->readback(checksumBufPtr, checksumSize);
11060 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11061 ALOGE("glGetProgramResourceLocation: GL communication error, please report this issue to b.android.com.\n");
11062 abort();
11063 }
11064 }
11065 return retval;
11066 }
11067
glGetProgramResourceName_enc(void * self,GLuint program,GLenum programInterface,GLuint index,GLsizei bufSize,GLsizei * length,char * name)11068 void glGetProgramResourceName_enc(void *self , GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, char* name)
11069 {
11070 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);
11071 AEMU_SCOPED_TRACE("glGetProgramResourceName encode");
11072
11073 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11074 IOStream *stream = ctx->m_stream;
11075 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11076 bool useChecksum = checksumCalculator->getVersion() > 0;
11077
11078 const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
11079 const unsigned int __size_name = bufSize;
11080 unsigned char *ptr;
11081 unsigned char *buf;
11082 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 0 + 2*4;
11083 const size_t checksumSize = checksumCalculator->checksumByteSize();
11084 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11085 buf = stream->alloc(totalSize);
11086 ptr = buf;
11087 int tmp = OP_glGetProgramResourceName;memcpy(ptr, &tmp, 4); ptr += 4;
11088 memcpy(ptr, &totalSize, 4); ptr += 4;
11089
11090 memcpy(ptr, &program, 4); ptr += 4;
11091 memcpy(ptr, &programInterface, 4); ptr += 4;
11092 memcpy(ptr, &index, 4); ptr += 4;
11093 memcpy(ptr, &bufSize, 4); ptr += 4;
11094 memcpy(ptr, &__size_length, 4); ptr += 4;
11095 memcpy(ptr, &__size_name, 4); ptr += 4;
11096
11097 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11098 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11099
11100 if (length != NULL) {
11101 stream->readback(length, __size_length);
11102 if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
11103 }
11104 stream->readback(name, __size_name);
11105 if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
11106 if (useChecksum) {
11107 unsigned char *checksumBufPtr = NULL;
11108 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11109 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11110 stream->readback(checksumBufPtr, checksumSize);
11111 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11112 ALOGE("glGetProgramResourceName: GL communication error, please report this issue to b.android.com.\n");
11113 abort();
11114 }
11115 }
11116 }
11117
glBindImageTexture_enc(void * self,GLuint unit,GLuint texture,GLint level,GLboolean layered,GLint layer,GLenum access,GLenum format)11118 void glBindImageTexture_enc(void *self , GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
11119 {
11120 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);
11121 AEMU_SCOPED_TRACE("glBindImageTexture encode");
11122
11123 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11124 IOStream *stream = ctx->m_stream;
11125 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11126 bool useChecksum = checksumCalculator->getVersion() > 0;
11127
11128 unsigned char *ptr;
11129 unsigned char *buf;
11130 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + 4 + 4;
11131 const size_t checksumSize = checksumCalculator->checksumByteSize();
11132 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11133 buf = stream->alloc(totalSize);
11134 ptr = buf;
11135 int tmp = OP_glBindImageTexture;memcpy(ptr, &tmp, 4); ptr += 4;
11136 memcpy(ptr, &totalSize, 4); ptr += 4;
11137
11138 memcpy(ptr, &unit, 4); ptr += 4;
11139 memcpy(ptr, &texture, 4); ptr += 4;
11140 memcpy(ptr, &level, 4); ptr += 4;
11141 memcpy(ptr, &layered, 1); ptr += 1;
11142 memcpy(ptr, &layer, 4); ptr += 4;
11143 memcpy(ptr, &access, 4); ptr += 4;
11144 memcpy(ptr, &format, 4); ptr += 4;
11145
11146 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11147 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11148
11149 }
11150
glDispatchCompute_enc(void * self,GLuint num_groups_x,GLuint num_groups_y,GLuint num_groups_z)11151 void glDispatchCompute_enc(void *self , GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
11152 {
11153 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);
11154 AEMU_SCOPED_TRACE("glDispatchCompute encode");
11155
11156 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11157 IOStream *stream = ctx->m_stream;
11158 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11159 bool useChecksum = checksumCalculator->getVersion() > 0;
11160
11161 unsigned char *ptr;
11162 unsigned char *buf;
11163 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
11164 const size_t checksumSize = checksumCalculator->checksumByteSize();
11165 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11166 buf = stream->alloc(totalSize);
11167 ptr = buf;
11168 int tmp = OP_glDispatchCompute;memcpy(ptr, &tmp, 4); ptr += 4;
11169 memcpy(ptr, &totalSize, 4); ptr += 4;
11170
11171 memcpy(ptr, &num_groups_x, 4); ptr += 4;
11172 memcpy(ptr, &num_groups_y, 4); ptr += 4;
11173 memcpy(ptr, &num_groups_z, 4); ptr += 4;
11174
11175 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11176 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11177
11178 }
11179
glDispatchComputeIndirect_enc(void * self,GLintptr indirect)11180 void glDispatchComputeIndirect_enc(void *self , GLintptr indirect)
11181 {
11182 ENCODER_DEBUG_LOG("glDispatchComputeIndirect(indirect:0x%08lx)", indirect);
11183 AEMU_SCOPED_TRACE("glDispatchComputeIndirect encode");
11184
11185 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11186 IOStream *stream = ctx->m_stream;
11187 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11188 bool useChecksum = checksumCalculator->getVersion() > 0;
11189
11190 unsigned char *ptr;
11191 unsigned char *buf;
11192 const size_t sizeWithoutChecksum = 8 + 4;
11193 const size_t checksumSize = checksumCalculator->checksumByteSize();
11194 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11195 buf = stream->alloc(totalSize);
11196 ptr = buf;
11197 int tmp = OP_glDispatchComputeIndirect;memcpy(ptr, &tmp, 4); ptr += 4;
11198 memcpy(ptr, &totalSize, 4); ptr += 4;
11199
11200 memcpy(ptr, &indirect, 4); ptr += 4;
11201
11202 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11203 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11204
11205 }
11206
glBindVertexBuffer_enc(void * self,GLuint bindingindex,GLuint buffer,GLintptr offset,GLintptr stride)11207 void glBindVertexBuffer_enc(void *self , GLuint bindingindex, GLuint buffer, GLintptr offset, GLintptr stride)
11208 {
11209 ENCODER_DEBUG_LOG("glBindVertexBuffer(bindingindex:%u, buffer:%u, offset:0x%08lx, stride:0x%08lx)", bindingindex, buffer, offset, stride);
11210 AEMU_SCOPED_TRACE("glBindVertexBuffer encode");
11211
11212 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11213 IOStream *stream = ctx->m_stream;
11214 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11215 bool useChecksum = checksumCalculator->getVersion() > 0;
11216
11217 unsigned char *ptr;
11218 unsigned char *buf;
11219 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
11220 const size_t checksumSize = checksumCalculator->checksumByteSize();
11221 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11222 buf = stream->alloc(totalSize);
11223 ptr = buf;
11224 int tmp = OP_glBindVertexBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
11225 memcpy(ptr, &totalSize, 4); ptr += 4;
11226
11227 memcpy(ptr, &bindingindex, 4); ptr += 4;
11228 memcpy(ptr, &buffer, 4); ptr += 4;
11229 memcpy(ptr, &offset, 4); ptr += 4;
11230 memcpy(ptr, &stride, 4); ptr += 4;
11231
11232 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11233 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11234
11235 }
11236
glVertexAttribBinding_enc(void * self,GLuint attribindex,GLuint bindingindex)11237 void glVertexAttribBinding_enc(void *self , GLuint attribindex, GLuint bindingindex)
11238 {
11239 ENCODER_DEBUG_LOG("glVertexAttribBinding(attribindex:%u, bindingindex:%u)", attribindex, bindingindex);
11240 AEMU_SCOPED_TRACE("glVertexAttribBinding encode");
11241
11242 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11243 IOStream *stream = ctx->m_stream;
11244 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11245 bool useChecksum = checksumCalculator->getVersion() > 0;
11246
11247 unsigned char *ptr;
11248 unsigned char *buf;
11249 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11250 const size_t checksumSize = checksumCalculator->checksumByteSize();
11251 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11252 buf = stream->alloc(totalSize);
11253 ptr = buf;
11254 int tmp = OP_glVertexAttribBinding;memcpy(ptr, &tmp, 4); ptr += 4;
11255 memcpy(ptr, &totalSize, 4); ptr += 4;
11256
11257 memcpy(ptr, &attribindex, 4); ptr += 4;
11258 memcpy(ptr, &bindingindex, 4); ptr += 4;
11259
11260 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11261 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11262
11263 }
11264
glVertexAttribFormat_enc(void * self,GLuint attribindex,GLint size,GLenum type,GLboolean normalized,GLuint relativeoffset)11265 void glVertexAttribFormat_enc(void *self , GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
11266 {
11267 ENCODER_DEBUG_LOG("glVertexAttribFormat(attribindex:%u, size:%d, type:0x%08x, normalized:%d, relativeoffset:%u)", attribindex, size, type, normalized, relativeoffset);
11268 AEMU_SCOPED_TRACE("glVertexAttribFormat encode");
11269
11270 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11271 IOStream *stream = ctx->m_stream;
11272 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11273 bool useChecksum = checksumCalculator->getVersion() > 0;
11274
11275 unsigned char *ptr;
11276 unsigned char *buf;
11277 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4;
11278 const size_t checksumSize = checksumCalculator->checksumByteSize();
11279 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11280 buf = stream->alloc(totalSize);
11281 ptr = buf;
11282 int tmp = OP_glVertexAttribFormat;memcpy(ptr, &tmp, 4); ptr += 4;
11283 memcpy(ptr, &totalSize, 4); ptr += 4;
11284
11285 memcpy(ptr, &attribindex, 4); ptr += 4;
11286 memcpy(ptr, &size, 4); ptr += 4;
11287 memcpy(ptr, &type, 4); ptr += 4;
11288 memcpy(ptr, &normalized, 1); ptr += 1;
11289 memcpy(ptr, &relativeoffset, 4); ptr += 4;
11290
11291 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11292 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11293
11294 }
11295
glVertexAttribIFormat_enc(void * self,GLuint attribindex,GLint size,GLenum type,GLuint relativeoffset)11296 void glVertexAttribIFormat_enc(void *self , GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
11297 {
11298 ENCODER_DEBUG_LOG("glVertexAttribIFormat(attribindex:%u, size:%d, type:0x%08x, relativeoffset:%u)", attribindex, size, type, relativeoffset);
11299 AEMU_SCOPED_TRACE("glVertexAttribIFormat encode");
11300
11301 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11302 IOStream *stream = ctx->m_stream;
11303 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11304 bool useChecksum = checksumCalculator->getVersion() > 0;
11305
11306 unsigned char *ptr;
11307 unsigned char *buf;
11308 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
11309 const size_t checksumSize = checksumCalculator->checksumByteSize();
11310 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11311 buf = stream->alloc(totalSize);
11312 ptr = buf;
11313 int tmp = OP_glVertexAttribIFormat;memcpy(ptr, &tmp, 4); ptr += 4;
11314 memcpy(ptr, &totalSize, 4); ptr += 4;
11315
11316 memcpy(ptr, &attribindex, 4); ptr += 4;
11317 memcpy(ptr, &size, 4); ptr += 4;
11318 memcpy(ptr, &type, 4); ptr += 4;
11319 memcpy(ptr, &relativeoffset, 4); ptr += 4;
11320
11321 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11322 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11323
11324 }
11325
glVertexBindingDivisor_enc(void * self,GLuint bindingindex,GLuint divisor)11326 void glVertexBindingDivisor_enc(void *self , GLuint bindingindex, GLuint divisor)
11327 {
11328 ENCODER_DEBUG_LOG("glVertexBindingDivisor(bindingindex:%u, divisor:%u)", bindingindex, divisor);
11329 AEMU_SCOPED_TRACE("glVertexBindingDivisor encode");
11330
11331 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11332 IOStream *stream = ctx->m_stream;
11333 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11334 bool useChecksum = checksumCalculator->getVersion() > 0;
11335
11336 unsigned char *ptr;
11337 unsigned char *buf;
11338 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11339 const size_t checksumSize = checksumCalculator->checksumByteSize();
11340 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11341 buf = stream->alloc(totalSize);
11342 ptr = buf;
11343 int tmp = OP_glVertexBindingDivisor;memcpy(ptr, &tmp, 4); ptr += 4;
11344 memcpy(ptr, &totalSize, 4); ptr += 4;
11345
11346 memcpy(ptr, &bindingindex, 4); ptr += 4;
11347 memcpy(ptr, &divisor, 4); ptr += 4;
11348
11349 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11350 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11351
11352 }
11353
glDrawArraysIndirectDataAEMU_enc(void * self,GLenum mode,const void * indirect,GLuint datalen)11354 void glDrawArraysIndirectDataAEMU_enc(void *self , GLenum mode, const void* indirect, GLuint datalen)
11355 {
11356 ENCODER_DEBUG_LOG("glDrawArraysIndirectDataAEMU(mode:0x%08x, indirect:0x%08x, datalen:%u)", mode, indirect, datalen);
11357 AEMU_SCOPED_TRACE("glDrawArraysIndirectDataAEMU encode");
11358
11359 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11360 IOStream *stream = ctx->m_stream;
11361 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11362 bool useChecksum = checksumCalculator->getVersion() > 0;
11363
11364 const unsigned int __size_indirect = datalen;
11365 unsigned char *ptr;
11366 unsigned char *buf;
11367 const size_t sizeWithoutChecksum = 8 + 4 + __size_indirect + 4 + 1*4;
11368 const size_t checksumSize = checksumCalculator->checksumByteSize();
11369 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11370 buf = stream->alloc(totalSize);
11371 ptr = buf;
11372 int tmp = OP_glDrawArraysIndirectDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11373 memcpy(ptr, &totalSize, 4); ptr += 4;
11374
11375 memcpy(ptr, &mode, 4); ptr += 4;
11376 memcpy(ptr, &__size_indirect, 4); ptr += 4;
11377 memcpy(ptr, indirect, __size_indirect);ptr += __size_indirect;
11378 memcpy(ptr, &datalen, 4); ptr += 4;
11379
11380 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11381 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11382
11383 }
11384
glDrawArraysIndirectOffsetAEMU_enc(void * self,GLenum mode,GLuint offset)11385 void glDrawArraysIndirectOffsetAEMU_enc(void *self , GLenum mode, GLuint offset)
11386 {
11387 ENCODER_DEBUG_LOG("glDrawArraysIndirectOffsetAEMU(mode:0x%08x, offset:%u)", mode, offset);
11388 AEMU_SCOPED_TRACE("glDrawArraysIndirectOffsetAEMU encode");
11389
11390 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11391 IOStream *stream = ctx->m_stream;
11392 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11393 bool useChecksum = checksumCalculator->getVersion() > 0;
11394
11395 unsigned char *ptr;
11396 unsigned char *buf;
11397 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11398 const size_t checksumSize = checksumCalculator->checksumByteSize();
11399 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11400 buf = stream->alloc(totalSize);
11401 ptr = buf;
11402 int tmp = OP_glDrawArraysIndirectOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11403 memcpy(ptr, &totalSize, 4); ptr += 4;
11404
11405 memcpy(ptr, &mode, 4); ptr += 4;
11406 memcpy(ptr, &offset, 4); ptr += 4;
11407
11408 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11409 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11410
11411 }
11412
glDrawElementsIndirectDataAEMU_enc(void * self,GLenum mode,GLenum type,const void * indirect,GLuint datalen)11413 void glDrawElementsIndirectDataAEMU_enc(void *self , GLenum mode, GLenum type, const void* indirect, GLuint datalen)
11414 {
11415 ENCODER_DEBUG_LOG("glDrawElementsIndirectDataAEMU(mode:0x%08x, type:0x%08x, indirect:0x%08x, datalen:%u)", mode, type, indirect, datalen);
11416 AEMU_SCOPED_TRACE("glDrawElementsIndirectDataAEMU encode");
11417
11418 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11419 IOStream *stream = ctx->m_stream;
11420 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11421 bool useChecksum = checksumCalculator->getVersion() > 0;
11422
11423 const unsigned int __size_indirect = datalen;
11424 unsigned char *ptr;
11425 unsigned char *buf;
11426 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_indirect + 4 + 1*4;
11427 const size_t checksumSize = checksumCalculator->checksumByteSize();
11428 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11429 buf = stream->alloc(totalSize);
11430 ptr = buf;
11431 int tmp = OP_glDrawElementsIndirectDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11432 memcpy(ptr, &totalSize, 4); ptr += 4;
11433
11434 memcpy(ptr, &mode, 4); ptr += 4;
11435 memcpy(ptr, &type, 4); ptr += 4;
11436 memcpy(ptr, &__size_indirect, 4); ptr += 4;
11437 memcpy(ptr, indirect, __size_indirect);ptr += __size_indirect;
11438 memcpy(ptr, &datalen, 4); ptr += 4;
11439
11440 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11441 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11442
11443 }
11444
glDrawElementsIndirectOffsetAEMU_enc(void * self,GLenum mode,GLenum type,GLuint offset)11445 void glDrawElementsIndirectOffsetAEMU_enc(void *self , GLenum mode, GLenum type, GLuint offset)
11446 {
11447 ENCODER_DEBUG_LOG("glDrawElementsIndirectOffsetAEMU(mode:0x%08x, type:0x%08x, offset:%u)", mode, type, offset);
11448 AEMU_SCOPED_TRACE("glDrawElementsIndirectOffsetAEMU encode");
11449
11450 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11451 IOStream *stream = ctx->m_stream;
11452 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11453 bool useChecksum = checksumCalculator->getVersion() > 0;
11454
11455 unsigned char *ptr;
11456 unsigned char *buf;
11457 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
11458 const size_t checksumSize = checksumCalculator->checksumByteSize();
11459 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11460 buf = stream->alloc(totalSize);
11461 ptr = buf;
11462 int tmp = OP_glDrawElementsIndirectOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11463 memcpy(ptr, &totalSize, 4); ptr += 4;
11464
11465 memcpy(ptr, &mode, 4); ptr += 4;
11466 memcpy(ptr, &type, 4); ptr += 4;
11467 memcpy(ptr, &offset, 4); ptr += 4;
11468
11469 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11470 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11471
11472 }
11473
glTexStorage2DMultisample_enc(void * self,GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height,GLboolean fixedsamplelocations)11474 void glTexStorage2DMultisample_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
11475 {
11476 ENCODER_DEBUG_LOG("glTexStorage2DMultisample(target:0x%08x, samples:%d, internalformat:0x%08x, width:%d, height:%d, fixedsamplelocations:%d)", target, samples, internalformat, width, height, fixedsamplelocations);
11477 AEMU_SCOPED_TRACE("glTexStorage2DMultisample encode");
11478
11479 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11480 IOStream *stream = ctx->m_stream;
11481 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11482 bool useChecksum = checksumCalculator->getVersion() > 0;
11483
11484 unsigned char *ptr;
11485 unsigned char *buf;
11486 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 1;
11487 const size_t checksumSize = checksumCalculator->checksumByteSize();
11488 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11489 buf = stream->alloc(totalSize);
11490 ptr = buf;
11491 int tmp = OP_glTexStorage2DMultisample;memcpy(ptr, &tmp, 4); ptr += 4;
11492 memcpy(ptr, &totalSize, 4); ptr += 4;
11493
11494 memcpy(ptr, &target, 4); ptr += 4;
11495 memcpy(ptr, &samples, 4); ptr += 4;
11496 memcpy(ptr, &internalformat, 4); ptr += 4;
11497 memcpy(ptr, &width, 4); ptr += 4;
11498 memcpy(ptr, &height, 4); ptr += 4;
11499 memcpy(ptr, &fixedsamplelocations, 1); ptr += 1;
11500
11501 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11502 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11503
11504 }
11505
glSampleMaski_enc(void * self,GLuint maskNumber,GLbitfield mask)11506 void glSampleMaski_enc(void *self , GLuint maskNumber, GLbitfield mask)
11507 {
11508 ENCODER_DEBUG_LOG("glSampleMaski(maskNumber:%u, mask:0x%08x)", maskNumber, mask);
11509 AEMU_SCOPED_TRACE("glSampleMaski encode");
11510
11511 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11512 IOStream *stream = ctx->m_stream;
11513 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11514 bool useChecksum = checksumCalculator->getVersion() > 0;
11515
11516 unsigned char *ptr;
11517 unsigned char *buf;
11518 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11519 const size_t checksumSize = checksumCalculator->checksumByteSize();
11520 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11521 buf = stream->alloc(totalSize);
11522 ptr = buf;
11523 int tmp = OP_glSampleMaski;memcpy(ptr, &tmp, 4); ptr += 4;
11524 memcpy(ptr, &totalSize, 4); ptr += 4;
11525
11526 memcpy(ptr, &maskNumber, 4); ptr += 4;
11527 memcpy(ptr, &mask, 4); ptr += 4;
11528
11529 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11530 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11531
11532 }
11533
glGetMultisamplefv_enc(void * self,GLenum pname,GLuint index,GLfloat * val)11534 void glGetMultisamplefv_enc(void *self , GLenum pname, GLuint index, GLfloat* val)
11535 {
11536 ENCODER_DEBUG_LOG("glGetMultisamplefv(pname:0x%08x, index:%u, val:0x%08x)", pname, index, val);
11537 AEMU_SCOPED_TRACE("glGetMultisamplefv encode");
11538
11539 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11540 IOStream *stream = ctx->m_stream;
11541 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11542 bool useChecksum = checksumCalculator->getVersion() > 0;
11543
11544 const unsigned int __size_val = (glUtilsParamSize(pname) * sizeof(GLfloat));
11545 unsigned char *ptr;
11546 unsigned char *buf;
11547 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
11548 const size_t checksumSize = checksumCalculator->checksumByteSize();
11549 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11550 buf = stream->alloc(totalSize);
11551 ptr = buf;
11552 int tmp = OP_glGetMultisamplefv;memcpy(ptr, &tmp, 4); ptr += 4;
11553 memcpy(ptr, &totalSize, 4); ptr += 4;
11554
11555 memcpy(ptr, &pname, 4); ptr += 4;
11556 memcpy(ptr, &index, 4); ptr += 4;
11557 memcpy(ptr, &__size_val, 4); ptr += 4;
11558
11559 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11560 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11561
11562 stream->readback(val, __size_val);
11563 if (useChecksum) checksumCalculator->addBuffer(val, __size_val);
11564 if (useChecksum) {
11565 unsigned char *checksumBufPtr = NULL;
11566 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11567 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11568 stream->readback(checksumBufPtr, checksumSize);
11569 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11570 ALOGE("glGetMultisamplefv: GL communication error, please report this issue to b.android.com.\n");
11571 abort();
11572 }
11573 }
11574 }
11575
glFramebufferParameteri_enc(void * self,GLenum target,GLenum pname,GLint param)11576 void glFramebufferParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
11577 {
11578 ENCODER_DEBUG_LOG("glFramebufferParameteri(target:0x%08x, pname:0x%08x, param:%d)", target, pname, param);
11579 AEMU_SCOPED_TRACE("glFramebufferParameteri encode");
11580
11581 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11582 IOStream *stream = ctx->m_stream;
11583 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11584 bool useChecksum = checksumCalculator->getVersion() > 0;
11585
11586 unsigned char *ptr;
11587 unsigned char *buf;
11588 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
11589 const size_t checksumSize = checksumCalculator->checksumByteSize();
11590 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11591 buf = stream->alloc(totalSize);
11592 ptr = buf;
11593 int tmp = OP_glFramebufferParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
11594 memcpy(ptr, &totalSize, 4); ptr += 4;
11595
11596 memcpy(ptr, &target, 4); ptr += 4;
11597 memcpy(ptr, &pname, 4); ptr += 4;
11598 memcpy(ptr, ¶m, 4); ptr += 4;
11599
11600 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11601 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11602
11603 }
11604
glGetFramebufferParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)11605 void glGetFramebufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
11606 {
11607 ENCODER_DEBUG_LOG("glGetFramebufferParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
11608 AEMU_SCOPED_TRACE("glGetFramebufferParameteriv encode");
11609
11610 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11611 IOStream *stream = ctx->m_stream;
11612 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11613 bool useChecksum = checksumCalculator->getVersion() > 0;
11614
11615 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
11616 unsigned char *ptr;
11617 unsigned char *buf;
11618 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
11619 const size_t checksumSize = checksumCalculator->checksumByteSize();
11620 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11621 buf = stream->alloc(totalSize);
11622 ptr = buf;
11623 int tmp = OP_glGetFramebufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
11624 memcpy(ptr, &totalSize, 4); ptr += 4;
11625
11626 memcpy(ptr, &target, 4); ptr += 4;
11627 memcpy(ptr, &pname, 4); ptr += 4;
11628 memcpy(ptr, &__size_params, 4); ptr += 4;
11629
11630 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11631 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11632
11633 stream->readback(params, __size_params);
11634 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
11635 if (useChecksum) {
11636 unsigned char *checksumBufPtr = NULL;
11637 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11638 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11639 stream->readback(checksumBufPtr, checksumSize);
11640 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11641 ALOGE("glGetFramebufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
11642 abort();
11643 }
11644 }
11645 }
11646
glGetTexLevelParameterfv_enc(void * self,GLenum target,GLint level,GLenum pname,GLfloat * params)11647 void glGetTexLevelParameterfv_enc(void *self , GLenum target, GLint level, GLenum pname, GLfloat* params)
11648 {
11649 ENCODER_DEBUG_LOG("glGetTexLevelParameterfv(target:0x%08x, level:%d, pname:0x%08x, params:0x%08x)", target, level, pname, params);
11650 AEMU_SCOPED_TRACE("glGetTexLevelParameterfv encode");
11651
11652 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11653 IOStream *stream = ctx->m_stream;
11654 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11655 bool useChecksum = checksumCalculator->getVersion() > 0;
11656
11657 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
11658 unsigned char *ptr;
11659 unsigned char *buf;
11660 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
11661 const size_t checksumSize = checksumCalculator->checksumByteSize();
11662 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11663 buf = stream->alloc(totalSize);
11664 ptr = buf;
11665 int tmp = OP_glGetTexLevelParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
11666 memcpy(ptr, &totalSize, 4); ptr += 4;
11667
11668 memcpy(ptr, &target, 4); ptr += 4;
11669 memcpy(ptr, &level, 4); ptr += 4;
11670 memcpy(ptr, &pname, 4); ptr += 4;
11671 memcpy(ptr, &__size_params, 4); ptr += 4;
11672
11673 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11674 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11675
11676 stream->readback(params, __size_params);
11677 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
11678 if (useChecksum) {
11679 unsigned char *checksumBufPtr = NULL;
11680 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11681 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11682 stream->readback(checksumBufPtr, checksumSize);
11683 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11684 ALOGE("glGetTexLevelParameterfv: GL communication error, please report this issue to b.android.com.\n");
11685 abort();
11686 }
11687 }
11688 }
11689
glGetTexLevelParameteriv_enc(void * self,GLenum target,GLint level,GLenum pname,GLint * params)11690 void glGetTexLevelParameteriv_enc(void *self , GLenum target, GLint level, GLenum pname, GLint* params)
11691 {
11692 ENCODER_DEBUG_LOG("glGetTexLevelParameteriv(target:0x%08x, level:%d, pname:0x%08x, params:0x%08x)", target, level, pname, params);
11693 AEMU_SCOPED_TRACE("glGetTexLevelParameteriv encode");
11694
11695 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11696 IOStream *stream = ctx->m_stream;
11697 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11698 bool useChecksum = checksumCalculator->getVersion() > 0;
11699
11700 const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
11701 unsigned char *ptr;
11702 unsigned char *buf;
11703 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
11704 const size_t checksumSize = checksumCalculator->checksumByteSize();
11705 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11706 buf = stream->alloc(totalSize);
11707 ptr = buf;
11708 int tmp = OP_glGetTexLevelParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
11709 memcpy(ptr, &totalSize, 4); ptr += 4;
11710
11711 memcpy(ptr, &target, 4); ptr += 4;
11712 memcpy(ptr, &level, 4); ptr += 4;
11713 memcpy(ptr, &pname, 4); ptr += 4;
11714 memcpy(ptr, &__size_params, 4); ptr += 4;
11715
11716 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11717 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11718
11719 stream->readback(params, __size_params);
11720 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
11721 if (useChecksum) {
11722 unsigned char *checksumBufPtr = NULL;
11723 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11724 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11725 stream->readback(checksumBufPtr, checksumSize);
11726 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11727 ALOGE("glGetTexLevelParameteriv: GL communication error, please report this issue to b.android.com.\n");
11728 abort();
11729 }
11730 }
11731 }
11732
glMapBufferRangeDMA_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr)11733 void glMapBufferRangeDMA_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr)
11734 {
11735 ENCODER_DEBUG_LOG("glMapBufferRangeDMA(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, paddr:0x%016lx)", target, offset, length, access, paddr);
11736 AEMU_SCOPED_TRACE("glMapBufferRangeDMA encode");
11737
11738 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11739 IOStream *stream = ctx->m_stream;
11740 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11741 bool useChecksum = checksumCalculator->getVersion() > 0;
11742
11743 unsigned char *ptr;
11744 unsigned char *buf;
11745 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8;
11746 const size_t checksumSize = checksumCalculator->checksumByteSize();
11747 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11748 buf = stream->alloc(totalSize);
11749 ptr = buf;
11750 int tmp = OP_glMapBufferRangeDMA;memcpy(ptr, &tmp, 4); ptr += 4;
11751 memcpy(ptr, &totalSize, 4); ptr += 4;
11752
11753 memcpy(ptr, &target, 4); ptr += 4;
11754 memcpy(ptr, &offset, 4); ptr += 4;
11755 memcpy(ptr, &length, 4); ptr += 4;
11756 memcpy(ptr, &access, 4); ptr += 4;
11757 memcpy(ptr, &paddr, 8); ptr += 8;
11758
11759 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11760 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11761
11762 }
11763
glUnmapBufferDMA_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr,GLboolean * out_res)11764 void glUnmapBufferDMA_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr, GLboolean* out_res)
11765 {
11766 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);
11767 AEMU_SCOPED_TRACE("glUnmapBufferDMA encode");
11768
11769 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11770 IOStream *stream = ctx->m_stream;
11771 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11772 bool useChecksum = checksumCalculator->getVersion() > 0;
11773
11774 const unsigned int __size_out_res = (sizeof(GLboolean));
11775 unsigned char *ptr;
11776 unsigned char *buf;
11777 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8 + 0 + 1*4;
11778 const size_t checksumSize = checksumCalculator->checksumByteSize();
11779 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11780 buf = stream->alloc(totalSize);
11781 ptr = buf;
11782 int tmp = OP_glUnmapBufferDMA;memcpy(ptr, &tmp, 4); ptr += 4;
11783 memcpy(ptr, &totalSize, 4); ptr += 4;
11784
11785 memcpy(ptr, &target, 4); ptr += 4;
11786 memcpy(ptr, &offset, 4); ptr += 4;
11787 memcpy(ptr, &length, 4); ptr += 4;
11788 memcpy(ptr, &access, 4); ptr += 4;
11789 memcpy(ptr, &paddr, 8); ptr += 8;
11790 memcpy(ptr, &__size_out_res, 4); ptr += 4;
11791
11792 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11793 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11794
11795 stream->readback(out_res, __size_out_res);
11796 if (useChecksum) checksumCalculator->addBuffer(out_res, __size_out_res);
11797 if (useChecksum) {
11798 unsigned char *checksumBufPtr = NULL;
11799 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11800 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11801 stream->readback(checksumBufPtr, checksumSize);
11802 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11803 ALOGE("glUnmapBufferDMA: GL communication error, please report this issue to b.android.com.\n");
11804 abort();
11805 }
11806 }
11807 }
11808
glMapBufferRangeDirect_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr)11809 uint64_t glMapBufferRangeDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr)
11810 {
11811 ENCODER_DEBUG_LOG("glMapBufferRangeDirect(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, paddr:0x%016lx)", target, offset, length, access, paddr);
11812 AEMU_SCOPED_TRACE("glMapBufferRangeDirect encode");
11813
11814 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11815 IOStream *stream = ctx->m_stream;
11816 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11817 bool useChecksum = checksumCalculator->getVersion() > 0;
11818
11819 unsigned char *ptr;
11820 unsigned char *buf;
11821 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8;
11822 const size_t checksumSize = checksumCalculator->checksumByteSize();
11823 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11824 buf = stream->alloc(totalSize);
11825 ptr = buf;
11826 int tmp = OP_glMapBufferRangeDirect;memcpy(ptr, &tmp, 4); ptr += 4;
11827 memcpy(ptr, &totalSize, 4); ptr += 4;
11828
11829 memcpy(ptr, &target, 4); ptr += 4;
11830 memcpy(ptr, &offset, 4); ptr += 4;
11831 memcpy(ptr, &length, 4); ptr += 4;
11832 memcpy(ptr, &access, 4); ptr += 4;
11833 memcpy(ptr, &paddr, 8); ptr += 8;
11834
11835 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11836 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11837
11838
11839 uint64_t retval;
11840 stream->readback(&retval, 8);
11841 if (useChecksum) checksumCalculator->addBuffer(&retval, 8);
11842 if (useChecksum) {
11843 unsigned char *checksumBufPtr = NULL;
11844 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11845 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11846 stream->readback(checksumBufPtr, checksumSize);
11847 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11848 ALOGE("glMapBufferRangeDirect: GL communication error, please report this issue to b.android.com.\n");
11849 abort();
11850 }
11851 }
11852 return retval;
11853 }
11854
glUnmapBufferDirect_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr,uint64_t guest_ptr,GLboolean * out_res)11855 void glUnmapBufferDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr, uint64_t guest_ptr, GLboolean* out_res)
11856 {
11857 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);
11858 AEMU_SCOPED_TRACE("glUnmapBufferDirect encode");
11859
11860 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11861 IOStream *stream = ctx->m_stream;
11862 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11863 bool useChecksum = checksumCalculator->getVersion() > 0;
11864
11865 const unsigned int __size_out_res = (sizeof(GLboolean));
11866 unsigned char *ptr;
11867 unsigned char *buf;
11868 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8 + 8 + 0 + 1*4;
11869 const size_t checksumSize = checksumCalculator->checksumByteSize();
11870 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11871 buf = stream->alloc(totalSize);
11872 ptr = buf;
11873 int tmp = OP_glUnmapBufferDirect;memcpy(ptr, &tmp, 4); ptr += 4;
11874 memcpy(ptr, &totalSize, 4); ptr += 4;
11875
11876 memcpy(ptr, &target, 4); ptr += 4;
11877 memcpy(ptr, &offset, 4); ptr += 4;
11878 memcpy(ptr, &length, 4); ptr += 4;
11879 memcpy(ptr, &access, 4); ptr += 4;
11880 memcpy(ptr, &paddr, 8); ptr += 8;
11881 memcpy(ptr, &guest_ptr, 8); ptr += 8;
11882 memcpy(ptr, &__size_out_res, 4); ptr += 4;
11883
11884 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11885 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11886
11887 stream->readback(out_res, __size_out_res);
11888 if (useChecksum) checksumCalculator->addBuffer(out_res, __size_out_res);
11889 if (useChecksum) {
11890 unsigned char *checksumBufPtr = NULL;
11891 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11892 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11893 stream->readback(checksumBufPtr, checksumSize);
11894 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11895 ALOGE("glUnmapBufferDirect: GL communication error, please report this issue to b.android.com.\n");
11896 abort();
11897 }
11898 }
11899 }
11900
glFlushMappedBufferRangeDirect_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access)11901 void glFlushMappedBufferRangeDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
11902 {
11903 ENCODER_DEBUG_LOG("glFlushMappedBufferRangeDirect(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x)", target, offset, length, access);
11904 AEMU_SCOPED_TRACE("glFlushMappedBufferRangeDirect encode");
11905
11906 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11907 IOStream *stream = ctx->m_stream;
11908 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11909 bool useChecksum = checksumCalculator->getVersion() > 0;
11910
11911 unsigned char *ptr;
11912 unsigned char *buf;
11913 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
11914 const size_t checksumSize = checksumCalculator->checksumByteSize();
11915 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11916 buf = stream->alloc(totalSize);
11917 ptr = buf;
11918 int tmp = OP_glFlushMappedBufferRangeDirect;memcpy(ptr, &tmp, 4); ptr += 4;
11919 memcpy(ptr, &totalSize, 4); ptr += 4;
11920
11921 memcpy(ptr, &target, 4); ptr += 4;
11922 memcpy(ptr, &offset, 4); ptr += 4;
11923 memcpy(ptr, &length, 4); ptr += 4;
11924 memcpy(ptr, &access, 4); ptr += 4;
11925
11926 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11927 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11928
11929 }
11930
glGetGraphicsResetStatusEXT_enc(void * self)11931 GLenum glGetGraphicsResetStatusEXT_enc(void *self )
11932 {
11933 ENCODER_DEBUG_LOG("glGetGraphicsResetStatusEXT()");
11934 AEMU_SCOPED_TRACE("glGetGraphicsResetStatusEXT encode");
11935
11936 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11937 IOStream *stream = ctx->m_stream;
11938 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11939 bool useChecksum = checksumCalculator->getVersion() > 0;
11940
11941 unsigned char *ptr;
11942 unsigned char *buf;
11943 const size_t sizeWithoutChecksum = 8;
11944 const size_t checksumSize = checksumCalculator->checksumByteSize();
11945 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11946 buf = stream->alloc(totalSize);
11947 ptr = buf;
11948 int tmp = OP_glGetGraphicsResetStatusEXT;memcpy(ptr, &tmp, 4); ptr += 4;
11949 memcpy(ptr, &totalSize, 4); ptr += 4;
11950
11951
11952 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11953 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11954
11955
11956 GLenum retval;
11957 stream->readback(&retval, 4);
11958 if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
11959 if (useChecksum) {
11960 unsigned char *checksumBufPtr = NULL;
11961 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11962 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11963 stream->readback(checksumBufPtr, checksumSize);
11964 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11965 ALOGE("glGetGraphicsResetStatusEXT: GL communication error, please report this issue to b.android.com.\n");
11966 abort();
11967 }
11968 }
11969 return retval;
11970 }
11971
glReadnPixelsEXT_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,GLvoid * data)11972 void glReadnPixelsEXT_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid* data)
11973 {
11974 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);
11975 AEMU_SCOPED_TRACE("glReadnPixelsEXT encode");
11976
11977 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11978 IOStream *stream = ctx->m_stream;
11979 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11980 bool useChecksum = checksumCalculator->getVersion() > 0;
11981
11982 const unsigned int __size_data = bufSize;
11983 unsigned char *ptr;
11984 unsigned char *buf;
11985 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 0 + 1*4;
11986 const size_t checksumSize = checksumCalculator->checksumByteSize();
11987 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11988 buf = stream->alloc(totalSize);
11989 ptr = buf;
11990 int tmp = OP_glReadnPixelsEXT;memcpy(ptr, &tmp, 4); ptr += 4;
11991 memcpy(ptr, &totalSize, 4); ptr += 4;
11992
11993 memcpy(ptr, &x, 4); ptr += 4;
11994 memcpy(ptr, &y, 4); ptr += 4;
11995 memcpy(ptr, &width, 4); ptr += 4;
11996 memcpy(ptr, &height, 4); ptr += 4;
11997 memcpy(ptr, &format, 4); ptr += 4;
11998 memcpy(ptr, &type, 4); ptr += 4;
11999 memcpy(ptr, &bufSize, 4); ptr += 4;
12000 memcpy(ptr, &__size_data, 4); ptr += 4;
12001
12002 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12003 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12004
12005 stream->readback(data, __size_data);
12006 if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
12007 if (useChecksum) {
12008 unsigned char *checksumBufPtr = NULL;
12009 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
12010 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12011 stream->readback(checksumBufPtr, checksumSize);
12012 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12013 ALOGE("glReadnPixelsEXT: GL communication error, please report this issue to b.android.com.\n");
12014 abort();
12015 }
12016 }
12017 }
12018
glGetnUniformfvEXT_enc(void * self,GLuint program,GLint location,GLsizei bufSize,GLfloat * params)12019 void glGetnUniformfvEXT_enc(void *self , GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
12020 {
12021 ENCODER_DEBUG_LOG("glGetnUniformfvEXT(program:%u, location:%d, bufSize:%d, params:0x%08x)", program, location, bufSize, params);
12022 AEMU_SCOPED_TRACE("glGetnUniformfvEXT encode");
12023
12024 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12025 IOStream *stream = ctx->m_stream;
12026 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12027 bool useChecksum = checksumCalculator->getVersion() > 0;
12028
12029 const unsigned int __size_params = bufSize;
12030 unsigned char *ptr;
12031 unsigned char *buf;
12032 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
12033 const size_t checksumSize = checksumCalculator->checksumByteSize();
12034 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12035 buf = stream->alloc(totalSize);
12036 ptr = buf;
12037 int tmp = OP_glGetnUniformfvEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12038 memcpy(ptr, &totalSize, 4); ptr += 4;
12039
12040 memcpy(ptr, &program, 4); ptr += 4;
12041 memcpy(ptr, &location, 4); ptr += 4;
12042 memcpy(ptr, &bufSize, 4); ptr += 4;
12043 memcpy(ptr, &__size_params, 4); ptr += 4;
12044
12045 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12046 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12047
12048 stream->readback(params, __size_params);
12049 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
12050 if (useChecksum) {
12051 unsigned char *checksumBufPtr = NULL;
12052 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
12053 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12054 stream->readback(checksumBufPtr, checksumSize);
12055 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12056 ALOGE("glGetnUniformfvEXT: GL communication error, please report this issue to b.android.com.\n");
12057 abort();
12058 }
12059 }
12060 }
12061
glGetnUniformivEXT_enc(void * self,GLuint program,GLint location,GLsizei bufSize,GLint * params)12062 void glGetnUniformivEXT_enc(void *self , GLuint program, GLint location, GLsizei bufSize, GLint* params)
12063 {
12064 ENCODER_DEBUG_LOG("glGetnUniformivEXT(program:%u, location:%d, bufSize:%d, params:0x%08x)", program, location, bufSize, params);
12065 AEMU_SCOPED_TRACE("glGetnUniformivEXT encode");
12066
12067 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12068 IOStream *stream = ctx->m_stream;
12069 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12070 bool useChecksum = checksumCalculator->getVersion() > 0;
12071
12072 const unsigned int __size_params = bufSize;
12073 unsigned char *ptr;
12074 unsigned char *buf;
12075 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
12076 const size_t checksumSize = checksumCalculator->checksumByteSize();
12077 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12078 buf = stream->alloc(totalSize);
12079 ptr = buf;
12080 int tmp = OP_glGetnUniformivEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12081 memcpy(ptr, &totalSize, 4); ptr += 4;
12082
12083 memcpy(ptr, &program, 4); ptr += 4;
12084 memcpy(ptr, &location, 4); ptr += 4;
12085 memcpy(ptr, &bufSize, 4); ptr += 4;
12086 memcpy(ptr, &__size_params, 4); ptr += 4;
12087
12088 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12089 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12090
12091 stream->readback(params, __size_params);
12092 if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
12093 if (useChecksum) {
12094 unsigned char *checksumBufPtr = NULL;
12095 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
12096 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12097 stream->readback(checksumBufPtr, checksumSize);
12098 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12099 ALOGE("glGetnUniformivEXT: GL communication error, please report this issue to b.android.com.\n");
12100 abort();
12101 }
12102 }
12103 }
12104
glDrawArraysNullAEMU_enc(void * self,GLenum mode,GLint first,GLsizei count)12105 void glDrawArraysNullAEMU_enc(void *self , GLenum mode, GLint first, GLsizei count)
12106 {
12107 ENCODER_DEBUG_LOG("glDrawArraysNullAEMU(mode:0x%08x, first:%d, count:%d)", mode, first, count);
12108 AEMU_SCOPED_TRACE("glDrawArraysNullAEMU encode");
12109
12110 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12111 IOStream *stream = ctx->m_stream;
12112 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12113 bool useChecksum = checksumCalculator->getVersion() > 0;
12114
12115 unsigned char *ptr;
12116 unsigned char *buf;
12117 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
12118 const size_t checksumSize = checksumCalculator->checksumByteSize();
12119 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12120 buf = stream->alloc(totalSize);
12121 ptr = buf;
12122 int tmp = OP_glDrawArraysNullAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12123 memcpy(ptr, &totalSize, 4); ptr += 4;
12124
12125 memcpy(ptr, &mode, 4); ptr += 4;
12126 memcpy(ptr, &first, 4); ptr += 4;
12127 memcpy(ptr, &count, 4); ptr += 4;
12128
12129 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12130 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12131
12132 }
12133
glDrawElementsOffsetNullAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,GLuint offset)12134 void glDrawElementsOffsetNullAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset)
12135 {
12136 ENCODER_DEBUG_LOG("glDrawElementsOffsetNullAEMU(mode:0x%08x, count:%d, type:0x%08x, offset:%u)", mode, count, type, offset);
12137 AEMU_SCOPED_TRACE("glDrawElementsOffsetNullAEMU encode");
12138
12139 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12140 IOStream *stream = ctx->m_stream;
12141 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12142 bool useChecksum = checksumCalculator->getVersion() > 0;
12143
12144 unsigned char *ptr;
12145 unsigned char *buf;
12146 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
12147 const size_t checksumSize = checksumCalculator->checksumByteSize();
12148 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12149 buf = stream->alloc(totalSize);
12150 ptr = buf;
12151 int tmp = OP_glDrawElementsOffsetNullAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12152 memcpy(ptr, &totalSize, 4); ptr += 4;
12153
12154 memcpy(ptr, &mode, 4); ptr += 4;
12155 memcpy(ptr, &count, 4); ptr += 4;
12156 memcpy(ptr, &type, 4); ptr += 4;
12157 memcpy(ptr, &offset, 4); ptr += 4;
12158
12159 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12160 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12161
12162 }
12163
glDrawElementsDataNullAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,void * data,GLuint datalen)12164 void glDrawElementsDataNullAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
12165 {
12166 ENCODER_DEBUG_LOG("glDrawElementsDataNullAEMU(mode:0x%08x, count:%d, type:0x%08x, data:0x%08x, datalen:%u)", mode, count, type, data, datalen);
12167 AEMU_SCOPED_TRACE("glDrawElementsDataNullAEMU encode");
12168
12169 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12170 IOStream *stream = ctx->m_stream;
12171 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12172 bool useChecksum = checksumCalculator->getVersion() > 0;
12173
12174 const unsigned int __size_data = datalen;
12175 unsigned char *ptr;
12176 unsigned char *buf;
12177 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
12178 const size_t checksumSize = checksumCalculator->checksumByteSize();
12179 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12180 buf = stream->alloc(totalSize);
12181 ptr = buf;
12182 int tmp = OP_glDrawElementsDataNullAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12183 memcpy(ptr, &totalSize, 4); ptr += 4;
12184
12185 memcpy(ptr, &mode, 4); ptr += 4;
12186 memcpy(ptr, &count, 4); ptr += 4;
12187 memcpy(ptr, &type, 4); ptr += 4;
12188 memcpy(ptr, &__size_data, 4); ptr += 4;
12189 memcpy(ptr, data, __size_data);ptr += __size_data;
12190 memcpy(ptr, &datalen, 4); ptr += 4;
12191
12192 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12193 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12194
12195 }
12196
glUnmapBufferAsyncAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer,GLboolean * out_res)12197 void glUnmapBufferAsyncAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer, GLboolean* out_res)
12198 {
12199 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);
12200 AEMU_SCOPED_TRACE("glUnmapBufferAsyncAEMU encode");
12201
12202 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12203 IOStream *stream = ctx->m_stream;
12204 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12205 bool useChecksum = checksumCalculator->getVersion() > 0;
12206
12207 const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ? length : 0);
12208 const unsigned int __size_out_res = (sizeof(GLboolean));
12209 unsigned char *ptr;
12210 unsigned char *buf;
12211 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + __size_out_res + 2*4;
12212 const size_t checksumSize = checksumCalculator->checksumByteSize();
12213 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12214 buf = stream->alloc(8 + 4 + 4 + 4 + 4);
12215 ptr = buf;
12216 int tmp = OP_glUnmapBufferAsyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12217 memcpy(ptr, &totalSize, 4); ptr += 4;
12218
12219 memcpy(ptr, &target, 4); ptr += 4;
12220 memcpy(ptr, &offset, 4); ptr += 4;
12221 memcpy(ptr, &length, 4); ptr += 4;
12222 memcpy(ptr, &access, 4); ptr += 4;
12223
12224 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12225 stream->flush();
12226 stream->writeFully(&__size_guest_buffer,4);
12227 if (useChecksum) checksumCalculator->addBuffer(&__size_guest_buffer,4);
12228 if (guest_buffer != NULL) {
12229 stream->writeFully(guest_buffer, __size_guest_buffer);
12230 if (useChecksum) checksumCalculator->addBuffer(guest_buffer, __size_guest_buffer);
12231 }
12232 buf = stream->alloc(__size_out_res + 1*4);
12233 ptr = buf;
12234 memcpy(ptr, &__size_out_res, 4); ptr += 4;
12235 memcpy(ptr, out_res, __size_out_res);ptr += __size_out_res;
12236
12237 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12238 buf = stream->alloc(checksumSize);
12239 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
12240
12241 }
12242
glFlushMappedBufferRangeAEMU2_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer)12243 void glFlushMappedBufferRangeAEMU2_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer)
12244 {
12245 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);
12246 AEMU_SCOPED_TRACE("glFlushMappedBufferRangeAEMU2 encode");
12247
12248 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12249 IOStream *stream = ctx->m_stream;
12250 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12251 bool useChecksum = checksumCalculator->getVersion() > 0;
12252
12253 const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ? length : 0);
12254 unsigned char *ptr;
12255 unsigned char *buf;
12256 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + 1*4;
12257 const size_t checksumSize = checksumCalculator->checksumByteSize();
12258 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12259 buf = stream->alloc(8 + 4 + 4 + 4 + 4);
12260 ptr = buf;
12261 int tmp = OP_glFlushMappedBufferRangeAEMU2;memcpy(ptr, &tmp, 4); ptr += 4;
12262 memcpy(ptr, &totalSize, 4); ptr += 4;
12263
12264 memcpy(ptr, &target, 4); ptr += 4;
12265 memcpy(ptr, &offset, 4); ptr += 4;
12266 memcpy(ptr, &length, 4); ptr += 4;
12267 memcpy(ptr, &access, 4); ptr += 4;
12268
12269 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12270 stream->flush();
12271 stream->writeFully(&__size_guest_buffer,4);
12272 if (useChecksum) checksumCalculator->addBuffer(&__size_guest_buffer,4);
12273 if (guest_buffer != NULL) {
12274 stream->writeFully(guest_buffer, __size_guest_buffer);
12275 if (useChecksum) checksumCalculator->addBuffer(guest_buffer, __size_guest_buffer);
12276 }
12277 buf = stream->alloc(checksumSize);
12278 if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
12279
12280 }
12281
glBufferDataSyncAEMU_enc(void * self,GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)12282 GLboolean glBufferDataSyncAEMU_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
12283 {
12284 ENCODER_DEBUG_LOG("glBufferDataSyncAEMU(target:0x%08x, size:0x%08lx, data:0x%08x, usage:0x%08x)", target, size, data, usage);
12285 AEMU_SCOPED_TRACE("glBufferDataSyncAEMU encode");
12286
12287 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12288 IOStream *stream = ctx->m_stream;
12289 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12290 bool useChecksum = checksumCalculator->getVersion() > 0;
12291
12292 const unsigned int __size_data = ((data != NULL) ? size : 0);
12293 unsigned char *ptr;
12294 unsigned char *buf;
12295 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
12296 const size_t checksumSize = checksumCalculator->checksumByteSize();
12297 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12298 buf = stream->alloc(totalSize);
12299 ptr = buf;
12300 int tmp = OP_glBufferDataSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12301 memcpy(ptr, &totalSize, 4); ptr += 4;
12302
12303 memcpy(ptr, &target, 4); ptr += 4;
12304 memcpy(ptr, &size, 4); ptr += 4;
12305 memcpy(ptr, &__size_data, 4); ptr += 4;
12306 if (data != NULL) memcpy(ptr, data, __size_data);ptr += __size_data;
12307 memcpy(ptr, &usage, 4); ptr += 4;
12308
12309 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12310 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12311
12312
12313 GLboolean retval;
12314 stream->readback(&retval, 1);
12315 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
12316 if (useChecksum) {
12317 unsigned char *checksumBufPtr = NULL;
12318 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
12319 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12320 stream->readback(checksumBufPtr, checksumSize);
12321 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12322 ALOGE("glBufferDataSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
12323 abort();
12324 }
12325 }
12326 return retval;
12327 }
12328
glTexBufferOES_enc(void * self,GLenum target,GLenum internalFormat,GLuint buffer)12329 void glTexBufferOES_enc(void *self , GLenum target, GLenum internalFormat, GLuint buffer)
12330 {
12331 ENCODER_DEBUG_LOG("glTexBufferOES(target:0x%08x, internalFormat:0x%08x, buffer:%u)", target, internalFormat, buffer);
12332 AEMU_SCOPED_TRACE("glTexBufferOES encode");
12333
12334 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12335 IOStream *stream = ctx->m_stream;
12336 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12337 bool useChecksum = checksumCalculator->getVersion() > 0;
12338
12339 unsigned char *ptr;
12340 unsigned char *buf;
12341 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
12342 const size_t checksumSize = checksumCalculator->checksumByteSize();
12343 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12344 buf = stream->alloc(totalSize);
12345 ptr = buf;
12346 int tmp = OP_glTexBufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
12347 memcpy(ptr, &totalSize, 4); ptr += 4;
12348
12349 memcpy(ptr, &target, 4); ptr += 4;
12350 memcpy(ptr, &internalFormat, 4); ptr += 4;
12351 memcpy(ptr, &buffer, 4); ptr += 4;
12352
12353 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12354 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12355
12356 }
12357
glTexBufferRangeOES_enc(void * self,GLenum target,GLenum internalFormat,GLuint buffer,GLintptr offset,GLsizeiptr size)12358 void glTexBufferRangeOES_enc(void *self , GLenum target, GLenum internalFormat, GLuint buffer, GLintptr offset, GLsizeiptr size)
12359 {
12360 ENCODER_DEBUG_LOG("glTexBufferRangeOES(target:0x%08x, internalFormat:0x%08x, buffer:%u, offset:0x%08lx, size:0x%08lx)", target, internalFormat, buffer, offset, size);
12361 AEMU_SCOPED_TRACE("glTexBufferRangeOES encode");
12362
12363 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12364 IOStream *stream = ctx->m_stream;
12365 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12366 bool useChecksum = checksumCalculator->getVersion() > 0;
12367
12368 unsigned char *ptr;
12369 unsigned char *buf;
12370 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
12371 const size_t checksumSize = checksumCalculator->checksumByteSize();
12372 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12373 buf = stream->alloc(totalSize);
12374 ptr = buf;
12375 int tmp = OP_glTexBufferRangeOES;memcpy(ptr, &tmp, 4); ptr += 4;
12376 memcpy(ptr, &totalSize, 4); ptr += 4;
12377
12378 memcpy(ptr, &target, 4); ptr += 4;
12379 memcpy(ptr, &internalFormat, 4); ptr += 4;
12380 memcpy(ptr, &buffer, 4); ptr += 4;
12381 memcpy(ptr, &offset, 4); ptr += 4;
12382 memcpy(ptr, &size, 4); ptr += 4;
12383
12384 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12385 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12386
12387 }
12388
glTexBufferEXT_enc(void * self,GLenum target,GLenum internalFormat,GLuint buffer)12389 void glTexBufferEXT_enc(void *self , GLenum target, GLenum internalFormat, GLuint buffer)
12390 {
12391 ENCODER_DEBUG_LOG("glTexBufferEXT(target:0x%08x, internalFormat:0x%08x, buffer:%u)", target, internalFormat, buffer);
12392 AEMU_SCOPED_TRACE("glTexBufferEXT encode");
12393
12394 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12395 IOStream *stream = ctx->m_stream;
12396 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12397 bool useChecksum = checksumCalculator->getVersion() > 0;
12398
12399 unsigned char *ptr;
12400 unsigned char *buf;
12401 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
12402 const size_t checksumSize = checksumCalculator->checksumByteSize();
12403 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12404 buf = stream->alloc(totalSize);
12405 ptr = buf;
12406 int tmp = OP_glTexBufferEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12407 memcpy(ptr, &totalSize, 4); ptr += 4;
12408
12409 memcpy(ptr, &target, 4); ptr += 4;
12410 memcpy(ptr, &internalFormat, 4); ptr += 4;
12411 memcpy(ptr, &buffer, 4); ptr += 4;
12412
12413 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12414 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12415
12416 }
12417
glTexBufferRangeEXT_enc(void * self,GLenum target,GLenum internalFormat,GLuint buffer,GLintptr offset,GLsizeiptr size)12418 void glTexBufferRangeEXT_enc(void *self , GLenum target, GLenum internalFormat, GLuint buffer, GLintptr offset, GLsizeiptr size)
12419 {
12420 ENCODER_DEBUG_LOG("glTexBufferRangeEXT(target:0x%08x, internalFormat:0x%08x, buffer:%u, offset:0x%08lx, size:0x%08lx)", target, internalFormat, buffer, offset, size);
12421 AEMU_SCOPED_TRACE("glTexBufferRangeEXT encode");
12422
12423 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12424 IOStream *stream = ctx->m_stream;
12425 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12426 bool useChecksum = checksumCalculator->getVersion() > 0;
12427
12428 unsigned char *ptr;
12429 unsigned char *buf;
12430 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
12431 const size_t checksumSize = checksumCalculator->checksumByteSize();
12432 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12433 buf = stream->alloc(totalSize);
12434 ptr = buf;
12435 int tmp = OP_glTexBufferRangeEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12436 memcpy(ptr, &totalSize, 4); ptr += 4;
12437
12438 memcpy(ptr, &target, 4); ptr += 4;
12439 memcpy(ptr, &internalFormat, 4); ptr += 4;
12440 memcpy(ptr, &buffer, 4); ptr += 4;
12441 memcpy(ptr, &offset, 4); ptr += 4;
12442 memcpy(ptr, &size, 4); ptr += 4;
12443
12444 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12445 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12446
12447 }
12448
glEnableiEXT_enc(void * self,GLenum cap,GLuint index)12449 void glEnableiEXT_enc(void *self , GLenum cap, GLuint index)
12450 {
12451 ENCODER_DEBUG_LOG("glEnableiEXT(cap:0x%08x, index:%u)", cap, index);
12452 AEMU_SCOPED_TRACE("glEnableiEXT encode");
12453
12454 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12455 IOStream *stream = ctx->m_stream;
12456 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12457 bool useChecksum = checksumCalculator->getVersion() > 0;
12458
12459 unsigned char *ptr;
12460 unsigned char *buf;
12461 const size_t sizeWithoutChecksum = 8 + 4 + 4;
12462 const size_t checksumSize = checksumCalculator->checksumByteSize();
12463 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12464 buf = stream->alloc(totalSize);
12465 ptr = buf;
12466 int tmp = OP_glEnableiEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12467 memcpy(ptr, &totalSize, 4); ptr += 4;
12468
12469 memcpy(ptr, &cap, 4); ptr += 4;
12470 memcpy(ptr, &index, 4); ptr += 4;
12471
12472 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12473 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12474
12475 }
12476
glDisableiEXT_enc(void * self,GLenum cap,GLuint index)12477 void glDisableiEXT_enc(void *self , GLenum cap, GLuint index)
12478 {
12479 ENCODER_DEBUG_LOG("glDisableiEXT(cap:0x%08x, index:%u)", cap, index);
12480 AEMU_SCOPED_TRACE("glDisableiEXT encode");
12481
12482 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12483 IOStream *stream = ctx->m_stream;
12484 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12485 bool useChecksum = checksumCalculator->getVersion() > 0;
12486
12487 unsigned char *ptr;
12488 unsigned char *buf;
12489 const size_t sizeWithoutChecksum = 8 + 4 + 4;
12490 const size_t checksumSize = checksumCalculator->checksumByteSize();
12491 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12492 buf = stream->alloc(totalSize);
12493 ptr = buf;
12494 int tmp = OP_glDisableiEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12495 memcpy(ptr, &totalSize, 4); ptr += 4;
12496
12497 memcpy(ptr, &cap, 4); ptr += 4;
12498 memcpy(ptr, &index, 4); ptr += 4;
12499
12500 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12501 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12502
12503 }
12504
glBlendEquationiEXT_enc(void * self,GLuint index,GLenum mode)12505 void glBlendEquationiEXT_enc(void *self , GLuint index, GLenum mode)
12506 {
12507 ENCODER_DEBUG_LOG("glBlendEquationiEXT(index:%u, mode:0x%08x)", index, mode);
12508 AEMU_SCOPED_TRACE("glBlendEquationiEXT encode");
12509
12510 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12511 IOStream *stream = ctx->m_stream;
12512 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12513 bool useChecksum = checksumCalculator->getVersion() > 0;
12514
12515 unsigned char *ptr;
12516 unsigned char *buf;
12517 const size_t sizeWithoutChecksum = 8 + 4 + 4;
12518 const size_t checksumSize = checksumCalculator->checksumByteSize();
12519 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12520 buf = stream->alloc(totalSize);
12521 ptr = buf;
12522 int tmp = OP_glBlendEquationiEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12523 memcpy(ptr, &totalSize, 4); ptr += 4;
12524
12525 memcpy(ptr, &index, 4); ptr += 4;
12526 memcpy(ptr, &mode, 4); ptr += 4;
12527
12528 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12529 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12530
12531 }
12532
glBlendEquationSeparateiEXT_enc(void * self,GLuint index,GLenum modeRGB,GLenum modeAlpha)12533 void glBlendEquationSeparateiEXT_enc(void *self , GLuint index, GLenum modeRGB, GLenum modeAlpha)
12534 {
12535 ENCODER_DEBUG_LOG("glBlendEquationSeparateiEXT(index:%u, modeRGB:0x%08x, modeAlpha:0x%08x)", index, modeRGB, modeAlpha);
12536 AEMU_SCOPED_TRACE("glBlendEquationSeparateiEXT encode");
12537
12538 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12539 IOStream *stream = ctx->m_stream;
12540 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12541 bool useChecksum = checksumCalculator->getVersion() > 0;
12542
12543 unsigned char *ptr;
12544 unsigned char *buf;
12545 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
12546 const size_t checksumSize = checksumCalculator->checksumByteSize();
12547 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12548 buf = stream->alloc(totalSize);
12549 ptr = buf;
12550 int tmp = OP_glBlendEquationSeparateiEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12551 memcpy(ptr, &totalSize, 4); ptr += 4;
12552
12553 memcpy(ptr, &index, 4); ptr += 4;
12554 memcpy(ptr, &modeRGB, 4); ptr += 4;
12555 memcpy(ptr, &modeAlpha, 4); ptr += 4;
12556
12557 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12558 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12559
12560 }
12561
glBlendFunciEXT_enc(void * self,GLuint index,GLenum sfactor,GLenum dfactor)12562 void glBlendFunciEXT_enc(void *self , GLuint index, GLenum sfactor, GLenum dfactor)
12563 {
12564 ENCODER_DEBUG_LOG("glBlendFunciEXT(index:%u, sfactor:0x%08x, dfactor:0x%08x)", index, sfactor, dfactor);
12565 AEMU_SCOPED_TRACE("glBlendFunciEXT encode");
12566
12567 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12568 IOStream *stream = ctx->m_stream;
12569 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12570 bool useChecksum = checksumCalculator->getVersion() > 0;
12571
12572 unsigned char *ptr;
12573 unsigned char *buf;
12574 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
12575 const size_t checksumSize = checksumCalculator->checksumByteSize();
12576 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12577 buf = stream->alloc(totalSize);
12578 ptr = buf;
12579 int tmp = OP_glBlendFunciEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12580 memcpy(ptr, &totalSize, 4); ptr += 4;
12581
12582 memcpy(ptr, &index, 4); ptr += 4;
12583 memcpy(ptr, &sfactor, 4); ptr += 4;
12584 memcpy(ptr, &dfactor, 4); ptr += 4;
12585
12586 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12587 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12588
12589 }
12590
glBlendFuncSeparateiEXT_enc(void * self,GLuint index,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)12591 void glBlendFuncSeparateiEXT_enc(void *self , GLuint index, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
12592 {
12593 ENCODER_DEBUG_LOG("glBlendFuncSeparateiEXT(index:%u, srcRGB:0x%08x, dstRGB:0x%08x, srcAlpha:0x%08x, dstAlpha:0x%08x)", index, srcRGB, dstRGB, srcAlpha, dstAlpha);
12594 AEMU_SCOPED_TRACE("glBlendFuncSeparateiEXT encode");
12595
12596 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12597 IOStream *stream = ctx->m_stream;
12598 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12599 bool useChecksum = checksumCalculator->getVersion() > 0;
12600
12601 unsigned char *ptr;
12602 unsigned char *buf;
12603 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
12604 const size_t checksumSize = checksumCalculator->checksumByteSize();
12605 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12606 buf = stream->alloc(totalSize);
12607 ptr = buf;
12608 int tmp = OP_glBlendFuncSeparateiEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12609 memcpy(ptr, &totalSize, 4); ptr += 4;
12610
12611 memcpy(ptr, &index, 4); ptr += 4;
12612 memcpy(ptr, &srcRGB, 4); ptr += 4;
12613 memcpy(ptr, &dstRGB, 4); ptr += 4;
12614 memcpy(ptr, &srcAlpha, 4); ptr += 4;
12615 memcpy(ptr, &dstAlpha, 4); ptr += 4;
12616
12617 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12618 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12619
12620 }
12621
glColorMaskiEXT_enc(void * self,GLuint index,GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)12622 void glColorMaskiEXT_enc(void *self , GLuint index, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
12623 {
12624 ENCODER_DEBUG_LOG("glColorMaskiEXT(index:%u, red:%d, green:%d, blue:%d, alpha:%d)", index, red, green, blue, alpha);
12625 AEMU_SCOPED_TRACE("glColorMaskiEXT encode");
12626
12627 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12628 IOStream *stream = ctx->m_stream;
12629 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12630 bool useChecksum = checksumCalculator->getVersion() > 0;
12631
12632 unsigned char *ptr;
12633 unsigned char *buf;
12634 const size_t sizeWithoutChecksum = 8 + 4 + 1 + 1 + 1 + 1;
12635 const size_t checksumSize = checksumCalculator->checksumByteSize();
12636 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12637 buf = stream->alloc(totalSize);
12638 ptr = buf;
12639 int tmp = OP_glColorMaskiEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12640 memcpy(ptr, &totalSize, 4); ptr += 4;
12641
12642 memcpy(ptr, &index, 4); ptr += 4;
12643 memcpy(ptr, &red, 1); ptr += 1;
12644 memcpy(ptr, &green, 1); ptr += 1;
12645 memcpy(ptr, &blue, 1); ptr += 1;
12646 memcpy(ptr, &alpha, 1); ptr += 1;
12647
12648 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12649 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12650
12651 }
12652
glIsEnablediEXT_enc(void * self,GLenum cap,GLuint index)12653 GLboolean glIsEnablediEXT_enc(void *self , GLenum cap, GLuint index)
12654 {
12655 ENCODER_DEBUG_LOG("glIsEnablediEXT(cap:0x%08x, index:%u)", cap, index);
12656 AEMU_SCOPED_TRACE("glIsEnablediEXT encode");
12657
12658 gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12659 IOStream *stream = ctx->m_stream;
12660 gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12661 bool useChecksum = checksumCalculator->getVersion() > 0;
12662
12663 unsigned char *ptr;
12664 unsigned char *buf;
12665 const size_t sizeWithoutChecksum = 8 + 4 + 4;
12666 const size_t checksumSize = checksumCalculator->checksumByteSize();
12667 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12668 buf = stream->alloc(totalSize);
12669 ptr = buf;
12670 int tmp = OP_glIsEnablediEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12671 memcpy(ptr, &totalSize, 4); ptr += 4;
12672
12673 memcpy(ptr, &cap, 4); ptr += 4;
12674 memcpy(ptr, &index, 4); ptr += 4;
12675
12676 if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12677 if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12678
12679
12680 GLboolean retval;
12681 stream->readback(&retval, 1);
12682 if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
12683 if (useChecksum) {
12684 unsigned char *checksumBufPtr = NULL;
12685 unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
12686 if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12687 stream->readback(checksumBufPtr, checksumSize);
12688 if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12689 ALOGE("glIsEnablediEXT: GL communication error, please report this issue to b.android.com.\n");
12690 abort();
12691 }
12692 }
12693 return retval;
12694 }
12695
12696 } // namespace
12697
gl2_encoder_context_t(IOStream * stream,ChecksumCalculator * checksumCalculator)12698 gl2_encoder_context_t::gl2_encoder_context_t(IOStream *stream, ChecksumCalculator *checksumCalculator)
12699 {
12700 m_stream = stream;
12701 m_checksumCalculator = checksumCalculator;
12702
12703 this->glActiveTexture = &glActiveTexture_enc;
12704 this->glAttachShader = &glAttachShader_enc;
12705 this->glBindAttribLocation = &glBindAttribLocation_enc;
12706 this->glBindBuffer = &glBindBuffer_enc;
12707 this->glBindFramebuffer = &glBindFramebuffer_enc;
12708 this->glBindRenderbuffer = &glBindRenderbuffer_enc;
12709 this->glBindTexture = &glBindTexture_enc;
12710 this->glBlendColor = &glBlendColor_enc;
12711 this->glBlendEquation = &glBlendEquation_enc;
12712 this->glBlendEquationSeparate = &glBlendEquationSeparate_enc;
12713 this->glBlendFunc = &glBlendFunc_enc;
12714 this->glBlendFuncSeparate = &glBlendFuncSeparate_enc;
12715 this->glBufferData = &glBufferData_enc;
12716 this->glBufferSubData = &glBufferSubData_enc;
12717 this->glCheckFramebufferStatus = &glCheckFramebufferStatus_enc;
12718 this->glClear = &glClear_enc;
12719 this->glClearColor = &glClearColor_enc;
12720 this->glClearDepthf = &glClearDepthf_enc;
12721 this->glClearStencil = &glClearStencil_enc;
12722 this->glColorMask = &glColorMask_enc;
12723 this->glCompileShader = &glCompileShader_enc;
12724 this->glCompressedTexImage2D = &glCompressedTexImage2D_enc;
12725 this->glCompressedTexSubImage2D = &glCompressedTexSubImage2D_enc;
12726 this->glCopyTexImage2D = &glCopyTexImage2D_enc;
12727 this->glCopyTexSubImage2D = &glCopyTexSubImage2D_enc;
12728 this->glCreateProgram = &glCreateProgram_enc;
12729 this->glCreateShader = &glCreateShader_enc;
12730 this->glCullFace = &glCullFace_enc;
12731 this->glDeleteBuffers = &glDeleteBuffers_enc;
12732 this->glDeleteFramebuffers = &glDeleteFramebuffers_enc;
12733 this->glDeleteProgram = &glDeleteProgram_enc;
12734 this->glDeleteRenderbuffers = &glDeleteRenderbuffers_enc;
12735 this->glDeleteShader = &glDeleteShader_enc;
12736 this->glDeleteTextures = &glDeleteTextures_enc;
12737 this->glDepthFunc = &glDepthFunc_enc;
12738 this->glDepthMask = &glDepthMask_enc;
12739 this->glDepthRangef = &glDepthRangef_enc;
12740 this->glDetachShader = &glDetachShader_enc;
12741 this->glDisable = &glDisable_enc;
12742 this->glDisableVertexAttribArray = &glDisableVertexAttribArray_enc;
12743 this->glDrawArrays = &glDrawArrays_enc;
12744 this->glDrawElements = (glDrawElements_client_proc_t) &enc_unsupported;
12745 this->glEnable = &glEnable_enc;
12746 this->glEnableVertexAttribArray = &glEnableVertexAttribArray_enc;
12747 this->glFinish = &glFinish_enc;
12748 this->glFlush = &glFlush_enc;
12749 this->glFramebufferRenderbuffer = &glFramebufferRenderbuffer_enc;
12750 this->glFramebufferTexture2D = &glFramebufferTexture2D_enc;
12751 this->glFrontFace = &glFrontFace_enc;
12752 this->glGenBuffers = &glGenBuffers_enc;
12753 this->glGenerateMipmap = &glGenerateMipmap_enc;
12754 this->glGenFramebuffers = &glGenFramebuffers_enc;
12755 this->glGenRenderbuffers = &glGenRenderbuffers_enc;
12756 this->glGenTextures = &glGenTextures_enc;
12757 this->glGetActiveAttrib = &glGetActiveAttrib_enc;
12758 this->glGetActiveUniform = &glGetActiveUniform_enc;
12759 this->glGetAttachedShaders = &glGetAttachedShaders_enc;
12760 this->glGetAttribLocation = &glGetAttribLocation_enc;
12761 this->glGetBooleanv = &glGetBooleanv_enc;
12762 this->glGetBufferParameteriv = &glGetBufferParameteriv_enc;
12763 this->glGetError = &glGetError_enc;
12764 this->glGetFloatv = &glGetFloatv_enc;
12765 this->glGetFramebufferAttachmentParameteriv = &glGetFramebufferAttachmentParameteriv_enc;
12766 this->glGetIntegerv = &glGetIntegerv_enc;
12767 this->glGetProgramiv = &glGetProgramiv_enc;
12768 this->glGetProgramInfoLog = &glGetProgramInfoLog_enc;
12769 this->glGetRenderbufferParameteriv = &glGetRenderbufferParameteriv_enc;
12770 this->glGetShaderiv = &glGetShaderiv_enc;
12771 this->glGetShaderInfoLog = &glGetShaderInfoLog_enc;
12772 this->glGetShaderPrecisionFormat = &glGetShaderPrecisionFormat_enc;
12773 this->glGetShaderSource = &glGetShaderSource_enc;
12774 this->glGetString = (glGetString_client_proc_t) &enc_unsupported;
12775 this->glGetTexParameterfv = &glGetTexParameterfv_enc;
12776 this->glGetTexParameteriv = &glGetTexParameteriv_enc;
12777 this->glGetUniformfv = &glGetUniformfv_enc;
12778 this->glGetUniformiv = &glGetUniformiv_enc;
12779 this->glGetUniformLocation = &glGetUniformLocation_enc;
12780 this->glGetVertexAttribfv = &glGetVertexAttribfv_enc;
12781 this->glGetVertexAttribiv = &glGetVertexAttribiv_enc;
12782 this->glGetVertexAttribPointerv = (glGetVertexAttribPointerv_client_proc_t) &enc_unsupported;
12783 this->glHint = &glHint_enc;
12784 this->glIsBuffer = &glIsBuffer_enc;
12785 this->glIsEnabled = &glIsEnabled_enc;
12786 this->glIsFramebuffer = &glIsFramebuffer_enc;
12787 this->glIsProgram = &glIsProgram_enc;
12788 this->glIsRenderbuffer = &glIsRenderbuffer_enc;
12789 this->glIsShader = &glIsShader_enc;
12790 this->glIsTexture = &glIsTexture_enc;
12791 this->glLineWidth = &glLineWidth_enc;
12792 this->glLinkProgram = &glLinkProgram_enc;
12793 this->glPixelStorei = &glPixelStorei_enc;
12794 this->glPolygonOffset = &glPolygonOffset_enc;
12795 this->glReadPixels = &glReadPixels_enc;
12796 this->glReleaseShaderCompiler = &glReleaseShaderCompiler_enc;
12797 this->glRenderbufferStorage = &glRenderbufferStorage_enc;
12798 this->glSampleCoverage = &glSampleCoverage_enc;
12799 this->glScissor = &glScissor_enc;
12800 this->glShaderBinary = (glShaderBinary_client_proc_t) &enc_unsupported;
12801 this->glShaderSource = (glShaderSource_client_proc_t) &enc_unsupported;
12802 this->glStencilFunc = &glStencilFunc_enc;
12803 this->glStencilFuncSeparate = &glStencilFuncSeparate_enc;
12804 this->glStencilMask = &glStencilMask_enc;
12805 this->glStencilMaskSeparate = &glStencilMaskSeparate_enc;
12806 this->glStencilOp = &glStencilOp_enc;
12807 this->glStencilOpSeparate = &glStencilOpSeparate_enc;
12808 this->glTexImage2D = &glTexImage2D_enc;
12809 this->glTexParameterf = &glTexParameterf_enc;
12810 this->glTexParameterfv = &glTexParameterfv_enc;
12811 this->glTexParameteri = &glTexParameteri_enc;
12812 this->glTexParameteriv = &glTexParameteriv_enc;
12813 this->glTexSubImage2D = &glTexSubImage2D_enc;
12814 this->glUniform1f = &glUniform1f_enc;
12815 this->glUniform1fv = &glUniform1fv_enc;
12816 this->glUniform1i = &glUniform1i_enc;
12817 this->glUniform1iv = &glUniform1iv_enc;
12818 this->glUniform2f = &glUniform2f_enc;
12819 this->glUniform2fv = &glUniform2fv_enc;
12820 this->glUniform2i = &glUniform2i_enc;
12821 this->glUniform2iv = &glUniform2iv_enc;
12822 this->glUniform3f = &glUniform3f_enc;
12823 this->glUniform3fv = &glUniform3fv_enc;
12824 this->glUniform3i = &glUniform3i_enc;
12825 this->glUniform3iv = &glUniform3iv_enc;
12826 this->glUniform4f = &glUniform4f_enc;
12827 this->glUniform4fv = &glUniform4fv_enc;
12828 this->glUniform4i = &glUniform4i_enc;
12829 this->glUniform4iv = &glUniform4iv_enc;
12830 this->glUniformMatrix2fv = &glUniformMatrix2fv_enc;
12831 this->glUniformMatrix3fv = &glUniformMatrix3fv_enc;
12832 this->glUniformMatrix4fv = &glUniformMatrix4fv_enc;
12833 this->glUseProgram = &glUseProgram_enc;
12834 this->glValidateProgram = &glValidateProgram_enc;
12835 this->glVertexAttrib1f = &glVertexAttrib1f_enc;
12836 this->glVertexAttrib1fv = &glVertexAttrib1fv_enc;
12837 this->glVertexAttrib2f = &glVertexAttrib2f_enc;
12838 this->glVertexAttrib2fv = &glVertexAttrib2fv_enc;
12839 this->glVertexAttrib3f = &glVertexAttrib3f_enc;
12840 this->glVertexAttrib3fv = &glVertexAttrib3fv_enc;
12841 this->glVertexAttrib4f = &glVertexAttrib4f_enc;
12842 this->glVertexAttrib4fv = &glVertexAttrib4fv_enc;
12843 this->glVertexAttribPointer = (glVertexAttribPointer_client_proc_t) &enc_unsupported;
12844 this->glViewport = &glViewport_enc;
12845 this->glEGLImageTargetTexture2DOES = &glEGLImageTargetTexture2DOES_enc;
12846 this->glEGLImageTargetRenderbufferStorageOES = &glEGLImageTargetRenderbufferStorageOES_enc;
12847 this->glGetProgramBinaryOES = (glGetProgramBinaryOES_client_proc_t) &enc_unsupported;
12848 this->glProgramBinaryOES = (glProgramBinaryOES_client_proc_t) &enc_unsupported;
12849 this->glMapBufferOES = (glMapBufferOES_client_proc_t) &enc_unsupported;
12850 this->glUnmapBufferOES = &glUnmapBufferOES_enc;
12851 this->glTexImage3DOES = &glTexImage3DOES_enc;
12852 this->glTexSubImage3DOES = &glTexSubImage3DOES_enc;
12853 this->glCopyTexSubImage3DOES = &glCopyTexSubImage3DOES_enc;
12854 this->glCompressedTexImage3DOES = &glCompressedTexImage3DOES_enc;
12855 this->glCompressedTexSubImage3DOES = &glCompressedTexSubImage3DOES_enc;
12856 this->glFramebufferTexture3DOES = &glFramebufferTexture3DOES_enc;
12857 this->glBindVertexArrayOES = &glBindVertexArrayOES_enc;
12858 this->glDeleteVertexArraysOES = &glDeleteVertexArraysOES_enc;
12859 this->glGenVertexArraysOES = &glGenVertexArraysOES_enc;
12860 this->glIsVertexArrayOES = &glIsVertexArrayOES_enc;
12861 this->glDiscardFramebufferEXT = &glDiscardFramebufferEXT_enc;
12862 this->glMultiDrawArraysEXT = (glMultiDrawArraysEXT_client_proc_t) &enc_unsupported;
12863 this->glMultiDrawElementsEXT = (glMultiDrawElementsEXT_client_proc_t) &enc_unsupported;
12864 this->glGetPerfMonitorGroupsAMD = (glGetPerfMonitorGroupsAMD_client_proc_t) &enc_unsupported;
12865 this->glGetPerfMonitorCountersAMD = (glGetPerfMonitorCountersAMD_client_proc_t) &enc_unsupported;
12866 this->glGetPerfMonitorGroupStringAMD = (glGetPerfMonitorGroupStringAMD_client_proc_t) &enc_unsupported;
12867 this->glGetPerfMonitorCounterStringAMD = (glGetPerfMonitorCounterStringAMD_client_proc_t) &enc_unsupported;
12868 this->glGetPerfMonitorCounterInfoAMD = (glGetPerfMonitorCounterInfoAMD_client_proc_t) &enc_unsupported;
12869 this->glGenPerfMonitorsAMD = (glGenPerfMonitorsAMD_client_proc_t) &enc_unsupported;
12870 this->glDeletePerfMonitorsAMD = (glDeletePerfMonitorsAMD_client_proc_t) &enc_unsupported;
12871 this->glSelectPerfMonitorCountersAMD = (glSelectPerfMonitorCountersAMD_client_proc_t) &enc_unsupported;
12872 this->glBeginPerfMonitorAMD = (glBeginPerfMonitorAMD_client_proc_t) &enc_unsupported;
12873 this->glEndPerfMonitorAMD = (glEndPerfMonitorAMD_client_proc_t) &enc_unsupported;
12874 this->glGetPerfMonitorCounterDataAMD = (glGetPerfMonitorCounterDataAMD_client_proc_t) &enc_unsupported;
12875 this->glRenderbufferStorageMultisampleIMG = (glRenderbufferStorageMultisampleIMG_client_proc_t) &enc_unsupported;
12876 this->glFramebufferTexture2DMultisampleIMG = (glFramebufferTexture2DMultisampleIMG_client_proc_t) &enc_unsupported;
12877 this->glDeleteFencesNV = (glDeleteFencesNV_client_proc_t) &enc_unsupported;
12878 this->glGenFencesNV = (glGenFencesNV_client_proc_t) &enc_unsupported;
12879 this->glIsFenceNV = (glIsFenceNV_client_proc_t) &enc_unsupported;
12880 this->glTestFenceNV = (glTestFenceNV_client_proc_t) &enc_unsupported;
12881 this->glGetFenceivNV = (glGetFenceivNV_client_proc_t) &enc_unsupported;
12882 this->glFinishFenceNV = (glFinishFenceNV_client_proc_t) &enc_unsupported;
12883 this->glSetFenceNV = (glSetFenceNV_client_proc_t) &enc_unsupported;
12884 this->glCoverageMaskNV = (glCoverageMaskNV_client_proc_t) &enc_unsupported;
12885 this->glCoverageOperationNV = (glCoverageOperationNV_client_proc_t) &enc_unsupported;
12886 this->glGetDriverControlsQCOM = (glGetDriverControlsQCOM_client_proc_t) &enc_unsupported;
12887 this->glGetDriverControlStringQCOM = (glGetDriverControlStringQCOM_client_proc_t) &enc_unsupported;
12888 this->glEnableDriverControlQCOM = (glEnableDriverControlQCOM_client_proc_t) &enc_unsupported;
12889 this->glDisableDriverControlQCOM = (glDisableDriverControlQCOM_client_proc_t) &enc_unsupported;
12890 this->glExtGetTexturesQCOM = (glExtGetTexturesQCOM_client_proc_t) &enc_unsupported;
12891 this->glExtGetBuffersQCOM = (glExtGetBuffersQCOM_client_proc_t) &enc_unsupported;
12892 this->glExtGetRenderbuffersQCOM = (glExtGetRenderbuffersQCOM_client_proc_t) &enc_unsupported;
12893 this->glExtGetFramebuffersQCOM = (glExtGetFramebuffersQCOM_client_proc_t) &enc_unsupported;
12894 this->glExtGetTexLevelParameterivQCOM = (glExtGetTexLevelParameterivQCOM_client_proc_t) &enc_unsupported;
12895 this->glExtTexObjectStateOverrideiQCOM = (glExtTexObjectStateOverrideiQCOM_client_proc_t) &enc_unsupported;
12896 this->glExtGetTexSubImageQCOM = (glExtGetTexSubImageQCOM_client_proc_t) &enc_unsupported;
12897 this->glExtGetBufferPointervQCOM = (glExtGetBufferPointervQCOM_client_proc_t) &enc_unsupported;
12898 this->glExtGetShadersQCOM = (glExtGetShadersQCOM_client_proc_t) &enc_unsupported;
12899 this->glExtGetProgramsQCOM = (glExtGetProgramsQCOM_client_proc_t) &enc_unsupported;
12900 this->glExtIsProgramBinaryQCOM = (glExtIsProgramBinaryQCOM_client_proc_t) &enc_unsupported;
12901 this->glExtGetProgramBinarySourceQCOM = (glExtGetProgramBinarySourceQCOM_client_proc_t) &enc_unsupported;
12902 this->glStartTilingQCOM = (glStartTilingQCOM_client_proc_t) &enc_unsupported;
12903 this->glEndTilingQCOM = (glEndTilingQCOM_client_proc_t) &enc_unsupported;
12904 this->glVertexAttribPointerData = &glVertexAttribPointerData_enc;
12905 this->glVertexAttribPointerOffset = &glVertexAttribPointerOffset_enc;
12906 this->glDrawElementsOffset = &glDrawElementsOffset_enc;
12907 this->glDrawElementsData = &glDrawElementsData_enc;
12908 this->glGetCompressedTextureFormats = &glGetCompressedTextureFormats_enc;
12909 this->glShaderString = &glShaderString_enc;
12910 this->glFinishRoundTrip = &glFinishRoundTrip_enc;
12911 this->glGenVertexArrays = &glGenVertexArrays_enc;
12912 this->glBindVertexArray = &glBindVertexArray_enc;
12913 this->glDeleteVertexArrays = &glDeleteVertexArrays_enc;
12914 this->glIsVertexArray = &glIsVertexArray_enc;
12915 this->glMapBufferRange = (glMapBufferRange_client_proc_t) &enc_unsupported;
12916 this->glUnmapBuffer = (glUnmapBuffer_client_proc_t) &enc_unsupported;
12917 this->glFlushMappedBufferRange = (glFlushMappedBufferRange_client_proc_t) &enc_unsupported;
12918 this->glMapBufferRangeAEMU = &glMapBufferRangeAEMU_enc;
12919 this->glUnmapBufferAEMU = &glUnmapBufferAEMU_enc;
12920 this->glFlushMappedBufferRangeAEMU = &glFlushMappedBufferRangeAEMU_enc;
12921 this->glReadPixelsOffsetAEMU = &glReadPixelsOffsetAEMU_enc;
12922 this->glCompressedTexImage2DOffsetAEMU = &glCompressedTexImage2DOffsetAEMU_enc;
12923 this->glCompressedTexSubImage2DOffsetAEMU = &glCompressedTexSubImage2DOffsetAEMU_enc;
12924 this->glTexImage2DOffsetAEMU = &glTexImage2DOffsetAEMU_enc;
12925 this->glTexSubImage2DOffsetAEMU = &glTexSubImage2DOffsetAEMU_enc;
12926 this->glBindBufferRange = &glBindBufferRange_enc;
12927 this->glBindBufferBase = &glBindBufferBase_enc;
12928 this->glCopyBufferSubData = &glCopyBufferSubData_enc;
12929 this->glClearBufferiv = &glClearBufferiv_enc;
12930 this->glClearBufferuiv = &glClearBufferuiv_enc;
12931 this->glClearBufferfv = &glClearBufferfv_enc;
12932 this->glClearBufferfi = &glClearBufferfi_enc;
12933 this->glGetBufferParameteri64v = (glGetBufferParameteri64v_client_proc_t) &enc_unsupported;
12934 this->glGetBufferPointerv = (glGetBufferPointerv_client_proc_t) &enc_unsupported;
12935 this->glUniformBlockBinding = &glUniformBlockBinding_enc;
12936 this->glGetUniformBlockIndex = &glGetUniformBlockIndex_enc;
12937 this->glGetUniformIndices = (glGetUniformIndices_client_proc_t) &enc_unsupported;
12938 this->glGetUniformIndicesAEMU = &glGetUniformIndicesAEMU_enc;
12939 this->glGetActiveUniformBlockiv = &glGetActiveUniformBlockiv_enc;
12940 this->glGetActiveUniformBlockName = &glGetActiveUniformBlockName_enc;
12941 this->glUniform1ui = &glUniform1ui_enc;
12942 this->glUniform2ui = &glUniform2ui_enc;
12943 this->glUniform3ui = &glUniform3ui_enc;
12944 this->glUniform4ui = &glUniform4ui_enc;
12945 this->glUniform1uiv = &glUniform1uiv_enc;
12946 this->glUniform2uiv = &glUniform2uiv_enc;
12947 this->glUniform3uiv = &glUniform3uiv_enc;
12948 this->glUniform4uiv = &glUniform4uiv_enc;
12949 this->glUniformMatrix2x3fv = &glUniformMatrix2x3fv_enc;
12950 this->glUniformMatrix3x2fv = &glUniformMatrix3x2fv_enc;
12951 this->glUniformMatrix2x4fv = &glUniformMatrix2x4fv_enc;
12952 this->glUniformMatrix4x2fv = &glUniformMatrix4x2fv_enc;
12953 this->glUniformMatrix3x4fv = &glUniformMatrix3x4fv_enc;
12954 this->glUniformMatrix4x3fv = &glUniformMatrix4x3fv_enc;
12955 this->glGetUniformuiv = &glGetUniformuiv_enc;
12956 this->glGetActiveUniformsiv = &glGetActiveUniformsiv_enc;
12957 this->glVertexAttribI4i = &glVertexAttribI4i_enc;
12958 this->glVertexAttribI4ui = &glVertexAttribI4ui_enc;
12959 this->glVertexAttribI4iv = &glVertexAttribI4iv_enc;
12960 this->glVertexAttribI4uiv = &glVertexAttribI4uiv_enc;
12961 this->glVertexAttribIPointer = (glVertexAttribIPointer_client_proc_t) &enc_unsupported;
12962 this->glVertexAttribIPointerOffsetAEMU = &glVertexAttribIPointerOffsetAEMU_enc;
12963 this->glVertexAttribIPointerDataAEMU = &glVertexAttribIPointerDataAEMU_enc;
12964 this->glGetVertexAttribIiv = &glGetVertexAttribIiv_enc;
12965 this->glGetVertexAttribIuiv = &glGetVertexAttribIuiv_enc;
12966 this->glVertexAttribDivisor = &glVertexAttribDivisor_enc;
12967 this->glDrawArraysInstanced = &glDrawArraysInstanced_enc;
12968 this->glDrawElementsInstanced = (glDrawElementsInstanced_client_proc_t) &enc_unsupported;
12969 this->glDrawElementsInstancedDataAEMU = &glDrawElementsInstancedDataAEMU_enc;
12970 this->glDrawElementsInstancedOffsetAEMU = &glDrawElementsInstancedOffsetAEMU_enc;
12971 this->glDrawRangeElements = (glDrawRangeElements_client_proc_t) &enc_unsupported;
12972 this->glDrawRangeElementsDataAEMU = &glDrawRangeElementsDataAEMU_enc;
12973 this->glDrawRangeElementsOffsetAEMU = &glDrawRangeElementsOffsetAEMU_enc;
12974 this->glFenceSync = (glFenceSync_client_proc_t) &enc_unsupported;
12975 this->glClientWaitSync = (glClientWaitSync_client_proc_t) &enc_unsupported;
12976 this->glWaitSync = (glWaitSync_client_proc_t) &enc_unsupported;
12977 this->glDeleteSync = (glDeleteSync_client_proc_t) &enc_unsupported;
12978 this->glIsSync = (glIsSync_client_proc_t) &enc_unsupported;
12979 this->glGetSynciv = (glGetSynciv_client_proc_t) &enc_unsupported;
12980 this->glFenceSyncAEMU = &glFenceSyncAEMU_enc;
12981 this->glClientWaitSyncAEMU = &glClientWaitSyncAEMU_enc;
12982 this->glWaitSyncAEMU = &glWaitSyncAEMU_enc;
12983 this->glDeleteSyncAEMU = &glDeleteSyncAEMU_enc;
12984 this->glIsSyncAEMU = &glIsSyncAEMU_enc;
12985 this->glGetSyncivAEMU = &glGetSyncivAEMU_enc;
12986 this->glDrawBuffers = &glDrawBuffers_enc;
12987 this->glReadBuffer = &glReadBuffer_enc;
12988 this->glBlitFramebuffer = &glBlitFramebuffer_enc;
12989 this->glInvalidateFramebuffer = &glInvalidateFramebuffer_enc;
12990 this->glInvalidateSubFramebuffer = &glInvalidateSubFramebuffer_enc;
12991 this->glFramebufferTextureLayer = &glFramebufferTextureLayer_enc;
12992 this->glRenderbufferStorageMultisample = &glRenderbufferStorageMultisample_enc;
12993 this->glTexStorage2D = &glTexStorage2D_enc;
12994 this->glGetInternalformativ = &glGetInternalformativ_enc;
12995 this->glBeginTransformFeedback = &glBeginTransformFeedback_enc;
12996 this->glEndTransformFeedback = &glEndTransformFeedback_enc;
12997 this->glGenTransformFeedbacks = &glGenTransformFeedbacks_enc;
12998 this->glDeleteTransformFeedbacks = &glDeleteTransformFeedbacks_enc;
12999 this->glBindTransformFeedback = &glBindTransformFeedback_enc;
13000 this->glPauseTransformFeedback = &glPauseTransformFeedback_enc;
13001 this->glResumeTransformFeedback = &glResumeTransformFeedback_enc;
13002 this->glIsTransformFeedback = &glIsTransformFeedback_enc;
13003 this->glTransformFeedbackVaryings = (glTransformFeedbackVaryings_client_proc_t) &enc_unsupported;
13004 this->glTransformFeedbackVaryingsAEMU = &glTransformFeedbackVaryingsAEMU_enc;
13005 this->glGetTransformFeedbackVarying = &glGetTransformFeedbackVarying_enc;
13006 this->glGenSamplers = &glGenSamplers_enc;
13007 this->glDeleteSamplers = &glDeleteSamplers_enc;
13008 this->glBindSampler = &glBindSampler_enc;
13009 this->glSamplerParameterf = &glSamplerParameterf_enc;
13010 this->glSamplerParameteri = &glSamplerParameteri_enc;
13011 this->glSamplerParameterfv = &glSamplerParameterfv_enc;
13012 this->glSamplerParameteriv = &glSamplerParameteriv_enc;
13013 this->glGetSamplerParameterfv = &glGetSamplerParameterfv_enc;
13014 this->glGetSamplerParameteriv = &glGetSamplerParameteriv_enc;
13015 this->glIsSampler = &glIsSampler_enc;
13016 this->glGenQueries = &glGenQueries_enc;
13017 this->glDeleteQueries = &glDeleteQueries_enc;
13018 this->glBeginQuery = &glBeginQuery_enc;
13019 this->glEndQuery = &glEndQuery_enc;
13020 this->glGetQueryiv = &glGetQueryiv_enc;
13021 this->glGetQueryObjectuiv = &glGetQueryObjectuiv_enc;
13022 this->glIsQuery = &glIsQuery_enc;
13023 this->glProgramParameteri = &glProgramParameteri_enc;
13024 this->glProgramBinary = &glProgramBinary_enc;
13025 this->glGetProgramBinary = &glGetProgramBinary_enc;
13026 this->glGetFragDataLocation = &glGetFragDataLocation_enc;
13027 this->glGetInteger64v = &glGetInteger64v_enc;
13028 this->glGetIntegeri_v = &glGetIntegeri_v_enc;
13029 this->glGetInteger64i_v = &glGetInteger64i_v_enc;
13030 this->glTexImage3D = &glTexImage3D_enc;
13031 this->glTexImage3DOffsetAEMU = &glTexImage3DOffsetAEMU_enc;
13032 this->glTexStorage3D = &glTexStorage3D_enc;
13033 this->glTexSubImage3D = &glTexSubImage3D_enc;
13034 this->glTexSubImage3DOffsetAEMU = &glTexSubImage3DOffsetAEMU_enc;
13035 this->glCompressedTexImage3D = &glCompressedTexImage3D_enc;
13036 this->glCompressedTexImage3DOffsetAEMU = &glCompressedTexImage3DOffsetAEMU_enc;
13037 this->glCompressedTexSubImage3D = &glCompressedTexSubImage3D_enc;
13038 this->glCompressedTexSubImage3DOffsetAEMU = &glCompressedTexSubImage3DOffsetAEMU_enc;
13039 this->glCopyTexSubImage3D = &glCopyTexSubImage3D_enc;
13040 this->glGetStringi = (glGetStringi_client_proc_t) &enc_unsupported;
13041 this->glGetBooleani_v = &glGetBooleani_v_enc;
13042 this->glMemoryBarrier = &glMemoryBarrier_enc;
13043 this->glMemoryBarrierByRegion = &glMemoryBarrierByRegion_enc;
13044 this->glGenProgramPipelines = &glGenProgramPipelines_enc;
13045 this->glDeleteProgramPipelines = &glDeleteProgramPipelines_enc;
13046 this->glBindProgramPipeline = &glBindProgramPipeline_enc;
13047 this->glGetProgramPipelineiv = &glGetProgramPipelineiv_enc;
13048 this->glGetProgramPipelineInfoLog = &glGetProgramPipelineInfoLog_enc;
13049 this->glValidateProgramPipeline = &glValidateProgramPipeline_enc;
13050 this->glIsProgramPipeline = &glIsProgramPipeline_enc;
13051 this->glUseProgramStages = &glUseProgramStages_enc;
13052 this->glActiveShaderProgram = &glActiveShaderProgram_enc;
13053 this->glCreateShaderProgramv = (glCreateShaderProgramv_client_proc_t) &enc_unsupported;
13054 this->glCreateShaderProgramvAEMU = &glCreateShaderProgramvAEMU_enc;
13055 this->glProgramUniform1f = &glProgramUniform1f_enc;
13056 this->glProgramUniform2f = &glProgramUniform2f_enc;
13057 this->glProgramUniform3f = &glProgramUniform3f_enc;
13058 this->glProgramUniform4f = &glProgramUniform4f_enc;
13059 this->glProgramUniform1i = &glProgramUniform1i_enc;
13060 this->glProgramUniform2i = &glProgramUniform2i_enc;
13061 this->glProgramUniform3i = &glProgramUniform3i_enc;
13062 this->glProgramUniform4i = &glProgramUniform4i_enc;
13063 this->glProgramUniform1ui = &glProgramUniform1ui_enc;
13064 this->glProgramUniform2ui = &glProgramUniform2ui_enc;
13065 this->glProgramUniform3ui = &glProgramUniform3ui_enc;
13066 this->glProgramUniform4ui = &glProgramUniform4ui_enc;
13067 this->glProgramUniform1fv = &glProgramUniform1fv_enc;
13068 this->glProgramUniform2fv = &glProgramUniform2fv_enc;
13069 this->glProgramUniform3fv = &glProgramUniform3fv_enc;
13070 this->glProgramUniform4fv = &glProgramUniform4fv_enc;
13071 this->glProgramUniform1iv = &glProgramUniform1iv_enc;
13072 this->glProgramUniform2iv = &glProgramUniform2iv_enc;
13073 this->glProgramUniform3iv = &glProgramUniform3iv_enc;
13074 this->glProgramUniform4iv = &glProgramUniform4iv_enc;
13075 this->glProgramUniform1uiv = &glProgramUniform1uiv_enc;
13076 this->glProgramUniform2uiv = &glProgramUniform2uiv_enc;
13077 this->glProgramUniform3uiv = &glProgramUniform3uiv_enc;
13078 this->glProgramUniform4uiv = &glProgramUniform4uiv_enc;
13079 this->glProgramUniformMatrix2fv = &glProgramUniformMatrix2fv_enc;
13080 this->glProgramUniformMatrix3fv = &glProgramUniformMatrix3fv_enc;
13081 this->glProgramUniformMatrix4fv = &glProgramUniformMatrix4fv_enc;
13082 this->glProgramUniformMatrix2x3fv = &glProgramUniformMatrix2x3fv_enc;
13083 this->glProgramUniformMatrix3x2fv = &glProgramUniformMatrix3x2fv_enc;
13084 this->glProgramUniformMatrix2x4fv = &glProgramUniformMatrix2x4fv_enc;
13085 this->glProgramUniformMatrix4x2fv = &glProgramUniformMatrix4x2fv_enc;
13086 this->glProgramUniformMatrix3x4fv = &glProgramUniformMatrix3x4fv_enc;
13087 this->glProgramUniformMatrix4x3fv = &glProgramUniformMatrix4x3fv_enc;
13088 this->glGetProgramInterfaceiv = &glGetProgramInterfaceiv_enc;
13089 this->glGetProgramResourceiv = &glGetProgramResourceiv_enc;
13090 this->glGetProgramResourceIndex = &glGetProgramResourceIndex_enc;
13091 this->glGetProgramResourceLocation = &glGetProgramResourceLocation_enc;
13092 this->glGetProgramResourceName = &glGetProgramResourceName_enc;
13093 this->glBindImageTexture = &glBindImageTexture_enc;
13094 this->glDispatchCompute = &glDispatchCompute_enc;
13095 this->glDispatchComputeIndirect = &glDispatchComputeIndirect_enc;
13096 this->glBindVertexBuffer = &glBindVertexBuffer_enc;
13097 this->glVertexAttribBinding = &glVertexAttribBinding_enc;
13098 this->glVertexAttribFormat = &glVertexAttribFormat_enc;
13099 this->glVertexAttribIFormat = &glVertexAttribIFormat_enc;
13100 this->glVertexBindingDivisor = &glVertexBindingDivisor_enc;
13101 this->glDrawArraysIndirect = (glDrawArraysIndirect_client_proc_t) &enc_unsupported;
13102 this->glDrawArraysIndirectDataAEMU = &glDrawArraysIndirectDataAEMU_enc;
13103 this->glDrawArraysIndirectOffsetAEMU = &glDrawArraysIndirectOffsetAEMU_enc;
13104 this->glDrawElementsIndirect = (glDrawElementsIndirect_client_proc_t) &enc_unsupported;
13105 this->glDrawElementsIndirectDataAEMU = &glDrawElementsIndirectDataAEMU_enc;
13106 this->glDrawElementsIndirectOffsetAEMU = &glDrawElementsIndirectOffsetAEMU_enc;
13107 this->glTexStorage2DMultisample = &glTexStorage2DMultisample_enc;
13108 this->glSampleMaski = &glSampleMaski_enc;
13109 this->glGetMultisamplefv = &glGetMultisamplefv_enc;
13110 this->glFramebufferParameteri = &glFramebufferParameteri_enc;
13111 this->glGetFramebufferParameteriv = &glGetFramebufferParameteriv_enc;
13112 this->glGetTexLevelParameterfv = &glGetTexLevelParameterfv_enc;
13113 this->glGetTexLevelParameteriv = &glGetTexLevelParameteriv_enc;
13114 this->glMapBufferRangeDMA = &glMapBufferRangeDMA_enc;
13115 this->glUnmapBufferDMA = &glUnmapBufferDMA_enc;
13116 this->glMapBufferRangeDirect = &glMapBufferRangeDirect_enc;
13117 this->glUnmapBufferDirect = &glUnmapBufferDirect_enc;
13118 this->glFlushMappedBufferRangeDirect = &glFlushMappedBufferRangeDirect_enc;
13119 this->glGetGraphicsResetStatusEXT = &glGetGraphicsResetStatusEXT_enc;
13120 this->glReadnPixelsEXT = &glReadnPixelsEXT_enc;
13121 this->glGetnUniformfvEXT = &glGetnUniformfvEXT_enc;
13122 this->glGetnUniformivEXT = &glGetnUniformivEXT_enc;
13123 this->glDrawArraysNullAEMU = &glDrawArraysNullAEMU_enc;
13124 this->glDrawElementsNullAEMU = (glDrawElementsNullAEMU_client_proc_t) &enc_unsupported;
13125 this->glDrawElementsOffsetNullAEMU = &glDrawElementsOffsetNullAEMU_enc;
13126 this->glDrawElementsDataNullAEMU = &glDrawElementsDataNullAEMU_enc;
13127 this->glUnmapBufferAsyncAEMU = &glUnmapBufferAsyncAEMU_enc;
13128 this->glFlushMappedBufferRangeAEMU2 = &glFlushMappedBufferRangeAEMU2_enc;
13129 this->glBufferDataSyncAEMU = &glBufferDataSyncAEMU_enc;
13130 this->glTexBufferOES = &glTexBufferOES_enc;
13131 this->glTexBufferRangeOES = &glTexBufferRangeOES_enc;
13132 this->glTexBufferEXT = &glTexBufferEXT_enc;
13133 this->glTexBufferRangeEXT = &glTexBufferRangeEXT_enc;
13134 this->glEnableiEXT = &glEnableiEXT_enc;
13135 this->glDisableiEXT = &glDisableiEXT_enc;
13136 this->glBlendEquationiEXT = &glBlendEquationiEXT_enc;
13137 this->glBlendEquationSeparateiEXT = &glBlendEquationSeparateiEXT_enc;
13138 this->glBlendFunciEXT = &glBlendFunciEXT_enc;
13139 this->glBlendFuncSeparateiEXT = &glBlendFuncSeparateiEXT_enc;
13140 this->glColorMaskiEXT = &glColorMaskiEXT_enc;
13141 this->glIsEnablediEXT = &glIsEnablediEXT_enc;
13142 }
13143
13144