• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Generated Code - DO NOT EDIT !!
2 // generated by 'emugen'
3 
4 
5 #include <string.h>
6 #include "gl2_opcodes.h"
7 
8 #include "gl2_enc.h"
9 
10 
11 #include <vector>
12 
13 #include <stdio.h>
14 
15 #include "android/base/Tracing.h"
16 
17 #include "EncoderDebug.h"
18 
19 namespace {
20 
enc_unsupported()21 void enc_unsupported()
22 {
23 	ALOGE("Function is unsupported\n");
24 }
25 
glActiveTexture_enc(void * self,GLenum texture)26 void glActiveTexture_enc(void *self , GLenum texture)
27 {
28 	ENCODER_DEBUG_LOG("glActiveTexture(texture:0x%08x)", texture);
29 	AEMU_SCOPED_TRACE("glActiveTexture encode");
30 
31 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
32 	IOStream *stream = ctx->m_stream;
33 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
34 	bool useChecksum = checksumCalculator->getVersion() > 0;
35 
36 	 unsigned char *ptr;
37 	 unsigned char *buf;
38 	 const size_t sizeWithoutChecksum = 8 + 4;
39 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
40 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
41 	buf = stream->alloc(totalSize);
42 	ptr = buf;
43 	int tmp = OP_glActiveTexture;memcpy(ptr, &tmp, 4); ptr += 4;
44 	memcpy(ptr, &totalSize, 4);  ptr += 4;
45 
46 		memcpy(ptr, &texture, 4); ptr += 4;
47 
48 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
49 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
50 
51 }
52 
glAttachShader_enc(void * self,GLuint program,GLuint shader)53 void glAttachShader_enc(void *self , GLuint program, GLuint shader)
54 {
55 	ENCODER_DEBUG_LOG("glAttachShader(program:%u, shader:%u)", program, shader);
56 	AEMU_SCOPED_TRACE("glAttachShader encode");
57 
58 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
59 	IOStream *stream = ctx->m_stream;
60 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
61 	bool useChecksum = checksumCalculator->getVersion() > 0;
62 
63 	 unsigned char *ptr;
64 	 unsigned char *buf;
65 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
66 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
67 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
68 	buf = stream->alloc(totalSize);
69 	ptr = buf;
70 	int tmp = OP_glAttachShader;memcpy(ptr, &tmp, 4); ptr += 4;
71 	memcpy(ptr, &totalSize, 4);  ptr += 4;
72 
73 		memcpy(ptr, &program, 4); ptr += 4;
74 		memcpy(ptr, &shader, 4); ptr += 4;
75 
76 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
77 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
78 
79 }
80 
glBindAttribLocation_enc(void * self,GLuint program,GLuint index,const GLchar * name)81 void glBindAttribLocation_enc(void *self , GLuint program, GLuint index, const GLchar* name)
82 {
83 	ENCODER_DEBUG_LOG("glBindAttribLocation(program:%u, index:%u, name:0x%08x)", program, index, name);
84 	AEMU_SCOPED_TRACE("glBindAttribLocation encode");
85 
86 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
87 	IOStream *stream = ctx->m_stream;
88 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
89 	bool useChecksum = checksumCalculator->getVersion() > 0;
90 
91 	const unsigned int __size_name =  (strlen(name) + 1);
92 	 unsigned char *ptr;
93 	 unsigned char *buf;
94 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
95 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
96 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
97 	buf = stream->alloc(totalSize);
98 	ptr = buf;
99 	int tmp = OP_glBindAttribLocation;memcpy(ptr, &tmp, 4); ptr += 4;
100 	memcpy(ptr, &totalSize, 4);  ptr += 4;
101 
102 		memcpy(ptr, &program, 4); ptr += 4;
103 		memcpy(ptr, &index, 4); ptr += 4;
104 	memcpy(ptr, &__size_name, 4); ptr += 4;
105 	memcpy(ptr, name, __size_name);ptr += __size_name;
106 
107 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
108 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
109 
110 }
111 
glBindBuffer_enc(void * self,GLenum target,GLuint buffer)112 void glBindBuffer_enc(void *self , GLenum target, GLuint buffer)
113 {
114 	ENCODER_DEBUG_LOG("glBindBuffer(target:0x%08x, buffer:%u)", target, buffer);
115 	AEMU_SCOPED_TRACE("glBindBuffer encode");
116 
117 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
118 	IOStream *stream = ctx->m_stream;
119 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
120 	bool useChecksum = checksumCalculator->getVersion() > 0;
121 
122 	 unsigned char *ptr;
123 	 unsigned char *buf;
124 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
125 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
126 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
127 	buf = stream->alloc(totalSize);
128 	ptr = buf;
129 	int tmp = OP_glBindBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
130 	memcpy(ptr, &totalSize, 4);  ptr += 4;
131 
132 		memcpy(ptr, &target, 4); ptr += 4;
133 		memcpy(ptr, &buffer, 4); ptr += 4;
134 
135 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
136 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
137 
138 }
139 
glBindFramebuffer_enc(void * self,GLenum target,GLuint framebuffer)140 void glBindFramebuffer_enc(void *self , GLenum target, GLuint framebuffer)
141 {
142 	ENCODER_DEBUG_LOG("glBindFramebuffer(target:0x%08x, framebuffer:%u)", target, framebuffer);
143 	AEMU_SCOPED_TRACE("glBindFramebuffer encode");
144 
145 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
146 	IOStream *stream = ctx->m_stream;
147 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
148 	bool useChecksum = checksumCalculator->getVersion() > 0;
149 
150 	 unsigned char *ptr;
151 	 unsigned char *buf;
152 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
153 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
154 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
155 	buf = stream->alloc(totalSize);
156 	ptr = buf;
157 	int tmp = OP_glBindFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
158 	memcpy(ptr, &totalSize, 4);  ptr += 4;
159 
160 		memcpy(ptr, &target, 4); ptr += 4;
161 		memcpy(ptr, &framebuffer, 4); ptr += 4;
162 
163 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
164 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
165 
166 }
167 
glBindRenderbuffer_enc(void * self,GLenum target,GLuint renderbuffer)168 void glBindRenderbuffer_enc(void *self , GLenum target, GLuint renderbuffer)
169 {
170 	ENCODER_DEBUG_LOG("glBindRenderbuffer(target:0x%08x, renderbuffer:%u)", target, renderbuffer);
171 	AEMU_SCOPED_TRACE("glBindRenderbuffer encode");
172 
173 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
174 	IOStream *stream = ctx->m_stream;
175 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
176 	bool useChecksum = checksumCalculator->getVersion() > 0;
177 
178 	 unsigned char *ptr;
179 	 unsigned char *buf;
180 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
181 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
182 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
183 	buf = stream->alloc(totalSize);
184 	ptr = buf;
185 	int tmp = OP_glBindRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
186 	memcpy(ptr, &totalSize, 4);  ptr += 4;
187 
188 		memcpy(ptr, &target, 4); ptr += 4;
189 		memcpy(ptr, &renderbuffer, 4); ptr += 4;
190 
191 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
192 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
193 
194 }
195 
glBindTexture_enc(void * self,GLenum target,GLuint texture)196 void glBindTexture_enc(void *self , GLenum target, GLuint texture)
197 {
198 	ENCODER_DEBUG_LOG("glBindTexture(target:0x%08x, texture:%u)", target, texture);
199 	AEMU_SCOPED_TRACE("glBindTexture encode");
200 
201 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
202 	IOStream *stream = ctx->m_stream;
203 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
204 	bool useChecksum = checksumCalculator->getVersion() > 0;
205 
206 	 unsigned char *ptr;
207 	 unsigned char *buf;
208 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
209 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
210 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
211 	buf = stream->alloc(totalSize);
212 	ptr = buf;
213 	int tmp = OP_glBindTexture;memcpy(ptr, &tmp, 4); ptr += 4;
214 	memcpy(ptr, &totalSize, 4);  ptr += 4;
215 
216 		memcpy(ptr, &target, 4); ptr += 4;
217 		memcpy(ptr, &texture, 4); ptr += 4;
218 
219 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
220 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
221 
222 }
223 
glBlendColor_enc(void * self,GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)224 void glBlendColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
225 {
226 	ENCODER_DEBUG_LOG("glBlendColor(red:%f, green:%f, blue:%f, alpha:%f)", red, green, blue, alpha);
227 	AEMU_SCOPED_TRACE("glBlendColor encode");
228 
229 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
230 	IOStream *stream = ctx->m_stream;
231 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
232 	bool useChecksum = checksumCalculator->getVersion() > 0;
233 
234 	 unsigned char *ptr;
235 	 unsigned char *buf;
236 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
237 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
238 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
239 	buf = stream->alloc(totalSize);
240 	ptr = buf;
241 	int tmp = OP_glBlendColor;memcpy(ptr, &tmp, 4); ptr += 4;
242 	memcpy(ptr, &totalSize, 4);  ptr += 4;
243 
244 		memcpy(ptr, &red, 4); ptr += 4;
245 		memcpy(ptr, &green, 4); ptr += 4;
246 		memcpy(ptr, &blue, 4); ptr += 4;
247 		memcpy(ptr, &alpha, 4); ptr += 4;
248 
249 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
250 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
251 
252 }
253 
glBlendEquation_enc(void * self,GLenum mode)254 void glBlendEquation_enc(void *self , GLenum mode)
255 {
256 	ENCODER_DEBUG_LOG("glBlendEquation(mode:0x%08x)", mode);
257 	AEMU_SCOPED_TRACE("glBlendEquation encode");
258 
259 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
260 	IOStream *stream = ctx->m_stream;
261 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
262 	bool useChecksum = checksumCalculator->getVersion() > 0;
263 
264 	 unsigned char *ptr;
265 	 unsigned char *buf;
266 	 const size_t sizeWithoutChecksum = 8 + 4;
267 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
268 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
269 	buf = stream->alloc(totalSize);
270 	ptr = buf;
271 	int tmp = OP_glBlendEquation;memcpy(ptr, &tmp, 4); ptr += 4;
272 	memcpy(ptr, &totalSize, 4);  ptr += 4;
273 
274 		memcpy(ptr, &mode, 4); ptr += 4;
275 
276 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
277 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
278 
279 }
280 
glBlendEquationSeparate_enc(void * self,GLenum modeRGB,GLenum modeAlpha)281 void glBlendEquationSeparate_enc(void *self , GLenum modeRGB, GLenum modeAlpha)
282 {
283 	ENCODER_DEBUG_LOG("glBlendEquationSeparate(modeRGB:0x%08x, modeAlpha:0x%08x)", modeRGB, modeAlpha);
284 	AEMU_SCOPED_TRACE("glBlendEquationSeparate encode");
285 
286 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
287 	IOStream *stream = ctx->m_stream;
288 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
289 	bool useChecksum = checksumCalculator->getVersion() > 0;
290 
291 	 unsigned char *ptr;
292 	 unsigned char *buf;
293 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
294 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
295 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
296 	buf = stream->alloc(totalSize);
297 	ptr = buf;
298 	int tmp = OP_glBlendEquationSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
299 	memcpy(ptr, &totalSize, 4);  ptr += 4;
300 
301 		memcpy(ptr, &modeRGB, 4); ptr += 4;
302 		memcpy(ptr, &modeAlpha, 4); ptr += 4;
303 
304 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
305 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
306 
307 }
308 
glBlendFunc_enc(void * self,GLenum sfactor,GLenum dfactor)309 void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor)
310 {
311 	ENCODER_DEBUG_LOG("glBlendFunc(sfactor:0x%08x, dfactor:0x%08x)", sfactor, dfactor);
312 	AEMU_SCOPED_TRACE("glBlendFunc encode");
313 
314 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
315 	IOStream *stream = ctx->m_stream;
316 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
317 	bool useChecksum = checksumCalculator->getVersion() > 0;
318 
319 	 unsigned char *ptr;
320 	 unsigned char *buf;
321 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
322 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
323 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
324 	buf = stream->alloc(totalSize);
325 	ptr = buf;
326 	int tmp = OP_glBlendFunc;memcpy(ptr, &tmp, 4); ptr += 4;
327 	memcpy(ptr, &totalSize, 4);  ptr += 4;
328 
329 		memcpy(ptr, &sfactor, 4); ptr += 4;
330 		memcpy(ptr, &dfactor, 4); ptr += 4;
331 
332 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
333 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
334 
335 }
336 
glBlendFuncSeparate_enc(void * self,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)337 void glBlendFuncSeparate_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
338 {
339 	ENCODER_DEBUG_LOG("glBlendFuncSeparate(srcRGB:0x%08x, dstRGB:0x%08x, srcAlpha:0x%08x, dstAlpha:0x%08x)", srcRGB, dstRGB, srcAlpha, dstAlpha);
340 	AEMU_SCOPED_TRACE("glBlendFuncSeparate encode");
341 
342 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
343 	IOStream *stream = ctx->m_stream;
344 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
345 	bool useChecksum = checksumCalculator->getVersion() > 0;
346 
347 	 unsigned char *ptr;
348 	 unsigned char *buf;
349 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
350 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
351 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
352 	buf = stream->alloc(totalSize);
353 	ptr = buf;
354 	int tmp = OP_glBlendFuncSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
355 	memcpy(ptr, &totalSize, 4);  ptr += 4;
356 
357 		memcpy(ptr, &srcRGB, 4); ptr += 4;
358 		memcpy(ptr, &dstRGB, 4); ptr += 4;
359 		memcpy(ptr, &srcAlpha, 4); ptr += 4;
360 		memcpy(ptr, &dstAlpha, 4); ptr += 4;
361 
362 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
363 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
364 
365 }
366 
glBufferData_enc(void * self,GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)367 void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
368 {
369 	ENCODER_DEBUG_LOG("glBufferData(target:0x%08x, size:0x%08lx, data:0x%08x, usage:0x%08x)", target, size, data, usage);
370 	AEMU_SCOPED_TRACE("glBufferData encode");
371 
372 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
373 	IOStream *stream = ctx->m_stream;
374 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
375 	bool useChecksum = checksumCalculator->getVersion() > 0;
376 
377 	const unsigned int __size_data = ((data != NULL) ?  size : 0);
378 	 unsigned char *ptr;
379 	 unsigned char *buf;
380 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
381 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
382 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
383 	buf = stream->alloc(8 + 4 + 4);
384 	ptr = buf;
385 	int tmp = OP_glBufferData;memcpy(ptr, &tmp, 4); ptr += 4;
386 	memcpy(ptr, &totalSize, 4);  ptr += 4;
387 
388 		memcpy(ptr, &target, 4); ptr += 4;
389 		memcpy(ptr, &size, 4); ptr += 4;
390 
391 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
392 	stream->flush();
393 	stream->writeFully(&__size_data,4);
394 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
395 	if (data != NULL) {
396 		stream->writeFully(data, __size_data);
397 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
398 	}
399 	buf = stream->alloc(4);
400 	ptr = buf;
401 		memcpy(ptr, &usage, 4); ptr += 4;
402 
403 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
404 	buf = stream->alloc(checksumSize);
405 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
406 
407 }
408 
glBufferSubData_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)409 void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
410 {
411 	ENCODER_DEBUG_LOG("glBufferSubData(target:0x%08x, offset:0x%08lx, size:0x%08lx, data:0x%08x)", target, offset, size, data);
412 	AEMU_SCOPED_TRACE("glBufferSubData encode");
413 
414 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
415 	IOStream *stream = ctx->m_stream;
416 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
417 	bool useChecksum = checksumCalculator->getVersion() > 0;
418 
419 	const unsigned int __size_data = ((data != NULL) ?  size : 0);
420 	 unsigned char *ptr;
421 	 unsigned char *buf;
422 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 1*4;
423 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
424 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
425 	buf = stream->alloc(8 + 4 + 4 + 4);
426 	ptr = buf;
427 	int tmp = OP_glBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
428 	memcpy(ptr, &totalSize, 4);  ptr += 4;
429 
430 		memcpy(ptr, &target, 4); ptr += 4;
431 		memcpy(ptr, &offset, 4); ptr += 4;
432 		memcpy(ptr, &size, 4); ptr += 4;
433 
434 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
435 	stream->flush();
436 	stream->writeFully(&__size_data,4);
437 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
438 	if (data != NULL) {
439 		stream->writeFully(data, __size_data);
440 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
441 	}
442 	buf = stream->alloc(checksumSize);
443 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
444 
445 }
446 
glCheckFramebufferStatus_enc(void * self,GLenum target)447 GLenum glCheckFramebufferStatus_enc(void *self , GLenum target)
448 {
449 	ENCODER_DEBUG_LOG("glCheckFramebufferStatus(target:0x%08x)", target);
450 	AEMU_SCOPED_TRACE("glCheckFramebufferStatus encode");
451 
452 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
453 	IOStream *stream = ctx->m_stream;
454 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
455 	bool useChecksum = checksumCalculator->getVersion() > 0;
456 
457 	 unsigned char *ptr;
458 	 unsigned char *buf;
459 	 const size_t sizeWithoutChecksum = 8 + 4;
460 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
461 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
462 	buf = stream->alloc(totalSize);
463 	ptr = buf;
464 	int tmp = OP_glCheckFramebufferStatus;memcpy(ptr, &tmp, 4); ptr += 4;
465 	memcpy(ptr, &totalSize, 4);  ptr += 4;
466 
467 		memcpy(ptr, &target, 4); ptr += 4;
468 
469 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
470 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
471 
472 
473 	GLenum retval;
474 	stream->readback(&retval, 4);
475 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
476 	if (useChecksum) {
477 		unsigned char *checksumBufPtr = NULL;
478 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
479 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
480 		stream->readback(checksumBufPtr, checksumSize);
481 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
482 			ALOGE("glCheckFramebufferStatus: GL communication error, please report this issue to b.android.com.\n");
483 			abort();
484 		}
485 	}
486 	return retval;
487 }
488 
glClear_enc(void * self,GLbitfield mask)489 void glClear_enc(void *self , GLbitfield mask)
490 {
491 	ENCODER_DEBUG_LOG("glClear(mask:0x%08x)", mask);
492 	AEMU_SCOPED_TRACE("glClear encode");
493 
494 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
495 	IOStream *stream = ctx->m_stream;
496 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
497 	bool useChecksum = checksumCalculator->getVersion() > 0;
498 
499 	 unsigned char *ptr;
500 	 unsigned char *buf;
501 	 const size_t sizeWithoutChecksum = 8 + 4;
502 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
503 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
504 	buf = stream->alloc(totalSize);
505 	ptr = buf;
506 	int tmp = OP_glClear;memcpy(ptr, &tmp, 4); ptr += 4;
507 	memcpy(ptr, &totalSize, 4);  ptr += 4;
508 
509 		memcpy(ptr, &mask, 4); ptr += 4;
510 
511 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
512 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
513 
514 }
515 
glClearColor_enc(void * self,GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)516 void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
517 {
518 	ENCODER_DEBUG_LOG("glClearColor(red:%f, green:%f, blue:%f, alpha:%f)", red, green, blue, alpha);
519 	AEMU_SCOPED_TRACE("glClearColor encode");
520 
521 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
522 	IOStream *stream = ctx->m_stream;
523 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
524 	bool useChecksum = checksumCalculator->getVersion() > 0;
525 
526 	 unsigned char *ptr;
527 	 unsigned char *buf;
528 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
529 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
530 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
531 	buf = stream->alloc(totalSize);
532 	ptr = buf;
533 	int tmp = OP_glClearColor;memcpy(ptr, &tmp, 4); ptr += 4;
534 	memcpy(ptr, &totalSize, 4);  ptr += 4;
535 
536 		memcpy(ptr, &red, 4); ptr += 4;
537 		memcpy(ptr, &green, 4); ptr += 4;
538 		memcpy(ptr, &blue, 4); ptr += 4;
539 		memcpy(ptr, &alpha, 4); ptr += 4;
540 
541 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
542 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
543 
544 }
545 
glClearDepthf_enc(void * self,GLclampf depth)546 void glClearDepthf_enc(void *self , GLclampf depth)
547 {
548 	ENCODER_DEBUG_LOG("glClearDepthf(depth:%f)", depth);
549 	AEMU_SCOPED_TRACE("glClearDepthf encode");
550 
551 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
552 	IOStream *stream = ctx->m_stream;
553 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
554 	bool useChecksum = checksumCalculator->getVersion() > 0;
555 
556 	 unsigned char *ptr;
557 	 unsigned char *buf;
558 	 const size_t sizeWithoutChecksum = 8 + 4;
559 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
560 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
561 	buf = stream->alloc(totalSize);
562 	ptr = buf;
563 	int tmp = OP_glClearDepthf;memcpy(ptr, &tmp, 4); ptr += 4;
564 	memcpy(ptr, &totalSize, 4);  ptr += 4;
565 
566 		memcpy(ptr, &depth, 4); ptr += 4;
567 
568 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
569 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
570 
571 }
572 
glClearStencil_enc(void * self,GLint s)573 void glClearStencil_enc(void *self , GLint s)
574 {
575 	ENCODER_DEBUG_LOG("glClearStencil(s:%d)", s);
576 	AEMU_SCOPED_TRACE("glClearStencil encode");
577 
578 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
579 	IOStream *stream = ctx->m_stream;
580 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
581 	bool useChecksum = checksumCalculator->getVersion() > 0;
582 
583 	 unsigned char *ptr;
584 	 unsigned char *buf;
585 	 const size_t sizeWithoutChecksum = 8 + 4;
586 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
587 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
588 	buf = stream->alloc(totalSize);
589 	ptr = buf;
590 	int tmp = OP_glClearStencil;memcpy(ptr, &tmp, 4); ptr += 4;
591 	memcpy(ptr, &totalSize, 4);  ptr += 4;
592 
593 		memcpy(ptr, &s, 4); ptr += 4;
594 
595 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
596 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
597 
598 }
599 
glColorMask_enc(void * self,GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)600 void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
601 {
602 	ENCODER_DEBUG_LOG("glColorMask(red:%d, green:%d, blue:%d, alpha:%d)", red, green, blue, alpha);
603 	AEMU_SCOPED_TRACE("glColorMask encode");
604 
605 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
606 	IOStream *stream = ctx->m_stream;
607 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
608 	bool useChecksum = checksumCalculator->getVersion() > 0;
609 
610 	 unsigned char *ptr;
611 	 unsigned char *buf;
612 	 const size_t sizeWithoutChecksum = 8 + 1 + 1 + 1 + 1;
613 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
614 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
615 	buf = stream->alloc(totalSize);
616 	ptr = buf;
617 	int tmp = OP_glColorMask;memcpy(ptr, &tmp, 4); ptr += 4;
618 	memcpy(ptr, &totalSize, 4);  ptr += 4;
619 
620 		memcpy(ptr, &red, 1); ptr += 1;
621 		memcpy(ptr, &green, 1); ptr += 1;
622 		memcpy(ptr, &blue, 1); ptr += 1;
623 		memcpy(ptr, &alpha, 1); ptr += 1;
624 
625 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
626 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
627 
628 }
629 
glCompileShader_enc(void * self,GLuint shader)630 void glCompileShader_enc(void *self , GLuint shader)
631 {
632 	ENCODER_DEBUG_LOG("glCompileShader(shader:%u)", shader);
633 	AEMU_SCOPED_TRACE("glCompileShader encode");
634 
635 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
636 	IOStream *stream = ctx->m_stream;
637 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
638 	bool useChecksum = checksumCalculator->getVersion() > 0;
639 
640 	 unsigned char *ptr;
641 	 unsigned char *buf;
642 	 const size_t sizeWithoutChecksum = 8 + 4;
643 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
644 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
645 	buf = stream->alloc(totalSize);
646 	ptr = buf;
647 	int tmp = OP_glCompileShader;memcpy(ptr, &tmp, 4); ptr += 4;
648 	memcpy(ptr, &totalSize, 4);  ptr += 4;
649 
650 		memcpy(ptr, &shader, 4); ptr += 4;
651 
652 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
653 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
654 
655 }
656 
glCompressedTexImage2D_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)657 void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
658 {
659 	ENCODER_DEBUG_LOG("glCompressedTexImage2D(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, border:%d, imageSize:%d, data:0x%08x)", target, level, internalformat, width, height, border, imageSize, data);
660 	AEMU_SCOPED_TRACE("glCompressedTexImage2D encode");
661 
662 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
663 	IOStream *stream = ctx->m_stream;
664 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
665 	bool useChecksum = checksumCalculator->getVersion() > 0;
666 
667 	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
668 	 unsigned char *ptr;
669 	 unsigned char *buf;
670 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
671 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
672 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
673 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
674 	ptr = buf;
675 	int tmp = OP_glCompressedTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
676 	memcpy(ptr, &totalSize, 4);  ptr += 4;
677 
678 		memcpy(ptr, &target, 4); ptr += 4;
679 		memcpy(ptr, &level, 4); ptr += 4;
680 		memcpy(ptr, &internalformat, 4); ptr += 4;
681 		memcpy(ptr, &width, 4); ptr += 4;
682 		memcpy(ptr, &height, 4); ptr += 4;
683 		memcpy(ptr, &border, 4); ptr += 4;
684 		memcpy(ptr, &imageSize, 4); ptr += 4;
685 
686 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
687 	stream->flush();
688 	stream->writeFully(&__size_data,4);
689 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
690 	if (data != NULL) {
691 		stream->writeFully(data, __size_data);
692 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
693 	}
694 	buf = stream->alloc(checksumSize);
695 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
696 
697 }
698 
glCompressedTexSubImage2D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)699 void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
700 {
701 	ENCODER_DEBUG_LOG("glCompressedTexSubImage2D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, width:%d, height:%d, format:0x%08x, imageSize:%d, data:0x%08x)", target, level, xoffset, yoffset, width, height, format, imageSize, data);
702 	AEMU_SCOPED_TRACE("glCompressedTexSubImage2D encode");
703 
704 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
705 	IOStream *stream = ctx->m_stream;
706 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
707 	bool useChecksum = checksumCalculator->getVersion() > 0;
708 
709 	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
710 	 unsigned char *ptr;
711 	 unsigned char *buf;
712 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
713 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
714 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
715 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
716 	ptr = buf;
717 	int tmp = OP_glCompressedTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
718 	memcpy(ptr, &totalSize, 4);  ptr += 4;
719 
720 		memcpy(ptr, &target, 4); ptr += 4;
721 		memcpy(ptr, &level, 4); ptr += 4;
722 		memcpy(ptr, &xoffset, 4); ptr += 4;
723 		memcpy(ptr, &yoffset, 4); ptr += 4;
724 		memcpy(ptr, &width, 4); ptr += 4;
725 		memcpy(ptr, &height, 4); ptr += 4;
726 		memcpy(ptr, &format, 4); ptr += 4;
727 		memcpy(ptr, &imageSize, 4); ptr += 4;
728 
729 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
730 	stream->flush();
731 	stream->writeFully(&__size_data,4);
732 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
733 	if (data != NULL) {
734 		stream->writeFully(data, __size_data);
735 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
736 	}
737 	buf = stream->alloc(checksumSize);
738 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
739 
740 }
741 
glCopyTexImage2D_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)742 void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
743 {
744 	ENCODER_DEBUG_LOG("glCopyTexImage2D(target:0x%08x, level:%d, internalformat:0x%08x, x:%d, y:%d, width:%d, height:%d, border:%d)", target, level, internalformat, x, y, width, height, border);
745 	AEMU_SCOPED_TRACE("glCopyTexImage2D encode");
746 
747 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
748 	IOStream *stream = ctx->m_stream;
749 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
750 	bool useChecksum = checksumCalculator->getVersion() > 0;
751 
752 	 unsigned char *ptr;
753 	 unsigned char *buf;
754 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
755 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
756 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
757 	buf = stream->alloc(totalSize);
758 	ptr = buf;
759 	int tmp = OP_glCopyTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
760 	memcpy(ptr, &totalSize, 4);  ptr += 4;
761 
762 		memcpy(ptr, &target, 4); ptr += 4;
763 		memcpy(ptr, &level, 4); ptr += 4;
764 		memcpy(ptr, &internalformat, 4); ptr += 4;
765 		memcpy(ptr, &x, 4); ptr += 4;
766 		memcpy(ptr, &y, 4); ptr += 4;
767 		memcpy(ptr, &width, 4); ptr += 4;
768 		memcpy(ptr, &height, 4); ptr += 4;
769 		memcpy(ptr, &border, 4); ptr += 4;
770 
771 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
772 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
773 
774 }
775 
glCopyTexSubImage2D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)776 void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
777 {
778 	ENCODER_DEBUG_LOG("glCopyTexSubImage2D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, x:%d, y:%d, width:%d, height:%d)", target, level, xoffset, yoffset, x, y, width, height);
779 	AEMU_SCOPED_TRACE("glCopyTexSubImage2D encode");
780 
781 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
782 	IOStream *stream = ctx->m_stream;
783 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
784 	bool useChecksum = checksumCalculator->getVersion() > 0;
785 
786 	 unsigned char *ptr;
787 	 unsigned char *buf;
788 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
789 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
790 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
791 	buf = stream->alloc(totalSize);
792 	ptr = buf;
793 	int tmp = OP_glCopyTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
794 	memcpy(ptr, &totalSize, 4);  ptr += 4;
795 
796 		memcpy(ptr, &target, 4); ptr += 4;
797 		memcpy(ptr, &level, 4); ptr += 4;
798 		memcpy(ptr, &xoffset, 4); ptr += 4;
799 		memcpy(ptr, &yoffset, 4); ptr += 4;
800 		memcpy(ptr, &x, 4); ptr += 4;
801 		memcpy(ptr, &y, 4); ptr += 4;
802 		memcpy(ptr, &width, 4); ptr += 4;
803 		memcpy(ptr, &height, 4); ptr += 4;
804 
805 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
806 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
807 
808 }
809 
glCreateProgram_enc(void * self)810 GLuint glCreateProgram_enc(void *self )
811 {
812 	ENCODER_DEBUG_LOG("glCreateProgram()");
813 	AEMU_SCOPED_TRACE("glCreateProgram encode");
814 
815 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
816 	IOStream *stream = ctx->m_stream;
817 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
818 	bool useChecksum = checksumCalculator->getVersion() > 0;
819 
820 	 unsigned char *ptr;
821 	 unsigned char *buf;
822 	 const size_t sizeWithoutChecksum = 8;
823 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
824 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
825 	buf = stream->alloc(totalSize);
826 	ptr = buf;
827 	int tmp = OP_glCreateProgram;memcpy(ptr, &tmp, 4); ptr += 4;
828 	memcpy(ptr, &totalSize, 4);  ptr += 4;
829 
830 
831 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
832 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
833 
834 
835 	GLuint retval;
836 	stream->readback(&retval, 4);
837 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
838 	if (useChecksum) {
839 		unsigned char *checksumBufPtr = NULL;
840 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
841 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
842 		stream->readback(checksumBufPtr, checksumSize);
843 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
844 			ALOGE("glCreateProgram: GL communication error, please report this issue to b.android.com.\n");
845 			abort();
846 		}
847 	}
848 	return retval;
849 }
850 
glCreateShader_enc(void * self,GLenum type)851 GLuint glCreateShader_enc(void *self , GLenum type)
852 {
853 	ENCODER_DEBUG_LOG("glCreateShader(type:0x%08x)", type);
854 	AEMU_SCOPED_TRACE("glCreateShader encode");
855 
856 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
857 	IOStream *stream = ctx->m_stream;
858 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
859 	bool useChecksum = checksumCalculator->getVersion() > 0;
860 
861 	 unsigned char *ptr;
862 	 unsigned char *buf;
863 	 const size_t sizeWithoutChecksum = 8 + 4;
864 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
865 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
866 	buf = stream->alloc(totalSize);
867 	ptr = buf;
868 	int tmp = OP_glCreateShader;memcpy(ptr, &tmp, 4); ptr += 4;
869 	memcpy(ptr, &totalSize, 4);  ptr += 4;
870 
871 		memcpy(ptr, &type, 4); ptr += 4;
872 
873 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
874 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
875 
876 
877 	GLuint retval;
878 	stream->readback(&retval, 4);
879 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
880 	if (useChecksum) {
881 		unsigned char *checksumBufPtr = NULL;
882 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
883 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
884 		stream->readback(checksumBufPtr, checksumSize);
885 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
886 			ALOGE("glCreateShader: GL communication error, please report this issue to b.android.com.\n");
887 			abort();
888 		}
889 	}
890 	return retval;
891 }
892 
glCullFace_enc(void * self,GLenum mode)893 void glCullFace_enc(void *self , GLenum mode)
894 {
895 	ENCODER_DEBUG_LOG("glCullFace(mode:0x%08x)", mode);
896 	AEMU_SCOPED_TRACE("glCullFace encode");
897 
898 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
899 	IOStream *stream = ctx->m_stream;
900 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
901 	bool useChecksum = checksumCalculator->getVersion() > 0;
902 
903 	 unsigned char *ptr;
904 	 unsigned char *buf;
905 	 const size_t sizeWithoutChecksum = 8 + 4;
906 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
907 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
908 	buf = stream->alloc(totalSize);
909 	ptr = buf;
910 	int tmp = OP_glCullFace;memcpy(ptr, &tmp, 4); ptr += 4;
911 	memcpy(ptr, &totalSize, 4);  ptr += 4;
912 
913 		memcpy(ptr, &mode, 4); ptr += 4;
914 
915 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
916 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
917 
918 }
919 
glDeleteBuffers_enc(void * self,GLsizei n,const GLuint * buffers)920 void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers)
921 {
922 	ENCODER_DEBUG_LOG("glDeleteBuffers(n:%d, buffers:0x%08x)", n, buffers);
923 	AEMU_SCOPED_TRACE("glDeleteBuffers encode");
924 
925 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
926 	IOStream *stream = ctx->m_stream;
927 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
928 	bool useChecksum = checksumCalculator->getVersion() > 0;
929 
930 	const unsigned int __size_buffers =  (n * sizeof(GLuint));
931 	 unsigned char *ptr;
932 	 unsigned char *buf;
933 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_buffers + 1*4;
934 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
935 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
936 	buf = stream->alloc(totalSize);
937 	ptr = buf;
938 	int tmp = OP_glDeleteBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
939 	memcpy(ptr, &totalSize, 4);  ptr += 4;
940 
941 		memcpy(ptr, &n, 4); ptr += 4;
942 	memcpy(ptr, &__size_buffers, 4); ptr += 4;
943 	memcpy(ptr, buffers, __size_buffers);ptr += __size_buffers;
944 
945 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
946 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
947 
948 }
949 
glDeleteFramebuffers_enc(void * self,GLsizei n,const GLuint * framebuffers)950 void glDeleteFramebuffers_enc(void *self , GLsizei n, const GLuint* framebuffers)
951 {
952 	ENCODER_DEBUG_LOG("glDeleteFramebuffers(n:%d, framebuffers:0x%08x)", n, framebuffers);
953 	AEMU_SCOPED_TRACE("glDeleteFramebuffers encode");
954 
955 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
956 	IOStream *stream = ctx->m_stream;
957 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
958 	bool useChecksum = checksumCalculator->getVersion() > 0;
959 
960 	const unsigned int __size_framebuffers =  (n * sizeof(GLuint));
961 	 unsigned char *ptr;
962 	 unsigned char *buf;
963 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_framebuffers + 1*4;
964 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
965 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
966 	buf = stream->alloc(totalSize);
967 	ptr = buf;
968 	int tmp = OP_glDeleteFramebuffers;memcpy(ptr, &tmp, 4); ptr += 4;
969 	memcpy(ptr, &totalSize, 4);  ptr += 4;
970 
971 		memcpy(ptr, &n, 4); ptr += 4;
972 	memcpy(ptr, &__size_framebuffers, 4); ptr += 4;
973 	memcpy(ptr, framebuffers, __size_framebuffers);ptr += __size_framebuffers;
974 
975 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
976 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
977 
978 }
979 
glDeleteProgram_enc(void * self,GLuint program)980 void glDeleteProgram_enc(void *self , GLuint program)
981 {
982 	ENCODER_DEBUG_LOG("glDeleteProgram(program:%u)", program);
983 	AEMU_SCOPED_TRACE("glDeleteProgram encode");
984 
985 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
986 	IOStream *stream = ctx->m_stream;
987 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
988 	bool useChecksum = checksumCalculator->getVersion() > 0;
989 
990 	 unsigned char *ptr;
991 	 unsigned char *buf;
992 	 const size_t sizeWithoutChecksum = 8 + 4;
993 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
994 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
995 	buf = stream->alloc(totalSize);
996 	ptr = buf;
997 	int tmp = OP_glDeleteProgram;memcpy(ptr, &tmp, 4); ptr += 4;
998 	memcpy(ptr, &totalSize, 4);  ptr += 4;
999 
1000 		memcpy(ptr, &program, 4); ptr += 4;
1001 
1002 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1003 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1004 
1005 }
1006 
glDeleteRenderbuffers_enc(void * self,GLsizei n,const GLuint * renderbuffers)1007 void glDeleteRenderbuffers_enc(void *self , GLsizei n, const GLuint* renderbuffers)
1008 {
1009 	ENCODER_DEBUG_LOG("glDeleteRenderbuffers(n:%d, renderbuffers:0x%08x)", n, renderbuffers);
1010 	AEMU_SCOPED_TRACE("glDeleteRenderbuffers encode");
1011 
1012 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1013 	IOStream *stream = ctx->m_stream;
1014 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1015 	bool useChecksum = checksumCalculator->getVersion() > 0;
1016 
1017 	const unsigned int __size_renderbuffers =  (n * sizeof(GLuint));
1018 	 unsigned char *ptr;
1019 	 unsigned char *buf;
1020 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_renderbuffers + 1*4;
1021 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1022 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1023 	buf = stream->alloc(totalSize);
1024 	ptr = buf;
1025 	int tmp = OP_glDeleteRenderbuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1026 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1027 
1028 		memcpy(ptr, &n, 4); ptr += 4;
1029 	memcpy(ptr, &__size_renderbuffers, 4); ptr += 4;
1030 	memcpy(ptr, renderbuffers, __size_renderbuffers);ptr += __size_renderbuffers;
1031 
1032 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1033 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1034 
1035 }
1036 
glDeleteShader_enc(void * self,GLuint shader)1037 void glDeleteShader_enc(void *self , GLuint shader)
1038 {
1039 	ENCODER_DEBUG_LOG("glDeleteShader(shader:%u)", shader);
1040 	AEMU_SCOPED_TRACE("glDeleteShader encode");
1041 
1042 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1043 	IOStream *stream = ctx->m_stream;
1044 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1045 	bool useChecksum = checksumCalculator->getVersion() > 0;
1046 
1047 	 unsigned char *ptr;
1048 	 unsigned char *buf;
1049 	 const size_t sizeWithoutChecksum = 8 + 4;
1050 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1051 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1052 	buf = stream->alloc(totalSize);
1053 	ptr = buf;
1054 	int tmp = OP_glDeleteShader;memcpy(ptr, &tmp, 4); ptr += 4;
1055 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1056 
1057 		memcpy(ptr, &shader, 4); ptr += 4;
1058 
1059 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1060 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1061 
1062 }
1063 
glDeleteTextures_enc(void * self,GLsizei n,const GLuint * textures)1064 void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures)
1065 {
1066 	ENCODER_DEBUG_LOG("glDeleteTextures(n:%d, textures:0x%08x)", n, textures);
1067 	AEMU_SCOPED_TRACE("glDeleteTextures encode");
1068 
1069 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1070 	IOStream *stream = ctx->m_stream;
1071 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1072 	bool useChecksum = checksumCalculator->getVersion() > 0;
1073 
1074 	const unsigned int __size_textures =  (n * sizeof(GLuint));
1075 	 unsigned char *ptr;
1076 	 unsigned char *buf;
1077 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_textures + 1*4;
1078 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1079 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1080 	buf = stream->alloc(totalSize);
1081 	ptr = buf;
1082 	int tmp = OP_glDeleteTextures;memcpy(ptr, &tmp, 4); ptr += 4;
1083 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1084 
1085 		memcpy(ptr, &n, 4); ptr += 4;
1086 	memcpy(ptr, &__size_textures, 4); ptr += 4;
1087 	memcpy(ptr, textures, __size_textures);ptr += __size_textures;
1088 
1089 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1090 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1091 
1092 }
1093 
glDepthFunc_enc(void * self,GLenum func)1094 void glDepthFunc_enc(void *self , GLenum func)
1095 {
1096 	ENCODER_DEBUG_LOG("glDepthFunc(func:0x%08x)", func);
1097 	AEMU_SCOPED_TRACE("glDepthFunc encode");
1098 
1099 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1100 	IOStream *stream = ctx->m_stream;
1101 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1102 	bool useChecksum = checksumCalculator->getVersion() > 0;
1103 
1104 	 unsigned char *ptr;
1105 	 unsigned char *buf;
1106 	 const size_t sizeWithoutChecksum = 8 + 4;
1107 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1108 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1109 	buf = stream->alloc(totalSize);
1110 	ptr = buf;
1111 	int tmp = OP_glDepthFunc;memcpy(ptr, &tmp, 4); ptr += 4;
1112 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1113 
1114 		memcpy(ptr, &func, 4); ptr += 4;
1115 
1116 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1117 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1118 
1119 }
1120 
glDepthMask_enc(void * self,GLboolean flag)1121 void glDepthMask_enc(void *self , GLboolean flag)
1122 {
1123 	ENCODER_DEBUG_LOG("glDepthMask(flag:%d)", flag);
1124 	AEMU_SCOPED_TRACE("glDepthMask encode");
1125 
1126 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1127 	IOStream *stream = ctx->m_stream;
1128 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1129 	bool useChecksum = checksumCalculator->getVersion() > 0;
1130 
1131 	 unsigned char *ptr;
1132 	 unsigned char *buf;
1133 	 const size_t sizeWithoutChecksum = 8 + 1;
1134 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1135 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1136 	buf = stream->alloc(totalSize);
1137 	ptr = buf;
1138 	int tmp = OP_glDepthMask;memcpy(ptr, &tmp, 4); ptr += 4;
1139 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1140 
1141 		memcpy(ptr, &flag, 1); ptr += 1;
1142 
1143 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1144 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1145 
1146 }
1147 
glDepthRangef_enc(void * self,GLclampf zNear,GLclampf zFar)1148 void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar)
1149 {
1150 	ENCODER_DEBUG_LOG("glDepthRangef(zNear:%f, zFar:%f)", zNear, zFar);
1151 	AEMU_SCOPED_TRACE("glDepthRangef encode");
1152 
1153 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1154 	IOStream *stream = ctx->m_stream;
1155 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1156 	bool useChecksum = checksumCalculator->getVersion() > 0;
1157 
1158 	 unsigned char *ptr;
1159 	 unsigned char *buf;
1160 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1161 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1162 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1163 	buf = stream->alloc(totalSize);
1164 	ptr = buf;
1165 	int tmp = OP_glDepthRangef;memcpy(ptr, &tmp, 4); ptr += 4;
1166 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1167 
1168 		memcpy(ptr, &zNear, 4); ptr += 4;
1169 		memcpy(ptr, &zFar, 4); ptr += 4;
1170 
1171 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1172 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1173 
1174 }
1175 
glDetachShader_enc(void * self,GLuint program,GLuint shader)1176 void glDetachShader_enc(void *self , GLuint program, GLuint shader)
1177 {
1178 	ENCODER_DEBUG_LOG("glDetachShader(program:%u, shader:%u)", program, shader);
1179 	AEMU_SCOPED_TRACE("glDetachShader encode");
1180 
1181 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1182 	IOStream *stream = ctx->m_stream;
1183 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1184 	bool useChecksum = checksumCalculator->getVersion() > 0;
1185 
1186 	 unsigned char *ptr;
1187 	 unsigned char *buf;
1188 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1189 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1190 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1191 	buf = stream->alloc(totalSize);
1192 	ptr = buf;
1193 	int tmp = OP_glDetachShader;memcpy(ptr, &tmp, 4); ptr += 4;
1194 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1195 
1196 		memcpy(ptr, &program, 4); ptr += 4;
1197 		memcpy(ptr, &shader, 4); ptr += 4;
1198 
1199 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1200 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1201 
1202 }
1203 
glDisable_enc(void * self,GLenum cap)1204 void glDisable_enc(void *self , GLenum cap)
1205 {
1206 	ENCODER_DEBUG_LOG("glDisable(cap:0x%08x)", cap);
1207 	AEMU_SCOPED_TRACE("glDisable encode");
1208 
1209 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1210 	IOStream *stream = ctx->m_stream;
1211 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1212 	bool useChecksum = checksumCalculator->getVersion() > 0;
1213 
1214 	 unsigned char *ptr;
1215 	 unsigned char *buf;
1216 	 const size_t sizeWithoutChecksum = 8 + 4;
1217 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1218 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1219 	buf = stream->alloc(totalSize);
1220 	ptr = buf;
1221 	int tmp = OP_glDisable;memcpy(ptr, &tmp, 4); ptr += 4;
1222 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1223 
1224 		memcpy(ptr, &cap, 4); ptr += 4;
1225 
1226 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1227 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1228 
1229 }
1230 
glDisableVertexAttribArray_enc(void * self,GLuint index)1231 void glDisableVertexAttribArray_enc(void *self , GLuint index)
1232 {
1233 	ENCODER_DEBUG_LOG("glDisableVertexAttribArray(index:%u)", index);
1234 	AEMU_SCOPED_TRACE("glDisableVertexAttribArray encode");
1235 
1236 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1237 	IOStream *stream = ctx->m_stream;
1238 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1239 	bool useChecksum = checksumCalculator->getVersion() > 0;
1240 
1241 	 unsigned char *ptr;
1242 	 unsigned char *buf;
1243 	 const size_t sizeWithoutChecksum = 8 + 4;
1244 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1245 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1246 	buf = stream->alloc(totalSize);
1247 	ptr = buf;
1248 	int tmp = OP_glDisableVertexAttribArray;memcpy(ptr, &tmp, 4); ptr += 4;
1249 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1250 
1251 		memcpy(ptr, &index, 4); ptr += 4;
1252 
1253 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1254 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1255 
1256 }
1257 
glDrawArrays_enc(void * self,GLenum mode,GLint first,GLsizei count)1258 void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count)
1259 {
1260 	ENCODER_DEBUG_LOG("glDrawArrays(mode:0x%08x, first:%d, count:%d)", mode, first, count);
1261 	AEMU_SCOPED_TRACE("glDrawArrays encode");
1262 
1263 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1264 	IOStream *stream = ctx->m_stream;
1265 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1266 	bool useChecksum = checksumCalculator->getVersion() > 0;
1267 
1268 	 unsigned char *ptr;
1269 	 unsigned char *buf;
1270 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
1271 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1272 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1273 	buf = stream->alloc(totalSize);
1274 	ptr = buf;
1275 	int tmp = OP_glDrawArrays;memcpy(ptr, &tmp, 4); ptr += 4;
1276 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1277 
1278 		memcpy(ptr, &mode, 4); ptr += 4;
1279 		memcpy(ptr, &first, 4); ptr += 4;
1280 		memcpy(ptr, &count, 4); ptr += 4;
1281 
1282 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1283 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1284 
1285 }
1286 
glEnable_enc(void * self,GLenum cap)1287 void glEnable_enc(void *self , GLenum cap)
1288 {
1289 	ENCODER_DEBUG_LOG("glEnable(cap:0x%08x)", cap);
1290 	AEMU_SCOPED_TRACE("glEnable encode");
1291 
1292 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1293 	IOStream *stream = ctx->m_stream;
1294 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1295 	bool useChecksum = checksumCalculator->getVersion() > 0;
1296 
1297 	 unsigned char *ptr;
1298 	 unsigned char *buf;
1299 	 const size_t sizeWithoutChecksum = 8 + 4;
1300 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1301 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1302 	buf = stream->alloc(totalSize);
1303 	ptr = buf;
1304 	int tmp = OP_glEnable;memcpy(ptr, &tmp, 4); ptr += 4;
1305 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1306 
1307 		memcpy(ptr, &cap, 4); ptr += 4;
1308 
1309 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1310 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1311 
1312 }
1313 
glEnableVertexAttribArray_enc(void * self,GLuint index)1314 void glEnableVertexAttribArray_enc(void *self , GLuint index)
1315 {
1316 	ENCODER_DEBUG_LOG("glEnableVertexAttribArray(index:%u)", index);
1317 	AEMU_SCOPED_TRACE("glEnableVertexAttribArray encode");
1318 
1319 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1320 	IOStream *stream = ctx->m_stream;
1321 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1322 	bool useChecksum = checksumCalculator->getVersion() > 0;
1323 
1324 	 unsigned char *ptr;
1325 	 unsigned char *buf;
1326 	 const size_t sizeWithoutChecksum = 8 + 4;
1327 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1328 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1329 	buf = stream->alloc(totalSize);
1330 	ptr = buf;
1331 	int tmp = OP_glEnableVertexAttribArray;memcpy(ptr, &tmp, 4); ptr += 4;
1332 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1333 
1334 		memcpy(ptr, &index, 4); ptr += 4;
1335 
1336 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1337 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1338 
1339 }
1340 
glFinish_enc(void * self)1341 void glFinish_enc(void *self )
1342 {
1343 	ENCODER_DEBUG_LOG("glFinish()");
1344 	AEMU_SCOPED_TRACE("glFinish encode");
1345 
1346 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1347 	IOStream *stream = ctx->m_stream;
1348 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1349 	bool useChecksum = checksumCalculator->getVersion() > 0;
1350 
1351 	 unsigned char *ptr;
1352 	 unsigned char *buf;
1353 	 const size_t sizeWithoutChecksum = 8;
1354 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1355 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1356 	buf = stream->alloc(totalSize);
1357 	ptr = buf;
1358 	int tmp = OP_glFinish;memcpy(ptr, &tmp, 4); ptr += 4;
1359 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1360 
1361 
1362 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1363 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1364 
1365 }
1366 
glFlush_enc(void * self)1367 void glFlush_enc(void *self )
1368 {
1369 	ENCODER_DEBUG_LOG("glFlush()");
1370 	AEMU_SCOPED_TRACE("glFlush encode");
1371 
1372 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1373 	IOStream *stream = ctx->m_stream;
1374 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1375 	bool useChecksum = checksumCalculator->getVersion() > 0;
1376 
1377 	 unsigned char *ptr;
1378 	 unsigned char *buf;
1379 	 const size_t sizeWithoutChecksum = 8;
1380 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1381 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1382 	buf = stream->alloc(totalSize);
1383 	ptr = buf;
1384 	int tmp = OP_glFlush;memcpy(ptr, &tmp, 4); ptr += 4;
1385 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1386 
1387 
1388 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1389 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1390 
1391 }
1392 
glFramebufferRenderbuffer_enc(void * self,GLenum target,GLenum attachment,GLenum renderbuffertarget,GLuint renderbuffer)1393 void glFramebufferRenderbuffer_enc(void *self , GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
1394 {
1395 	ENCODER_DEBUG_LOG("glFramebufferRenderbuffer(target:0x%08x, attachment:0x%08x, renderbuffertarget:0x%08x, renderbuffer:%u)", target, attachment, renderbuffertarget, renderbuffer);
1396 	AEMU_SCOPED_TRACE("glFramebufferRenderbuffer encode");
1397 
1398 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1399 	IOStream *stream = ctx->m_stream;
1400 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1401 	bool useChecksum = checksumCalculator->getVersion() > 0;
1402 
1403 	 unsigned char *ptr;
1404 	 unsigned char *buf;
1405 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
1406 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1407 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1408 	buf = stream->alloc(totalSize);
1409 	ptr = buf;
1410 	int tmp = OP_glFramebufferRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
1411 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1412 
1413 		memcpy(ptr, &target, 4); ptr += 4;
1414 		memcpy(ptr, &attachment, 4); ptr += 4;
1415 		memcpy(ptr, &renderbuffertarget, 4); ptr += 4;
1416 		memcpy(ptr, &renderbuffer, 4); ptr += 4;
1417 
1418 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1419 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1420 
1421 }
1422 
glFramebufferTexture2D_enc(void * self,GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level)1423 void glFramebufferTexture2D_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
1424 {
1425 	ENCODER_DEBUG_LOG("glFramebufferTexture2D(target:0x%08x, attachment:0x%08x, textarget:0x%08x, texture:%u, level:%d)", target, attachment, textarget, texture, level);
1426 	AEMU_SCOPED_TRACE("glFramebufferTexture2D encode");
1427 
1428 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1429 	IOStream *stream = ctx->m_stream;
1430 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1431 	bool useChecksum = checksumCalculator->getVersion() > 0;
1432 
1433 	 unsigned char *ptr;
1434 	 unsigned char *buf;
1435 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
1436 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1437 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1438 	buf = stream->alloc(totalSize);
1439 	ptr = buf;
1440 	int tmp = OP_glFramebufferTexture2D;memcpy(ptr, &tmp, 4); ptr += 4;
1441 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1442 
1443 		memcpy(ptr, &target, 4); ptr += 4;
1444 		memcpy(ptr, &attachment, 4); ptr += 4;
1445 		memcpy(ptr, &textarget, 4); ptr += 4;
1446 		memcpy(ptr, &texture, 4); ptr += 4;
1447 		memcpy(ptr, &level, 4); ptr += 4;
1448 
1449 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1450 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1451 
1452 }
1453 
glFrontFace_enc(void * self,GLenum mode)1454 void glFrontFace_enc(void *self , GLenum mode)
1455 {
1456 	ENCODER_DEBUG_LOG("glFrontFace(mode:0x%08x)", mode);
1457 	AEMU_SCOPED_TRACE("glFrontFace encode");
1458 
1459 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1460 	IOStream *stream = ctx->m_stream;
1461 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1462 	bool useChecksum = checksumCalculator->getVersion() > 0;
1463 
1464 	 unsigned char *ptr;
1465 	 unsigned char *buf;
1466 	 const size_t sizeWithoutChecksum = 8 + 4;
1467 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1468 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1469 	buf = stream->alloc(totalSize);
1470 	ptr = buf;
1471 	int tmp = OP_glFrontFace;memcpy(ptr, &tmp, 4); ptr += 4;
1472 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1473 
1474 		memcpy(ptr, &mode, 4); ptr += 4;
1475 
1476 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1477 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1478 
1479 }
1480 
glGenBuffers_enc(void * self,GLsizei n,GLuint * buffers)1481 void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers)
1482 {
1483 	ENCODER_DEBUG_LOG("glGenBuffers(n:%d, buffers:0x%08x)", n, buffers);
1484 	AEMU_SCOPED_TRACE("glGenBuffers encode");
1485 
1486 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1487 	IOStream *stream = ctx->m_stream;
1488 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1489 	bool useChecksum = checksumCalculator->getVersion() > 0;
1490 
1491 	const unsigned int __size_buffers =  (n * sizeof(GLuint));
1492 	 unsigned char *ptr;
1493 	 unsigned char *buf;
1494 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1495 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1496 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1497 	buf = stream->alloc(totalSize);
1498 	ptr = buf;
1499 	int tmp = OP_glGenBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1500 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1501 
1502 		memcpy(ptr, &n, 4); ptr += 4;
1503 	memcpy(ptr, &__size_buffers, 4); ptr += 4;
1504 
1505 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1506 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1507 
1508 	stream->readback(buffers, __size_buffers);
1509 	if (useChecksum) checksumCalculator->addBuffer(buffers, __size_buffers);
1510 	if (useChecksum) {
1511 		unsigned char *checksumBufPtr = NULL;
1512 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1513 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1514 		stream->readback(checksumBufPtr, checksumSize);
1515 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1516 			ALOGE("glGenBuffers: GL communication error, please report this issue to b.android.com.\n");
1517 			abort();
1518 		}
1519 	}
1520 }
1521 
glGenerateMipmap_enc(void * self,GLenum target)1522 void glGenerateMipmap_enc(void *self , GLenum target)
1523 {
1524 	ENCODER_DEBUG_LOG("glGenerateMipmap(target:0x%08x)", target);
1525 	AEMU_SCOPED_TRACE("glGenerateMipmap encode");
1526 
1527 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1528 	IOStream *stream = ctx->m_stream;
1529 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1530 	bool useChecksum = checksumCalculator->getVersion() > 0;
1531 
1532 	 unsigned char *ptr;
1533 	 unsigned char *buf;
1534 	 const size_t sizeWithoutChecksum = 8 + 4;
1535 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1536 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1537 	buf = stream->alloc(totalSize);
1538 	ptr = buf;
1539 	int tmp = OP_glGenerateMipmap;memcpy(ptr, &tmp, 4); ptr += 4;
1540 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1541 
1542 		memcpy(ptr, &target, 4); ptr += 4;
1543 
1544 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1545 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1546 
1547 }
1548 
glGenFramebuffers_enc(void * self,GLsizei n,GLuint * framebuffers)1549 void glGenFramebuffers_enc(void *self , GLsizei n, GLuint* framebuffers)
1550 {
1551 	ENCODER_DEBUG_LOG("glGenFramebuffers(n:%d, framebuffers:0x%08x)", n, framebuffers);
1552 	AEMU_SCOPED_TRACE("glGenFramebuffers encode");
1553 
1554 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1555 	IOStream *stream = ctx->m_stream;
1556 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1557 	bool useChecksum = checksumCalculator->getVersion() > 0;
1558 
1559 	const unsigned int __size_framebuffers =  (n * sizeof(GLuint));
1560 	 unsigned char *ptr;
1561 	 unsigned char *buf;
1562 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1563 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1564 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1565 	buf = stream->alloc(totalSize);
1566 	ptr = buf;
1567 	int tmp = OP_glGenFramebuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1568 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1569 
1570 		memcpy(ptr, &n, 4); ptr += 4;
1571 	memcpy(ptr, &__size_framebuffers, 4); ptr += 4;
1572 
1573 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1574 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1575 
1576 	stream->readback(framebuffers, __size_framebuffers);
1577 	if (useChecksum) checksumCalculator->addBuffer(framebuffers, __size_framebuffers);
1578 	if (useChecksum) {
1579 		unsigned char *checksumBufPtr = NULL;
1580 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1581 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1582 		stream->readback(checksumBufPtr, checksumSize);
1583 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1584 			ALOGE("glGenFramebuffers: GL communication error, please report this issue to b.android.com.\n");
1585 			abort();
1586 		}
1587 	}
1588 }
1589 
glGenRenderbuffers_enc(void * self,GLsizei n,GLuint * renderbuffers)1590 void glGenRenderbuffers_enc(void *self , GLsizei n, GLuint* renderbuffers)
1591 {
1592 	ENCODER_DEBUG_LOG("glGenRenderbuffers(n:%d, renderbuffers:0x%08x)", n, renderbuffers);
1593 	AEMU_SCOPED_TRACE("glGenRenderbuffers encode");
1594 
1595 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1596 	IOStream *stream = ctx->m_stream;
1597 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1598 	bool useChecksum = checksumCalculator->getVersion() > 0;
1599 
1600 	const unsigned int __size_renderbuffers =  (n * sizeof(GLuint));
1601 	 unsigned char *ptr;
1602 	 unsigned char *buf;
1603 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1604 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1605 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1606 	buf = stream->alloc(totalSize);
1607 	ptr = buf;
1608 	int tmp = OP_glGenRenderbuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1609 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1610 
1611 		memcpy(ptr, &n, 4); ptr += 4;
1612 	memcpy(ptr, &__size_renderbuffers, 4); ptr += 4;
1613 
1614 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1615 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1616 
1617 	stream->readback(renderbuffers, __size_renderbuffers);
1618 	if (useChecksum) checksumCalculator->addBuffer(renderbuffers, __size_renderbuffers);
1619 	if (useChecksum) {
1620 		unsigned char *checksumBufPtr = NULL;
1621 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1622 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1623 		stream->readback(checksumBufPtr, checksumSize);
1624 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1625 			ALOGE("glGenRenderbuffers: GL communication error, please report this issue to b.android.com.\n");
1626 			abort();
1627 		}
1628 	}
1629 }
1630 
glGenTextures_enc(void * self,GLsizei n,GLuint * textures)1631 void glGenTextures_enc(void *self , GLsizei n, GLuint* textures)
1632 {
1633 	ENCODER_DEBUG_LOG("glGenTextures(n:%d, textures:0x%08x)", n, textures);
1634 	AEMU_SCOPED_TRACE("glGenTextures encode");
1635 
1636 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1637 	IOStream *stream = ctx->m_stream;
1638 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1639 	bool useChecksum = checksumCalculator->getVersion() > 0;
1640 
1641 	const unsigned int __size_textures =  (n * sizeof(GLuint));
1642 	 unsigned char *ptr;
1643 	 unsigned char *buf;
1644 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1645 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1646 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1647 	buf = stream->alloc(totalSize);
1648 	ptr = buf;
1649 	int tmp = OP_glGenTextures;memcpy(ptr, &tmp, 4); ptr += 4;
1650 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1651 
1652 		memcpy(ptr, &n, 4); ptr += 4;
1653 	memcpy(ptr, &__size_textures, 4); ptr += 4;
1654 
1655 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1656 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1657 
1658 	stream->readback(textures, __size_textures);
1659 	if (useChecksum) checksumCalculator->addBuffer(textures, __size_textures);
1660 	if (useChecksum) {
1661 		unsigned char *checksumBufPtr = NULL;
1662 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1663 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1664 		stream->readback(checksumBufPtr, checksumSize);
1665 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1666 			ALOGE("glGenTextures: GL communication error, please report this issue to b.android.com.\n");
1667 			abort();
1668 		}
1669 	}
1670 }
1671 
glGetActiveAttrib_enc(void * self,GLuint program,GLuint index,GLsizei bufsize,GLsizei * length,GLint * size,GLenum * type,GLchar * name)1672 void glGetActiveAttrib_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
1673 {
1674 	ENCODER_DEBUG_LOG("glGetActiveAttrib(program:%u, index:%u, bufsize:%d, length:0x%08x, size:0x%08x, type:0x%08x, name:0x%08x)", program, index, bufsize, length, size, type, name);
1675 	AEMU_SCOPED_TRACE("glGetActiveAttrib encode");
1676 
1677 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1678 	IOStream *stream = ctx->m_stream;
1679 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1680 	bool useChecksum = checksumCalculator->getVersion() > 0;
1681 
1682 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
1683 	const unsigned int __size_size = ((size != NULL) ?  (sizeof(GLint)) : 0);
1684 	const unsigned int __size_type = ((type != NULL) ?  (sizeof(GLenum)) : 0);
1685 	const unsigned int __size_name = ((name != NULL) ?  bufsize : 0);
1686 	 unsigned char *ptr;
1687 	 unsigned char *buf;
1688 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
1689 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1690 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1691 	buf = stream->alloc(totalSize);
1692 	ptr = buf;
1693 	int tmp = OP_glGetActiveAttrib;memcpy(ptr, &tmp, 4); ptr += 4;
1694 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1695 
1696 		memcpy(ptr, &program, 4); ptr += 4;
1697 		memcpy(ptr, &index, 4); ptr += 4;
1698 		memcpy(ptr, &bufsize, 4); ptr += 4;
1699 	memcpy(ptr, &__size_length, 4); ptr += 4;
1700 	memcpy(ptr, &__size_size, 4); ptr += 4;
1701 	memcpy(ptr, &__size_type, 4); ptr += 4;
1702 	memcpy(ptr, &__size_name, 4); ptr += 4;
1703 
1704 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1705 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1706 
1707 	if (length != NULL) {
1708 		stream->readback(length, __size_length);
1709 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
1710 	}
1711 	if (size != NULL) {
1712 		stream->readback(size, __size_size);
1713 		if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
1714 	}
1715 	if (type != NULL) {
1716 		stream->readback(type, __size_type);
1717 		if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
1718 	}
1719 	if (name != NULL) {
1720 		stream->readback(name, __size_name);
1721 		if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
1722 	}
1723 	if (useChecksum) {
1724 		unsigned char *checksumBufPtr = NULL;
1725 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1726 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1727 		stream->readback(checksumBufPtr, checksumSize);
1728 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1729 			ALOGE("glGetActiveAttrib: GL communication error, please report this issue to b.android.com.\n");
1730 			abort();
1731 		}
1732 	}
1733 }
1734 
glGetActiveUniform_enc(void * self,GLuint program,GLuint index,GLsizei bufsize,GLsizei * length,GLint * size,GLenum * type,GLchar * name)1735 void glGetActiveUniform_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
1736 {
1737 	ENCODER_DEBUG_LOG("glGetActiveUniform(program:%u, index:%u, bufsize:%d, length:0x%08x, size:0x%08x, type:0x%08x, name:0x%08x)", program, index, bufsize, length, size, type, name);
1738 	AEMU_SCOPED_TRACE("glGetActiveUniform encode");
1739 
1740 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1741 	IOStream *stream = ctx->m_stream;
1742 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1743 	bool useChecksum = checksumCalculator->getVersion() > 0;
1744 
1745 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
1746 	const unsigned int __size_size = ((size != NULL) ?  (sizeof(GLint)) : 0);
1747 	const unsigned int __size_type = ((type != NULL) ?  (sizeof(GLenum)) : 0);
1748 	const unsigned int __size_name = ((name != NULL) ?  bufsize : 0);
1749 	 unsigned char *ptr;
1750 	 unsigned char *buf;
1751 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
1752 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1753 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1754 	buf = stream->alloc(totalSize);
1755 	ptr = buf;
1756 	int tmp = OP_glGetActiveUniform;memcpy(ptr, &tmp, 4); ptr += 4;
1757 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1758 
1759 		memcpy(ptr, &program, 4); ptr += 4;
1760 		memcpy(ptr, &index, 4); ptr += 4;
1761 		memcpy(ptr, &bufsize, 4); ptr += 4;
1762 	memcpy(ptr, &__size_length, 4); ptr += 4;
1763 	memcpy(ptr, &__size_size, 4); ptr += 4;
1764 	memcpy(ptr, &__size_type, 4); ptr += 4;
1765 	memcpy(ptr, &__size_name, 4); ptr += 4;
1766 
1767 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1768 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1769 
1770 	if (length != NULL) {
1771 		stream->readback(length, __size_length);
1772 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
1773 	}
1774 	if (size != NULL) {
1775 		stream->readback(size, __size_size);
1776 		if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
1777 	}
1778 	if (type != NULL) {
1779 		stream->readback(type, __size_type);
1780 		if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
1781 	}
1782 	if (name != NULL) {
1783 		stream->readback(name, __size_name);
1784 		if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
1785 	}
1786 	if (useChecksum) {
1787 		unsigned char *checksumBufPtr = NULL;
1788 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1789 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1790 		stream->readback(checksumBufPtr, checksumSize);
1791 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1792 			ALOGE("glGetActiveUniform: GL communication error, please report this issue to b.android.com.\n");
1793 			abort();
1794 		}
1795 	}
1796 }
1797 
glGetAttachedShaders_enc(void * self,GLuint program,GLsizei maxcount,GLsizei * count,GLuint * shaders)1798 void glGetAttachedShaders_enc(void *self , GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
1799 {
1800 	ENCODER_DEBUG_LOG("glGetAttachedShaders(program:%u, maxcount:%d, count:0x%08x, shaders:0x%08x)", program, maxcount, count, shaders);
1801 	AEMU_SCOPED_TRACE("glGetAttachedShaders encode");
1802 
1803 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1804 	IOStream *stream = ctx->m_stream;
1805 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1806 	bool useChecksum = checksumCalculator->getVersion() > 0;
1807 
1808 	const unsigned int __size_count = ((count != NULL) ?  (sizeof(GLsizei)) : 0);
1809 	const unsigned int __size_shaders =  (maxcount*sizeof(GLuint));
1810 	 unsigned char *ptr;
1811 	 unsigned char *buf;
1812 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
1813 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1814 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1815 	buf = stream->alloc(totalSize);
1816 	ptr = buf;
1817 	int tmp = OP_glGetAttachedShaders;memcpy(ptr, &tmp, 4); ptr += 4;
1818 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1819 
1820 		memcpy(ptr, &program, 4); ptr += 4;
1821 		memcpy(ptr, &maxcount, 4); ptr += 4;
1822 	memcpy(ptr, &__size_count, 4); ptr += 4;
1823 	memcpy(ptr, &__size_shaders, 4); ptr += 4;
1824 
1825 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1826 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1827 
1828 	if (count != NULL) {
1829 		stream->readback(count, __size_count);
1830 		if (useChecksum) checksumCalculator->addBuffer(count, __size_count);
1831 	}
1832 	stream->readback(shaders, __size_shaders);
1833 	if (useChecksum) checksumCalculator->addBuffer(shaders, __size_shaders);
1834 	if (useChecksum) {
1835 		unsigned char *checksumBufPtr = NULL;
1836 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1837 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1838 		stream->readback(checksumBufPtr, checksumSize);
1839 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1840 			ALOGE("glGetAttachedShaders: GL communication error, please report this issue to b.android.com.\n");
1841 			abort();
1842 		}
1843 	}
1844 }
1845 
glGetAttribLocation_enc(void * self,GLuint program,const GLchar * name)1846 int glGetAttribLocation_enc(void *self , GLuint program, const GLchar* name)
1847 {
1848 	ENCODER_DEBUG_LOG("glGetAttribLocation(program:%u, name:0x%08x)", program, name);
1849 	AEMU_SCOPED_TRACE("glGetAttribLocation encode");
1850 
1851 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1852 	IOStream *stream = ctx->m_stream;
1853 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1854 	bool useChecksum = checksumCalculator->getVersion() > 0;
1855 
1856 	const unsigned int __size_name =  (strlen(name) + 1);
1857 	 unsigned char *ptr;
1858 	 unsigned char *buf;
1859 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
1860 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1861 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1862 	buf = stream->alloc(totalSize);
1863 	ptr = buf;
1864 	int tmp = OP_glGetAttribLocation;memcpy(ptr, &tmp, 4); ptr += 4;
1865 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1866 
1867 		memcpy(ptr, &program, 4); ptr += 4;
1868 	memcpy(ptr, &__size_name, 4); ptr += 4;
1869 	memcpy(ptr, name, __size_name);ptr += __size_name;
1870 
1871 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1872 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1873 
1874 
1875 	int retval;
1876 	stream->readback(&retval, 4);
1877 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
1878 	if (useChecksum) {
1879 		unsigned char *checksumBufPtr = NULL;
1880 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1881 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1882 		stream->readback(checksumBufPtr, checksumSize);
1883 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1884 			ALOGE("glGetAttribLocation: GL communication error, please report this issue to b.android.com.\n");
1885 			abort();
1886 		}
1887 	}
1888 	return retval;
1889 }
1890 
glGetBooleanv_enc(void * self,GLenum pname,GLboolean * params)1891 void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params)
1892 {
1893 	ENCODER_DEBUG_LOG("glGetBooleanv(pname:0x%08x, params:0x%08x)", pname, params);
1894 	AEMU_SCOPED_TRACE("glGetBooleanv encode");
1895 
1896 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1897 	IOStream *stream = ctx->m_stream;
1898 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1899 	bool useChecksum = checksumCalculator->getVersion() > 0;
1900 
1901 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLboolean));
1902 	 unsigned char *ptr;
1903 	 unsigned char *buf;
1904 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1905 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1906 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1907 	buf = stream->alloc(totalSize);
1908 	ptr = buf;
1909 	int tmp = OP_glGetBooleanv;memcpy(ptr, &tmp, 4); ptr += 4;
1910 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1911 
1912 		memcpy(ptr, &pname, 4); ptr += 4;
1913 	memcpy(ptr, &__size_params, 4); ptr += 4;
1914 
1915 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1916 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1917 
1918 	stream->readback(params, __size_params);
1919 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
1920 	if (useChecksum) {
1921 		unsigned char *checksumBufPtr = NULL;
1922 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1923 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1924 		stream->readback(checksumBufPtr, checksumSize);
1925 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1926 			ALOGE("glGetBooleanv: GL communication error, please report this issue to b.android.com.\n");
1927 			abort();
1928 		}
1929 	}
1930 }
1931 
glGetBufferParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)1932 void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
1933 {
1934 	ENCODER_DEBUG_LOG("glGetBufferParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
1935 	AEMU_SCOPED_TRACE("glGetBufferParameteriv encode");
1936 
1937 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1938 	IOStream *stream = ctx->m_stream;
1939 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1940 	bool useChecksum = checksumCalculator->getVersion() > 0;
1941 
1942 	const unsigned int __size_params =  (sizeof(GLint));
1943 	 unsigned char *ptr;
1944 	 unsigned char *buf;
1945 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
1946 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1947 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1948 	buf = stream->alloc(totalSize);
1949 	ptr = buf;
1950 	int tmp = OP_glGetBufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
1951 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1952 
1953 		memcpy(ptr, &target, 4); ptr += 4;
1954 		memcpy(ptr, &pname, 4); ptr += 4;
1955 	memcpy(ptr, &__size_params, 4); ptr += 4;
1956 
1957 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1958 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1959 
1960 	stream->readback(params, __size_params);
1961 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
1962 	if (useChecksum) {
1963 		unsigned char *checksumBufPtr = NULL;
1964 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1965 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1966 		stream->readback(checksumBufPtr, checksumSize);
1967 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1968 			ALOGE("glGetBufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
1969 			abort();
1970 		}
1971 	}
1972 }
1973 
glGetError_enc(void * self)1974 GLenum glGetError_enc(void *self )
1975 {
1976 	ENCODER_DEBUG_LOG("glGetError()");
1977 	AEMU_SCOPED_TRACE("glGetError encode");
1978 
1979 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1980 	IOStream *stream = ctx->m_stream;
1981 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1982 	bool useChecksum = checksumCalculator->getVersion() > 0;
1983 
1984 	 unsigned char *ptr;
1985 	 unsigned char *buf;
1986 	 const size_t sizeWithoutChecksum = 8;
1987 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1988 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1989 	buf = stream->alloc(totalSize);
1990 	ptr = buf;
1991 	int tmp = OP_glGetError;memcpy(ptr, &tmp, 4); ptr += 4;
1992 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1993 
1994 
1995 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1996 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1997 
1998 
1999 	GLenum retval;
2000 	stream->readback(&retval, 4);
2001 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
2002 	if (useChecksum) {
2003 		unsigned char *checksumBufPtr = NULL;
2004 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2005 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2006 		stream->readback(checksumBufPtr, checksumSize);
2007 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2008 			ALOGE("glGetError: GL communication error, please report this issue to b.android.com.\n");
2009 			abort();
2010 		}
2011 	}
2012 	return retval;
2013 }
2014 
glGetFloatv_enc(void * self,GLenum pname,GLfloat * params)2015 void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params)
2016 {
2017 	ENCODER_DEBUG_LOG("glGetFloatv(pname:0x%08x, params:0x%08x)", pname, params);
2018 	AEMU_SCOPED_TRACE("glGetFloatv encode");
2019 
2020 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2021 	IOStream *stream = ctx->m_stream;
2022 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2023 	bool useChecksum = checksumCalculator->getVersion() > 0;
2024 
2025 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
2026 	 unsigned char *ptr;
2027 	 unsigned char *buf;
2028 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
2029 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2030 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2031 	buf = stream->alloc(totalSize);
2032 	ptr = buf;
2033 	int tmp = OP_glGetFloatv;memcpy(ptr, &tmp, 4); ptr += 4;
2034 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2035 
2036 		memcpy(ptr, &pname, 4); ptr += 4;
2037 	memcpy(ptr, &__size_params, 4); ptr += 4;
2038 
2039 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2040 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2041 
2042 	stream->readback(params, __size_params);
2043 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2044 	if (useChecksum) {
2045 		unsigned char *checksumBufPtr = NULL;
2046 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2047 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2048 		stream->readback(checksumBufPtr, checksumSize);
2049 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2050 			ALOGE("glGetFloatv: GL communication error, please report this issue to b.android.com.\n");
2051 			abort();
2052 		}
2053 	}
2054 }
2055 
glGetFramebufferAttachmentParameteriv_enc(void * self,GLenum target,GLenum attachment,GLenum pname,GLint * params)2056 void glGetFramebufferAttachmentParameteriv_enc(void *self , GLenum target, GLenum attachment, GLenum pname, GLint* params)
2057 {
2058 	ENCODER_DEBUG_LOG("glGetFramebufferAttachmentParameteriv(target:0x%08x, attachment:0x%08x, pname:0x%08x, params:0x%08x)", target, attachment, pname, params);
2059 	AEMU_SCOPED_TRACE("glGetFramebufferAttachmentParameteriv encode");
2060 
2061 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2062 	IOStream *stream = ctx->m_stream;
2063 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2064 	bool useChecksum = checksumCalculator->getVersion() > 0;
2065 
2066 	const unsigned int __size_params =  (sizeof(GLint));
2067 	 unsigned char *ptr;
2068 	 unsigned char *buf;
2069 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
2070 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2071 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2072 	buf = stream->alloc(totalSize);
2073 	ptr = buf;
2074 	int tmp = OP_glGetFramebufferAttachmentParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2075 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2076 
2077 		memcpy(ptr, &target, 4); ptr += 4;
2078 		memcpy(ptr, &attachment, 4); ptr += 4;
2079 		memcpy(ptr, &pname, 4); ptr += 4;
2080 	memcpy(ptr, &__size_params, 4); ptr += 4;
2081 
2082 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2083 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2084 
2085 	stream->readback(params, __size_params);
2086 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2087 	if (useChecksum) {
2088 		unsigned char *checksumBufPtr = NULL;
2089 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2090 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2091 		stream->readback(checksumBufPtr, checksumSize);
2092 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2093 			ALOGE("glGetFramebufferAttachmentParameteriv: GL communication error, please report this issue to b.android.com.\n");
2094 			abort();
2095 		}
2096 	}
2097 }
2098 
glGetIntegerv_enc(void * self,GLenum pname,GLint * params)2099 void glGetIntegerv_enc(void *self , GLenum pname, GLint* params)
2100 {
2101 	ENCODER_DEBUG_LOG("glGetIntegerv(pname:0x%08x, params:0x%08x)", pname, params);
2102 	AEMU_SCOPED_TRACE("glGetIntegerv encode");
2103 
2104 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2105 	IOStream *stream = ctx->m_stream;
2106 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2107 	bool useChecksum = checksumCalculator->getVersion() > 0;
2108 
2109 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
2110 	 unsigned char *ptr;
2111 	 unsigned char *buf;
2112 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
2113 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2114 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2115 	buf = stream->alloc(totalSize);
2116 	ptr = buf;
2117 	int tmp = OP_glGetIntegerv;memcpy(ptr, &tmp, 4); ptr += 4;
2118 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2119 
2120 		memcpy(ptr, &pname, 4); ptr += 4;
2121 	memcpy(ptr, &__size_params, 4); ptr += 4;
2122 
2123 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2124 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2125 
2126 	stream->readback(params, __size_params);
2127 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2128 	if (useChecksum) {
2129 		unsigned char *checksumBufPtr = NULL;
2130 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2131 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2132 		stream->readback(checksumBufPtr, checksumSize);
2133 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2134 			ALOGE("glGetIntegerv: GL communication error, please report this issue to b.android.com.\n");
2135 			abort();
2136 		}
2137 	}
2138 }
2139 
glGetProgramiv_enc(void * self,GLuint program,GLenum pname,GLint * params)2140 void glGetProgramiv_enc(void *self , GLuint program, GLenum pname, GLint* params)
2141 {
2142 	ENCODER_DEBUG_LOG("glGetProgramiv(program:%u, pname:0x%08x, params:0x%08x)", program, pname, params);
2143 	AEMU_SCOPED_TRACE("glGetProgramiv encode");
2144 
2145 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2146 	IOStream *stream = ctx->m_stream;
2147 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2148 	bool useChecksum = checksumCalculator->getVersion() > 0;
2149 
2150 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
2151 	 unsigned char *ptr;
2152 	 unsigned char *buf;
2153 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2154 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2155 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2156 	buf = stream->alloc(totalSize);
2157 	ptr = buf;
2158 	int tmp = OP_glGetProgramiv;memcpy(ptr, &tmp, 4); ptr += 4;
2159 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2160 
2161 		memcpy(ptr, &program, 4); ptr += 4;
2162 		memcpy(ptr, &pname, 4); ptr += 4;
2163 	memcpy(ptr, &__size_params, 4); ptr += 4;
2164 
2165 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2166 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2167 
2168 	stream->readback(params, __size_params);
2169 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2170 	if (useChecksum) {
2171 		unsigned char *checksumBufPtr = NULL;
2172 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2173 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2174 		stream->readback(checksumBufPtr, checksumSize);
2175 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2176 			ALOGE("glGetProgramiv: GL communication error, please report this issue to b.android.com.\n");
2177 			abort();
2178 		}
2179 	}
2180 }
2181 
glGetProgramInfoLog_enc(void * self,GLuint program,GLsizei bufsize,GLsizei * length,GLchar * infolog)2182 void glGetProgramInfoLog_enc(void *self , GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
2183 {
2184 	ENCODER_DEBUG_LOG("glGetProgramInfoLog(program:%u, bufsize:%d, length:0x%08x, infolog:0x%08x)", program, bufsize, length, infolog);
2185 	AEMU_SCOPED_TRACE("glGetProgramInfoLog encode");
2186 
2187 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2188 	IOStream *stream = ctx->m_stream;
2189 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2190 	bool useChecksum = checksumCalculator->getVersion() > 0;
2191 
2192 	const unsigned int __size_length = ((length != NULL) ?  sizeof(GLsizei) : 0);
2193 	const unsigned int __size_infolog =  bufsize;
2194 	 unsigned char *ptr;
2195 	 unsigned char *buf;
2196 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2197 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2198 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2199 	buf = stream->alloc(totalSize);
2200 	ptr = buf;
2201 	int tmp = OP_glGetProgramInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
2202 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2203 
2204 		memcpy(ptr, &program, 4); ptr += 4;
2205 		memcpy(ptr, &bufsize, 4); ptr += 4;
2206 	memcpy(ptr, &__size_length, 4); ptr += 4;
2207 	memcpy(ptr, &__size_infolog, 4); ptr += 4;
2208 
2209 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2210 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2211 
2212 	if (length != NULL) {
2213 		stream->readback(length, __size_length);
2214 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2215 	}
2216 	stream->readback(infolog, __size_infolog);
2217 	if (useChecksum) checksumCalculator->addBuffer(infolog, __size_infolog);
2218 	if (useChecksum) {
2219 		unsigned char *checksumBufPtr = NULL;
2220 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2221 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2222 		stream->readback(checksumBufPtr, checksumSize);
2223 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2224 			ALOGE("glGetProgramInfoLog: GL communication error, please report this issue to b.android.com.\n");
2225 			abort();
2226 		}
2227 	}
2228 }
2229 
glGetRenderbufferParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)2230 void glGetRenderbufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
2231 {
2232 	ENCODER_DEBUG_LOG("glGetRenderbufferParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
2233 	AEMU_SCOPED_TRACE("glGetRenderbufferParameteriv encode");
2234 
2235 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2236 	IOStream *stream = ctx->m_stream;
2237 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2238 	bool useChecksum = checksumCalculator->getVersion() > 0;
2239 
2240 	const unsigned int __size_params =  sizeof(GLint);
2241 	 unsigned char *ptr;
2242 	 unsigned char *buf;
2243 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2244 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2245 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2246 	buf = stream->alloc(totalSize);
2247 	ptr = buf;
2248 	int tmp = OP_glGetRenderbufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2249 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2250 
2251 		memcpy(ptr, &target, 4); ptr += 4;
2252 		memcpy(ptr, &pname, 4); ptr += 4;
2253 	memcpy(ptr, &__size_params, 4); ptr += 4;
2254 
2255 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2256 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2257 
2258 	stream->readback(params, __size_params);
2259 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2260 	if (useChecksum) {
2261 		unsigned char *checksumBufPtr = NULL;
2262 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2263 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2264 		stream->readback(checksumBufPtr, checksumSize);
2265 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2266 			ALOGE("glGetRenderbufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
2267 			abort();
2268 		}
2269 	}
2270 }
2271 
glGetShaderiv_enc(void * self,GLuint shader,GLenum pname,GLint * params)2272 void glGetShaderiv_enc(void *self , GLuint shader, GLenum pname, GLint* params)
2273 {
2274 	ENCODER_DEBUG_LOG("glGetShaderiv(shader:%u, pname:0x%08x, params:0x%08x)", shader, pname, params);
2275 	AEMU_SCOPED_TRACE("glGetShaderiv encode");
2276 
2277 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2278 	IOStream *stream = ctx->m_stream;
2279 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2280 	bool useChecksum = checksumCalculator->getVersion() > 0;
2281 
2282 	const unsigned int __size_params =  sizeof(GLint);
2283 	 unsigned char *ptr;
2284 	 unsigned char *buf;
2285 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2286 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2287 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2288 	buf = stream->alloc(totalSize);
2289 	ptr = buf;
2290 	int tmp = OP_glGetShaderiv;memcpy(ptr, &tmp, 4); ptr += 4;
2291 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2292 
2293 		memcpy(ptr, &shader, 4); ptr += 4;
2294 		memcpy(ptr, &pname, 4); ptr += 4;
2295 	memcpy(ptr, &__size_params, 4); ptr += 4;
2296 
2297 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2298 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2299 
2300 	stream->readback(params, __size_params);
2301 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2302 	if (useChecksum) {
2303 		unsigned char *checksumBufPtr = NULL;
2304 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2305 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2306 		stream->readback(checksumBufPtr, checksumSize);
2307 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2308 			ALOGE("glGetShaderiv: GL communication error, please report this issue to b.android.com.\n");
2309 			abort();
2310 		}
2311 	}
2312 }
2313 
glGetShaderInfoLog_enc(void * self,GLuint shader,GLsizei bufsize,GLsizei * length,GLchar * infolog)2314 void glGetShaderInfoLog_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
2315 {
2316 	ENCODER_DEBUG_LOG("glGetShaderInfoLog(shader:%u, bufsize:%d, length:0x%08x, infolog:0x%08x)", shader, bufsize, length, infolog);
2317 	AEMU_SCOPED_TRACE("glGetShaderInfoLog encode");
2318 
2319 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2320 	IOStream *stream = ctx->m_stream;
2321 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2322 	bool useChecksum = checksumCalculator->getVersion() > 0;
2323 
2324 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
2325 	const unsigned int __size_infolog =  bufsize;
2326 	 unsigned char *ptr;
2327 	 unsigned char *buf;
2328 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2329 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2330 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2331 	buf = stream->alloc(totalSize);
2332 	ptr = buf;
2333 	int tmp = OP_glGetShaderInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
2334 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2335 
2336 		memcpy(ptr, &shader, 4); ptr += 4;
2337 		memcpy(ptr, &bufsize, 4); ptr += 4;
2338 	memcpy(ptr, &__size_length, 4); ptr += 4;
2339 	memcpy(ptr, &__size_infolog, 4); ptr += 4;
2340 
2341 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2342 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2343 
2344 	if (length != NULL) {
2345 		stream->readback(length, __size_length);
2346 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2347 	}
2348 	stream->readback(infolog, __size_infolog);
2349 	if (useChecksum) checksumCalculator->addBuffer(infolog, __size_infolog);
2350 	if (useChecksum) {
2351 		unsigned char *checksumBufPtr = NULL;
2352 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2353 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2354 		stream->readback(checksumBufPtr, checksumSize);
2355 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2356 			ALOGE("glGetShaderInfoLog: GL communication error, please report this issue to b.android.com.\n");
2357 			abort();
2358 		}
2359 	}
2360 }
2361 
glGetShaderPrecisionFormat_enc(void * self,GLenum shadertype,GLenum precisiontype,GLint * range,GLint * precision)2362 void glGetShaderPrecisionFormat_enc(void *self , GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
2363 {
2364 	ENCODER_DEBUG_LOG("glGetShaderPrecisionFormat(shadertype:0x%08x, precisiontype:0x%08x, range:0x%08x, precision:0x%08x)", shadertype, precisiontype, range, precision);
2365 	AEMU_SCOPED_TRACE("glGetShaderPrecisionFormat encode");
2366 
2367 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2368 	IOStream *stream = ctx->m_stream;
2369 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2370 	bool useChecksum = checksumCalculator->getVersion() > 0;
2371 
2372 	const unsigned int __size_range =  (2 * sizeof(GLint));
2373 	const unsigned int __size_precision =  (sizeof(GLint));
2374 	 unsigned char *ptr;
2375 	 unsigned char *buf;
2376 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2377 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2378 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2379 	buf = stream->alloc(totalSize);
2380 	ptr = buf;
2381 	int tmp = OP_glGetShaderPrecisionFormat;memcpy(ptr, &tmp, 4); ptr += 4;
2382 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2383 
2384 		memcpy(ptr, &shadertype, 4); ptr += 4;
2385 		memcpy(ptr, &precisiontype, 4); ptr += 4;
2386 	memcpy(ptr, &__size_range, 4); ptr += 4;
2387 	memcpy(ptr, &__size_precision, 4); ptr += 4;
2388 
2389 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2390 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2391 
2392 	stream->readback(range, __size_range);
2393 	if (useChecksum) checksumCalculator->addBuffer(range, __size_range);
2394 	stream->readback(precision, __size_precision);
2395 	if (useChecksum) checksumCalculator->addBuffer(precision, __size_precision);
2396 	if (useChecksum) {
2397 		unsigned char *checksumBufPtr = NULL;
2398 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2399 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2400 		stream->readback(checksumBufPtr, checksumSize);
2401 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2402 			ALOGE("glGetShaderPrecisionFormat: GL communication error, please report this issue to b.android.com.\n");
2403 			abort();
2404 		}
2405 	}
2406 }
2407 
glGetShaderSource_enc(void * self,GLuint shader,GLsizei bufsize,GLsizei * length,GLchar * source)2408 void glGetShaderSource_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
2409 {
2410 	ENCODER_DEBUG_LOG("glGetShaderSource(shader:%u, bufsize:%d, length:0x%08x, source:0x%08x)", shader, bufsize, length, source);
2411 	AEMU_SCOPED_TRACE("glGetShaderSource encode");
2412 
2413 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2414 	IOStream *stream = ctx->m_stream;
2415 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2416 	bool useChecksum = checksumCalculator->getVersion() > 0;
2417 
2418 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
2419 	const unsigned int __size_source =  bufsize;
2420 	 unsigned char *ptr;
2421 	 unsigned char *buf;
2422 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2423 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2424 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2425 	buf = stream->alloc(totalSize);
2426 	ptr = buf;
2427 	int tmp = OP_glGetShaderSource;memcpy(ptr, &tmp, 4); ptr += 4;
2428 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2429 
2430 		memcpy(ptr, &shader, 4); ptr += 4;
2431 		memcpy(ptr, &bufsize, 4); ptr += 4;
2432 	memcpy(ptr, &__size_length, 4); ptr += 4;
2433 	memcpy(ptr, &__size_source, 4); ptr += 4;
2434 
2435 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2436 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2437 
2438 	if (length != NULL) {
2439 		stream->readback(length, __size_length);
2440 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2441 	}
2442 	stream->readback(source, __size_source);
2443 	if (useChecksum) checksumCalculator->addBuffer(source, __size_source);
2444 	if (useChecksum) {
2445 		unsigned char *checksumBufPtr = NULL;
2446 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2447 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2448 		stream->readback(checksumBufPtr, checksumSize);
2449 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2450 			ALOGE("glGetShaderSource: GL communication error, please report this issue to b.android.com.\n");
2451 			abort();
2452 		}
2453 	}
2454 }
2455 
glGetTexParameterfv_enc(void * self,GLenum target,GLenum pname,GLfloat * params)2456 void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* params)
2457 {
2458 	ENCODER_DEBUG_LOG("glGetTexParameterfv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
2459 	AEMU_SCOPED_TRACE("glGetTexParameterfv encode");
2460 
2461 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2462 	IOStream *stream = ctx->m_stream;
2463 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2464 	bool useChecksum = checksumCalculator->getVersion() > 0;
2465 
2466 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
2467 	 unsigned char *ptr;
2468 	 unsigned char *buf;
2469 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2470 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2471 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2472 	buf = stream->alloc(totalSize);
2473 	ptr = buf;
2474 	int tmp = OP_glGetTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
2475 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2476 
2477 		memcpy(ptr, &target, 4); ptr += 4;
2478 		memcpy(ptr, &pname, 4); ptr += 4;
2479 	memcpy(ptr, &__size_params, 4); ptr += 4;
2480 
2481 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2482 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2483 
2484 	stream->readback(params, __size_params);
2485 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2486 	if (useChecksum) {
2487 		unsigned char *checksumBufPtr = NULL;
2488 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2489 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2490 		stream->readback(checksumBufPtr, checksumSize);
2491 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2492 			ALOGE("glGetTexParameterfv: GL communication error, please report this issue to b.android.com.\n");
2493 			abort();
2494 		}
2495 	}
2496 }
2497 
glGetTexParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)2498 void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
2499 {
2500 	ENCODER_DEBUG_LOG("glGetTexParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
2501 	AEMU_SCOPED_TRACE("glGetTexParameteriv encode");
2502 
2503 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2504 	IOStream *stream = ctx->m_stream;
2505 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2506 	bool useChecksum = checksumCalculator->getVersion() > 0;
2507 
2508 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
2509 	 unsigned char *ptr;
2510 	 unsigned char *buf;
2511 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2512 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2513 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2514 	buf = stream->alloc(totalSize);
2515 	ptr = buf;
2516 	int tmp = OP_glGetTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2517 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2518 
2519 		memcpy(ptr, &target, 4); ptr += 4;
2520 		memcpy(ptr, &pname, 4); ptr += 4;
2521 	memcpy(ptr, &__size_params, 4); ptr += 4;
2522 
2523 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2524 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2525 
2526 	stream->readback(params, __size_params);
2527 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2528 	if (useChecksum) {
2529 		unsigned char *checksumBufPtr = NULL;
2530 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2531 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2532 		stream->readback(checksumBufPtr, checksumSize);
2533 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2534 			ALOGE("glGetTexParameteriv: GL communication error, please report this issue to b.android.com.\n");
2535 			abort();
2536 		}
2537 	}
2538 }
2539 
glGetUniformfv_enc(void * self,GLuint program,GLint location,GLfloat * params)2540 void glGetUniformfv_enc(void *self , GLuint program, GLint location, GLfloat* params)
2541 {
2542 	ENCODER_DEBUG_LOG("glGetUniformfv(program:%u, location:%d, params:0x%08x)", program, location, params);
2543 	AEMU_SCOPED_TRACE("glGetUniformfv encode");
2544 
2545 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2546 	IOStream *stream = ctx->m_stream;
2547 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2548 	bool useChecksum = checksumCalculator->getVersion() > 0;
2549 
2550 	const unsigned int __size_params =  glSizeof(glesv2_enc::uniformType(self, program, location));
2551 	 unsigned char *ptr;
2552 	 unsigned char *buf;
2553 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2554 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2555 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2556 	buf = stream->alloc(totalSize);
2557 	ptr = buf;
2558 	int tmp = OP_glGetUniformfv;memcpy(ptr, &tmp, 4); ptr += 4;
2559 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2560 
2561 		memcpy(ptr, &program, 4); ptr += 4;
2562 		memcpy(ptr, &location, 4); ptr += 4;
2563 	memcpy(ptr, &__size_params, 4); ptr += 4;
2564 
2565 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2566 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2567 
2568 	stream->readback(params, __size_params);
2569 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2570 	if (useChecksum) {
2571 		unsigned char *checksumBufPtr = NULL;
2572 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2573 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2574 		stream->readback(checksumBufPtr, checksumSize);
2575 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2576 			ALOGE("glGetUniformfv: GL communication error, please report this issue to b.android.com.\n");
2577 			abort();
2578 		}
2579 	}
2580 }
2581 
glGetUniformiv_enc(void * self,GLuint program,GLint location,GLint * params)2582 void glGetUniformiv_enc(void *self , GLuint program, GLint location, GLint* params)
2583 {
2584 	ENCODER_DEBUG_LOG("glGetUniformiv(program:%u, location:%d, params:0x%08x)", program, location, params);
2585 	AEMU_SCOPED_TRACE("glGetUniformiv encode");
2586 
2587 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2588 	IOStream *stream = ctx->m_stream;
2589 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2590 	bool useChecksum = checksumCalculator->getVersion() > 0;
2591 
2592 	const unsigned int __size_params =  glSizeof(glesv2_enc::uniformType(self, program, location));
2593 	 unsigned char *ptr;
2594 	 unsigned char *buf;
2595 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2596 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2597 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2598 	buf = stream->alloc(totalSize);
2599 	ptr = buf;
2600 	int tmp = OP_glGetUniformiv;memcpy(ptr, &tmp, 4); ptr += 4;
2601 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2602 
2603 		memcpy(ptr, &program, 4); ptr += 4;
2604 		memcpy(ptr, &location, 4); ptr += 4;
2605 	memcpy(ptr, &__size_params, 4); ptr += 4;
2606 
2607 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2608 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2609 
2610 	stream->readback(params, __size_params);
2611 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2612 	if (useChecksum) {
2613 		unsigned char *checksumBufPtr = NULL;
2614 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2615 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2616 		stream->readback(checksumBufPtr, checksumSize);
2617 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2618 			ALOGE("glGetUniformiv: GL communication error, please report this issue to b.android.com.\n");
2619 			abort();
2620 		}
2621 	}
2622 }
2623 
glGetUniformLocation_enc(void * self,GLuint program,const GLchar * name)2624 int glGetUniformLocation_enc(void *self , GLuint program, const GLchar* name)
2625 {
2626 	ENCODER_DEBUG_LOG("glGetUniformLocation(program:%u, name:0x%08x)", program, name);
2627 	AEMU_SCOPED_TRACE("glGetUniformLocation encode");
2628 
2629 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2630 	IOStream *stream = ctx->m_stream;
2631 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2632 	bool useChecksum = checksumCalculator->getVersion() > 0;
2633 
2634 	const unsigned int __size_name =  (strlen(name) + 1);
2635 	 unsigned char *ptr;
2636 	 unsigned char *buf;
2637 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
2638 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2639 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2640 	buf = stream->alloc(totalSize);
2641 	ptr = buf;
2642 	int tmp = OP_glGetUniformLocation;memcpy(ptr, &tmp, 4); ptr += 4;
2643 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2644 
2645 		memcpy(ptr, &program, 4); ptr += 4;
2646 	memcpy(ptr, &__size_name, 4); ptr += 4;
2647 	memcpy(ptr, name, __size_name);ptr += __size_name;
2648 
2649 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2650 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2651 
2652 
2653 	int retval;
2654 	stream->readback(&retval, 4);
2655 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
2656 	if (useChecksum) {
2657 		unsigned char *checksumBufPtr = NULL;
2658 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2659 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2660 		stream->readback(checksumBufPtr, checksumSize);
2661 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2662 			ALOGE("glGetUniformLocation: GL communication error, please report this issue to b.android.com.\n");
2663 			abort();
2664 		}
2665 	}
2666 	return retval;
2667 }
2668 
glGetVertexAttribfv_enc(void * self,GLuint index,GLenum pname,GLfloat * params)2669 void glGetVertexAttribfv_enc(void *self , GLuint index, GLenum pname, GLfloat* params)
2670 {
2671 	ENCODER_DEBUG_LOG("glGetVertexAttribfv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
2672 	AEMU_SCOPED_TRACE("glGetVertexAttribfv encode");
2673 
2674 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2675 	IOStream *stream = ctx->m_stream;
2676 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2677 	bool useChecksum = checksumCalculator->getVersion() > 0;
2678 
2679 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
2680 	 unsigned char *ptr;
2681 	 unsigned char *buf;
2682 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2683 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2684 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2685 	buf = stream->alloc(totalSize);
2686 	ptr = buf;
2687 	int tmp = OP_glGetVertexAttribfv;memcpy(ptr, &tmp, 4); ptr += 4;
2688 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2689 
2690 		memcpy(ptr, &index, 4); ptr += 4;
2691 		memcpy(ptr, &pname, 4); ptr += 4;
2692 	memcpy(ptr, &__size_params, 4); ptr += 4;
2693 
2694 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2695 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2696 
2697 	stream->readback(params, __size_params);
2698 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2699 	if (useChecksum) {
2700 		unsigned char *checksumBufPtr = NULL;
2701 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2702 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2703 		stream->readback(checksumBufPtr, checksumSize);
2704 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2705 			ALOGE("glGetVertexAttribfv: GL communication error, please report this issue to b.android.com.\n");
2706 			abort();
2707 		}
2708 	}
2709 }
2710 
glGetVertexAttribiv_enc(void * self,GLuint index,GLenum pname,GLint * params)2711 void glGetVertexAttribiv_enc(void *self , GLuint index, GLenum pname, GLint* params)
2712 {
2713 	ENCODER_DEBUG_LOG("glGetVertexAttribiv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
2714 	AEMU_SCOPED_TRACE("glGetVertexAttribiv encode");
2715 
2716 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2717 	IOStream *stream = ctx->m_stream;
2718 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2719 	bool useChecksum = checksumCalculator->getVersion() > 0;
2720 
2721 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
2722 	 unsigned char *ptr;
2723 	 unsigned char *buf;
2724 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2725 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2726 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2727 	buf = stream->alloc(totalSize);
2728 	ptr = buf;
2729 	int tmp = OP_glGetVertexAttribiv;memcpy(ptr, &tmp, 4); ptr += 4;
2730 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2731 
2732 		memcpy(ptr, &index, 4); ptr += 4;
2733 		memcpy(ptr, &pname, 4); ptr += 4;
2734 	memcpy(ptr, &__size_params, 4); ptr += 4;
2735 
2736 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2737 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2738 
2739 	stream->readback(params, __size_params);
2740 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2741 	if (useChecksum) {
2742 		unsigned char *checksumBufPtr = NULL;
2743 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2744 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2745 		stream->readback(checksumBufPtr, checksumSize);
2746 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2747 			ALOGE("glGetVertexAttribiv: GL communication error, please report this issue to b.android.com.\n");
2748 			abort();
2749 		}
2750 	}
2751 }
2752 
glHint_enc(void * self,GLenum target,GLenum mode)2753 void glHint_enc(void *self , GLenum target, GLenum mode)
2754 {
2755 	ENCODER_DEBUG_LOG("glHint(target:0x%08x, mode:0x%08x)", target, mode);
2756 	AEMU_SCOPED_TRACE("glHint encode");
2757 
2758 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2759 	IOStream *stream = ctx->m_stream;
2760 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2761 	bool useChecksum = checksumCalculator->getVersion() > 0;
2762 
2763 	 unsigned char *ptr;
2764 	 unsigned char *buf;
2765 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
2766 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2767 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2768 	buf = stream->alloc(totalSize);
2769 	ptr = buf;
2770 	int tmp = OP_glHint;memcpy(ptr, &tmp, 4); ptr += 4;
2771 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2772 
2773 		memcpy(ptr, &target, 4); ptr += 4;
2774 		memcpy(ptr, &mode, 4); ptr += 4;
2775 
2776 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2777 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2778 
2779 }
2780 
glIsBuffer_enc(void * self,GLuint buffer)2781 GLboolean glIsBuffer_enc(void *self , GLuint buffer)
2782 {
2783 	ENCODER_DEBUG_LOG("glIsBuffer(buffer:%u)", buffer);
2784 	AEMU_SCOPED_TRACE("glIsBuffer encode");
2785 
2786 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2787 	IOStream *stream = ctx->m_stream;
2788 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2789 	bool useChecksum = checksumCalculator->getVersion() > 0;
2790 
2791 	 unsigned char *ptr;
2792 	 unsigned char *buf;
2793 	 const size_t sizeWithoutChecksum = 8 + 4;
2794 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2795 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2796 	buf = stream->alloc(totalSize);
2797 	ptr = buf;
2798 	int tmp = OP_glIsBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2799 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2800 
2801 		memcpy(ptr, &buffer, 4); ptr += 4;
2802 
2803 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2804 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2805 
2806 
2807 	GLboolean retval;
2808 	stream->readback(&retval, 1);
2809 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2810 	if (useChecksum) {
2811 		unsigned char *checksumBufPtr = NULL;
2812 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2813 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2814 		stream->readback(checksumBufPtr, checksumSize);
2815 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2816 			ALOGE("glIsBuffer: GL communication error, please report this issue to b.android.com.\n");
2817 			abort();
2818 		}
2819 	}
2820 	return retval;
2821 }
2822 
glIsEnabled_enc(void * self,GLenum cap)2823 GLboolean glIsEnabled_enc(void *self , GLenum cap)
2824 {
2825 	ENCODER_DEBUG_LOG("glIsEnabled(cap:0x%08x)", cap);
2826 	AEMU_SCOPED_TRACE("glIsEnabled encode");
2827 
2828 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2829 	IOStream *stream = ctx->m_stream;
2830 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2831 	bool useChecksum = checksumCalculator->getVersion() > 0;
2832 
2833 	 unsigned char *ptr;
2834 	 unsigned char *buf;
2835 	 const size_t sizeWithoutChecksum = 8 + 4;
2836 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2837 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2838 	buf = stream->alloc(totalSize);
2839 	ptr = buf;
2840 	int tmp = OP_glIsEnabled;memcpy(ptr, &tmp, 4); ptr += 4;
2841 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2842 
2843 		memcpy(ptr, &cap, 4); ptr += 4;
2844 
2845 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2846 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2847 
2848 
2849 	GLboolean retval;
2850 	stream->readback(&retval, 1);
2851 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2852 	if (useChecksum) {
2853 		unsigned char *checksumBufPtr = NULL;
2854 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2855 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2856 		stream->readback(checksumBufPtr, checksumSize);
2857 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2858 			ALOGE("glIsEnabled: GL communication error, please report this issue to b.android.com.\n");
2859 			abort();
2860 		}
2861 	}
2862 	return retval;
2863 }
2864 
glIsFramebuffer_enc(void * self,GLuint framebuffer)2865 GLboolean glIsFramebuffer_enc(void *self , GLuint framebuffer)
2866 {
2867 	ENCODER_DEBUG_LOG("glIsFramebuffer(framebuffer:%u)", framebuffer);
2868 	AEMU_SCOPED_TRACE("glIsFramebuffer encode");
2869 
2870 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2871 	IOStream *stream = ctx->m_stream;
2872 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2873 	bool useChecksum = checksumCalculator->getVersion() > 0;
2874 
2875 	 unsigned char *ptr;
2876 	 unsigned char *buf;
2877 	 const size_t sizeWithoutChecksum = 8 + 4;
2878 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2879 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2880 	buf = stream->alloc(totalSize);
2881 	ptr = buf;
2882 	int tmp = OP_glIsFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2883 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2884 
2885 		memcpy(ptr, &framebuffer, 4); ptr += 4;
2886 
2887 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2888 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2889 
2890 
2891 	GLboolean retval;
2892 	stream->readback(&retval, 1);
2893 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2894 	if (useChecksum) {
2895 		unsigned char *checksumBufPtr = NULL;
2896 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2897 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2898 		stream->readback(checksumBufPtr, checksumSize);
2899 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2900 			ALOGE("glIsFramebuffer: GL communication error, please report this issue to b.android.com.\n");
2901 			abort();
2902 		}
2903 	}
2904 	return retval;
2905 }
2906 
glIsProgram_enc(void * self,GLuint program)2907 GLboolean glIsProgram_enc(void *self , GLuint program)
2908 {
2909 	ENCODER_DEBUG_LOG("glIsProgram(program:%u)", program);
2910 	AEMU_SCOPED_TRACE("glIsProgram encode");
2911 
2912 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2913 	IOStream *stream = ctx->m_stream;
2914 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2915 	bool useChecksum = checksumCalculator->getVersion() > 0;
2916 
2917 	 unsigned char *ptr;
2918 	 unsigned char *buf;
2919 	 const size_t sizeWithoutChecksum = 8 + 4;
2920 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2921 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2922 	buf = stream->alloc(totalSize);
2923 	ptr = buf;
2924 	int tmp = OP_glIsProgram;memcpy(ptr, &tmp, 4); ptr += 4;
2925 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2926 
2927 		memcpy(ptr, &program, 4); ptr += 4;
2928 
2929 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2930 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2931 
2932 
2933 	GLboolean retval;
2934 	stream->readback(&retval, 1);
2935 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2936 	if (useChecksum) {
2937 		unsigned char *checksumBufPtr = NULL;
2938 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2939 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2940 		stream->readback(checksumBufPtr, checksumSize);
2941 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2942 			ALOGE("glIsProgram: GL communication error, please report this issue to b.android.com.\n");
2943 			abort();
2944 		}
2945 	}
2946 	return retval;
2947 }
2948 
glIsRenderbuffer_enc(void * self,GLuint renderbuffer)2949 GLboolean glIsRenderbuffer_enc(void *self , GLuint renderbuffer)
2950 {
2951 	ENCODER_DEBUG_LOG("glIsRenderbuffer(renderbuffer:%u)", renderbuffer);
2952 	AEMU_SCOPED_TRACE("glIsRenderbuffer encode");
2953 
2954 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2955 	IOStream *stream = ctx->m_stream;
2956 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2957 	bool useChecksum = checksumCalculator->getVersion() > 0;
2958 
2959 	 unsigned char *ptr;
2960 	 unsigned char *buf;
2961 	 const size_t sizeWithoutChecksum = 8 + 4;
2962 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2963 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2964 	buf = stream->alloc(totalSize);
2965 	ptr = buf;
2966 	int tmp = OP_glIsRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2967 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2968 
2969 		memcpy(ptr, &renderbuffer, 4); ptr += 4;
2970 
2971 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2972 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2973 
2974 
2975 	GLboolean retval;
2976 	stream->readback(&retval, 1);
2977 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2978 	if (useChecksum) {
2979 		unsigned char *checksumBufPtr = NULL;
2980 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2981 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2982 		stream->readback(checksumBufPtr, checksumSize);
2983 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2984 			ALOGE("glIsRenderbuffer: GL communication error, please report this issue to b.android.com.\n");
2985 			abort();
2986 		}
2987 	}
2988 	return retval;
2989 }
2990 
glIsShader_enc(void * self,GLuint shader)2991 GLboolean glIsShader_enc(void *self , GLuint shader)
2992 {
2993 	ENCODER_DEBUG_LOG("glIsShader(shader:%u)", shader);
2994 	AEMU_SCOPED_TRACE("glIsShader encode");
2995 
2996 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2997 	IOStream *stream = ctx->m_stream;
2998 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2999 	bool useChecksum = checksumCalculator->getVersion() > 0;
3000 
3001 	 unsigned char *ptr;
3002 	 unsigned char *buf;
3003 	 const size_t sizeWithoutChecksum = 8 + 4;
3004 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3005 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3006 	buf = stream->alloc(totalSize);
3007 	ptr = buf;
3008 	int tmp = OP_glIsShader;memcpy(ptr, &tmp, 4); ptr += 4;
3009 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3010 
3011 		memcpy(ptr, &shader, 4); ptr += 4;
3012 
3013 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3014 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3015 
3016 
3017 	GLboolean retval;
3018 	stream->readback(&retval, 1);
3019 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
3020 	if (useChecksum) {
3021 		unsigned char *checksumBufPtr = NULL;
3022 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
3023 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
3024 		stream->readback(checksumBufPtr, checksumSize);
3025 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
3026 			ALOGE("glIsShader: GL communication error, please report this issue to b.android.com.\n");
3027 			abort();
3028 		}
3029 	}
3030 	return retval;
3031 }
3032 
glIsTexture_enc(void * self,GLuint texture)3033 GLboolean glIsTexture_enc(void *self , GLuint texture)
3034 {
3035 	ENCODER_DEBUG_LOG("glIsTexture(texture:%u)", texture);
3036 	AEMU_SCOPED_TRACE("glIsTexture encode");
3037 
3038 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3039 	IOStream *stream = ctx->m_stream;
3040 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3041 	bool useChecksum = checksumCalculator->getVersion() > 0;
3042 
3043 	 unsigned char *ptr;
3044 	 unsigned char *buf;
3045 	 const size_t sizeWithoutChecksum = 8 + 4;
3046 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3047 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3048 	buf = stream->alloc(totalSize);
3049 	ptr = buf;
3050 	int tmp = OP_glIsTexture;memcpy(ptr, &tmp, 4); ptr += 4;
3051 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3052 
3053 		memcpy(ptr, &texture, 4); ptr += 4;
3054 
3055 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3056 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3057 
3058 
3059 	GLboolean retval;
3060 	stream->readback(&retval, 1);
3061 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
3062 	if (useChecksum) {
3063 		unsigned char *checksumBufPtr = NULL;
3064 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
3065 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
3066 		stream->readback(checksumBufPtr, checksumSize);
3067 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
3068 			ALOGE("glIsTexture: GL communication error, please report this issue to b.android.com.\n");
3069 			abort();
3070 		}
3071 	}
3072 	return retval;
3073 }
3074 
glLineWidth_enc(void * self,GLfloat width)3075 void glLineWidth_enc(void *self , GLfloat width)
3076 {
3077 	ENCODER_DEBUG_LOG("glLineWidth(width:%f)", width);
3078 	AEMU_SCOPED_TRACE("glLineWidth encode");
3079 
3080 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3081 	IOStream *stream = ctx->m_stream;
3082 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3083 	bool useChecksum = checksumCalculator->getVersion() > 0;
3084 
3085 	 unsigned char *ptr;
3086 	 unsigned char *buf;
3087 	 const size_t sizeWithoutChecksum = 8 + 4;
3088 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3089 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3090 	buf = stream->alloc(totalSize);
3091 	ptr = buf;
3092 	int tmp = OP_glLineWidth;memcpy(ptr, &tmp, 4); ptr += 4;
3093 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3094 
3095 		memcpy(ptr, &width, 4); ptr += 4;
3096 
3097 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3098 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3099 
3100 }
3101 
glLinkProgram_enc(void * self,GLuint program)3102 void glLinkProgram_enc(void *self , GLuint program)
3103 {
3104 	ENCODER_DEBUG_LOG("glLinkProgram(program:%u)", program);
3105 	AEMU_SCOPED_TRACE("glLinkProgram encode");
3106 
3107 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3108 	IOStream *stream = ctx->m_stream;
3109 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3110 	bool useChecksum = checksumCalculator->getVersion() > 0;
3111 
3112 	 unsigned char *ptr;
3113 	 unsigned char *buf;
3114 	 const size_t sizeWithoutChecksum = 8 + 4;
3115 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3116 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3117 	buf = stream->alloc(totalSize);
3118 	ptr = buf;
3119 	int tmp = OP_glLinkProgram;memcpy(ptr, &tmp, 4); ptr += 4;
3120 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3121 
3122 		memcpy(ptr, &program, 4); ptr += 4;
3123 
3124 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3125 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3126 
3127 }
3128 
glPixelStorei_enc(void * self,GLenum pname,GLint param)3129 void glPixelStorei_enc(void *self , GLenum pname, GLint param)
3130 {
3131 	ENCODER_DEBUG_LOG("glPixelStorei(pname:0x%08x, param:%d)", pname, param);
3132 	AEMU_SCOPED_TRACE("glPixelStorei encode");
3133 
3134 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3135 	IOStream *stream = ctx->m_stream;
3136 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3137 	bool useChecksum = checksumCalculator->getVersion() > 0;
3138 
3139 	 unsigned char *ptr;
3140 	 unsigned char *buf;
3141 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3142 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3143 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3144 	buf = stream->alloc(totalSize);
3145 	ptr = buf;
3146 	int tmp = OP_glPixelStorei;memcpy(ptr, &tmp, 4); ptr += 4;
3147 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3148 
3149 		memcpy(ptr, &pname, 4); ptr += 4;
3150 		memcpy(ptr, &param, 4); ptr += 4;
3151 
3152 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3153 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3154 
3155 }
3156 
glPolygonOffset_enc(void * self,GLfloat factor,GLfloat units)3157 void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units)
3158 {
3159 	ENCODER_DEBUG_LOG("glPolygonOffset(factor:%f, units:%f)", factor, units);
3160 	AEMU_SCOPED_TRACE("glPolygonOffset encode");
3161 
3162 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3163 	IOStream *stream = ctx->m_stream;
3164 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3165 	bool useChecksum = checksumCalculator->getVersion() > 0;
3166 
3167 	 unsigned char *ptr;
3168 	 unsigned char *buf;
3169 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3170 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3171 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3172 	buf = stream->alloc(totalSize);
3173 	ptr = buf;
3174 	int tmp = OP_glPolygonOffset;memcpy(ptr, &tmp, 4); ptr += 4;
3175 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3176 
3177 		memcpy(ptr, &factor, 4); ptr += 4;
3178 		memcpy(ptr, &units, 4); ptr += 4;
3179 
3180 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3181 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3182 
3183 }
3184 
glReadPixels_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * pixels)3185 void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
3186 {
3187 	ENCODER_DEBUG_LOG("glReadPixels(x:%d, y:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, pixels:0x%08x)", x, y, width, height, format, type, pixels);
3188 	AEMU_SCOPED_TRACE("glReadPixels encode");
3189 
3190 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3191 	IOStream *stream = ctx->m_stream;
3192 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3193 	bool useChecksum = checksumCalculator->getVersion() > 0;
3194 
3195 	const unsigned int __size_pixels =  glesv2_enc::pixelDataSize(self, width, height, format, type, 1);
3196 	 unsigned char *ptr;
3197 	 unsigned char *buf;
3198 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 0 + 1*4;
3199 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3200 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3201 	buf = stream->alloc(totalSize);
3202 	ptr = buf;
3203 	int tmp = OP_glReadPixels;memcpy(ptr, &tmp, 4); ptr += 4;
3204 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3205 
3206 		memcpy(ptr, &x, 4); ptr += 4;
3207 		memcpy(ptr, &y, 4); ptr += 4;
3208 		memcpy(ptr, &width, 4); ptr += 4;
3209 		memcpy(ptr, &height, 4); ptr += 4;
3210 		memcpy(ptr, &format, 4); ptr += 4;
3211 		memcpy(ptr, &type, 4); ptr += 4;
3212 	memcpy(ptr, &__size_pixels, 4); ptr += 4;
3213 
3214 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3215 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3216 
3217 	 stream->readbackPixels(self, width, height, format, type, pixels);
3218 	if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3219 	if (useChecksum) {
3220 		unsigned char *checksumBufPtr = NULL;
3221 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
3222 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
3223 		stream->readback(checksumBufPtr, checksumSize);
3224 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
3225 			ALOGE("glReadPixels: GL communication error, please report this issue to b.android.com.\n");
3226 			abort();
3227 		}
3228 	}
3229 }
3230 
glReleaseShaderCompiler_enc(void * self)3231 void glReleaseShaderCompiler_enc(void *self )
3232 {
3233 	ENCODER_DEBUG_LOG("glReleaseShaderCompiler()");
3234 	AEMU_SCOPED_TRACE("glReleaseShaderCompiler encode");
3235 
3236 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3237 	IOStream *stream = ctx->m_stream;
3238 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3239 	bool useChecksum = checksumCalculator->getVersion() > 0;
3240 
3241 	 unsigned char *ptr;
3242 	 unsigned char *buf;
3243 	 const size_t sizeWithoutChecksum = 8;
3244 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3245 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3246 	buf = stream->alloc(totalSize);
3247 	ptr = buf;
3248 	int tmp = OP_glReleaseShaderCompiler;memcpy(ptr, &tmp, 4); ptr += 4;
3249 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3250 
3251 
3252 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3253 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3254 
3255 }
3256 
glRenderbufferStorage_enc(void * self,GLenum target,GLenum internalformat,GLsizei width,GLsizei height)3257 void glRenderbufferStorage_enc(void *self , GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
3258 {
3259 	ENCODER_DEBUG_LOG("glRenderbufferStorage(target:0x%08x, internalformat:0x%08x, width:%d, height:%d)", target, internalformat, width, height);
3260 	AEMU_SCOPED_TRACE("glRenderbufferStorage encode");
3261 
3262 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3263 	IOStream *stream = ctx->m_stream;
3264 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3265 	bool useChecksum = checksumCalculator->getVersion() > 0;
3266 
3267 	 unsigned char *ptr;
3268 	 unsigned char *buf;
3269 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3270 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3271 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3272 	buf = stream->alloc(totalSize);
3273 	ptr = buf;
3274 	int tmp = OP_glRenderbufferStorage;memcpy(ptr, &tmp, 4); ptr += 4;
3275 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3276 
3277 		memcpy(ptr, &target, 4); ptr += 4;
3278 		memcpy(ptr, &internalformat, 4); ptr += 4;
3279 		memcpy(ptr, &width, 4); ptr += 4;
3280 		memcpy(ptr, &height, 4); ptr += 4;
3281 
3282 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3283 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3284 
3285 }
3286 
glSampleCoverage_enc(void * self,GLclampf value,GLboolean invert)3287 void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert)
3288 {
3289 	ENCODER_DEBUG_LOG("glSampleCoverage(value:%f, invert:%d)", value, invert);
3290 	AEMU_SCOPED_TRACE("glSampleCoverage encode");
3291 
3292 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3293 	IOStream *stream = ctx->m_stream;
3294 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3295 	bool useChecksum = checksumCalculator->getVersion() > 0;
3296 
3297 	 unsigned char *ptr;
3298 	 unsigned char *buf;
3299 	 const size_t sizeWithoutChecksum = 8 + 4 + 1;
3300 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3301 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3302 	buf = stream->alloc(totalSize);
3303 	ptr = buf;
3304 	int tmp = OP_glSampleCoverage;memcpy(ptr, &tmp, 4); ptr += 4;
3305 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3306 
3307 		memcpy(ptr, &value, 4); ptr += 4;
3308 		memcpy(ptr, &invert, 1); ptr += 1;
3309 
3310 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3311 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3312 
3313 }
3314 
glScissor_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height)3315 void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
3316 {
3317 	ENCODER_DEBUG_LOG("glScissor(x:%d, y:%d, width:%d, height:%d)", x, y, width, height);
3318 	AEMU_SCOPED_TRACE("glScissor encode");
3319 
3320 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3321 	IOStream *stream = ctx->m_stream;
3322 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3323 	bool useChecksum = checksumCalculator->getVersion() > 0;
3324 
3325 	 unsigned char *ptr;
3326 	 unsigned char *buf;
3327 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3328 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3329 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3330 	buf = stream->alloc(totalSize);
3331 	ptr = buf;
3332 	int tmp = OP_glScissor;memcpy(ptr, &tmp, 4); ptr += 4;
3333 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3334 
3335 		memcpy(ptr, &x, 4); ptr += 4;
3336 		memcpy(ptr, &y, 4); ptr += 4;
3337 		memcpy(ptr, &width, 4); ptr += 4;
3338 		memcpy(ptr, &height, 4); ptr += 4;
3339 
3340 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3341 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3342 
3343 }
3344 
glStencilFunc_enc(void * self,GLenum func,GLint ref,GLuint mask)3345 void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask)
3346 {
3347 	ENCODER_DEBUG_LOG("glStencilFunc(func:0x%08x, ref:%d, mask:%u)", func, ref, mask);
3348 	AEMU_SCOPED_TRACE("glStencilFunc encode");
3349 
3350 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3351 	IOStream *stream = ctx->m_stream;
3352 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3353 	bool useChecksum = checksumCalculator->getVersion() > 0;
3354 
3355 	 unsigned char *ptr;
3356 	 unsigned char *buf;
3357 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3358 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3359 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3360 	buf = stream->alloc(totalSize);
3361 	ptr = buf;
3362 	int tmp = OP_glStencilFunc;memcpy(ptr, &tmp, 4); ptr += 4;
3363 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3364 
3365 		memcpy(ptr, &func, 4); ptr += 4;
3366 		memcpy(ptr, &ref, 4); ptr += 4;
3367 		memcpy(ptr, &mask, 4); ptr += 4;
3368 
3369 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3370 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3371 
3372 }
3373 
glStencilFuncSeparate_enc(void * self,GLenum face,GLenum func,GLint ref,GLuint mask)3374 void glStencilFuncSeparate_enc(void *self , GLenum face, GLenum func, GLint ref, GLuint mask)
3375 {
3376 	ENCODER_DEBUG_LOG("glStencilFuncSeparate(face:0x%08x, func:0x%08x, ref:%d, mask:%u)", face, func, ref, mask);
3377 	AEMU_SCOPED_TRACE("glStencilFuncSeparate encode");
3378 
3379 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3380 	IOStream *stream = ctx->m_stream;
3381 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3382 	bool useChecksum = checksumCalculator->getVersion() > 0;
3383 
3384 	 unsigned char *ptr;
3385 	 unsigned char *buf;
3386 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3387 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3388 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3389 	buf = stream->alloc(totalSize);
3390 	ptr = buf;
3391 	int tmp = OP_glStencilFuncSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3392 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3393 
3394 		memcpy(ptr, &face, 4); ptr += 4;
3395 		memcpy(ptr, &func, 4); ptr += 4;
3396 		memcpy(ptr, &ref, 4); ptr += 4;
3397 		memcpy(ptr, &mask, 4); ptr += 4;
3398 
3399 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3400 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3401 
3402 }
3403 
glStencilMask_enc(void * self,GLuint mask)3404 void glStencilMask_enc(void *self , GLuint mask)
3405 {
3406 	ENCODER_DEBUG_LOG("glStencilMask(mask:%u)", mask);
3407 	AEMU_SCOPED_TRACE("glStencilMask encode");
3408 
3409 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3410 	IOStream *stream = ctx->m_stream;
3411 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3412 	bool useChecksum = checksumCalculator->getVersion() > 0;
3413 
3414 	 unsigned char *ptr;
3415 	 unsigned char *buf;
3416 	 const size_t sizeWithoutChecksum = 8 + 4;
3417 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3418 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3419 	buf = stream->alloc(totalSize);
3420 	ptr = buf;
3421 	int tmp = OP_glStencilMask;memcpy(ptr, &tmp, 4); ptr += 4;
3422 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3423 
3424 		memcpy(ptr, &mask, 4); ptr += 4;
3425 
3426 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3427 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3428 
3429 }
3430 
glStencilMaskSeparate_enc(void * self,GLenum face,GLuint mask)3431 void glStencilMaskSeparate_enc(void *self , GLenum face, GLuint mask)
3432 {
3433 	ENCODER_DEBUG_LOG("glStencilMaskSeparate(face:0x%08x, mask:%u)", face, mask);
3434 	AEMU_SCOPED_TRACE("glStencilMaskSeparate encode");
3435 
3436 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3437 	IOStream *stream = ctx->m_stream;
3438 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3439 	bool useChecksum = checksumCalculator->getVersion() > 0;
3440 
3441 	 unsigned char *ptr;
3442 	 unsigned char *buf;
3443 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3444 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3445 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3446 	buf = stream->alloc(totalSize);
3447 	ptr = buf;
3448 	int tmp = OP_glStencilMaskSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3449 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3450 
3451 		memcpy(ptr, &face, 4); ptr += 4;
3452 		memcpy(ptr, &mask, 4); ptr += 4;
3453 
3454 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3455 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3456 
3457 }
3458 
glStencilOp_enc(void * self,GLenum fail,GLenum zfail,GLenum zpass)3459 void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass)
3460 {
3461 	ENCODER_DEBUG_LOG("glStencilOp(fail:0x%08x, zfail:0x%08x, zpass:0x%08x)", fail, zfail, zpass);
3462 	AEMU_SCOPED_TRACE("glStencilOp encode");
3463 
3464 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3465 	IOStream *stream = ctx->m_stream;
3466 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3467 	bool useChecksum = checksumCalculator->getVersion() > 0;
3468 
3469 	 unsigned char *ptr;
3470 	 unsigned char *buf;
3471 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3472 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3473 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3474 	buf = stream->alloc(totalSize);
3475 	ptr = buf;
3476 	int tmp = OP_glStencilOp;memcpy(ptr, &tmp, 4); ptr += 4;
3477 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3478 
3479 		memcpy(ptr, &fail, 4); ptr += 4;
3480 		memcpy(ptr, &zfail, 4); ptr += 4;
3481 		memcpy(ptr, &zpass, 4); ptr += 4;
3482 
3483 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3484 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3485 
3486 }
3487 
glStencilOpSeparate_enc(void * self,GLenum face,GLenum fail,GLenum zfail,GLenum zpass)3488 void glStencilOpSeparate_enc(void *self , GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
3489 {
3490 	ENCODER_DEBUG_LOG("glStencilOpSeparate(face:0x%08x, fail:0x%08x, zfail:0x%08x, zpass:0x%08x)", face, fail, zfail, zpass);
3491 	AEMU_SCOPED_TRACE("glStencilOpSeparate encode");
3492 
3493 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3494 	IOStream *stream = ctx->m_stream;
3495 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3496 	bool useChecksum = checksumCalculator->getVersion() > 0;
3497 
3498 	 unsigned char *ptr;
3499 	 unsigned char *buf;
3500 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3501 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3502 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3503 	buf = stream->alloc(totalSize);
3504 	ptr = buf;
3505 	int tmp = OP_glStencilOpSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3506 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3507 
3508 		memcpy(ptr, &face, 4); ptr += 4;
3509 		memcpy(ptr, &fail, 4); ptr += 4;
3510 		memcpy(ptr, &zfail, 4); ptr += 4;
3511 		memcpy(ptr, &zpass, 4); ptr += 4;
3512 
3513 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3514 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3515 
3516 }
3517 
glTexImage2D_enc(void * self,GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * pixels)3518 void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
3519 {
3520 	ENCODER_DEBUG_LOG("glTexImage2D(target:0x%08x, level:%d, internalformat:%d, width:%d, height:%d, border:%d, format:0x%08x, type:0x%08x, pixels:0x%08x)", target, level, internalformat, width, height, border, format, type, pixels);
3521 	AEMU_SCOPED_TRACE("glTexImage2D encode");
3522 
3523 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3524 	IOStream *stream = ctx->m_stream;
3525 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3526 	bool useChecksum = checksumCalculator->getVersion() > 0;
3527 
3528 	const unsigned int __size_pixels = ((pixels != NULL) ?  glesv2_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
3529 	 unsigned char *ptr;
3530 	 unsigned char *buf;
3531 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
3532 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3533 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3534 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3535 	ptr = buf;
3536 	int tmp = OP_glTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
3537 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3538 
3539 		memcpy(ptr, &target, 4); ptr += 4;
3540 		memcpy(ptr, &level, 4); ptr += 4;
3541 		memcpy(ptr, &internalformat, 4); ptr += 4;
3542 		memcpy(ptr, &width, 4); ptr += 4;
3543 		memcpy(ptr, &height, 4); ptr += 4;
3544 		memcpy(ptr, &border, 4); ptr += 4;
3545 		memcpy(ptr, &format, 4); ptr += 4;
3546 		memcpy(ptr, &type, 4); ptr += 4;
3547 
3548 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3549 	stream->flush();
3550 	stream->writeFully(&__size_pixels,4);
3551 	if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
3552 	if (pixels != NULL) {
3553 		 stream->uploadPixels(self, width, height, 1, format, type, pixels);
3554 		if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3555 	}
3556 	buf = stream->alloc(checksumSize);
3557 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
3558 
3559 }
3560 
glTexParameterf_enc(void * self,GLenum target,GLenum pname,GLfloat param)3561 void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param)
3562 {
3563 	ENCODER_DEBUG_LOG("glTexParameterf(target:0x%08x, pname:0x%08x, param:%f)", target, pname, param);
3564 	AEMU_SCOPED_TRACE("glTexParameterf encode");
3565 
3566 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3567 	IOStream *stream = ctx->m_stream;
3568 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3569 	bool useChecksum = checksumCalculator->getVersion() > 0;
3570 
3571 	 unsigned char *ptr;
3572 	 unsigned char *buf;
3573 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3574 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3575 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3576 	buf = stream->alloc(totalSize);
3577 	ptr = buf;
3578 	int tmp = OP_glTexParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
3579 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3580 
3581 		memcpy(ptr, &target, 4); ptr += 4;
3582 		memcpy(ptr, &pname, 4); ptr += 4;
3583 		memcpy(ptr, &param, 4); ptr += 4;
3584 
3585 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3586 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3587 
3588 }
3589 
glTexParameterfv_enc(void * self,GLenum target,GLenum pname,const GLfloat * params)3590 void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params)
3591 {
3592 	ENCODER_DEBUG_LOG("glTexParameterfv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
3593 	AEMU_SCOPED_TRACE("glTexParameterfv encode");
3594 
3595 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3596 	IOStream *stream = ctx->m_stream;
3597 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3598 	bool useChecksum = checksumCalculator->getVersion() > 0;
3599 
3600 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
3601 	 unsigned char *ptr;
3602 	 unsigned char *buf;
3603 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
3604 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3605 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3606 	buf = stream->alloc(totalSize);
3607 	ptr = buf;
3608 	int tmp = OP_glTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
3609 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3610 
3611 		memcpy(ptr, &target, 4); ptr += 4;
3612 		memcpy(ptr, &pname, 4); ptr += 4;
3613 	memcpy(ptr, &__size_params, 4); ptr += 4;
3614 	memcpy(ptr, params, __size_params);ptr += __size_params;
3615 
3616 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3617 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3618 
3619 }
3620 
glTexParameteri_enc(void * self,GLenum target,GLenum pname,GLint param)3621 void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
3622 {
3623 	ENCODER_DEBUG_LOG("glTexParameteri(target:0x%08x, pname:0x%08x, param:%d)", target, pname, param);
3624 	AEMU_SCOPED_TRACE("glTexParameteri encode");
3625 
3626 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3627 	IOStream *stream = ctx->m_stream;
3628 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3629 	bool useChecksum = checksumCalculator->getVersion() > 0;
3630 
3631 	 unsigned char *ptr;
3632 	 unsigned char *buf;
3633 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3634 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3635 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3636 	buf = stream->alloc(totalSize);
3637 	ptr = buf;
3638 	int tmp = OP_glTexParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
3639 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3640 
3641 		memcpy(ptr, &target, 4); ptr += 4;
3642 		memcpy(ptr, &pname, 4); ptr += 4;
3643 		memcpy(ptr, &param, 4); ptr += 4;
3644 
3645 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3646 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3647 
3648 }
3649 
glTexParameteriv_enc(void * self,GLenum target,GLenum pname,const GLint * params)3650 void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* params)
3651 {
3652 	ENCODER_DEBUG_LOG("glTexParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
3653 	AEMU_SCOPED_TRACE("glTexParameteriv encode");
3654 
3655 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3656 	IOStream *stream = ctx->m_stream;
3657 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3658 	bool useChecksum = checksumCalculator->getVersion() > 0;
3659 
3660 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
3661 	 unsigned char *ptr;
3662 	 unsigned char *buf;
3663 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
3664 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3665 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3666 	buf = stream->alloc(totalSize);
3667 	ptr = buf;
3668 	int tmp = OP_glTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
3669 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3670 
3671 		memcpy(ptr, &target, 4); ptr += 4;
3672 		memcpy(ptr, &pname, 4); ptr += 4;
3673 	memcpy(ptr, &__size_params, 4); ptr += 4;
3674 	memcpy(ptr, params, __size_params);ptr += __size_params;
3675 
3676 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3677 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3678 
3679 }
3680 
glTexSubImage2D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * pixels)3681 void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
3682 {
3683 	ENCODER_DEBUG_LOG("glTexSubImage2D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, pixels:0x%08x)", target, level, xoffset, yoffset, width, height, format, type, pixels);
3684 	AEMU_SCOPED_TRACE("glTexSubImage2D encode");
3685 
3686 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3687 	IOStream *stream = ctx->m_stream;
3688 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3689 	bool useChecksum = checksumCalculator->getVersion() > 0;
3690 
3691 	const unsigned int __size_pixels = ((pixels != NULL) ?  glesv2_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
3692 	 unsigned char *ptr;
3693 	 unsigned char *buf;
3694 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
3695 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3696 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3697 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3698 	ptr = buf;
3699 	int tmp = OP_glTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
3700 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3701 
3702 		memcpy(ptr, &target, 4); ptr += 4;
3703 		memcpy(ptr, &level, 4); ptr += 4;
3704 		memcpy(ptr, &xoffset, 4); ptr += 4;
3705 		memcpy(ptr, &yoffset, 4); ptr += 4;
3706 		memcpy(ptr, &width, 4); ptr += 4;
3707 		memcpy(ptr, &height, 4); ptr += 4;
3708 		memcpy(ptr, &format, 4); ptr += 4;
3709 		memcpy(ptr, &type, 4); ptr += 4;
3710 
3711 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3712 	stream->flush();
3713 	stream->writeFully(&__size_pixels,4);
3714 	if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
3715 	if (pixels != NULL) {
3716 		 stream->uploadPixels(self, width, height, 1, format, type, pixels);
3717 		if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3718 	}
3719 	buf = stream->alloc(checksumSize);
3720 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
3721 
3722 }
3723 
glUniform1f_enc(void * self,GLint location,GLfloat x)3724 void glUniform1f_enc(void *self , GLint location, GLfloat x)
3725 {
3726 	ENCODER_DEBUG_LOG("glUniform1f(location:%d, x:%f)", location, x);
3727 	AEMU_SCOPED_TRACE("glUniform1f encode");
3728 
3729 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3730 	IOStream *stream = ctx->m_stream;
3731 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3732 	bool useChecksum = checksumCalculator->getVersion() > 0;
3733 
3734 	 unsigned char *ptr;
3735 	 unsigned char *buf;
3736 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3737 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3738 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3739 	buf = stream->alloc(totalSize);
3740 	ptr = buf;
3741 	int tmp = OP_glUniform1f;memcpy(ptr, &tmp, 4); ptr += 4;
3742 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3743 
3744 		memcpy(ptr, &location, 4); ptr += 4;
3745 		memcpy(ptr, &x, 4); ptr += 4;
3746 
3747 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3748 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3749 
3750 }
3751 
glUniform1fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)3752 void glUniform1fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3753 {
3754 	ENCODER_DEBUG_LOG("glUniform1fv(location:%d, count:%d, v:0x%08x)", location, count, v);
3755 	AEMU_SCOPED_TRACE("glUniform1fv encode");
3756 
3757 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3758 	IOStream *stream = ctx->m_stream;
3759 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3760 	bool useChecksum = checksumCalculator->getVersion() > 0;
3761 
3762 	const unsigned int __size_v =  (count * sizeof(GLfloat));
3763 	 unsigned char *ptr;
3764 	 unsigned char *buf;
3765 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3766 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3767 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3768 	buf = stream->alloc(totalSize);
3769 	ptr = buf;
3770 	int tmp = OP_glUniform1fv;memcpy(ptr, &tmp, 4); ptr += 4;
3771 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3772 
3773 		memcpy(ptr, &location, 4); ptr += 4;
3774 		memcpy(ptr, &count, 4); ptr += 4;
3775 	memcpy(ptr, &__size_v, 4); ptr += 4;
3776 	memcpy(ptr, v, __size_v);ptr += __size_v;
3777 
3778 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3779 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3780 
3781 }
3782 
glUniform1i_enc(void * self,GLint location,GLint x)3783 void glUniform1i_enc(void *self , GLint location, GLint x)
3784 {
3785 	ENCODER_DEBUG_LOG("glUniform1i(location:%d, x:%d)", location, x);
3786 	AEMU_SCOPED_TRACE("glUniform1i encode");
3787 
3788 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3789 	IOStream *stream = ctx->m_stream;
3790 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3791 	bool useChecksum = checksumCalculator->getVersion() > 0;
3792 
3793 	 unsigned char *ptr;
3794 	 unsigned char *buf;
3795 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3796 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3797 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3798 	buf = stream->alloc(totalSize);
3799 	ptr = buf;
3800 	int tmp = OP_glUniform1i;memcpy(ptr, &tmp, 4); ptr += 4;
3801 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3802 
3803 		memcpy(ptr, &location, 4); ptr += 4;
3804 		memcpy(ptr, &x, 4); ptr += 4;
3805 
3806 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3807 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3808 
3809 }
3810 
glUniform1iv_enc(void * self,GLint location,GLsizei count,const GLint * v)3811 void glUniform1iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
3812 {
3813 	ENCODER_DEBUG_LOG("glUniform1iv(location:%d, count:%d, v:0x%08x)", location, count, v);
3814 	AEMU_SCOPED_TRACE("glUniform1iv encode");
3815 
3816 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3817 	IOStream *stream = ctx->m_stream;
3818 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3819 	bool useChecksum = checksumCalculator->getVersion() > 0;
3820 
3821 	const unsigned int __size_v =  (count * sizeof(GLint));
3822 	 unsigned char *ptr;
3823 	 unsigned char *buf;
3824 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3825 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3826 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3827 	buf = stream->alloc(totalSize);
3828 	ptr = buf;
3829 	int tmp = OP_glUniform1iv;memcpy(ptr, &tmp, 4); ptr += 4;
3830 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3831 
3832 		memcpy(ptr, &location, 4); ptr += 4;
3833 		memcpy(ptr, &count, 4); ptr += 4;
3834 	memcpy(ptr, &__size_v, 4); ptr += 4;
3835 	memcpy(ptr, v, __size_v);ptr += __size_v;
3836 
3837 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3838 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3839 
3840 }
3841 
glUniform2f_enc(void * self,GLint location,GLfloat x,GLfloat y)3842 void glUniform2f_enc(void *self , GLint location, GLfloat x, GLfloat y)
3843 {
3844 	ENCODER_DEBUG_LOG("glUniform2f(location:%d, x:%f, y:%f)", location, x, y);
3845 	AEMU_SCOPED_TRACE("glUniform2f encode");
3846 
3847 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3848 	IOStream *stream = ctx->m_stream;
3849 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3850 	bool useChecksum = checksumCalculator->getVersion() > 0;
3851 
3852 	 unsigned char *ptr;
3853 	 unsigned char *buf;
3854 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3855 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3856 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3857 	buf = stream->alloc(totalSize);
3858 	ptr = buf;
3859 	int tmp = OP_glUniform2f;memcpy(ptr, &tmp, 4); ptr += 4;
3860 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3861 
3862 		memcpy(ptr, &location, 4); ptr += 4;
3863 		memcpy(ptr, &x, 4); ptr += 4;
3864 		memcpy(ptr, &y, 4); ptr += 4;
3865 
3866 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3867 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3868 
3869 }
3870 
glUniform2fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)3871 void glUniform2fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3872 {
3873 	ENCODER_DEBUG_LOG("glUniform2fv(location:%d, count:%d, v:0x%08x)", location, count, v);
3874 	AEMU_SCOPED_TRACE("glUniform2fv encode");
3875 
3876 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3877 	IOStream *stream = ctx->m_stream;
3878 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3879 	bool useChecksum = checksumCalculator->getVersion() > 0;
3880 
3881 	const unsigned int __size_v =  (count * 2 * sizeof(GLfloat));
3882 	 unsigned char *ptr;
3883 	 unsigned char *buf;
3884 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3885 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3886 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3887 	buf = stream->alloc(totalSize);
3888 	ptr = buf;
3889 	int tmp = OP_glUniform2fv;memcpy(ptr, &tmp, 4); ptr += 4;
3890 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3891 
3892 		memcpy(ptr, &location, 4); ptr += 4;
3893 		memcpy(ptr, &count, 4); ptr += 4;
3894 	memcpy(ptr, &__size_v, 4); ptr += 4;
3895 	memcpy(ptr, v, __size_v);ptr += __size_v;
3896 
3897 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3898 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3899 
3900 }
3901 
glUniform2i_enc(void * self,GLint location,GLint x,GLint y)3902 void glUniform2i_enc(void *self , GLint location, GLint x, GLint y)
3903 {
3904 	ENCODER_DEBUG_LOG("glUniform2i(location:%d, x:%d, y:%d)", location, x, y);
3905 	AEMU_SCOPED_TRACE("glUniform2i encode");
3906 
3907 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3908 	IOStream *stream = ctx->m_stream;
3909 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3910 	bool useChecksum = checksumCalculator->getVersion() > 0;
3911 
3912 	 unsigned char *ptr;
3913 	 unsigned char *buf;
3914 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3915 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3916 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3917 	buf = stream->alloc(totalSize);
3918 	ptr = buf;
3919 	int tmp = OP_glUniform2i;memcpy(ptr, &tmp, 4); ptr += 4;
3920 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3921 
3922 		memcpy(ptr, &location, 4); ptr += 4;
3923 		memcpy(ptr, &x, 4); ptr += 4;
3924 		memcpy(ptr, &y, 4); ptr += 4;
3925 
3926 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3927 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3928 
3929 }
3930 
glUniform2iv_enc(void * self,GLint location,GLsizei count,const GLint * v)3931 void glUniform2iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
3932 {
3933 	ENCODER_DEBUG_LOG("glUniform2iv(location:%d, count:%d, v:0x%08x)", location, count, v);
3934 	AEMU_SCOPED_TRACE("glUniform2iv encode");
3935 
3936 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3937 	IOStream *stream = ctx->m_stream;
3938 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3939 	bool useChecksum = checksumCalculator->getVersion() > 0;
3940 
3941 	const unsigned int __size_v =  (count * 2 * sizeof(GLint));
3942 	 unsigned char *ptr;
3943 	 unsigned char *buf;
3944 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3945 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3946 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3947 	buf = stream->alloc(totalSize);
3948 	ptr = buf;
3949 	int tmp = OP_glUniform2iv;memcpy(ptr, &tmp, 4); ptr += 4;
3950 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3951 
3952 		memcpy(ptr, &location, 4); ptr += 4;
3953 		memcpy(ptr, &count, 4); ptr += 4;
3954 	memcpy(ptr, &__size_v, 4); ptr += 4;
3955 	memcpy(ptr, v, __size_v);ptr += __size_v;
3956 
3957 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3958 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3959 
3960 }
3961 
glUniform3f_enc(void * self,GLint location,GLfloat x,GLfloat y,GLfloat z)3962 void glUniform3f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z)
3963 {
3964 	ENCODER_DEBUG_LOG("glUniform3f(location:%d, x:%f, y:%f, z:%f)", location, x, y, z);
3965 	AEMU_SCOPED_TRACE("glUniform3f encode");
3966 
3967 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3968 	IOStream *stream = ctx->m_stream;
3969 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3970 	bool useChecksum = checksumCalculator->getVersion() > 0;
3971 
3972 	 unsigned char *ptr;
3973 	 unsigned char *buf;
3974 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3975 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3976 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3977 	buf = stream->alloc(totalSize);
3978 	ptr = buf;
3979 	int tmp = OP_glUniform3f;memcpy(ptr, &tmp, 4); ptr += 4;
3980 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3981 
3982 		memcpy(ptr, &location, 4); ptr += 4;
3983 		memcpy(ptr, &x, 4); ptr += 4;
3984 		memcpy(ptr, &y, 4); ptr += 4;
3985 		memcpy(ptr, &z, 4); ptr += 4;
3986 
3987 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3988 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3989 
3990 }
3991 
glUniform3fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)3992 void glUniform3fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3993 {
3994 	ENCODER_DEBUG_LOG("glUniform3fv(location:%d, count:%d, v:0x%08x)", location, count, v);
3995 	AEMU_SCOPED_TRACE("glUniform3fv encode");
3996 
3997 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3998 	IOStream *stream = ctx->m_stream;
3999 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4000 	bool useChecksum = checksumCalculator->getVersion() > 0;
4001 
4002 	const unsigned int __size_v =  (count * 3 * sizeof(GLfloat));
4003 	 unsigned char *ptr;
4004 	 unsigned char *buf;
4005 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4006 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4007 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4008 	buf = stream->alloc(totalSize);
4009 	ptr = buf;
4010 	int tmp = OP_glUniform3fv;memcpy(ptr, &tmp, 4); ptr += 4;
4011 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4012 
4013 		memcpy(ptr, &location, 4); ptr += 4;
4014 		memcpy(ptr, &count, 4); ptr += 4;
4015 	memcpy(ptr, &__size_v, 4); ptr += 4;
4016 	memcpy(ptr, v, __size_v);ptr += __size_v;
4017 
4018 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4019 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4020 
4021 }
4022 
glUniform3i_enc(void * self,GLint location,GLint x,GLint y,GLint z)4023 void glUniform3i_enc(void *self , GLint location, GLint x, GLint y, GLint z)
4024 {
4025 	ENCODER_DEBUG_LOG("glUniform3i(location:%d, x:%d, y:%d, z:%d)", location, x, y, z);
4026 	AEMU_SCOPED_TRACE("glUniform3i encode");
4027 
4028 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4029 	IOStream *stream = ctx->m_stream;
4030 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4031 	bool useChecksum = checksumCalculator->getVersion() > 0;
4032 
4033 	 unsigned char *ptr;
4034 	 unsigned char *buf;
4035 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4036 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4037 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4038 	buf = stream->alloc(totalSize);
4039 	ptr = buf;
4040 	int tmp = OP_glUniform3i;memcpy(ptr, &tmp, 4); ptr += 4;
4041 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4042 
4043 		memcpy(ptr, &location, 4); ptr += 4;
4044 		memcpy(ptr, &x, 4); ptr += 4;
4045 		memcpy(ptr, &y, 4); ptr += 4;
4046 		memcpy(ptr, &z, 4); ptr += 4;
4047 
4048 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4049 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4050 
4051 }
4052 
glUniform3iv_enc(void * self,GLint location,GLsizei count,const GLint * v)4053 void glUniform3iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
4054 {
4055 	ENCODER_DEBUG_LOG("glUniform3iv(location:%d, count:%d, v:0x%08x)", location, count, v);
4056 	AEMU_SCOPED_TRACE("glUniform3iv encode");
4057 
4058 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4059 	IOStream *stream = ctx->m_stream;
4060 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4061 	bool useChecksum = checksumCalculator->getVersion() > 0;
4062 
4063 	const unsigned int __size_v =  (3 * count * sizeof(GLint));
4064 	 unsigned char *ptr;
4065 	 unsigned char *buf;
4066 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4067 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4068 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4069 	buf = stream->alloc(totalSize);
4070 	ptr = buf;
4071 	int tmp = OP_glUniform3iv;memcpy(ptr, &tmp, 4); ptr += 4;
4072 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4073 
4074 		memcpy(ptr, &location, 4); ptr += 4;
4075 		memcpy(ptr, &count, 4); ptr += 4;
4076 	memcpy(ptr, &__size_v, 4); ptr += 4;
4077 	memcpy(ptr, v, __size_v);ptr += __size_v;
4078 
4079 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4080 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4081 
4082 }
4083 
glUniform4f_enc(void * self,GLint location,GLfloat x,GLfloat y,GLfloat z,GLfloat w)4084 void glUniform4f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
4085 {
4086 	ENCODER_DEBUG_LOG("glUniform4f(location:%d, x:%f, y:%f, z:%f, w:%f)", location, x, y, z, w);
4087 	AEMU_SCOPED_TRACE("glUniform4f encode");
4088 
4089 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4090 	IOStream *stream = ctx->m_stream;
4091 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4092 	bool useChecksum = checksumCalculator->getVersion() > 0;
4093 
4094 	 unsigned char *ptr;
4095 	 unsigned char *buf;
4096 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4097 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4098 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4099 	buf = stream->alloc(totalSize);
4100 	ptr = buf;
4101 	int tmp = OP_glUniform4f;memcpy(ptr, &tmp, 4); ptr += 4;
4102 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4103 
4104 		memcpy(ptr, &location, 4); ptr += 4;
4105 		memcpy(ptr, &x, 4); ptr += 4;
4106 		memcpy(ptr, &y, 4); ptr += 4;
4107 		memcpy(ptr, &z, 4); ptr += 4;
4108 		memcpy(ptr, &w, 4); ptr += 4;
4109 
4110 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4111 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4112 
4113 }
4114 
glUniform4fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)4115 void glUniform4fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
4116 {
4117 	ENCODER_DEBUG_LOG("glUniform4fv(location:%d, count:%d, v:0x%08x)", location, count, v);
4118 	AEMU_SCOPED_TRACE("glUniform4fv encode");
4119 
4120 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4121 	IOStream *stream = ctx->m_stream;
4122 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4123 	bool useChecksum = checksumCalculator->getVersion() > 0;
4124 
4125 	const unsigned int __size_v =  (4 * count * sizeof(GLfloat));
4126 	 unsigned char *ptr;
4127 	 unsigned char *buf;
4128 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4129 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4130 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4131 	buf = stream->alloc(totalSize);
4132 	ptr = buf;
4133 	int tmp = OP_glUniform4fv;memcpy(ptr, &tmp, 4); ptr += 4;
4134 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4135 
4136 		memcpy(ptr, &location, 4); ptr += 4;
4137 		memcpy(ptr, &count, 4); ptr += 4;
4138 	memcpy(ptr, &__size_v, 4); ptr += 4;
4139 	memcpy(ptr, v, __size_v);ptr += __size_v;
4140 
4141 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4142 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4143 
4144 }
4145 
glUniform4i_enc(void * self,GLint location,GLint x,GLint y,GLint z,GLint w)4146 void glUniform4i_enc(void *self , GLint location, GLint x, GLint y, GLint z, GLint w)
4147 {
4148 	ENCODER_DEBUG_LOG("glUniform4i(location:%d, x:%d, y:%d, z:%d, w:%d)", location, x, y, z, w);
4149 	AEMU_SCOPED_TRACE("glUniform4i encode");
4150 
4151 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4152 	IOStream *stream = ctx->m_stream;
4153 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4154 	bool useChecksum = checksumCalculator->getVersion() > 0;
4155 
4156 	 unsigned char *ptr;
4157 	 unsigned char *buf;
4158 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4159 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4160 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4161 	buf = stream->alloc(totalSize);
4162 	ptr = buf;
4163 	int tmp = OP_glUniform4i;memcpy(ptr, &tmp, 4); ptr += 4;
4164 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4165 
4166 		memcpy(ptr, &location, 4); ptr += 4;
4167 		memcpy(ptr, &x, 4); ptr += 4;
4168 		memcpy(ptr, &y, 4); ptr += 4;
4169 		memcpy(ptr, &z, 4); ptr += 4;
4170 		memcpy(ptr, &w, 4); ptr += 4;
4171 
4172 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4173 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4174 
4175 }
4176 
glUniform4iv_enc(void * self,GLint location,GLsizei count,const GLint * v)4177 void glUniform4iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
4178 {
4179 	ENCODER_DEBUG_LOG("glUniform4iv(location:%d, count:%d, v:0x%08x)", location, count, v);
4180 	AEMU_SCOPED_TRACE("glUniform4iv encode");
4181 
4182 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4183 	IOStream *stream = ctx->m_stream;
4184 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4185 	bool useChecksum = checksumCalculator->getVersion() > 0;
4186 
4187 	const unsigned int __size_v =  (4 * count * sizeof(GLint));
4188 	 unsigned char *ptr;
4189 	 unsigned char *buf;
4190 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4191 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4192 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4193 	buf = stream->alloc(totalSize);
4194 	ptr = buf;
4195 	int tmp = OP_glUniform4iv;memcpy(ptr, &tmp, 4); ptr += 4;
4196 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4197 
4198 		memcpy(ptr, &location, 4); ptr += 4;
4199 		memcpy(ptr, &count, 4); ptr += 4;
4200 	memcpy(ptr, &__size_v, 4); ptr += 4;
4201 	memcpy(ptr, v, __size_v);ptr += __size_v;
4202 
4203 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4204 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4205 
4206 }
4207 
glUniformMatrix2fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)4208 void glUniformMatrix2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
4209 {
4210 	ENCODER_DEBUG_LOG("glUniformMatrix2fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
4211 	AEMU_SCOPED_TRACE("glUniformMatrix2fv encode");
4212 
4213 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4214 	IOStream *stream = ctx->m_stream;
4215 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4216 	bool useChecksum = checksumCalculator->getVersion() > 0;
4217 
4218 	const unsigned int __size_value =  (count * 4 * sizeof(GLfloat));
4219 	 unsigned char *ptr;
4220 	 unsigned char *buf;
4221 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
4222 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4223 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4224 	buf = stream->alloc(totalSize);
4225 	ptr = buf;
4226 	int tmp = OP_glUniformMatrix2fv;memcpy(ptr, &tmp, 4); ptr += 4;
4227 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4228 
4229 		memcpy(ptr, &location, 4); ptr += 4;
4230 		memcpy(ptr, &count, 4); ptr += 4;
4231 		memcpy(ptr, &transpose, 1); ptr += 1;
4232 	memcpy(ptr, &__size_value, 4); ptr += 4;
4233 	memcpy(ptr, value, __size_value);ptr += __size_value;
4234 
4235 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4236 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4237 
4238 }
4239 
glUniformMatrix3fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)4240 void glUniformMatrix3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
4241 {
4242 	ENCODER_DEBUG_LOG("glUniformMatrix3fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
4243 	AEMU_SCOPED_TRACE("glUniformMatrix3fv encode");
4244 
4245 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4246 	IOStream *stream = ctx->m_stream;
4247 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4248 	bool useChecksum = checksumCalculator->getVersion() > 0;
4249 
4250 	const unsigned int __size_value =  (count * 9 * sizeof(GLfloat));
4251 	 unsigned char *ptr;
4252 	 unsigned char *buf;
4253 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
4254 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4255 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4256 	buf = stream->alloc(totalSize);
4257 	ptr = buf;
4258 	int tmp = OP_glUniformMatrix3fv;memcpy(ptr, &tmp, 4); ptr += 4;
4259 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4260 
4261 		memcpy(ptr, &location, 4); ptr += 4;
4262 		memcpy(ptr, &count, 4); ptr += 4;
4263 		memcpy(ptr, &transpose, 1); ptr += 1;
4264 	memcpy(ptr, &__size_value, 4); ptr += 4;
4265 	memcpy(ptr, value, __size_value);ptr += __size_value;
4266 
4267 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4268 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4269 
4270 }
4271 
glUniformMatrix4fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)4272 void glUniformMatrix4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
4273 {
4274 	ENCODER_DEBUG_LOG("glUniformMatrix4fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
4275 	AEMU_SCOPED_TRACE("glUniformMatrix4fv encode");
4276 
4277 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4278 	IOStream *stream = ctx->m_stream;
4279 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4280 	bool useChecksum = checksumCalculator->getVersion() > 0;
4281 
4282 	const unsigned int __size_value =  (count * 16 * sizeof(GLfloat));
4283 	 unsigned char *ptr;
4284 	 unsigned char *buf;
4285 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
4286 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4287 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4288 	buf = stream->alloc(totalSize);
4289 	ptr = buf;
4290 	int tmp = OP_glUniformMatrix4fv;memcpy(ptr, &tmp, 4); ptr += 4;
4291 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4292 
4293 		memcpy(ptr, &location, 4); ptr += 4;
4294 		memcpy(ptr, &count, 4); ptr += 4;
4295 		memcpy(ptr, &transpose, 1); ptr += 1;
4296 	memcpy(ptr, &__size_value, 4); ptr += 4;
4297 	memcpy(ptr, value, __size_value);ptr += __size_value;
4298 
4299 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4300 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4301 
4302 }
4303 
glUseProgram_enc(void * self,GLuint program)4304 void glUseProgram_enc(void *self , GLuint program)
4305 {
4306 	ENCODER_DEBUG_LOG("glUseProgram(program:%u)", program);
4307 	AEMU_SCOPED_TRACE("glUseProgram encode");
4308 
4309 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4310 	IOStream *stream = ctx->m_stream;
4311 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4312 	bool useChecksum = checksumCalculator->getVersion() > 0;
4313 
4314 	 unsigned char *ptr;
4315 	 unsigned char *buf;
4316 	 const size_t sizeWithoutChecksum = 8 + 4;
4317 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4318 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4319 	buf = stream->alloc(totalSize);
4320 	ptr = buf;
4321 	int tmp = OP_glUseProgram;memcpy(ptr, &tmp, 4); ptr += 4;
4322 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4323 
4324 		memcpy(ptr, &program, 4); ptr += 4;
4325 
4326 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4327 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4328 
4329 }
4330 
glValidateProgram_enc(void * self,GLuint program)4331 void glValidateProgram_enc(void *self , GLuint program)
4332 {
4333 	ENCODER_DEBUG_LOG("glValidateProgram(program:%u)", program);
4334 	AEMU_SCOPED_TRACE("glValidateProgram encode");
4335 
4336 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4337 	IOStream *stream = ctx->m_stream;
4338 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4339 	bool useChecksum = checksumCalculator->getVersion() > 0;
4340 
4341 	 unsigned char *ptr;
4342 	 unsigned char *buf;
4343 	 const size_t sizeWithoutChecksum = 8 + 4;
4344 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4345 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4346 	buf = stream->alloc(totalSize);
4347 	ptr = buf;
4348 	int tmp = OP_glValidateProgram;memcpy(ptr, &tmp, 4); ptr += 4;
4349 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4350 
4351 		memcpy(ptr, &program, 4); ptr += 4;
4352 
4353 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4354 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4355 
4356 }
4357 
glVertexAttrib1f_enc(void * self,GLuint indx,GLfloat x)4358 void glVertexAttrib1f_enc(void *self , GLuint indx, GLfloat x)
4359 {
4360 	ENCODER_DEBUG_LOG("glVertexAttrib1f(indx:%u, x:%f)", indx, x);
4361 	AEMU_SCOPED_TRACE("glVertexAttrib1f encode");
4362 
4363 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4364 	IOStream *stream = ctx->m_stream;
4365 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4366 	bool useChecksum = checksumCalculator->getVersion() > 0;
4367 
4368 	 unsigned char *ptr;
4369 	 unsigned char *buf;
4370 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4371 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4372 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4373 	buf = stream->alloc(totalSize);
4374 	ptr = buf;
4375 	int tmp = OP_glVertexAttrib1f;memcpy(ptr, &tmp, 4); ptr += 4;
4376 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4377 
4378 		memcpy(ptr, &indx, 4); ptr += 4;
4379 		memcpy(ptr, &x, 4); ptr += 4;
4380 
4381 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4382 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4383 
4384 }
4385 
glVertexAttrib1fv_enc(void * self,GLuint indx,const GLfloat * values)4386 void glVertexAttrib1fv_enc(void *self , GLuint indx, const GLfloat* values)
4387 {
4388 	ENCODER_DEBUG_LOG("glVertexAttrib1fv(indx:%u, values:0x%08x)", indx, values);
4389 	AEMU_SCOPED_TRACE("glVertexAttrib1fv encode");
4390 
4391 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4392 	IOStream *stream = ctx->m_stream;
4393 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4394 	bool useChecksum = checksumCalculator->getVersion() > 0;
4395 
4396 	const unsigned int __size_values =  (sizeof(GLfloat));
4397 	 unsigned char *ptr;
4398 	 unsigned char *buf;
4399 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4400 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4401 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4402 	buf = stream->alloc(totalSize);
4403 	ptr = buf;
4404 	int tmp = OP_glVertexAttrib1fv;memcpy(ptr, &tmp, 4); ptr += 4;
4405 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4406 
4407 		memcpy(ptr, &indx, 4); ptr += 4;
4408 	memcpy(ptr, &__size_values, 4); ptr += 4;
4409 	memcpy(ptr, values, __size_values);ptr += __size_values;
4410 
4411 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4412 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4413 
4414 }
4415 
glVertexAttrib2f_enc(void * self,GLuint indx,GLfloat x,GLfloat y)4416 void glVertexAttrib2f_enc(void *self , GLuint indx, GLfloat x, GLfloat y)
4417 {
4418 	ENCODER_DEBUG_LOG("glVertexAttrib2f(indx:%u, x:%f, y:%f)", indx, x, y);
4419 	AEMU_SCOPED_TRACE("glVertexAttrib2f encode");
4420 
4421 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4422 	IOStream *stream = ctx->m_stream;
4423 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4424 	bool useChecksum = checksumCalculator->getVersion() > 0;
4425 
4426 	 unsigned char *ptr;
4427 	 unsigned char *buf;
4428 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
4429 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4430 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4431 	buf = stream->alloc(totalSize);
4432 	ptr = buf;
4433 	int tmp = OP_glVertexAttrib2f;memcpy(ptr, &tmp, 4); ptr += 4;
4434 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4435 
4436 		memcpy(ptr, &indx, 4); ptr += 4;
4437 		memcpy(ptr, &x, 4); ptr += 4;
4438 		memcpy(ptr, &y, 4); ptr += 4;
4439 
4440 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4441 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4442 
4443 }
4444 
glVertexAttrib2fv_enc(void * self,GLuint indx,const GLfloat * values)4445 void glVertexAttrib2fv_enc(void *self , GLuint indx, const GLfloat* values)
4446 {
4447 	ENCODER_DEBUG_LOG("glVertexAttrib2fv(indx:%u, values:0x%08x)", indx, values);
4448 	AEMU_SCOPED_TRACE("glVertexAttrib2fv encode");
4449 
4450 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4451 	IOStream *stream = ctx->m_stream;
4452 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4453 	bool useChecksum = checksumCalculator->getVersion() > 0;
4454 
4455 	const unsigned int __size_values =  (2 * sizeof(GLfloat));
4456 	 unsigned char *ptr;
4457 	 unsigned char *buf;
4458 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4459 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4460 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4461 	buf = stream->alloc(totalSize);
4462 	ptr = buf;
4463 	int tmp = OP_glVertexAttrib2fv;memcpy(ptr, &tmp, 4); ptr += 4;
4464 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4465 
4466 		memcpy(ptr, &indx, 4); ptr += 4;
4467 	memcpy(ptr, &__size_values, 4); ptr += 4;
4468 	memcpy(ptr, values, __size_values);ptr += __size_values;
4469 
4470 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4471 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4472 
4473 }
4474 
glVertexAttrib3f_enc(void * self,GLuint indx,GLfloat x,GLfloat y,GLfloat z)4475 void glVertexAttrib3f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z)
4476 {
4477 	ENCODER_DEBUG_LOG("glVertexAttrib3f(indx:%u, x:%f, y:%f, z:%f)", indx, x, y, z);
4478 	AEMU_SCOPED_TRACE("glVertexAttrib3f encode");
4479 
4480 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4481 	IOStream *stream = ctx->m_stream;
4482 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4483 	bool useChecksum = checksumCalculator->getVersion() > 0;
4484 
4485 	 unsigned char *ptr;
4486 	 unsigned char *buf;
4487 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4488 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4489 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4490 	buf = stream->alloc(totalSize);
4491 	ptr = buf;
4492 	int tmp = OP_glVertexAttrib3f;memcpy(ptr, &tmp, 4); ptr += 4;
4493 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4494 
4495 		memcpy(ptr, &indx, 4); ptr += 4;
4496 		memcpy(ptr, &x, 4); ptr += 4;
4497 		memcpy(ptr, &y, 4); ptr += 4;
4498 		memcpy(ptr, &z, 4); ptr += 4;
4499 
4500 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4501 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4502 
4503 }
4504 
glVertexAttrib3fv_enc(void * self,GLuint indx,const GLfloat * values)4505 void glVertexAttrib3fv_enc(void *self , GLuint indx, const GLfloat* values)
4506 {
4507 	ENCODER_DEBUG_LOG("glVertexAttrib3fv(indx:%u, values:0x%08x)", indx, values);
4508 	AEMU_SCOPED_TRACE("glVertexAttrib3fv encode");
4509 
4510 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4511 	IOStream *stream = ctx->m_stream;
4512 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4513 	bool useChecksum = checksumCalculator->getVersion() > 0;
4514 
4515 	const unsigned int __size_values =  (3 * sizeof(GLfloat));
4516 	 unsigned char *ptr;
4517 	 unsigned char *buf;
4518 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4519 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4520 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4521 	buf = stream->alloc(totalSize);
4522 	ptr = buf;
4523 	int tmp = OP_glVertexAttrib3fv;memcpy(ptr, &tmp, 4); ptr += 4;
4524 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4525 
4526 		memcpy(ptr, &indx, 4); ptr += 4;
4527 	memcpy(ptr, &__size_values, 4); ptr += 4;
4528 	memcpy(ptr, values, __size_values);ptr += __size_values;
4529 
4530 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4531 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4532 
4533 }
4534 
glVertexAttrib4f_enc(void * self,GLuint indx,GLfloat x,GLfloat y,GLfloat z,GLfloat w)4535 void glVertexAttrib4f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
4536 {
4537 	ENCODER_DEBUG_LOG("glVertexAttrib4f(indx:%u, x:%f, y:%f, z:%f, w:%f)", indx, x, y, z, w);
4538 	AEMU_SCOPED_TRACE("glVertexAttrib4f encode");
4539 
4540 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4541 	IOStream *stream = ctx->m_stream;
4542 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4543 	bool useChecksum = checksumCalculator->getVersion() > 0;
4544 
4545 	 unsigned char *ptr;
4546 	 unsigned char *buf;
4547 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4548 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4549 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4550 	buf = stream->alloc(totalSize);
4551 	ptr = buf;
4552 	int tmp = OP_glVertexAttrib4f;memcpy(ptr, &tmp, 4); ptr += 4;
4553 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4554 
4555 		memcpy(ptr, &indx, 4); ptr += 4;
4556 		memcpy(ptr, &x, 4); ptr += 4;
4557 		memcpy(ptr, &y, 4); ptr += 4;
4558 		memcpy(ptr, &z, 4); ptr += 4;
4559 		memcpy(ptr, &w, 4); ptr += 4;
4560 
4561 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4562 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4563 
4564 }
4565 
glVertexAttrib4fv_enc(void * self,GLuint indx,const GLfloat * values)4566 void glVertexAttrib4fv_enc(void *self , GLuint indx, const GLfloat* values)
4567 {
4568 	ENCODER_DEBUG_LOG("glVertexAttrib4fv(indx:%u, values:0x%08x)", indx, values);
4569 	AEMU_SCOPED_TRACE("glVertexAttrib4fv encode");
4570 
4571 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4572 	IOStream *stream = ctx->m_stream;
4573 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4574 	bool useChecksum = checksumCalculator->getVersion() > 0;
4575 
4576 	const unsigned int __size_values =  (4 * sizeof(GLfloat));
4577 	 unsigned char *ptr;
4578 	 unsigned char *buf;
4579 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4580 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4581 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4582 	buf = stream->alloc(totalSize);
4583 	ptr = buf;
4584 	int tmp = OP_glVertexAttrib4fv;memcpy(ptr, &tmp, 4); ptr += 4;
4585 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4586 
4587 		memcpy(ptr, &indx, 4); ptr += 4;
4588 	memcpy(ptr, &__size_values, 4); ptr += 4;
4589 	memcpy(ptr, values, __size_values);ptr += __size_values;
4590 
4591 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4592 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4593 
4594 }
4595 
glViewport_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height)4596 void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
4597 {
4598 	ENCODER_DEBUG_LOG("glViewport(x:%d, y:%d, width:%d, height:%d)", x, y, width, height);
4599 	AEMU_SCOPED_TRACE("glViewport encode");
4600 
4601 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4602 	IOStream *stream = ctx->m_stream;
4603 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4604 	bool useChecksum = checksumCalculator->getVersion() > 0;
4605 
4606 	 unsigned char *ptr;
4607 	 unsigned char *buf;
4608 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4609 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4610 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4611 	buf = stream->alloc(totalSize);
4612 	ptr = buf;
4613 	int tmp = OP_glViewport;memcpy(ptr, &tmp, 4); ptr += 4;
4614 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4615 
4616 		memcpy(ptr, &x, 4); ptr += 4;
4617 		memcpy(ptr, &y, 4); ptr += 4;
4618 		memcpy(ptr, &width, 4); ptr += 4;
4619 		memcpy(ptr, &height, 4); ptr += 4;
4620 
4621 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4622 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4623 
4624 }
4625 
glEGLImageTargetTexture2DOES_enc(void * self,GLenum target,GLeglImageOES image)4626 void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES image)
4627 {
4628 	ENCODER_DEBUG_LOG("glEGLImageTargetTexture2DOES(target:0x%08x, image:%p)", target, image);
4629 	AEMU_SCOPED_TRACE("glEGLImageTargetTexture2DOES encode");
4630 
4631 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4632 	IOStream *stream = ctx->m_stream;
4633 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4634 	bool useChecksum = checksumCalculator->getVersion() > 0;
4635 
4636 	 unsigned char *ptr;
4637 	 unsigned char *buf;
4638 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4639 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4640 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4641 	buf = stream->alloc(totalSize);
4642 	ptr = buf;
4643 	int tmp = OP_glEGLImageTargetTexture2DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4644 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4645 
4646 		memcpy(ptr, &target, 4); ptr += 4;
4647 		memcpy(ptr, &image, 4); ptr += 4;
4648 
4649 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4650 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4651 
4652 }
4653 
glEGLImageTargetRenderbufferStorageOES_enc(void * self,GLenum target,GLeglImageOES image)4654 void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeglImageOES image)
4655 {
4656 	ENCODER_DEBUG_LOG("glEGLImageTargetRenderbufferStorageOES(target:0x%08x, image:%p)", target, image);
4657 	AEMU_SCOPED_TRACE("glEGLImageTargetRenderbufferStorageOES encode");
4658 
4659 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4660 	IOStream *stream = ctx->m_stream;
4661 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4662 	bool useChecksum = checksumCalculator->getVersion() > 0;
4663 
4664 	 unsigned char *ptr;
4665 	 unsigned char *buf;
4666 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4667 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4668 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4669 	buf = stream->alloc(totalSize);
4670 	ptr = buf;
4671 	int tmp = OP_glEGLImageTargetRenderbufferStorageOES;memcpy(ptr, &tmp, 4); ptr += 4;
4672 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4673 
4674 		memcpy(ptr, &target, 4); ptr += 4;
4675 		memcpy(ptr, &image, 4); ptr += 4;
4676 
4677 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4678 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4679 
4680 }
4681 
glUnmapBufferOES_enc(void * self,GLenum target)4682 GLboolean glUnmapBufferOES_enc(void *self , GLenum target)
4683 {
4684 	ENCODER_DEBUG_LOG("glUnmapBufferOES(target:0x%08x)", target);
4685 	AEMU_SCOPED_TRACE("glUnmapBufferOES encode");
4686 
4687 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4688 	IOStream *stream = ctx->m_stream;
4689 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4690 	bool useChecksum = checksumCalculator->getVersion() > 0;
4691 
4692 	 unsigned char *ptr;
4693 	 unsigned char *buf;
4694 	 const size_t sizeWithoutChecksum = 8 + 4;
4695 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4696 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4697 	buf = stream->alloc(totalSize);
4698 	ptr = buf;
4699 	int tmp = OP_glUnmapBufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
4700 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4701 
4702 		memcpy(ptr, &target, 4); ptr += 4;
4703 
4704 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4705 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4706 
4707 
4708 	GLboolean retval;
4709 	stream->readback(&retval, 1);
4710 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
4711 	if (useChecksum) {
4712 		unsigned char *checksumBufPtr = NULL;
4713 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
4714 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
4715 		stream->readback(checksumBufPtr, checksumSize);
4716 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
4717 			ALOGE("glUnmapBufferOES: GL communication error, please report this issue to b.android.com.\n");
4718 			abort();
4719 		}
4720 	}
4721 	return retval;
4722 }
4723 
glTexImage3DOES_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * pixels)4724 void glTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
4725 {
4726 	ENCODER_DEBUG_LOG("glTexImage3DOES(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d, border:%d, format:0x%08x, type:0x%08x, pixels:0x%08x)", target, level, internalformat, width, height, depth, border, format, type, pixels);
4727 	AEMU_SCOPED_TRACE("glTexImage3DOES encode");
4728 
4729 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4730 	IOStream *stream = ctx->m_stream;
4731 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4732 	bool useChecksum = checksumCalculator->getVersion() > 0;
4733 
4734 	const unsigned int __size_pixels = ((pixels != NULL) ?  glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
4735 	 unsigned char *ptr;
4736 	 unsigned char *buf;
4737 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
4738 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4739 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4740 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4741 	ptr = buf;
4742 	int tmp = OP_glTexImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4743 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4744 
4745 		memcpy(ptr, &target, 4); ptr += 4;
4746 		memcpy(ptr, &level, 4); ptr += 4;
4747 		memcpy(ptr, &internalformat, 4); ptr += 4;
4748 		memcpy(ptr, &width, 4); ptr += 4;
4749 		memcpy(ptr, &height, 4); ptr += 4;
4750 		memcpy(ptr, &depth, 4); ptr += 4;
4751 		memcpy(ptr, &border, 4); ptr += 4;
4752 		memcpy(ptr, &format, 4); ptr += 4;
4753 		memcpy(ptr, &type, 4); ptr += 4;
4754 
4755 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4756 	stream->flush();
4757 	stream->writeFully(&__size_pixels,4);
4758 	if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
4759 	if (pixels != NULL) {
4760 		stream->writeFully(pixels, __size_pixels);
4761 		if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
4762 	}
4763 	buf = stream->alloc(checksumSize);
4764 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4765 
4766 }
4767 
glTexSubImage3DOES_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * pixels)4768 void glTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels)
4769 {
4770 	ENCODER_DEBUG_LOG("glTexSubImage3DOES(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, width:%d, height:%d, depth:%d, format:0x%08x, type:0x%08x, pixels:0x%08x)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
4771 	AEMU_SCOPED_TRACE("glTexSubImage3DOES encode");
4772 
4773 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4774 	IOStream *stream = ctx->m_stream;
4775 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4776 	bool useChecksum = checksumCalculator->getVersion() > 0;
4777 
4778 	const unsigned int __size_pixels = ((pixels != NULL) ?  glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
4779 	 unsigned char *ptr;
4780 	 unsigned char *buf;
4781 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
4782 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4783 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4784 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4785 	ptr = buf;
4786 	int tmp = OP_glTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4787 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4788 
4789 		memcpy(ptr, &target, 4); ptr += 4;
4790 		memcpy(ptr, &level, 4); ptr += 4;
4791 		memcpy(ptr, &xoffset, 4); ptr += 4;
4792 		memcpy(ptr, &yoffset, 4); ptr += 4;
4793 		memcpy(ptr, &zoffset, 4); ptr += 4;
4794 		memcpy(ptr, &width, 4); ptr += 4;
4795 		memcpy(ptr, &height, 4); ptr += 4;
4796 		memcpy(ptr, &depth, 4); ptr += 4;
4797 		memcpy(ptr, &format, 4); ptr += 4;
4798 		memcpy(ptr, &type, 4); ptr += 4;
4799 
4800 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4801 	stream->flush();
4802 	stream->writeFully(&__size_pixels,4);
4803 	if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
4804 	if (pixels != NULL) {
4805 		stream->writeFully(pixels, __size_pixels);
4806 		if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
4807 	}
4808 	buf = stream->alloc(checksumSize);
4809 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4810 
4811 }
4812 
glCopyTexSubImage3DOES_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)4813 void glCopyTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
4814 {
4815 	ENCODER_DEBUG_LOG("glCopyTexSubImage3DOES(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, x:%d, y:%d, width:%d, height:%d)", target, level, xoffset, yoffset, zoffset, x, y, width, height);
4816 	AEMU_SCOPED_TRACE("glCopyTexSubImage3DOES encode");
4817 
4818 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4819 	IOStream *stream = ctx->m_stream;
4820 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4821 	bool useChecksum = checksumCalculator->getVersion() > 0;
4822 
4823 	 unsigned char *ptr;
4824 	 unsigned char *buf;
4825 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
4826 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4827 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4828 	buf = stream->alloc(totalSize);
4829 	ptr = buf;
4830 	int tmp = OP_glCopyTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4831 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4832 
4833 		memcpy(ptr, &target, 4); ptr += 4;
4834 		memcpy(ptr, &level, 4); ptr += 4;
4835 		memcpy(ptr, &xoffset, 4); ptr += 4;
4836 		memcpy(ptr, &yoffset, 4); ptr += 4;
4837 		memcpy(ptr, &zoffset, 4); ptr += 4;
4838 		memcpy(ptr, &x, 4); ptr += 4;
4839 		memcpy(ptr, &y, 4); ptr += 4;
4840 		memcpy(ptr, &width, 4); ptr += 4;
4841 		memcpy(ptr, &height, 4); ptr += 4;
4842 
4843 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4844 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4845 
4846 }
4847 
glCompressedTexImage3DOES_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)4848 void glCompressedTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
4849 {
4850 	ENCODER_DEBUG_LOG("glCompressedTexImage3DOES(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d, border:%d, imageSize:%d, data:0x%08x)", target, level, internalformat, width, height, depth, border, imageSize, data);
4851 	AEMU_SCOPED_TRACE("glCompressedTexImage3DOES encode");
4852 
4853 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4854 	IOStream *stream = ctx->m_stream;
4855 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4856 	bool useChecksum = checksumCalculator->getVersion() > 0;
4857 
4858 	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
4859 	 unsigned char *ptr;
4860 	 unsigned char *buf;
4861 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
4862 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4863 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4864 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4865 	ptr = buf;
4866 	int tmp = OP_glCompressedTexImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4867 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4868 
4869 		memcpy(ptr, &target, 4); ptr += 4;
4870 		memcpy(ptr, &level, 4); ptr += 4;
4871 		memcpy(ptr, &internalformat, 4); ptr += 4;
4872 		memcpy(ptr, &width, 4); ptr += 4;
4873 		memcpy(ptr, &height, 4); ptr += 4;
4874 		memcpy(ptr, &depth, 4); ptr += 4;
4875 		memcpy(ptr, &border, 4); ptr += 4;
4876 		memcpy(ptr, &imageSize, 4); ptr += 4;
4877 
4878 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4879 	stream->flush();
4880 	stream->writeFully(&__size_data,4);
4881 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
4882 	if (data != NULL) {
4883 		stream->writeFully(data, __size_data);
4884 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
4885 	}
4886 	buf = stream->alloc(checksumSize);
4887 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4888 
4889 }
4890 
glCompressedTexSubImage3DOES_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)4891 void glCompressedTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
4892 {
4893 	ENCODER_DEBUG_LOG("glCompressedTexSubImage3DOES(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, width:%d, height:%d, depth:%d, format:0x%08x, imageSize:%d, data:0x%08x)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
4894 	AEMU_SCOPED_TRACE("glCompressedTexSubImage3DOES encode");
4895 
4896 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4897 	IOStream *stream = ctx->m_stream;
4898 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4899 	bool useChecksum = checksumCalculator->getVersion() > 0;
4900 
4901 	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
4902 	 unsigned char *ptr;
4903 	 unsigned char *buf;
4904 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
4905 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4906 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4907 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4908 	ptr = buf;
4909 	int tmp = OP_glCompressedTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4910 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4911 
4912 		memcpy(ptr, &target, 4); ptr += 4;
4913 		memcpy(ptr, &level, 4); ptr += 4;
4914 		memcpy(ptr, &xoffset, 4); ptr += 4;
4915 		memcpy(ptr, &yoffset, 4); ptr += 4;
4916 		memcpy(ptr, &zoffset, 4); ptr += 4;
4917 		memcpy(ptr, &width, 4); ptr += 4;
4918 		memcpy(ptr, &height, 4); ptr += 4;
4919 		memcpy(ptr, &depth, 4); ptr += 4;
4920 		memcpy(ptr, &format, 4); ptr += 4;
4921 		memcpy(ptr, &imageSize, 4); ptr += 4;
4922 
4923 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4924 	stream->flush();
4925 	stream->writeFully(&__size_data,4);
4926 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
4927 	if (data != NULL) {
4928 		stream->writeFully(data, __size_data);
4929 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
4930 	}
4931 	buf = stream->alloc(checksumSize);
4932 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4933 
4934 }
4935 
glFramebufferTexture3DOES_enc(void * self,GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level,GLint zoffset)4936 void glFramebufferTexture3DOES_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
4937 {
4938 	ENCODER_DEBUG_LOG("glFramebufferTexture3DOES(target:0x%08x, attachment:0x%08x, textarget:0x%08x, texture:%u, level:%d, zoffset:%d)", target, attachment, textarget, texture, level, zoffset);
4939 	AEMU_SCOPED_TRACE("glFramebufferTexture3DOES encode");
4940 
4941 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4942 	IOStream *stream = ctx->m_stream;
4943 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4944 	bool useChecksum = checksumCalculator->getVersion() > 0;
4945 
4946 	 unsigned char *ptr;
4947 	 unsigned char *buf;
4948 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
4949 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4950 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4951 	buf = stream->alloc(totalSize);
4952 	ptr = buf;
4953 	int tmp = OP_glFramebufferTexture3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4954 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4955 
4956 		memcpy(ptr, &target, 4); ptr += 4;
4957 		memcpy(ptr, &attachment, 4); ptr += 4;
4958 		memcpy(ptr, &textarget, 4); ptr += 4;
4959 		memcpy(ptr, &texture, 4); ptr += 4;
4960 		memcpy(ptr, &level, 4); ptr += 4;
4961 		memcpy(ptr, &zoffset, 4); ptr += 4;
4962 
4963 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4964 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4965 
4966 }
4967 
glBindVertexArrayOES_enc(void * self,GLuint array)4968 void glBindVertexArrayOES_enc(void *self , GLuint array)
4969 {
4970 	ENCODER_DEBUG_LOG("glBindVertexArrayOES(array:%u)", array);
4971 	AEMU_SCOPED_TRACE("glBindVertexArrayOES encode");
4972 
4973 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4974 	IOStream *stream = ctx->m_stream;
4975 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4976 	bool useChecksum = checksumCalculator->getVersion() > 0;
4977 
4978 	 unsigned char *ptr;
4979 	 unsigned char *buf;
4980 	 const size_t sizeWithoutChecksum = 8 + 4;
4981 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4982 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4983 	buf = stream->alloc(totalSize);
4984 	ptr = buf;
4985 	int tmp = OP_glBindVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
4986 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4987 
4988 		memcpy(ptr, &array, 4); ptr += 4;
4989 
4990 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4991 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4992 
4993 }
4994 
glDeleteVertexArraysOES_enc(void * self,GLsizei n,const GLuint * arrays)4995 void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays)
4996 {
4997 	ENCODER_DEBUG_LOG("glDeleteVertexArraysOES(n:%d, arrays:0x%08x)", n, arrays);
4998 	AEMU_SCOPED_TRACE("glDeleteVertexArraysOES encode");
4999 
5000 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5001 	IOStream *stream = ctx->m_stream;
5002 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5003 	bool useChecksum = checksumCalculator->getVersion() > 0;
5004 
5005 	const unsigned int __size_arrays =  (n * sizeof(GLuint));
5006 	 unsigned char *ptr;
5007 	 unsigned char *buf;
5008 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
5009 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5010 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5011 	buf = stream->alloc(totalSize);
5012 	ptr = buf;
5013 	int tmp = OP_glDeleteVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
5014 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5015 
5016 		memcpy(ptr, &n, 4); ptr += 4;
5017 	memcpy(ptr, &__size_arrays, 4); ptr += 4;
5018 	memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
5019 
5020 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5021 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5022 
5023 }
5024 
glGenVertexArraysOES_enc(void * self,GLsizei n,GLuint * arrays)5025 void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays)
5026 {
5027 	ENCODER_DEBUG_LOG("glGenVertexArraysOES(n:%d, arrays:0x%08x)", n, arrays);
5028 	AEMU_SCOPED_TRACE("glGenVertexArraysOES encode");
5029 
5030 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5031 	IOStream *stream = ctx->m_stream;
5032 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5033 	bool useChecksum = checksumCalculator->getVersion() > 0;
5034 
5035 	const unsigned int __size_arrays =  (n * sizeof(GLuint));
5036 	 unsigned char *ptr;
5037 	 unsigned char *buf;
5038 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5039 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5040 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5041 	buf = stream->alloc(totalSize);
5042 	ptr = buf;
5043 	int tmp = OP_glGenVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
5044 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5045 
5046 		memcpy(ptr, &n, 4); ptr += 4;
5047 	memcpy(ptr, &__size_arrays, 4); ptr += 4;
5048 
5049 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5050 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5051 
5052 	stream->readback(arrays, __size_arrays);
5053 	if (useChecksum) checksumCalculator->addBuffer(arrays, __size_arrays);
5054 	if (useChecksum) {
5055 		unsigned char *checksumBufPtr = NULL;
5056 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5057 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5058 		stream->readback(checksumBufPtr, checksumSize);
5059 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5060 			ALOGE("glGenVertexArraysOES: GL communication error, please report this issue to b.android.com.\n");
5061 			abort();
5062 		}
5063 	}
5064 }
5065 
glIsVertexArrayOES_enc(void * self,GLuint array)5066 GLboolean glIsVertexArrayOES_enc(void *self , GLuint array)
5067 {
5068 	ENCODER_DEBUG_LOG("glIsVertexArrayOES(array:%u)", array);
5069 	AEMU_SCOPED_TRACE("glIsVertexArrayOES encode");
5070 
5071 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5072 	IOStream *stream = ctx->m_stream;
5073 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5074 	bool useChecksum = checksumCalculator->getVersion() > 0;
5075 
5076 	 unsigned char *ptr;
5077 	 unsigned char *buf;
5078 	 const size_t sizeWithoutChecksum = 8 + 4;
5079 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5080 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5081 	buf = stream->alloc(totalSize);
5082 	ptr = buf;
5083 	int tmp = OP_glIsVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
5084 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5085 
5086 		memcpy(ptr, &array, 4); ptr += 4;
5087 
5088 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5089 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5090 
5091 
5092 	GLboolean retval;
5093 	stream->readback(&retval, 1);
5094 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
5095 	if (useChecksum) {
5096 		unsigned char *checksumBufPtr = NULL;
5097 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5098 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5099 		stream->readback(checksumBufPtr, checksumSize);
5100 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5101 			ALOGE("glIsVertexArrayOES: GL communication error, please report this issue to b.android.com.\n");
5102 			abort();
5103 		}
5104 	}
5105 	return retval;
5106 }
5107 
glDiscardFramebufferEXT_enc(void * self,GLenum target,GLsizei numAttachments,const GLenum * attachments)5108 void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments)
5109 {
5110 	ENCODER_DEBUG_LOG("glDiscardFramebufferEXT(target:0x%08x, numAttachments:%d, attachments:0x%08x)", target, numAttachments, attachments);
5111 	AEMU_SCOPED_TRACE("glDiscardFramebufferEXT encode");
5112 
5113 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5114 	IOStream *stream = ctx->m_stream;
5115 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5116 	bool useChecksum = checksumCalculator->getVersion() > 0;
5117 
5118 	const unsigned int __size_attachments =  (numAttachments * sizeof(GLenum));
5119 	 unsigned char *ptr;
5120 	 unsigned char *buf;
5121 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 1*4;
5122 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5123 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5124 	buf = stream->alloc(totalSize);
5125 	ptr = buf;
5126 	int tmp = OP_glDiscardFramebufferEXT;memcpy(ptr, &tmp, 4); ptr += 4;
5127 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5128 
5129 		memcpy(ptr, &target, 4); ptr += 4;
5130 		memcpy(ptr, &numAttachments, 4); ptr += 4;
5131 	memcpy(ptr, &__size_attachments, 4); ptr += 4;
5132 	memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
5133 
5134 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5135 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5136 
5137 }
5138 
glVertexAttribPointerData_enc(void * self,GLuint indx,GLint size,GLenum type,GLboolean normalized,GLsizei stride,void * data,GLuint datalen)5139 void glVertexAttribPointerData_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void* data, GLuint datalen)
5140 {
5141 	ENCODER_DEBUG_LOG("glVertexAttribPointerData(indx:%u, size:%d, type:0x%08x, normalized:%d, stride:%d, data:0x%08x, datalen:%u)", indx, size, type, normalized, stride, data, datalen);
5142 	AEMU_SCOPED_TRACE("glVertexAttribPointerData encode");
5143 
5144 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5145 	IOStream *stream = ctx->m_stream;
5146 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5147 	bool useChecksum = checksumCalculator->getVersion() > 0;
5148 
5149 	const unsigned int __size_data =  datalen;
5150 	 unsigned char *ptr;
5151 	 unsigned char *buf;
5152 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + __size_data + 4 + 1*4;
5153 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5154 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5155 	buf = stream->alloc(totalSize);
5156 	ptr = buf;
5157 	int tmp = OP_glVertexAttribPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
5158 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5159 
5160 		memcpy(ptr, &indx, 4); ptr += 4;
5161 		memcpy(ptr, &size, 4); ptr += 4;
5162 		memcpy(ptr, &type, 4); ptr += 4;
5163 		memcpy(ptr, &normalized, 1); ptr += 1;
5164 		memcpy(ptr, &stride, 4); ptr += 4;
5165 	memcpy(ptr, &__size_data, 4); ptr += 4;
5166 	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
5167 		memcpy(ptr, &datalen, 4); ptr += 4;
5168 
5169 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5170 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5171 
5172 }
5173 
glVertexAttribPointerOffset_enc(void * self,GLuint indx,GLint size,GLenum type,GLboolean normalized,GLsizei stride,GLuint offset)5174 void glVertexAttribPointerOffset_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint offset)
5175 {
5176 	ENCODER_DEBUG_LOG("glVertexAttribPointerOffset(indx:%u, size:%d, type:0x%08x, normalized:%d, stride:%d, offset:%u)", indx, size, type, normalized, stride, offset);
5177 	AEMU_SCOPED_TRACE("glVertexAttribPointerOffset encode");
5178 
5179 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5180 	IOStream *stream = ctx->m_stream;
5181 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5182 	bool useChecksum = checksumCalculator->getVersion() > 0;
5183 
5184 	 unsigned char *ptr;
5185 	 unsigned char *buf;
5186 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + 4;
5187 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5188 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5189 	buf = stream->alloc(totalSize);
5190 	ptr = buf;
5191 	int tmp = OP_glVertexAttribPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
5192 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5193 
5194 		memcpy(ptr, &indx, 4); ptr += 4;
5195 		memcpy(ptr, &size, 4); ptr += 4;
5196 		memcpy(ptr, &type, 4); ptr += 4;
5197 		memcpy(ptr, &normalized, 1); ptr += 1;
5198 		memcpy(ptr, &stride, 4); ptr += 4;
5199 		memcpy(ptr, &offset, 4); ptr += 4;
5200 
5201 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5202 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5203 
5204 }
5205 
glDrawElementsOffset_enc(void * self,GLenum mode,GLsizei count,GLenum type,GLuint offset)5206 void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset)
5207 {
5208 	ENCODER_DEBUG_LOG("glDrawElementsOffset(mode:0x%08x, count:%d, type:0x%08x, offset:%u)", mode, count, type, offset);
5209 	AEMU_SCOPED_TRACE("glDrawElementsOffset encode");
5210 
5211 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5212 	IOStream *stream = ctx->m_stream;
5213 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5214 	bool useChecksum = checksumCalculator->getVersion() > 0;
5215 
5216 	 unsigned char *ptr;
5217 	 unsigned char *buf;
5218 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
5219 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5220 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5221 	buf = stream->alloc(totalSize);
5222 	ptr = buf;
5223 	int tmp = OP_glDrawElementsOffset;memcpy(ptr, &tmp, 4); ptr += 4;
5224 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5225 
5226 		memcpy(ptr, &mode, 4); ptr += 4;
5227 		memcpy(ptr, &count, 4); ptr += 4;
5228 		memcpy(ptr, &type, 4); ptr += 4;
5229 		memcpy(ptr, &offset, 4); ptr += 4;
5230 
5231 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5232 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5233 
5234 }
5235 
glDrawElementsData_enc(void * self,GLenum mode,GLsizei count,GLenum type,void * data,GLuint datalen)5236 void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
5237 {
5238 	ENCODER_DEBUG_LOG("glDrawElementsData(mode:0x%08x, count:%d, type:0x%08x, data:0x%08x, datalen:%u)", mode, count, type, data, datalen);
5239 	AEMU_SCOPED_TRACE("glDrawElementsData encode");
5240 
5241 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5242 	IOStream *stream = ctx->m_stream;
5243 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5244 	bool useChecksum = checksumCalculator->getVersion() > 0;
5245 
5246 	const unsigned int __size_data =  datalen;
5247 	 unsigned char *ptr;
5248 	 unsigned char *buf;
5249 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
5250 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5251 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5252 	buf = stream->alloc(totalSize);
5253 	ptr = buf;
5254 	int tmp = OP_glDrawElementsData;memcpy(ptr, &tmp, 4); ptr += 4;
5255 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5256 
5257 		memcpy(ptr, &mode, 4); ptr += 4;
5258 		memcpy(ptr, &count, 4); ptr += 4;
5259 		memcpy(ptr, &type, 4); ptr += 4;
5260 	memcpy(ptr, &__size_data, 4); ptr += 4;
5261 	memcpy(ptr, data, __size_data);ptr += __size_data;
5262 		memcpy(ptr, &datalen, 4); ptr += 4;
5263 
5264 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5265 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5266 
5267 }
5268 
glGetCompressedTextureFormats_enc(void * self,int count,GLint * formats)5269 void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats)
5270 {
5271 	ENCODER_DEBUG_LOG("glGetCompressedTextureFormats(count:%d, formats:0x%08x)", count, formats);
5272 	AEMU_SCOPED_TRACE("glGetCompressedTextureFormats encode");
5273 
5274 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5275 	IOStream *stream = ctx->m_stream;
5276 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5277 	bool useChecksum = checksumCalculator->getVersion() > 0;
5278 
5279 	const unsigned int __size_formats =  (count * sizeof(GLint));
5280 	 unsigned char *ptr;
5281 	 unsigned char *buf;
5282 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5283 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5284 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5285 	buf = stream->alloc(totalSize);
5286 	ptr = buf;
5287 	int tmp = OP_glGetCompressedTextureFormats;memcpy(ptr, &tmp, 4); ptr += 4;
5288 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5289 
5290 		memcpy(ptr, &count, 4); ptr += 4;
5291 	memcpy(ptr, &__size_formats, 4); ptr += 4;
5292 
5293 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5294 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5295 
5296 	stream->readback(formats, __size_formats);
5297 	if (useChecksum) checksumCalculator->addBuffer(formats, __size_formats);
5298 	if (useChecksum) {
5299 		unsigned char *checksumBufPtr = NULL;
5300 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5301 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5302 		stream->readback(checksumBufPtr, checksumSize);
5303 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5304 			ALOGE("glGetCompressedTextureFormats: GL communication error, please report this issue to b.android.com.\n");
5305 			abort();
5306 		}
5307 	}
5308 }
5309 
glShaderString_enc(void * self,GLuint shader,const GLchar * string,GLsizei len)5310 void glShaderString_enc(void *self , GLuint shader, const GLchar* string, GLsizei len)
5311 {
5312 	ENCODER_DEBUG_LOG("glShaderString(shader:%u, string:0x%08x, len:%d)", shader, string, len);
5313 	AEMU_SCOPED_TRACE("glShaderString encode");
5314 
5315 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5316 	IOStream *stream = ctx->m_stream;
5317 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5318 	bool useChecksum = checksumCalculator->getVersion() > 0;
5319 
5320 	const unsigned int __size_string =  len;
5321 	 unsigned char *ptr;
5322 	 unsigned char *buf;
5323 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_string + 4 + 1*4;
5324 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5325 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5326 	buf = stream->alloc(totalSize);
5327 	ptr = buf;
5328 	int tmp = OP_glShaderString;memcpy(ptr, &tmp, 4); ptr += 4;
5329 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5330 
5331 		memcpy(ptr, &shader, 4); ptr += 4;
5332 	memcpy(ptr, &__size_string, 4); ptr += 4;
5333 	memcpy(ptr, string, __size_string);ptr += __size_string;
5334 		memcpy(ptr, &len, 4); ptr += 4;
5335 
5336 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5337 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5338 
5339 }
5340 
glFinishRoundTrip_enc(void * self)5341 int glFinishRoundTrip_enc(void *self )
5342 {
5343 	ENCODER_DEBUG_LOG("glFinishRoundTrip()");
5344 	AEMU_SCOPED_TRACE("glFinishRoundTrip encode");
5345 
5346 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5347 	IOStream *stream = ctx->m_stream;
5348 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5349 	bool useChecksum = checksumCalculator->getVersion() > 0;
5350 
5351 	 unsigned char *ptr;
5352 	 unsigned char *buf;
5353 	 const size_t sizeWithoutChecksum = 8;
5354 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5355 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5356 	buf = stream->alloc(totalSize);
5357 	ptr = buf;
5358 	int tmp = OP_glFinishRoundTrip;memcpy(ptr, &tmp, 4); ptr += 4;
5359 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5360 
5361 
5362 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5363 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5364 
5365 
5366 	int retval;
5367 	stream->readback(&retval, 4);
5368 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
5369 	if (useChecksum) {
5370 		unsigned char *checksumBufPtr = NULL;
5371 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5372 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5373 		stream->readback(checksumBufPtr, checksumSize);
5374 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5375 			ALOGE("glFinishRoundTrip: GL communication error, please report this issue to b.android.com.\n");
5376 			abort();
5377 		}
5378 	}
5379 	return retval;
5380 }
5381 
glGenVertexArrays_enc(void * self,GLsizei n,GLuint * arrays)5382 void glGenVertexArrays_enc(void *self , GLsizei n, GLuint* arrays)
5383 {
5384 	ENCODER_DEBUG_LOG("glGenVertexArrays(n:%d, arrays:0x%08x)", n, arrays);
5385 	AEMU_SCOPED_TRACE("glGenVertexArrays encode");
5386 
5387 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5388 	IOStream *stream = ctx->m_stream;
5389 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5390 	bool useChecksum = checksumCalculator->getVersion() > 0;
5391 
5392 	const unsigned int __size_arrays =  (n * sizeof(GLuint));
5393 	 unsigned char *ptr;
5394 	 unsigned char *buf;
5395 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5396 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5397 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5398 	buf = stream->alloc(totalSize);
5399 	ptr = buf;
5400 	int tmp = OP_glGenVertexArrays;memcpy(ptr, &tmp, 4); ptr += 4;
5401 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5402 
5403 		memcpy(ptr, &n, 4); ptr += 4;
5404 	memcpy(ptr, &__size_arrays, 4); ptr += 4;
5405 
5406 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5407 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5408 
5409 	stream->readback(arrays, __size_arrays);
5410 	if (useChecksum) checksumCalculator->addBuffer(arrays, __size_arrays);
5411 	if (useChecksum) {
5412 		unsigned char *checksumBufPtr = NULL;
5413 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5414 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5415 		stream->readback(checksumBufPtr, checksumSize);
5416 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5417 			ALOGE("glGenVertexArrays: GL communication error, please report this issue to b.android.com.\n");
5418 			abort();
5419 		}
5420 	}
5421 }
5422 
glBindVertexArray_enc(void * self,GLuint array)5423 void glBindVertexArray_enc(void *self , GLuint array)
5424 {
5425 	ENCODER_DEBUG_LOG("glBindVertexArray(array:%u)", array);
5426 	AEMU_SCOPED_TRACE("glBindVertexArray encode");
5427 
5428 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5429 	IOStream *stream = ctx->m_stream;
5430 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5431 	bool useChecksum = checksumCalculator->getVersion() > 0;
5432 
5433 	 unsigned char *ptr;
5434 	 unsigned char *buf;
5435 	 const size_t sizeWithoutChecksum = 8 + 4;
5436 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5437 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5438 	buf = stream->alloc(totalSize);
5439 	ptr = buf;
5440 	int tmp = OP_glBindVertexArray;memcpy(ptr, &tmp, 4); ptr += 4;
5441 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5442 
5443 		memcpy(ptr, &array, 4); ptr += 4;
5444 
5445 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5446 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5447 
5448 }
5449 
glDeleteVertexArrays_enc(void * self,GLsizei n,const GLuint * arrays)5450 void glDeleteVertexArrays_enc(void *self , GLsizei n, const GLuint* arrays)
5451 {
5452 	ENCODER_DEBUG_LOG("glDeleteVertexArrays(n:%d, arrays:0x%08x)", n, arrays);
5453 	AEMU_SCOPED_TRACE("glDeleteVertexArrays encode");
5454 
5455 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5456 	IOStream *stream = ctx->m_stream;
5457 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5458 	bool useChecksum = checksumCalculator->getVersion() > 0;
5459 
5460 	const unsigned int __size_arrays =  (n * sizeof(GLuint));
5461 	 unsigned char *ptr;
5462 	 unsigned char *buf;
5463 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
5464 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5465 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5466 	buf = stream->alloc(totalSize);
5467 	ptr = buf;
5468 	int tmp = OP_glDeleteVertexArrays;memcpy(ptr, &tmp, 4); ptr += 4;
5469 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5470 
5471 		memcpy(ptr, &n, 4); ptr += 4;
5472 	memcpy(ptr, &__size_arrays, 4); ptr += 4;
5473 	memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
5474 
5475 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5476 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5477 
5478 }
5479 
glIsVertexArray_enc(void * self,GLuint array)5480 GLboolean glIsVertexArray_enc(void *self , GLuint array)
5481 {
5482 	ENCODER_DEBUG_LOG("glIsVertexArray(array:%u)", array);
5483 	AEMU_SCOPED_TRACE("glIsVertexArray encode");
5484 
5485 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5486 	IOStream *stream = ctx->m_stream;
5487 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5488 	bool useChecksum = checksumCalculator->getVersion() > 0;
5489 
5490 	 unsigned char *ptr;
5491 	 unsigned char *buf;
5492 	 const size_t sizeWithoutChecksum = 8 + 4;
5493 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5494 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5495 	buf = stream->alloc(totalSize);
5496 	ptr = buf;
5497 	int tmp = OP_glIsVertexArray;memcpy(ptr, &tmp, 4); ptr += 4;
5498 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5499 
5500 		memcpy(ptr, &array, 4); ptr += 4;
5501 
5502 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5503 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5504 
5505 
5506 	GLboolean retval;
5507 	stream->readback(&retval, 1);
5508 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
5509 	if (useChecksum) {
5510 		unsigned char *checksumBufPtr = NULL;
5511 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5512 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5513 		stream->readback(checksumBufPtr, checksumSize);
5514 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5515 			ALOGE("glIsVertexArray: GL communication error, please report this issue to b.android.com.\n");
5516 			abort();
5517 		}
5518 	}
5519 	return retval;
5520 }
5521 
glMapBufferRangeAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * mapped)5522 void glMapBufferRangeAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* mapped)
5523 {
5524 	ENCODER_DEBUG_LOG("glMapBufferRangeAEMU(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, mapped:0x%08x)", target, offset, length, access, mapped);
5525 	AEMU_SCOPED_TRACE("glMapBufferRangeAEMU encode");
5526 
5527 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5528 	IOStream *stream = ctx->m_stream;
5529 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5530 	bool useChecksum = checksumCalculator->getVersion() > 0;
5531 
5532 	const unsigned int __size_mapped = ((mapped != NULL) ?  length : 0);
5533 	 unsigned char *ptr;
5534 	 unsigned char *buf;
5535 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 1*4;
5536 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5537 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5538 	buf = stream->alloc(totalSize);
5539 	ptr = buf;
5540 	int tmp = OP_glMapBufferRangeAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5541 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5542 
5543 		memcpy(ptr, &target, 4); ptr += 4;
5544 		memcpy(ptr, &offset, 4); ptr += 4;
5545 		memcpy(ptr, &length, 4); ptr += 4;
5546 		memcpy(ptr, &access, 4); ptr += 4;
5547 	memcpy(ptr, &__size_mapped, 4); ptr += 4;
5548 
5549 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5550 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5551 
5552 	if (mapped != NULL) {
5553 		stream->readback(mapped, __size_mapped);
5554 		if (useChecksum) checksumCalculator->addBuffer(mapped, __size_mapped);
5555 	}
5556 	if (useChecksum) {
5557 		unsigned char *checksumBufPtr = NULL;
5558 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5559 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5560 		stream->readback(checksumBufPtr, checksumSize);
5561 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5562 			ALOGE("glMapBufferRangeAEMU: GL communication error, please report this issue to b.android.com.\n");
5563 			abort();
5564 		}
5565 	}
5566 }
5567 
glUnmapBufferAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer,GLboolean * out_res)5568 void glUnmapBufferAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer, GLboolean* out_res)
5569 {
5570 	ENCODER_DEBUG_LOG("glUnmapBufferAEMU(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, guest_buffer:0x%08x, out_res:0x%08x)", target, offset, length, access, guest_buffer, out_res);
5571 	AEMU_SCOPED_TRACE("glUnmapBufferAEMU encode");
5572 
5573 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5574 	IOStream *stream = ctx->m_stream;
5575 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5576 	bool useChecksum = checksumCalculator->getVersion() > 0;
5577 
5578 	const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ?  length : 0);
5579 	const unsigned int __size_out_res =  (sizeof(GLboolean));
5580 	 unsigned char *ptr;
5581 	 unsigned char *buf;
5582 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + 0 + 2*4;
5583 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5584 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5585 	buf = stream->alloc(totalSize);
5586 	ptr = buf;
5587 	int tmp = OP_glUnmapBufferAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5588 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5589 
5590 		memcpy(ptr, &target, 4); ptr += 4;
5591 		memcpy(ptr, &offset, 4); ptr += 4;
5592 		memcpy(ptr, &length, 4); ptr += 4;
5593 		memcpy(ptr, &access, 4); ptr += 4;
5594 	memcpy(ptr, &__size_guest_buffer, 4); ptr += 4;
5595 	if (guest_buffer != NULL) memcpy(ptr, guest_buffer, __size_guest_buffer);ptr += __size_guest_buffer;
5596 	memcpy(ptr, &__size_out_res, 4); ptr += 4;
5597 
5598 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5599 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5600 
5601 	stream->readback(out_res, __size_out_res);
5602 	if (useChecksum) checksumCalculator->addBuffer(out_res, __size_out_res);
5603 	if (useChecksum) {
5604 		unsigned char *checksumBufPtr = NULL;
5605 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5606 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5607 		stream->readback(checksumBufPtr, checksumSize);
5608 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5609 			ALOGE("glUnmapBufferAEMU: GL communication error, please report this issue to b.android.com.\n");
5610 			abort();
5611 		}
5612 	}
5613 }
5614 
glFlushMappedBufferRangeAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer)5615 void glFlushMappedBufferRangeAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer)
5616 {
5617 	ENCODER_DEBUG_LOG("glFlushMappedBufferRangeAEMU(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, guest_buffer:0x%08x)", target, offset, length, access, guest_buffer);
5618 	AEMU_SCOPED_TRACE("glFlushMappedBufferRangeAEMU encode");
5619 
5620 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5621 	IOStream *stream = ctx->m_stream;
5622 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5623 	bool useChecksum = checksumCalculator->getVersion() > 0;
5624 
5625 	const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ?  length : 0);
5626 	 unsigned char *ptr;
5627 	 unsigned char *buf;
5628 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + 1*4;
5629 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5630 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5631 	buf = stream->alloc(totalSize);
5632 	ptr = buf;
5633 	int tmp = OP_glFlushMappedBufferRangeAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5634 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5635 
5636 		memcpy(ptr, &target, 4); ptr += 4;
5637 		memcpy(ptr, &offset, 4); ptr += 4;
5638 		memcpy(ptr, &length, 4); ptr += 4;
5639 		memcpy(ptr, &access, 4); ptr += 4;
5640 	memcpy(ptr, &__size_guest_buffer, 4); ptr += 4;
5641 	if (guest_buffer != NULL) memcpy(ptr, guest_buffer, __size_guest_buffer);ptr += __size_guest_buffer;
5642 
5643 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5644 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5645 
5646 }
5647 
glReadPixelsOffsetAEMU_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLuint offset)5648 void glReadPixelsOffsetAEMU_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLuint offset)
5649 {
5650 	ENCODER_DEBUG_LOG("glReadPixelsOffsetAEMU(x:%d, y:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, offset:%u)", x, y, width, height, format, type, offset);
5651 	AEMU_SCOPED_TRACE("glReadPixelsOffsetAEMU encode");
5652 
5653 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5654 	IOStream *stream = ctx->m_stream;
5655 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5656 	bool useChecksum = checksumCalculator->getVersion() > 0;
5657 
5658 	 unsigned char *ptr;
5659 	 unsigned char *buf;
5660 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5661 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5662 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5663 	buf = stream->alloc(totalSize);
5664 	ptr = buf;
5665 	int tmp = OP_glReadPixelsOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5666 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5667 
5668 		memcpy(ptr, &x, 4); ptr += 4;
5669 		memcpy(ptr, &y, 4); ptr += 4;
5670 		memcpy(ptr, &width, 4); ptr += 4;
5671 		memcpy(ptr, &height, 4); ptr += 4;
5672 		memcpy(ptr, &format, 4); ptr += 4;
5673 		memcpy(ptr, &type, 4); ptr += 4;
5674 		memcpy(ptr, &offset, 4); ptr += 4;
5675 
5676 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5677 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5678 
5679 }
5680 
glCompressedTexImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,GLuint offset)5681 void glCompressedTexImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, GLuint offset)
5682 {
5683 	ENCODER_DEBUG_LOG("glCompressedTexImage2DOffsetAEMU(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, border:%d, imageSize:%d, offset:%u)", target, level, internalformat, width, height, border, imageSize, offset);
5684 	AEMU_SCOPED_TRACE("glCompressedTexImage2DOffsetAEMU encode");
5685 
5686 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5687 	IOStream *stream = ctx->m_stream;
5688 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5689 	bool useChecksum = checksumCalculator->getVersion() > 0;
5690 
5691 	 unsigned char *ptr;
5692 	 unsigned char *buf;
5693 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5694 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5695 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5696 	buf = stream->alloc(totalSize);
5697 	ptr = buf;
5698 	int tmp = OP_glCompressedTexImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5699 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5700 
5701 		memcpy(ptr, &target, 4); ptr += 4;
5702 		memcpy(ptr, &level, 4); ptr += 4;
5703 		memcpy(ptr, &internalformat, 4); ptr += 4;
5704 		memcpy(ptr, &width, 4); ptr += 4;
5705 		memcpy(ptr, &height, 4); ptr += 4;
5706 		memcpy(ptr, &border, 4); ptr += 4;
5707 		memcpy(ptr, &imageSize, 4); ptr += 4;
5708 		memcpy(ptr, &offset, 4); ptr += 4;
5709 
5710 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5711 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5712 
5713 }
5714 
glCompressedTexSubImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,GLuint offset)5715 void glCompressedTexSubImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLuint offset)
5716 {
5717 	ENCODER_DEBUG_LOG("glCompressedTexSubImage2DOffsetAEMU(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, width:%d, height:%d, format:0x%08x, imageSize:%d, offset:%u)", target, level, xoffset, yoffset, width, height, format, imageSize, offset);
5718 	AEMU_SCOPED_TRACE("glCompressedTexSubImage2DOffsetAEMU encode");
5719 
5720 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5721 	IOStream *stream = ctx->m_stream;
5722 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5723 	bool useChecksum = checksumCalculator->getVersion() > 0;
5724 
5725 	 unsigned char *ptr;
5726 	 unsigned char *buf;
5727 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5728 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5729 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5730 	buf = stream->alloc(totalSize);
5731 	ptr = buf;
5732 	int tmp = OP_glCompressedTexSubImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5733 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5734 
5735 		memcpy(ptr, &target, 4); ptr += 4;
5736 		memcpy(ptr, &level, 4); ptr += 4;
5737 		memcpy(ptr, &xoffset, 4); ptr += 4;
5738 		memcpy(ptr, &yoffset, 4); ptr += 4;
5739 		memcpy(ptr, &width, 4); ptr += 4;
5740 		memcpy(ptr, &height, 4); ptr += 4;
5741 		memcpy(ptr, &format, 4); ptr += 4;
5742 		memcpy(ptr, &imageSize, 4); ptr += 4;
5743 		memcpy(ptr, &offset, 4); ptr += 4;
5744 
5745 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5746 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5747 
5748 }
5749 
glTexImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,GLuint offset)5750 void glTexImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLuint offset)
5751 {
5752 	ENCODER_DEBUG_LOG("glTexImage2DOffsetAEMU(target:0x%08x, level:%d, internalformat:%d, width:%d, height:%d, border:%d, format:0x%08x, type:0x%08x, offset:%u)", target, level, internalformat, width, height, border, format, type, offset);
5753 	AEMU_SCOPED_TRACE("glTexImage2DOffsetAEMU encode");
5754 
5755 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5756 	IOStream *stream = ctx->m_stream;
5757 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5758 	bool useChecksum = checksumCalculator->getVersion() > 0;
5759 
5760 	 unsigned char *ptr;
5761 	 unsigned char *buf;
5762 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5763 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5764 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5765 	buf = stream->alloc(totalSize);
5766 	ptr = buf;
5767 	int tmp = OP_glTexImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5768 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5769 
5770 		memcpy(ptr, &target, 4); ptr += 4;
5771 		memcpy(ptr, &level, 4); ptr += 4;
5772 		memcpy(ptr, &internalformat, 4); ptr += 4;
5773 		memcpy(ptr, &width, 4); ptr += 4;
5774 		memcpy(ptr, &height, 4); ptr += 4;
5775 		memcpy(ptr, &border, 4); ptr += 4;
5776 		memcpy(ptr, &format, 4); ptr += 4;
5777 		memcpy(ptr, &type, 4); ptr += 4;
5778 		memcpy(ptr, &offset, 4); ptr += 4;
5779 
5780 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5781 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5782 
5783 }
5784 
glTexSubImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,GLuint offset)5785 void glTexSubImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLuint offset)
5786 {
5787 	ENCODER_DEBUG_LOG("glTexSubImage2DOffsetAEMU(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, offset:%u)", target, level, xoffset, yoffset, width, height, format, type, offset);
5788 	AEMU_SCOPED_TRACE("glTexSubImage2DOffsetAEMU encode");
5789 
5790 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5791 	IOStream *stream = ctx->m_stream;
5792 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5793 	bool useChecksum = checksumCalculator->getVersion() > 0;
5794 
5795 	 unsigned char *ptr;
5796 	 unsigned char *buf;
5797 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5798 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5799 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5800 	buf = stream->alloc(totalSize);
5801 	ptr = buf;
5802 	int tmp = OP_glTexSubImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5803 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5804 
5805 		memcpy(ptr, &target, 4); ptr += 4;
5806 		memcpy(ptr, &level, 4); ptr += 4;
5807 		memcpy(ptr, &xoffset, 4); ptr += 4;
5808 		memcpy(ptr, &yoffset, 4); ptr += 4;
5809 		memcpy(ptr, &width, 4); ptr += 4;
5810 		memcpy(ptr, &height, 4); ptr += 4;
5811 		memcpy(ptr, &format, 4); ptr += 4;
5812 		memcpy(ptr, &type, 4); ptr += 4;
5813 		memcpy(ptr, &offset, 4); ptr += 4;
5814 
5815 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5816 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5817 
5818 }
5819 
glBindBufferRange_enc(void * self,GLenum target,GLuint index,GLuint buffer,GLintptr offset,GLsizeiptr size)5820 void glBindBufferRange_enc(void *self , GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
5821 {
5822 	ENCODER_DEBUG_LOG("glBindBufferRange(target:0x%08x, index:%u, buffer:%u, offset:0x%08lx, size:0x%08lx)", target, index, buffer, offset, size);
5823 	AEMU_SCOPED_TRACE("glBindBufferRange encode");
5824 
5825 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5826 	IOStream *stream = ctx->m_stream;
5827 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5828 	bool useChecksum = checksumCalculator->getVersion() > 0;
5829 
5830 	 unsigned char *ptr;
5831 	 unsigned char *buf;
5832 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
5833 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5834 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5835 	buf = stream->alloc(totalSize);
5836 	ptr = buf;
5837 	int tmp = OP_glBindBufferRange;memcpy(ptr, &tmp, 4); ptr += 4;
5838 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5839 
5840 		memcpy(ptr, &target, 4); ptr += 4;
5841 		memcpy(ptr, &index, 4); ptr += 4;
5842 		memcpy(ptr, &buffer, 4); ptr += 4;
5843 		memcpy(ptr, &offset, 4); ptr += 4;
5844 		memcpy(ptr, &size, 4); ptr += 4;
5845 
5846 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5847 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5848 
5849 }
5850 
glBindBufferBase_enc(void * self,GLenum target,GLuint index,GLuint buffer)5851 void glBindBufferBase_enc(void *self , GLenum target, GLuint index, GLuint buffer)
5852 {
5853 	ENCODER_DEBUG_LOG("glBindBufferBase(target:0x%08x, index:%u, buffer:%u)", target, index, buffer);
5854 	AEMU_SCOPED_TRACE("glBindBufferBase encode");
5855 
5856 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5857 	IOStream *stream = ctx->m_stream;
5858 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5859 	bool useChecksum = checksumCalculator->getVersion() > 0;
5860 
5861 	 unsigned char *ptr;
5862 	 unsigned char *buf;
5863 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
5864 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5865 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5866 	buf = stream->alloc(totalSize);
5867 	ptr = buf;
5868 	int tmp = OP_glBindBufferBase;memcpy(ptr, &tmp, 4); ptr += 4;
5869 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5870 
5871 		memcpy(ptr, &target, 4); ptr += 4;
5872 		memcpy(ptr, &index, 4); ptr += 4;
5873 		memcpy(ptr, &buffer, 4); ptr += 4;
5874 
5875 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5876 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5877 
5878 }
5879 
glCopyBufferSubData_enc(void * self,GLenum readtarget,GLenum writetarget,GLintptr readoffset,GLintptr writeoffset,GLsizeiptr size)5880 void glCopyBufferSubData_enc(void *self , GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size)
5881 {
5882 	ENCODER_DEBUG_LOG("glCopyBufferSubData(readtarget:0x%08x, writetarget:0x%08x, readoffset:0x%08lx, writeoffset:0x%08lx, size:0x%08lx)", readtarget, writetarget, readoffset, writeoffset, size);
5883 	AEMU_SCOPED_TRACE("glCopyBufferSubData encode");
5884 
5885 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5886 	IOStream *stream = ctx->m_stream;
5887 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5888 	bool useChecksum = checksumCalculator->getVersion() > 0;
5889 
5890 	 unsigned char *ptr;
5891 	 unsigned char *buf;
5892 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
5893 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5894 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5895 	buf = stream->alloc(totalSize);
5896 	ptr = buf;
5897 	int tmp = OP_glCopyBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
5898 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5899 
5900 		memcpy(ptr, &readtarget, 4); ptr += 4;
5901 		memcpy(ptr, &writetarget, 4); ptr += 4;
5902 		memcpy(ptr, &readoffset, 4); ptr += 4;
5903 		memcpy(ptr, &writeoffset, 4); ptr += 4;
5904 		memcpy(ptr, &size, 4); ptr += 4;
5905 
5906 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5907 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5908 
5909 	stream->flush();
5910 }
5911 
glClearBufferiv_enc(void * self,GLenum buffer,GLint drawBuffer,const GLint * value)5912 void glClearBufferiv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLint* value)
5913 {
5914 	ENCODER_DEBUG_LOG("glClearBufferiv(buffer:0x%08x, drawBuffer:%d, value:0x%08x)", buffer, drawBuffer, value);
5915 	AEMU_SCOPED_TRACE("glClearBufferiv encode");
5916 
5917 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5918 	IOStream *stream = ctx->m_stream;
5919 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5920 	bool useChecksum = checksumCalculator->getVersion() > 0;
5921 
5922 	const unsigned int __size_value =  (sizeof(GLint) * glesv2_enc::clearBufferNumElts(self, buffer));
5923 	 unsigned char *ptr;
5924 	 unsigned char *buf;
5925 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5926 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5927 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5928 	buf = stream->alloc(totalSize);
5929 	ptr = buf;
5930 	int tmp = OP_glClearBufferiv;memcpy(ptr, &tmp, 4); ptr += 4;
5931 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5932 
5933 		memcpy(ptr, &buffer, 4); ptr += 4;
5934 		memcpy(ptr, &drawBuffer, 4); ptr += 4;
5935 	memcpy(ptr, &__size_value, 4); ptr += 4;
5936 	memcpy(ptr, value, __size_value);ptr += __size_value;
5937 
5938 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5939 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5940 
5941 }
5942 
glClearBufferuiv_enc(void * self,GLenum buffer,GLint drawBuffer,const GLuint * value)5943 void glClearBufferuiv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLuint* value)
5944 {
5945 	ENCODER_DEBUG_LOG("glClearBufferuiv(buffer:0x%08x, drawBuffer:%d, value:0x%08x)", buffer, drawBuffer, value);
5946 	AEMU_SCOPED_TRACE("glClearBufferuiv encode");
5947 
5948 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5949 	IOStream *stream = ctx->m_stream;
5950 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5951 	bool useChecksum = checksumCalculator->getVersion() > 0;
5952 
5953 	const unsigned int __size_value =  (sizeof(GLuint) * glesv2_enc::clearBufferNumElts(self, buffer));
5954 	 unsigned char *ptr;
5955 	 unsigned char *buf;
5956 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5957 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5958 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5959 	buf = stream->alloc(totalSize);
5960 	ptr = buf;
5961 	int tmp = OP_glClearBufferuiv;memcpy(ptr, &tmp, 4); ptr += 4;
5962 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5963 
5964 		memcpy(ptr, &buffer, 4); ptr += 4;
5965 		memcpy(ptr, &drawBuffer, 4); ptr += 4;
5966 	memcpy(ptr, &__size_value, 4); ptr += 4;
5967 	memcpy(ptr, value, __size_value);ptr += __size_value;
5968 
5969 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5970 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5971 
5972 }
5973 
glClearBufferfv_enc(void * self,GLenum buffer,GLint drawBuffer,const GLfloat * value)5974 void glClearBufferfv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLfloat* value)
5975 {
5976 	ENCODER_DEBUG_LOG("glClearBufferfv(buffer:0x%08x, drawBuffer:%d, value:0x%08x)", buffer, drawBuffer, value);
5977 	AEMU_SCOPED_TRACE("glClearBufferfv encode");
5978 
5979 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5980 	IOStream *stream = ctx->m_stream;
5981 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5982 	bool useChecksum = checksumCalculator->getVersion() > 0;
5983 
5984 	const unsigned int __size_value =  (sizeof(GLfloat) * glesv2_enc::clearBufferNumElts(self, buffer));
5985 	 unsigned char *ptr;
5986 	 unsigned char *buf;
5987 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5988 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5989 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5990 	buf = stream->alloc(totalSize);
5991 	ptr = buf;
5992 	int tmp = OP_glClearBufferfv;memcpy(ptr, &tmp, 4); ptr += 4;
5993 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5994 
5995 		memcpy(ptr, &buffer, 4); ptr += 4;
5996 		memcpy(ptr, &drawBuffer, 4); ptr += 4;
5997 	memcpy(ptr, &__size_value, 4); ptr += 4;
5998 	memcpy(ptr, value, __size_value);ptr += __size_value;
5999 
6000 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6001 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6002 
6003 }
6004 
glClearBufferfi_enc(void * self,GLenum buffer,GLint drawBuffer,GLfloat depth,GLint stencil)6005 void glClearBufferfi_enc(void *self , GLenum buffer, GLint drawBuffer, GLfloat depth, GLint stencil)
6006 {
6007 	ENCODER_DEBUG_LOG("glClearBufferfi(buffer:0x%08x, drawBuffer:%d, depth:%f, stencil:%d)", buffer, drawBuffer, depth, stencil);
6008 	AEMU_SCOPED_TRACE("glClearBufferfi encode");
6009 
6010 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6011 	IOStream *stream = ctx->m_stream;
6012 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6013 	bool useChecksum = checksumCalculator->getVersion() > 0;
6014 
6015 	 unsigned char *ptr;
6016 	 unsigned char *buf;
6017 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
6018 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6019 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6020 	buf = stream->alloc(totalSize);
6021 	ptr = buf;
6022 	int tmp = OP_glClearBufferfi;memcpy(ptr, &tmp, 4); ptr += 4;
6023 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6024 
6025 		memcpy(ptr, &buffer, 4); ptr += 4;
6026 		memcpy(ptr, &drawBuffer, 4); ptr += 4;
6027 		memcpy(ptr, &depth, 4); ptr += 4;
6028 		memcpy(ptr, &stencil, 4); ptr += 4;
6029 
6030 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6031 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6032 
6033 }
6034 
glUniformBlockBinding_enc(void * self,GLuint program,GLuint uniformBlockIndex,GLuint uniformBlockBinding)6035 void glUniformBlockBinding_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
6036 {
6037 	ENCODER_DEBUG_LOG("glUniformBlockBinding(program:%u, uniformBlockIndex:%u, uniformBlockBinding:%u)", program, uniformBlockIndex, uniformBlockBinding);
6038 	AEMU_SCOPED_TRACE("glUniformBlockBinding encode");
6039 
6040 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6041 	IOStream *stream = ctx->m_stream;
6042 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6043 	bool useChecksum = checksumCalculator->getVersion() > 0;
6044 
6045 	 unsigned char *ptr;
6046 	 unsigned char *buf;
6047 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
6048 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6049 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6050 	buf = stream->alloc(totalSize);
6051 	ptr = buf;
6052 	int tmp = OP_glUniformBlockBinding;memcpy(ptr, &tmp, 4); ptr += 4;
6053 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6054 
6055 		memcpy(ptr, &program, 4); ptr += 4;
6056 		memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
6057 		memcpy(ptr, &uniformBlockBinding, 4); ptr += 4;
6058 
6059 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6060 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6061 
6062 }
6063 
glGetUniformBlockIndex_enc(void * self,GLuint program,const GLchar * uniformBlockName)6064 GLuint glGetUniformBlockIndex_enc(void *self , GLuint program, const GLchar* uniformBlockName)
6065 {
6066 	ENCODER_DEBUG_LOG("glGetUniformBlockIndex(program:%u, uniformBlockName:0x%08x)", program, uniformBlockName);
6067 	AEMU_SCOPED_TRACE("glGetUniformBlockIndex encode");
6068 
6069 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6070 	IOStream *stream = ctx->m_stream;
6071 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6072 	bool useChecksum = checksumCalculator->getVersion() > 0;
6073 
6074 	const unsigned int __size_uniformBlockName =  (strlen(uniformBlockName) + 1);
6075 	 unsigned char *ptr;
6076 	 unsigned char *buf;
6077 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_uniformBlockName + 1*4;
6078 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6079 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6080 	buf = stream->alloc(totalSize);
6081 	ptr = buf;
6082 	int tmp = OP_glGetUniformBlockIndex;memcpy(ptr, &tmp, 4); ptr += 4;
6083 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6084 
6085 		memcpy(ptr, &program, 4); ptr += 4;
6086 	memcpy(ptr, &__size_uniformBlockName, 4); ptr += 4;
6087 	memcpy(ptr, uniformBlockName, __size_uniformBlockName);ptr += __size_uniformBlockName;
6088 
6089 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6090 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6091 
6092 
6093 	GLuint retval;
6094 	stream->readback(&retval, 4);
6095 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
6096 	if (useChecksum) {
6097 		unsigned char *checksumBufPtr = NULL;
6098 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6099 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6100 		stream->readback(checksumBufPtr, checksumSize);
6101 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6102 			ALOGE("glGetUniformBlockIndex: GL communication error, please report this issue to b.android.com.\n");
6103 			abort();
6104 		}
6105 	}
6106 	return retval;
6107 }
6108 
glGetUniformIndicesAEMU_enc(void * self,GLuint program,GLsizei uniformCount,const GLchar * packedUniformNames,GLsizei packedLen,GLuint * uniformIndices)6109 void glGetUniformIndicesAEMU_enc(void *self , GLuint program, GLsizei uniformCount, const GLchar* packedUniformNames, GLsizei packedLen, GLuint* uniformIndices)
6110 {
6111 	ENCODER_DEBUG_LOG("glGetUniformIndicesAEMU(program:%u, uniformCount:%d, packedUniformNames:0x%08x, packedLen:%d, uniformIndices:0x%08x)", program, uniformCount, packedUniformNames, packedLen, uniformIndices);
6112 	AEMU_SCOPED_TRACE("glGetUniformIndicesAEMU encode");
6113 
6114 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6115 	IOStream *stream = ctx->m_stream;
6116 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6117 	bool useChecksum = checksumCalculator->getVersion() > 0;
6118 
6119 	const unsigned int __size_packedUniformNames =  packedLen;
6120 	const unsigned int __size_uniformIndices =  (uniformCount * sizeof(GLuint));
6121 	 unsigned char *ptr;
6122 	 unsigned char *buf;
6123 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedUniformNames + 4 + 0 + 2*4;
6124 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6125 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6126 	buf = stream->alloc(totalSize);
6127 	ptr = buf;
6128 	int tmp = OP_glGetUniformIndicesAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6129 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6130 
6131 		memcpy(ptr, &program, 4); ptr += 4;
6132 		memcpy(ptr, &uniformCount, 4); ptr += 4;
6133 	memcpy(ptr, &__size_packedUniformNames, 4); ptr += 4;
6134 	memcpy(ptr, packedUniformNames, __size_packedUniformNames);ptr += __size_packedUniformNames;
6135 		memcpy(ptr, &packedLen, 4); ptr += 4;
6136 	memcpy(ptr, &__size_uniformIndices, 4); ptr += 4;
6137 
6138 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6139 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6140 
6141 	stream->readback(uniformIndices, __size_uniformIndices);
6142 	if (useChecksum) checksumCalculator->addBuffer(uniformIndices, __size_uniformIndices);
6143 	if (useChecksum) {
6144 		unsigned char *checksumBufPtr = NULL;
6145 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6146 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6147 		stream->readback(checksumBufPtr, checksumSize);
6148 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6149 			ALOGE("glGetUniformIndicesAEMU: GL communication error, please report this issue to b.android.com.\n");
6150 			abort();
6151 		}
6152 	}
6153 }
6154 
glGetActiveUniformBlockiv_enc(void * self,GLuint program,GLuint uniformBlockIndex,GLenum pname,GLint * params)6155 void glGetActiveUniformBlockiv_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params)
6156 {
6157 	ENCODER_DEBUG_LOG("glGetActiveUniformBlockiv(program:%u, uniformBlockIndex:%u, pname:0x%08x, params:0x%08x)", program, uniformBlockIndex, pname, params);
6158 	AEMU_SCOPED_TRACE("glGetActiveUniformBlockiv encode");
6159 
6160 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6161 	IOStream *stream = ctx->m_stream;
6162 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6163 	bool useChecksum = checksumCalculator->getVersion() > 0;
6164 
6165 	const unsigned int __size_params =  (glesv2_enc::glActiveUniformBlockivParamSize(self, program, uniformBlockIndex, pname) * sizeof(GLint));
6166 	 unsigned char *ptr;
6167 	 unsigned char *buf;
6168 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
6169 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6170 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6171 	buf = stream->alloc(totalSize);
6172 	ptr = buf;
6173 	int tmp = OP_glGetActiveUniformBlockiv;memcpy(ptr, &tmp, 4); ptr += 4;
6174 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6175 
6176 		memcpy(ptr, &program, 4); ptr += 4;
6177 		memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
6178 		memcpy(ptr, &pname, 4); ptr += 4;
6179 	memcpy(ptr, &__size_params, 4); ptr += 4;
6180 
6181 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6182 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6183 
6184 	stream->readback(params, __size_params);
6185 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6186 	if (useChecksum) {
6187 		unsigned char *checksumBufPtr = NULL;
6188 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6189 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6190 		stream->readback(checksumBufPtr, checksumSize);
6191 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6192 			ALOGE("glGetActiveUniformBlockiv: GL communication error, please report this issue to b.android.com.\n");
6193 			abort();
6194 		}
6195 	}
6196 }
6197 
glGetActiveUniformBlockName_enc(void * self,GLuint program,GLuint uniformBlockIndex,GLsizei bufSize,GLsizei * length,GLchar * uniformBlockName)6198 void glGetActiveUniformBlockName_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName)
6199 {
6200 	ENCODER_DEBUG_LOG("glGetActiveUniformBlockName(program:%u, uniformBlockIndex:%u, bufSize:%d, length:0x%08x, uniformBlockName:0x%08x)", program, uniformBlockIndex, bufSize, length, uniformBlockName);
6201 	AEMU_SCOPED_TRACE("glGetActiveUniformBlockName encode");
6202 
6203 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6204 	IOStream *stream = ctx->m_stream;
6205 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6206 	bool useChecksum = checksumCalculator->getVersion() > 0;
6207 
6208 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
6209 	const unsigned int __size_uniformBlockName = ((uniformBlockName != NULL) ?  bufSize : 0);
6210 	 unsigned char *ptr;
6211 	 unsigned char *buf;
6212 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 2*4;
6213 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6214 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6215 	buf = stream->alloc(totalSize);
6216 	ptr = buf;
6217 	int tmp = OP_glGetActiveUniformBlockName;memcpy(ptr, &tmp, 4); ptr += 4;
6218 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6219 
6220 		memcpy(ptr, &program, 4); ptr += 4;
6221 		memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
6222 		memcpy(ptr, &bufSize, 4); ptr += 4;
6223 	memcpy(ptr, &__size_length, 4); ptr += 4;
6224 	memcpy(ptr, &__size_uniformBlockName, 4); ptr += 4;
6225 
6226 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6227 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6228 
6229 	if (length != NULL) {
6230 		stream->readback(length, __size_length);
6231 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
6232 	}
6233 	if (uniformBlockName != NULL) {
6234 		stream->readback(uniformBlockName, __size_uniformBlockName);
6235 		if (useChecksum) checksumCalculator->addBuffer(uniformBlockName, __size_uniformBlockName);
6236 	}
6237 	if (useChecksum) {
6238 		unsigned char *checksumBufPtr = NULL;
6239 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6240 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6241 		stream->readback(checksumBufPtr, checksumSize);
6242 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6243 			ALOGE("glGetActiveUniformBlockName: GL communication error, please report this issue to b.android.com.\n");
6244 			abort();
6245 		}
6246 	}
6247 }
6248 
glUniform1ui_enc(void * self,GLint location,GLuint v0)6249 void glUniform1ui_enc(void *self , GLint location, GLuint v0)
6250 {
6251 	ENCODER_DEBUG_LOG("glUniform1ui(location:%d, v0:%u)", location, v0);
6252 	AEMU_SCOPED_TRACE("glUniform1ui encode");
6253 
6254 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6255 	IOStream *stream = ctx->m_stream;
6256 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6257 	bool useChecksum = checksumCalculator->getVersion() > 0;
6258 
6259 	 unsigned char *ptr;
6260 	 unsigned char *buf;
6261 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
6262 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6263 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6264 	buf = stream->alloc(totalSize);
6265 	ptr = buf;
6266 	int tmp = OP_glUniform1ui;memcpy(ptr, &tmp, 4); ptr += 4;
6267 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6268 
6269 		memcpy(ptr, &location, 4); ptr += 4;
6270 		memcpy(ptr, &v0, 4); ptr += 4;
6271 
6272 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6273 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6274 
6275 }
6276 
glUniform2ui_enc(void * self,GLint location,GLuint v0,GLuint v1)6277 void glUniform2ui_enc(void *self , GLint location, GLuint v0, GLuint v1)
6278 {
6279 	ENCODER_DEBUG_LOG("glUniform2ui(location:%d, v0:%u, v1:%u)", location, v0, v1);
6280 	AEMU_SCOPED_TRACE("glUniform2ui encode");
6281 
6282 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6283 	IOStream *stream = ctx->m_stream;
6284 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6285 	bool useChecksum = checksumCalculator->getVersion() > 0;
6286 
6287 	 unsigned char *ptr;
6288 	 unsigned char *buf;
6289 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
6290 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6291 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6292 	buf = stream->alloc(totalSize);
6293 	ptr = buf;
6294 	int tmp = OP_glUniform2ui;memcpy(ptr, &tmp, 4); ptr += 4;
6295 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6296 
6297 		memcpy(ptr, &location, 4); ptr += 4;
6298 		memcpy(ptr, &v0, 4); ptr += 4;
6299 		memcpy(ptr, &v1, 4); ptr += 4;
6300 
6301 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6302 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6303 
6304 }
6305 
glUniform3ui_enc(void * self,GLint location,GLuint v0,GLuint v1,GLuint v2)6306 void glUniform3ui_enc(void *self , GLint location, GLuint v0, GLuint v1, GLuint v2)
6307 {
6308 	ENCODER_DEBUG_LOG("glUniform3ui(location:%d, v0:%u, v1:%u, v2:%u)", location, v0, v1, v2);
6309 	AEMU_SCOPED_TRACE("glUniform3ui encode");
6310 
6311 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6312 	IOStream *stream = ctx->m_stream;
6313 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6314 	bool useChecksum = checksumCalculator->getVersion() > 0;
6315 
6316 	 unsigned char *ptr;
6317 	 unsigned char *buf;
6318 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
6319 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6320 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6321 	buf = stream->alloc(totalSize);
6322 	ptr = buf;
6323 	int tmp = OP_glUniform3ui;memcpy(ptr, &tmp, 4); ptr += 4;
6324 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6325 
6326 		memcpy(ptr, &location, 4); ptr += 4;
6327 		memcpy(ptr, &v0, 4); ptr += 4;
6328 		memcpy(ptr, &v1, 4); ptr += 4;
6329 		memcpy(ptr, &v2, 4); ptr += 4;
6330 
6331 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6332 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6333 
6334 }
6335 
glUniform4ui_enc(void * self,GLint location,GLint v0,GLuint v1,GLuint v2,GLuint v3)6336 void glUniform4ui_enc(void *self , GLint location, GLint v0, GLuint v1, GLuint v2, GLuint v3)
6337 {
6338 	ENCODER_DEBUG_LOG("glUniform4ui(location:%d, v0:%d, v1:%u, v2:%u, v3:%u)", location, v0, v1, v2, v3);
6339 	AEMU_SCOPED_TRACE("glUniform4ui encode");
6340 
6341 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6342 	IOStream *stream = ctx->m_stream;
6343 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6344 	bool useChecksum = checksumCalculator->getVersion() > 0;
6345 
6346 	 unsigned char *ptr;
6347 	 unsigned char *buf;
6348 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6349 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6350 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6351 	buf = stream->alloc(totalSize);
6352 	ptr = buf;
6353 	int tmp = OP_glUniform4ui;memcpy(ptr, &tmp, 4); ptr += 4;
6354 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6355 
6356 		memcpy(ptr, &location, 4); ptr += 4;
6357 		memcpy(ptr, &v0, 4); ptr += 4;
6358 		memcpy(ptr, &v1, 4); ptr += 4;
6359 		memcpy(ptr, &v2, 4); ptr += 4;
6360 		memcpy(ptr, &v3, 4); ptr += 4;
6361 
6362 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6363 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6364 
6365 }
6366 
glUniform1uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6367 void glUniform1uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6368 {
6369 	ENCODER_DEBUG_LOG("glUniform1uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6370 	AEMU_SCOPED_TRACE("glUniform1uiv encode");
6371 
6372 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6373 	IOStream *stream = ctx->m_stream;
6374 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6375 	bool useChecksum = checksumCalculator->getVersion() > 0;
6376 
6377 	const unsigned int __size_value =  (count * sizeof(GLuint));
6378 	 unsigned char *ptr;
6379 	 unsigned char *buf;
6380 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6381 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6382 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6383 	buf = stream->alloc(totalSize);
6384 	ptr = buf;
6385 	int tmp = OP_glUniform1uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6386 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6387 
6388 		memcpy(ptr, &location, 4); ptr += 4;
6389 		memcpy(ptr, &count, 4); ptr += 4;
6390 	memcpy(ptr, &__size_value, 4); ptr += 4;
6391 	memcpy(ptr, value, __size_value);ptr += __size_value;
6392 
6393 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6394 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6395 
6396 }
6397 
glUniform2uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6398 void glUniform2uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6399 {
6400 	ENCODER_DEBUG_LOG("glUniform2uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6401 	AEMU_SCOPED_TRACE("glUniform2uiv encode");
6402 
6403 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6404 	IOStream *stream = ctx->m_stream;
6405 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6406 	bool useChecksum = checksumCalculator->getVersion() > 0;
6407 
6408 	const unsigned int __size_value =  (count * 2 * sizeof(GLuint));
6409 	 unsigned char *ptr;
6410 	 unsigned char *buf;
6411 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6412 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6413 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6414 	buf = stream->alloc(totalSize);
6415 	ptr = buf;
6416 	int tmp = OP_glUniform2uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6417 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6418 
6419 		memcpy(ptr, &location, 4); ptr += 4;
6420 		memcpy(ptr, &count, 4); ptr += 4;
6421 	memcpy(ptr, &__size_value, 4); ptr += 4;
6422 	memcpy(ptr, value, __size_value);ptr += __size_value;
6423 
6424 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6425 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6426 
6427 }
6428 
glUniform3uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6429 void glUniform3uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6430 {
6431 	ENCODER_DEBUG_LOG("glUniform3uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6432 	AEMU_SCOPED_TRACE("glUniform3uiv encode");
6433 
6434 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6435 	IOStream *stream = ctx->m_stream;
6436 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6437 	bool useChecksum = checksumCalculator->getVersion() > 0;
6438 
6439 	const unsigned int __size_value =  (count * 3 * sizeof(GLuint));
6440 	 unsigned char *ptr;
6441 	 unsigned char *buf;
6442 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6443 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6444 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6445 	buf = stream->alloc(totalSize);
6446 	ptr = buf;
6447 	int tmp = OP_glUniform3uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6448 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6449 
6450 		memcpy(ptr, &location, 4); ptr += 4;
6451 		memcpy(ptr, &count, 4); ptr += 4;
6452 	memcpy(ptr, &__size_value, 4); ptr += 4;
6453 	memcpy(ptr, value, __size_value);ptr += __size_value;
6454 
6455 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6456 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6457 
6458 }
6459 
glUniform4uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6460 void glUniform4uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6461 {
6462 	ENCODER_DEBUG_LOG("glUniform4uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6463 	AEMU_SCOPED_TRACE("glUniform4uiv encode");
6464 
6465 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6466 	IOStream *stream = ctx->m_stream;
6467 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6468 	bool useChecksum = checksumCalculator->getVersion() > 0;
6469 
6470 	const unsigned int __size_value =  (count * 4 * sizeof(GLuint));
6471 	 unsigned char *ptr;
6472 	 unsigned char *buf;
6473 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6474 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6475 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6476 	buf = stream->alloc(totalSize);
6477 	ptr = buf;
6478 	int tmp = OP_glUniform4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6479 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6480 
6481 		memcpy(ptr, &location, 4); ptr += 4;
6482 		memcpy(ptr, &count, 4); ptr += 4;
6483 	memcpy(ptr, &__size_value, 4); ptr += 4;
6484 	memcpy(ptr, value, __size_value);ptr += __size_value;
6485 
6486 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6487 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6488 
6489 }
6490 
glUniformMatrix2x3fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6491 void glUniformMatrix2x3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6492 {
6493 	ENCODER_DEBUG_LOG("glUniformMatrix2x3fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6494 	AEMU_SCOPED_TRACE("glUniformMatrix2x3fv encode");
6495 
6496 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6497 	IOStream *stream = ctx->m_stream;
6498 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6499 	bool useChecksum = checksumCalculator->getVersion() > 0;
6500 
6501 	const unsigned int __size_value =  (count * 6 * sizeof(GLfloat));
6502 	 unsigned char *ptr;
6503 	 unsigned char *buf;
6504 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6505 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6506 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6507 	buf = stream->alloc(totalSize);
6508 	ptr = buf;
6509 	int tmp = OP_glUniformMatrix2x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
6510 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6511 
6512 		memcpy(ptr, &location, 4); ptr += 4;
6513 		memcpy(ptr, &count, 4); ptr += 4;
6514 		memcpy(ptr, &transpose, 1); ptr += 1;
6515 	memcpy(ptr, &__size_value, 4); ptr += 4;
6516 	memcpy(ptr, value, __size_value);ptr += __size_value;
6517 
6518 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6519 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6520 
6521 }
6522 
glUniformMatrix3x2fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6523 void glUniformMatrix3x2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6524 {
6525 	ENCODER_DEBUG_LOG("glUniformMatrix3x2fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6526 	AEMU_SCOPED_TRACE("glUniformMatrix3x2fv encode");
6527 
6528 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6529 	IOStream *stream = ctx->m_stream;
6530 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6531 	bool useChecksum = checksumCalculator->getVersion() > 0;
6532 
6533 	const unsigned int __size_value =  (count * 6 * sizeof(GLfloat));
6534 	 unsigned char *ptr;
6535 	 unsigned char *buf;
6536 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6537 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6538 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6539 	buf = stream->alloc(totalSize);
6540 	ptr = buf;
6541 	int tmp = OP_glUniformMatrix3x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
6542 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6543 
6544 		memcpy(ptr, &location, 4); ptr += 4;
6545 		memcpy(ptr, &count, 4); ptr += 4;
6546 		memcpy(ptr, &transpose, 1); ptr += 1;
6547 	memcpy(ptr, &__size_value, 4); ptr += 4;
6548 	memcpy(ptr, value, __size_value);ptr += __size_value;
6549 
6550 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6551 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6552 
6553 }
6554 
glUniformMatrix2x4fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6555 void glUniformMatrix2x4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6556 {
6557 	ENCODER_DEBUG_LOG("glUniformMatrix2x4fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6558 	AEMU_SCOPED_TRACE("glUniformMatrix2x4fv encode");
6559 
6560 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6561 	IOStream *stream = ctx->m_stream;
6562 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6563 	bool useChecksum = checksumCalculator->getVersion() > 0;
6564 
6565 	const unsigned int __size_value =  (count * 8 * sizeof(GLfloat));
6566 	 unsigned char *ptr;
6567 	 unsigned char *buf;
6568 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6569 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6570 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6571 	buf = stream->alloc(totalSize);
6572 	ptr = buf;
6573 	int tmp = OP_glUniformMatrix2x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
6574 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6575 
6576 		memcpy(ptr, &location, 4); ptr += 4;
6577 		memcpy(ptr, &count, 4); ptr += 4;
6578 		memcpy(ptr, &transpose, 1); ptr += 1;
6579 	memcpy(ptr, &__size_value, 4); ptr += 4;
6580 	memcpy(ptr, value, __size_value);ptr += __size_value;
6581 
6582 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6583 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6584 
6585 }
6586 
glUniformMatrix4x2fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6587 void glUniformMatrix4x2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6588 {
6589 	ENCODER_DEBUG_LOG("glUniformMatrix4x2fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6590 	AEMU_SCOPED_TRACE("glUniformMatrix4x2fv encode");
6591 
6592 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6593 	IOStream *stream = ctx->m_stream;
6594 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6595 	bool useChecksum = checksumCalculator->getVersion() > 0;
6596 
6597 	const unsigned int __size_value =  (count * 8 * sizeof(GLfloat));
6598 	 unsigned char *ptr;
6599 	 unsigned char *buf;
6600 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6601 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6602 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6603 	buf = stream->alloc(totalSize);
6604 	ptr = buf;
6605 	int tmp = OP_glUniformMatrix4x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
6606 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6607 
6608 		memcpy(ptr, &location, 4); ptr += 4;
6609 		memcpy(ptr, &count, 4); ptr += 4;
6610 		memcpy(ptr, &transpose, 1); ptr += 1;
6611 	memcpy(ptr, &__size_value, 4); ptr += 4;
6612 	memcpy(ptr, value, __size_value);ptr += __size_value;
6613 
6614 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6615 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6616 
6617 }
6618 
glUniformMatrix3x4fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6619 void glUniformMatrix3x4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6620 {
6621 	ENCODER_DEBUG_LOG("glUniformMatrix3x4fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6622 	AEMU_SCOPED_TRACE("glUniformMatrix3x4fv encode");
6623 
6624 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6625 	IOStream *stream = ctx->m_stream;
6626 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6627 	bool useChecksum = checksumCalculator->getVersion() > 0;
6628 
6629 	const unsigned int __size_value =  (count * 12 * sizeof(GLfloat));
6630 	 unsigned char *ptr;
6631 	 unsigned char *buf;
6632 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6633 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6634 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6635 	buf = stream->alloc(totalSize);
6636 	ptr = buf;
6637 	int tmp = OP_glUniformMatrix3x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
6638 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6639 
6640 		memcpy(ptr, &location, 4); ptr += 4;
6641 		memcpy(ptr, &count, 4); ptr += 4;
6642 		memcpy(ptr, &transpose, 1); ptr += 1;
6643 	memcpy(ptr, &__size_value, 4); ptr += 4;
6644 	memcpy(ptr, value, __size_value);ptr += __size_value;
6645 
6646 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6647 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6648 
6649 }
6650 
glUniformMatrix4x3fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6651 void glUniformMatrix4x3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6652 {
6653 	ENCODER_DEBUG_LOG("glUniformMatrix4x3fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6654 	AEMU_SCOPED_TRACE("glUniformMatrix4x3fv encode");
6655 
6656 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6657 	IOStream *stream = ctx->m_stream;
6658 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6659 	bool useChecksum = checksumCalculator->getVersion() > 0;
6660 
6661 	const unsigned int __size_value =  (count * 12 * sizeof(GLfloat));
6662 	 unsigned char *ptr;
6663 	 unsigned char *buf;
6664 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6665 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6666 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6667 	buf = stream->alloc(totalSize);
6668 	ptr = buf;
6669 	int tmp = OP_glUniformMatrix4x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
6670 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6671 
6672 		memcpy(ptr, &location, 4); ptr += 4;
6673 		memcpy(ptr, &count, 4); ptr += 4;
6674 		memcpy(ptr, &transpose, 1); ptr += 1;
6675 	memcpy(ptr, &__size_value, 4); ptr += 4;
6676 	memcpy(ptr, value, __size_value);ptr += __size_value;
6677 
6678 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6679 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6680 
6681 }
6682 
glGetUniformuiv_enc(void * self,GLuint program,GLint location,GLuint * params)6683 void glGetUniformuiv_enc(void *self , GLuint program, GLint location, GLuint* params)
6684 {
6685 	ENCODER_DEBUG_LOG("glGetUniformuiv(program:%u, location:%d, params:0x%08x)", program, location, params);
6686 	AEMU_SCOPED_TRACE("glGetUniformuiv encode");
6687 
6688 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6689 	IOStream *stream = ctx->m_stream;
6690 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6691 	bool useChecksum = checksumCalculator->getVersion() > 0;
6692 
6693 	const unsigned int __size_params =  glSizeof(glesv2_enc::uniformType(self, program, location));
6694 	 unsigned char *ptr;
6695 	 unsigned char *buf;
6696 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
6697 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6698 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6699 	buf = stream->alloc(totalSize);
6700 	ptr = buf;
6701 	int tmp = OP_glGetUniformuiv;memcpy(ptr, &tmp, 4); ptr += 4;
6702 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6703 
6704 		memcpy(ptr, &program, 4); ptr += 4;
6705 		memcpy(ptr, &location, 4); ptr += 4;
6706 	memcpy(ptr, &__size_params, 4); ptr += 4;
6707 
6708 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6709 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6710 
6711 	stream->readback(params, __size_params);
6712 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6713 	if (useChecksum) {
6714 		unsigned char *checksumBufPtr = NULL;
6715 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6716 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6717 		stream->readback(checksumBufPtr, checksumSize);
6718 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6719 			ALOGE("glGetUniformuiv: GL communication error, please report this issue to b.android.com.\n");
6720 			abort();
6721 		}
6722 	}
6723 }
6724 
glGetActiveUniformsiv_enc(void * self,GLuint program,GLsizei uniformCount,const GLuint * uniformIndices,GLenum pname,GLint * params)6725 void glGetActiveUniformsiv_enc(void *self , GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params)
6726 {
6727 	ENCODER_DEBUG_LOG("glGetActiveUniformsiv(program:%u, uniformCount:%d, uniformIndices:0x%08x, pname:0x%08x, params:0x%08x)", program, uniformCount, uniformIndices, pname, params);
6728 	AEMU_SCOPED_TRACE("glGetActiveUniformsiv encode");
6729 
6730 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6731 	IOStream *stream = ctx->m_stream;
6732 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6733 	bool useChecksum = checksumCalculator->getVersion() > 0;
6734 
6735 	const unsigned int __size_uniformIndices =  (uniformCount * sizeof(GLuint));
6736 	const unsigned int __size_params =  (uniformCount * sizeof(GLint));
6737 	 unsigned char *ptr;
6738 	 unsigned char *buf;
6739 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_uniformIndices + 4 + 0 + 2*4;
6740 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6741 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6742 	buf = stream->alloc(totalSize);
6743 	ptr = buf;
6744 	int tmp = OP_glGetActiveUniformsiv;memcpy(ptr, &tmp, 4); ptr += 4;
6745 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6746 
6747 		memcpy(ptr, &program, 4); ptr += 4;
6748 		memcpy(ptr, &uniformCount, 4); ptr += 4;
6749 	memcpy(ptr, &__size_uniformIndices, 4); ptr += 4;
6750 	memcpy(ptr, uniformIndices, __size_uniformIndices);ptr += __size_uniformIndices;
6751 		memcpy(ptr, &pname, 4); ptr += 4;
6752 	memcpy(ptr, &__size_params, 4); ptr += 4;
6753 
6754 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6755 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6756 
6757 	stream->readback(params, __size_params);
6758 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6759 	if (useChecksum) {
6760 		unsigned char *checksumBufPtr = NULL;
6761 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6762 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6763 		stream->readback(checksumBufPtr, checksumSize);
6764 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6765 			ALOGE("glGetActiveUniformsiv: GL communication error, please report this issue to b.android.com.\n");
6766 			abort();
6767 		}
6768 	}
6769 }
6770 
glVertexAttribI4i_enc(void * self,GLuint index,GLint v0,GLint v1,GLint v2,GLint v3)6771 void glVertexAttribI4i_enc(void *self , GLuint index, GLint v0, GLint v1, GLint v2, GLint v3)
6772 {
6773 	ENCODER_DEBUG_LOG("glVertexAttribI4i(index:%u, v0:%d, v1:%d, v2:%d, v3:%d)", index, v0, v1, v2, v3);
6774 	AEMU_SCOPED_TRACE("glVertexAttribI4i encode");
6775 
6776 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6777 	IOStream *stream = ctx->m_stream;
6778 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6779 	bool useChecksum = checksumCalculator->getVersion() > 0;
6780 
6781 	 unsigned char *ptr;
6782 	 unsigned char *buf;
6783 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6784 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6785 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6786 	buf = stream->alloc(totalSize);
6787 	ptr = buf;
6788 	int tmp = OP_glVertexAttribI4i;memcpy(ptr, &tmp, 4); ptr += 4;
6789 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6790 
6791 		memcpy(ptr, &index, 4); ptr += 4;
6792 		memcpy(ptr, &v0, 4); ptr += 4;
6793 		memcpy(ptr, &v1, 4); ptr += 4;
6794 		memcpy(ptr, &v2, 4); ptr += 4;
6795 		memcpy(ptr, &v3, 4); ptr += 4;
6796 
6797 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6798 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6799 
6800 }
6801 
glVertexAttribI4ui_enc(void * self,GLuint index,GLuint v0,GLuint v1,GLuint v2,GLuint v3)6802 void glVertexAttribI4ui_enc(void *self , GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
6803 {
6804 	ENCODER_DEBUG_LOG("glVertexAttribI4ui(index:%u, v0:%u, v1:%u, v2:%u, v3:%u)", index, v0, v1, v2, v3);
6805 	AEMU_SCOPED_TRACE("glVertexAttribI4ui encode");
6806 
6807 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6808 	IOStream *stream = ctx->m_stream;
6809 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6810 	bool useChecksum = checksumCalculator->getVersion() > 0;
6811 
6812 	 unsigned char *ptr;
6813 	 unsigned char *buf;
6814 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6815 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6816 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6817 	buf = stream->alloc(totalSize);
6818 	ptr = buf;
6819 	int tmp = OP_glVertexAttribI4ui;memcpy(ptr, &tmp, 4); ptr += 4;
6820 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6821 
6822 		memcpy(ptr, &index, 4); ptr += 4;
6823 		memcpy(ptr, &v0, 4); ptr += 4;
6824 		memcpy(ptr, &v1, 4); ptr += 4;
6825 		memcpy(ptr, &v2, 4); ptr += 4;
6826 		memcpy(ptr, &v3, 4); ptr += 4;
6827 
6828 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6829 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6830 
6831 }
6832 
glVertexAttribI4iv_enc(void * self,GLuint index,const GLint * v)6833 void glVertexAttribI4iv_enc(void *self , GLuint index, const GLint* v)
6834 {
6835 	ENCODER_DEBUG_LOG("glVertexAttribI4iv(index:%u, v:0x%08x)", index, v);
6836 	AEMU_SCOPED_TRACE("glVertexAttribI4iv encode");
6837 
6838 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6839 	IOStream *stream = ctx->m_stream;
6840 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6841 	bool useChecksum = checksumCalculator->getVersion() > 0;
6842 
6843 	const unsigned int __size_v =  (4 * sizeof(GLint));
6844 	 unsigned char *ptr;
6845 	 unsigned char *buf;
6846 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_v + 1*4;
6847 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6848 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6849 	buf = stream->alloc(totalSize);
6850 	ptr = buf;
6851 	int tmp = OP_glVertexAttribI4iv;memcpy(ptr, &tmp, 4); ptr += 4;
6852 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6853 
6854 		memcpy(ptr, &index, 4); ptr += 4;
6855 	memcpy(ptr, &__size_v, 4); ptr += 4;
6856 	memcpy(ptr, v, __size_v);ptr += __size_v;
6857 
6858 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6859 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6860 
6861 }
6862 
glVertexAttribI4uiv_enc(void * self,GLuint index,const GLuint * v)6863 void glVertexAttribI4uiv_enc(void *self , GLuint index, const GLuint* v)
6864 {
6865 	ENCODER_DEBUG_LOG("glVertexAttribI4uiv(index:%u, v:0x%08x)", index, v);
6866 	AEMU_SCOPED_TRACE("glVertexAttribI4uiv encode");
6867 
6868 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6869 	IOStream *stream = ctx->m_stream;
6870 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6871 	bool useChecksum = checksumCalculator->getVersion() > 0;
6872 
6873 	const unsigned int __size_v =  (4 * sizeof(GLuint));
6874 	 unsigned char *ptr;
6875 	 unsigned char *buf;
6876 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_v + 1*4;
6877 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6878 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6879 	buf = stream->alloc(totalSize);
6880 	ptr = buf;
6881 	int tmp = OP_glVertexAttribI4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6882 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6883 
6884 		memcpy(ptr, &index, 4); ptr += 4;
6885 	memcpy(ptr, &__size_v, 4); ptr += 4;
6886 	memcpy(ptr, v, __size_v);ptr += __size_v;
6887 
6888 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6889 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6890 
6891 }
6892 
glVertexAttribIPointerOffsetAEMU_enc(void * self,GLuint index,GLint size,GLenum type,GLsizei stride,GLuint offset)6893 void glVertexAttribIPointerOffsetAEMU_enc(void *self , GLuint index, GLint size, GLenum type, GLsizei stride, GLuint offset)
6894 {
6895 	ENCODER_DEBUG_LOG("glVertexAttribIPointerOffsetAEMU(index:%u, size:%d, type:0x%08x, stride:%d, offset:%u)", index, size, type, stride, offset);
6896 	AEMU_SCOPED_TRACE("glVertexAttribIPointerOffsetAEMU encode");
6897 
6898 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6899 	IOStream *stream = ctx->m_stream;
6900 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6901 	bool useChecksum = checksumCalculator->getVersion() > 0;
6902 
6903 	 unsigned char *ptr;
6904 	 unsigned char *buf;
6905 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6906 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6907 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6908 	buf = stream->alloc(totalSize);
6909 	ptr = buf;
6910 	int tmp = OP_glVertexAttribIPointerOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6911 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6912 
6913 		memcpy(ptr, &index, 4); ptr += 4;
6914 		memcpy(ptr, &size, 4); ptr += 4;
6915 		memcpy(ptr, &type, 4); ptr += 4;
6916 		memcpy(ptr, &stride, 4); ptr += 4;
6917 		memcpy(ptr, &offset, 4); ptr += 4;
6918 
6919 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6920 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6921 
6922 }
6923 
glVertexAttribIPointerDataAEMU_enc(void * self,GLuint index,GLint size,GLenum type,GLsizei stride,void * data,GLuint datalen)6924 void glVertexAttribIPointerDataAEMU_enc(void *self , GLuint index, GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
6925 {
6926 	ENCODER_DEBUG_LOG("glVertexAttribIPointerDataAEMU(index:%u, size:%d, type:0x%08x, stride:%d, data:0x%08x, datalen:%u)", index, size, type, stride, data, datalen);
6927 	AEMU_SCOPED_TRACE("glVertexAttribIPointerDataAEMU encode");
6928 
6929 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6930 	IOStream *stream = ctx->m_stream;
6931 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6932 	bool useChecksum = checksumCalculator->getVersion() > 0;
6933 
6934 	const unsigned int __size_data =  datalen;
6935 	 unsigned char *ptr;
6936 	 unsigned char *buf;
6937 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_data + 4 + 1*4;
6938 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6939 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6940 	buf = stream->alloc(totalSize);
6941 	ptr = buf;
6942 	int tmp = OP_glVertexAttribIPointerDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6943 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6944 
6945 		memcpy(ptr, &index, 4); ptr += 4;
6946 		memcpy(ptr, &size, 4); ptr += 4;
6947 		memcpy(ptr, &type, 4); ptr += 4;
6948 		memcpy(ptr, &stride, 4); ptr += 4;
6949 	memcpy(ptr, &__size_data, 4); ptr += 4;
6950 	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
6951 		memcpy(ptr, &datalen, 4); ptr += 4;
6952 
6953 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6954 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6955 
6956 }
6957 
glGetVertexAttribIiv_enc(void * self,GLuint index,GLenum pname,GLint * params)6958 void glGetVertexAttribIiv_enc(void *self , GLuint index, GLenum pname, GLint* params)
6959 {
6960 	ENCODER_DEBUG_LOG("glGetVertexAttribIiv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
6961 	AEMU_SCOPED_TRACE("glGetVertexAttribIiv encode");
6962 
6963 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6964 	IOStream *stream = ctx->m_stream;
6965 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6966 	bool useChecksum = checksumCalculator->getVersion() > 0;
6967 
6968 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
6969 	 unsigned char *ptr;
6970 	 unsigned char *buf;
6971 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
6972 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6973 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6974 	buf = stream->alloc(totalSize);
6975 	ptr = buf;
6976 	int tmp = OP_glGetVertexAttribIiv;memcpy(ptr, &tmp, 4); ptr += 4;
6977 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6978 
6979 		memcpy(ptr, &index, 4); ptr += 4;
6980 		memcpy(ptr, &pname, 4); ptr += 4;
6981 	memcpy(ptr, &__size_params, 4); ptr += 4;
6982 
6983 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6984 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6985 
6986 	stream->readback(params, __size_params);
6987 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6988 	if (useChecksum) {
6989 		unsigned char *checksumBufPtr = NULL;
6990 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6991 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6992 		stream->readback(checksumBufPtr, checksumSize);
6993 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6994 			ALOGE("glGetVertexAttribIiv: GL communication error, please report this issue to b.android.com.\n");
6995 			abort();
6996 		}
6997 	}
6998 }
6999 
glGetVertexAttribIuiv_enc(void * self,GLuint index,GLenum pname,GLuint * params)7000 void glGetVertexAttribIuiv_enc(void *self , GLuint index, GLenum pname, GLuint* params)
7001 {
7002 	ENCODER_DEBUG_LOG("glGetVertexAttribIuiv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
7003 	AEMU_SCOPED_TRACE("glGetVertexAttribIuiv encode");
7004 
7005 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7006 	IOStream *stream = ctx->m_stream;
7007 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7008 	bool useChecksum = checksumCalculator->getVersion() > 0;
7009 
7010 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLuint));
7011 	 unsigned char *ptr;
7012 	 unsigned char *buf;
7013 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
7014 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7015 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7016 	buf = stream->alloc(totalSize);
7017 	ptr = buf;
7018 	int tmp = OP_glGetVertexAttribIuiv;memcpy(ptr, &tmp, 4); ptr += 4;
7019 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7020 
7021 		memcpy(ptr, &index, 4); ptr += 4;
7022 		memcpy(ptr, &pname, 4); ptr += 4;
7023 	memcpy(ptr, &__size_params, 4); ptr += 4;
7024 
7025 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7026 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7027 
7028 	stream->readback(params, __size_params);
7029 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
7030 	if (useChecksum) {
7031 		unsigned char *checksumBufPtr = NULL;
7032 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7033 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7034 		stream->readback(checksumBufPtr, checksumSize);
7035 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7036 			ALOGE("glGetVertexAttribIuiv: GL communication error, please report this issue to b.android.com.\n");
7037 			abort();
7038 		}
7039 	}
7040 }
7041 
glVertexAttribDivisor_enc(void * self,GLuint index,GLuint divisor)7042 void glVertexAttribDivisor_enc(void *self , GLuint index, GLuint divisor)
7043 {
7044 	ENCODER_DEBUG_LOG("glVertexAttribDivisor(index:%u, divisor:%u)", index, divisor);
7045 	AEMU_SCOPED_TRACE("glVertexAttribDivisor encode");
7046 
7047 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7048 	IOStream *stream = ctx->m_stream;
7049 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7050 	bool useChecksum = checksumCalculator->getVersion() > 0;
7051 
7052 	 unsigned char *ptr;
7053 	 unsigned char *buf;
7054 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7055 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7056 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7057 	buf = stream->alloc(totalSize);
7058 	ptr = buf;
7059 	int tmp = OP_glVertexAttribDivisor;memcpy(ptr, &tmp, 4); ptr += 4;
7060 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7061 
7062 		memcpy(ptr, &index, 4); ptr += 4;
7063 		memcpy(ptr, &divisor, 4); ptr += 4;
7064 
7065 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7066 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7067 
7068 }
7069 
glDrawArraysInstanced_enc(void * self,GLenum mode,GLint first,GLsizei count,GLsizei primcount)7070 void glDrawArraysInstanced_enc(void *self , GLenum mode, GLint first, GLsizei count, GLsizei primcount)
7071 {
7072 	ENCODER_DEBUG_LOG("glDrawArraysInstanced(mode:0x%08x, first:%d, count:%d, primcount:%d)", mode, first, count, primcount);
7073 	AEMU_SCOPED_TRACE("glDrawArraysInstanced encode");
7074 
7075 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7076 	IOStream *stream = ctx->m_stream;
7077 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7078 	bool useChecksum = checksumCalculator->getVersion() > 0;
7079 
7080 	 unsigned char *ptr;
7081 	 unsigned char *buf;
7082 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
7083 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7084 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7085 	buf = stream->alloc(totalSize);
7086 	ptr = buf;
7087 	int tmp = OP_glDrawArraysInstanced;memcpy(ptr, &tmp, 4); ptr += 4;
7088 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7089 
7090 		memcpy(ptr, &mode, 4); ptr += 4;
7091 		memcpy(ptr, &first, 4); ptr += 4;
7092 		memcpy(ptr, &count, 4); ptr += 4;
7093 		memcpy(ptr, &primcount, 4); ptr += 4;
7094 
7095 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7096 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7097 
7098 }
7099 
glDrawElementsInstancedDataAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei primcount,GLsizei datalen)7100 void glDrawElementsInstancedDataAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLsizei datalen)
7101 {
7102 	ENCODER_DEBUG_LOG("glDrawElementsInstancedDataAEMU(mode:0x%08x, count:%d, type:0x%08x, indices:0x%08x, primcount:%d, datalen:%d)", mode, count, type, indices, primcount, datalen);
7103 	AEMU_SCOPED_TRACE("glDrawElementsInstancedDataAEMU encode");
7104 
7105 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7106 	IOStream *stream = ctx->m_stream;
7107 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7108 	bool useChecksum = checksumCalculator->getVersion() > 0;
7109 
7110 	const unsigned int __size_indices =  datalen;
7111 	 unsigned char *ptr;
7112 	 unsigned char *buf;
7113 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_indices + 4 + 4 + 1*4;
7114 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7115 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7116 	buf = stream->alloc(totalSize);
7117 	ptr = buf;
7118 	int tmp = OP_glDrawElementsInstancedDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7119 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7120 
7121 		memcpy(ptr, &mode, 4); ptr += 4;
7122 		memcpy(ptr, &count, 4); ptr += 4;
7123 		memcpy(ptr, &type, 4); ptr += 4;
7124 	memcpy(ptr, &__size_indices, 4); ptr += 4;
7125 	memcpy(ptr, indices, __size_indices);ptr += __size_indices;
7126 		memcpy(ptr, &primcount, 4); ptr += 4;
7127 		memcpy(ptr, &datalen, 4); ptr += 4;
7128 
7129 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7130 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7131 
7132 }
7133 
glDrawElementsInstancedOffsetAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,GLuint offset,GLsizei primcount)7134 void glDrawElementsInstancedOffsetAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset, GLsizei primcount)
7135 {
7136 	ENCODER_DEBUG_LOG("glDrawElementsInstancedOffsetAEMU(mode:0x%08x, count:%d, type:0x%08x, offset:%u, primcount:%d)", mode, count, type, offset, primcount);
7137 	AEMU_SCOPED_TRACE("glDrawElementsInstancedOffsetAEMU encode");
7138 
7139 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7140 	IOStream *stream = ctx->m_stream;
7141 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7142 	bool useChecksum = checksumCalculator->getVersion() > 0;
7143 
7144 	 unsigned char *ptr;
7145 	 unsigned char *buf;
7146 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7147 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7148 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7149 	buf = stream->alloc(totalSize);
7150 	ptr = buf;
7151 	int tmp = OP_glDrawElementsInstancedOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7152 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7153 
7154 		memcpy(ptr, &mode, 4); ptr += 4;
7155 		memcpy(ptr, &count, 4); ptr += 4;
7156 		memcpy(ptr, &type, 4); ptr += 4;
7157 		memcpy(ptr, &offset, 4); ptr += 4;
7158 		memcpy(ptr, &primcount, 4); ptr += 4;
7159 
7160 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7161 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7162 
7163 }
7164 
glDrawRangeElementsDataAEMU_enc(void * self,GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices,GLsizei datalen)7165 void glDrawRangeElementsDataAEMU_enc(void *self , GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices, GLsizei datalen)
7166 {
7167 	ENCODER_DEBUG_LOG("glDrawRangeElementsDataAEMU(mode:0x%08x, start:%u, end:%u, count:%d, type:0x%08x, indices:0x%08x, datalen:%d)", mode, start, end, count, type, indices, datalen);
7168 	AEMU_SCOPED_TRACE("glDrawRangeElementsDataAEMU encode");
7169 
7170 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7171 	IOStream *stream = ctx->m_stream;
7172 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7173 	bool useChecksum = checksumCalculator->getVersion() > 0;
7174 
7175 	const unsigned int __size_indices =  datalen;
7176 	 unsigned char *ptr;
7177 	 unsigned char *buf;
7178 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + __size_indices + 4 + 1*4;
7179 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7180 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7181 	buf = stream->alloc(totalSize);
7182 	ptr = buf;
7183 	int tmp = OP_glDrawRangeElementsDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7184 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7185 
7186 		memcpy(ptr, &mode, 4); ptr += 4;
7187 		memcpy(ptr, &start, 4); ptr += 4;
7188 		memcpy(ptr, &end, 4); ptr += 4;
7189 		memcpy(ptr, &count, 4); ptr += 4;
7190 		memcpy(ptr, &type, 4); ptr += 4;
7191 	memcpy(ptr, &__size_indices, 4); ptr += 4;
7192 	memcpy(ptr, indices, __size_indices);ptr += __size_indices;
7193 		memcpy(ptr, &datalen, 4); ptr += 4;
7194 
7195 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7196 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7197 
7198 }
7199 
glDrawRangeElementsOffsetAEMU_enc(void * self,GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,GLuint offset)7200 void glDrawRangeElementsOffsetAEMU_enc(void *self , GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLuint offset)
7201 {
7202 	ENCODER_DEBUG_LOG("glDrawRangeElementsOffsetAEMU(mode:0x%08x, start:%u, end:%u, count:%d, type:0x%08x, offset:%u)", mode, start, end, count, type, offset);
7203 	AEMU_SCOPED_TRACE("glDrawRangeElementsOffsetAEMU encode");
7204 
7205 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7206 	IOStream *stream = ctx->m_stream;
7207 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7208 	bool useChecksum = checksumCalculator->getVersion() > 0;
7209 
7210 	 unsigned char *ptr;
7211 	 unsigned char *buf;
7212 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
7213 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7214 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7215 	buf = stream->alloc(totalSize);
7216 	ptr = buf;
7217 	int tmp = OP_glDrawRangeElementsOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7218 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7219 
7220 		memcpy(ptr, &mode, 4); ptr += 4;
7221 		memcpy(ptr, &start, 4); ptr += 4;
7222 		memcpy(ptr, &end, 4); ptr += 4;
7223 		memcpy(ptr, &count, 4); ptr += 4;
7224 		memcpy(ptr, &type, 4); ptr += 4;
7225 		memcpy(ptr, &offset, 4); ptr += 4;
7226 
7227 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7228 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7229 
7230 }
7231 
glFenceSyncAEMU_enc(void * self,GLenum condition,GLbitfield flags)7232 uint64_t glFenceSyncAEMU_enc(void *self , GLenum condition, GLbitfield flags)
7233 {
7234 	ENCODER_DEBUG_LOG("glFenceSyncAEMU(condition:0x%08x, flags:0x%08x)", condition, flags);
7235 	AEMU_SCOPED_TRACE("glFenceSyncAEMU encode");
7236 
7237 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7238 	IOStream *stream = ctx->m_stream;
7239 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7240 	bool useChecksum = checksumCalculator->getVersion() > 0;
7241 
7242 	 unsigned char *ptr;
7243 	 unsigned char *buf;
7244 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7245 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7246 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7247 	buf = stream->alloc(totalSize);
7248 	ptr = buf;
7249 	int tmp = OP_glFenceSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7250 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7251 
7252 		memcpy(ptr, &condition, 4); ptr += 4;
7253 		memcpy(ptr, &flags, 4); ptr += 4;
7254 
7255 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7256 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7257 
7258 
7259 	uint64_t retval;
7260 	stream->readback(&retval, 8);
7261 	if (useChecksum) checksumCalculator->addBuffer(&retval, 8);
7262 	if (useChecksum) {
7263 		unsigned char *checksumBufPtr = NULL;
7264 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7265 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7266 		stream->readback(checksumBufPtr, checksumSize);
7267 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7268 			ALOGE("glFenceSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
7269 			abort();
7270 		}
7271 	}
7272 	return retval;
7273 }
7274 
glClientWaitSyncAEMU_enc(void * self,uint64_t wait_on,GLbitfield flags,GLuint64 timeout)7275 GLenum glClientWaitSyncAEMU_enc(void *self , uint64_t wait_on, GLbitfield flags, GLuint64 timeout)
7276 {
7277 	ENCODER_DEBUG_LOG("glClientWaitSyncAEMU(wait_on:0x%016lx, flags:0x%08x, timeout:0x%016lx)", wait_on, flags, timeout);
7278 	AEMU_SCOPED_TRACE("glClientWaitSyncAEMU encode");
7279 
7280 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7281 	IOStream *stream = ctx->m_stream;
7282 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7283 	bool useChecksum = checksumCalculator->getVersion() > 0;
7284 
7285 	 unsigned char *ptr;
7286 	 unsigned char *buf;
7287 	 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 8;
7288 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7289 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7290 	buf = stream->alloc(totalSize);
7291 	ptr = buf;
7292 	int tmp = OP_glClientWaitSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7293 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7294 
7295 		memcpy(ptr, &wait_on, 8); ptr += 8;
7296 		memcpy(ptr, &flags, 4); ptr += 4;
7297 		memcpy(ptr, &timeout, 8); ptr += 8;
7298 
7299 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7300 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7301 
7302 
7303 	GLenum retval;
7304 	stream->readback(&retval, 4);
7305 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
7306 	if (useChecksum) {
7307 		unsigned char *checksumBufPtr = NULL;
7308 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7309 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7310 		stream->readback(checksumBufPtr, checksumSize);
7311 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7312 			ALOGE("glClientWaitSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
7313 			abort();
7314 		}
7315 	}
7316 	return retval;
7317 }
7318 
glWaitSyncAEMU_enc(void * self,uint64_t wait_on,GLbitfield flags,GLuint64 timeout)7319 void glWaitSyncAEMU_enc(void *self , uint64_t wait_on, GLbitfield flags, GLuint64 timeout)
7320 {
7321 	ENCODER_DEBUG_LOG("glWaitSyncAEMU(wait_on:0x%016lx, flags:0x%08x, timeout:0x%016lx)", wait_on, flags, timeout);
7322 	AEMU_SCOPED_TRACE("glWaitSyncAEMU encode");
7323 
7324 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7325 	IOStream *stream = ctx->m_stream;
7326 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7327 	bool useChecksum = checksumCalculator->getVersion() > 0;
7328 
7329 	 unsigned char *ptr;
7330 	 unsigned char *buf;
7331 	 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 8;
7332 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7333 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7334 	buf = stream->alloc(totalSize);
7335 	ptr = buf;
7336 	int tmp = OP_glWaitSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7337 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7338 
7339 		memcpy(ptr, &wait_on, 8); ptr += 8;
7340 		memcpy(ptr, &flags, 4); ptr += 4;
7341 		memcpy(ptr, &timeout, 8); ptr += 8;
7342 
7343 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7344 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7345 
7346 }
7347 
glDeleteSyncAEMU_enc(void * self,uint64_t to_delete)7348 void glDeleteSyncAEMU_enc(void *self , uint64_t to_delete)
7349 {
7350 	ENCODER_DEBUG_LOG("glDeleteSyncAEMU(to_delete:0x%016lx)", to_delete);
7351 	AEMU_SCOPED_TRACE("glDeleteSyncAEMU encode");
7352 
7353 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7354 	IOStream *stream = ctx->m_stream;
7355 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7356 	bool useChecksum = checksumCalculator->getVersion() > 0;
7357 
7358 	 unsigned char *ptr;
7359 	 unsigned char *buf;
7360 	 const size_t sizeWithoutChecksum = 8 + 8;
7361 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7362 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7363 	buf = stream->alloc(totalSize);
7364 	ptr = buf;
7365 	int tmp = OP_glDeleteSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7366 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7367 
7368 		memcpy(ptr, &to_delete, 8); ptr += 8;
7369 
7370 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7371 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7372 
7373 }
7374 
glIsSyncAEMU_enc(void * self,uint64_t sync)7375 GLboolean glIsSyncAEMU_enc(void *self , uint64_t sync)
7376 {
7377 	ENCODER_DEBUG_LOG("glIsSyncAEMU(sync:0x%016lx)", sync);
7378 	AEMU_SCOPED_TRACE("glIsSyncAEMU encode");
7379 
7380 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7381 	IOStream *stream = ctx->m_stream;
7382 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7383 	bool useChecksum = checksumCalculator->getVersion() > 0;
7384 
7385 	 unsigned char *ptr;
7386 	 unsigned char *buf;
7387 	 const size_t sizeWithoutChecksum = 8 + 8;
7388 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7389 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7390 	buf = stream->alloc(totalSize);
7391 	ptr = buf;
7392 	int tmp = OP_glIsSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7393 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7394 
7395 		memcpy(ptr, &sync, 8); ptr += 8;
7396 
7397 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7398 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7399 
7400 
7401 	GLboolean retval;
7402 	stream->readback(&retval, 1);
7403 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
7404 	if (useChecksum) {
7405 		unsigned char *checksumBufPtr = NULL;
7406 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7407 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7408 		stream->readback(checksumBufPtr, checksumSize);
7409 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7410 			ALOGE("glIsSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
7411 			abort();
7412 		}
7413 	}
7414 	return retval;
7415 }
7416 
glGetSyncivAEMU_enc(void * self,uint64_t sync,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * values)7417 void glGetSyncivAEMU_enc(void *self , uint64_t sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values)
7418 {
7419 	ENCODER_DEBUG_LOG("glGetSyncivAEMU(sync:0x%016lx, pname:0x%08x, bufSize:%d, length:0x%08x, values:0x%08x)", sync, pname, bufSize, length, values);
7420 	AEMU_SCOPED_TRACE("glGetSyncivAEMU encode");
7421 
7422 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7423 	IOStream *stream = ctx->m_stream;
7424 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7425 	bool useChecksum = checksumCalculator->getVersion() > 0;
7426 
7427 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
7428 	const unsigned int __size_values =  (bufSize * sizeof(GLint));
7429 	 unsigned char *ptr;
7430 	 unsigned char *buf;
7431 	 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 4 + 0 + 0 + 2*4;
7432 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7433 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7434 	buf = stream->alloc(totalSize);
7435 	ptr = buf;
7436 	int tmp = OP_glGetSyncivAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7437 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7438 
7439 		memcpy(ptr, &sync, 8); ptr += 8;
7440 		memcpy(ptr, &pname, 4); ptr += 4;
7441 		memcpy(ptr, &bufSize, 4); ptr += 4;
7442 	memcpy(ptr, &__size_length, 4); ptr += 4;
7443 	memcpy(ptr, &__size_values, 4); ptr += 4;
7444 
7445 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7446 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7447 
7448 	if (length != NULL) {
7449 		stream->readback(length, __size_length);
7450 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
7451 	}
7452 	stream->readback(values, __size_values);
7453 	if (useChecksum) checksumCalculator->addBuffer(values, __size_values);
7454 	if (useChecksum) {
7455 		unsigned char *checksumBufPtr = NULL;
7456 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7457 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7458 		stream->readback(checksumBufPtr, checksumSize);
7459 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7460 			ALOGE("glGetSyncivAEMU: GL communication error, please report this issue to b.android.com.\n");
7461 			abort();
7462 		}
7463 	}
7464 }
7465 
glDrawBuffers_enc(void * self,GLsizei n,const GLenum * bufs)7466 void glDrawBuffers_enc(void *self , GLsizei n, const GLenum* bufs)
7467 {
7468 	ENCODER_DEBUG_LOG("glDrawBuffers(n:%d, bufs:0x%08x)", n, bufs);
7469 	AEMU_SCOPED_TRACE("glDrawBuffers encode");
7470 
7471 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7472 	IOStream *stream = ctx->m_stream;
7473 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7474 	bool useChecksum = checksumCalculator->getVersion() > 0;
7475 
7476 	const unsigned int __size_bufs =  (n * sizeof(GLenum));
7477 	 unsigned char *ptr;
7478 	 unsigned char *buf;
7479 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_bufs + 1*4;
7480 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7481 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7482 	buf = stream->alloc(totalSize);
7483 	ptr = buf;
7484 	int tmp = OP_glDrawBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
7485 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7486 
7487 		memcpy(ptr, &n, 4); ptr += 4;
7488 	memcpy(ptr, &__size_bufs, 4); ptr += 4;
7489 	memcpy(ptr, bufs, __size_bufs);ptr += __size_bufs;
7490 
7491 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7492 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7493 
7494 }
7495 
glReadBuffer_enc(void * self,GLenum src)7496 void glReadBuffer_enc(void *self , GLenum src)
7497 {
7498 	ENCODER_DEBUG_LOG("glReadBuffer(src:0x%08x)", src);
7499 	AEMU_SCOPED_TRACE("glReadBuffer encode");
7500 
7501 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7502 	IOStream *stream = ctx->m_stream;
7503 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7504 	bool useChecksum = checksumCalculator->getVersion() > 0;
7505 
7506 	 unsigned char *ptr;
7507 	 unsigned char *buf;
7508 	 const size_t sizeWithoutChecksum = 8 + 4;
7509 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7510 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7511 	buf = stream->alloc(totalSize);
7512 	ptr = buf;
7513 	int tmp = OP_glReadBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7514 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7515 
7516 		memcpy(ptr, &src, 4); ptr += 4;
7517 
7518 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7519 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7520 
7521 }
7522 
glBlitFramebuffer_enc(void * self,GLint srcX0,GLint srcY0,GLint srcX1,GLint srcY1,GLint dstX0,GLint dstY0,GLint dstX1,GLint dstY1,GLbitfield mask,GLenum filter)7523 void glBlitFramebuffer_enc(void *self , GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
7524 {
7525 	ENCODER_DEBUG_LOG("glBlitFramebuffer(srcX0:%d, srcY0:%d, srcX1:%d, srcY1:%d, dstX0:%d, dstY0:%d, dstX1:%d, dstY1:%d, mask:0x%08x, filter:0x%08x)", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
7526 	AEMU_SCOPED_TRACE("glBlitFramebuffer encode");
7527 
7528 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7529 	IOStream *stream = ctx->m_stream;
7530 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7531 	bool useChecksum = checksumCalculator->getVersion() > 0;
7532 
7533 	 unsigned char *ptr;
7534 	 unsigned char *buf;
7535 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
7536 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7537 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7538 	buf = stream->alloc(totalSize);
7539 	ptr = buf;
7540 	int tmp = OP_glBlitFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7541 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7542 
7543 		memcpy(ptr, &srcX0, 4); ptr += 4;
7544 		memcpy(ptr, &srcY0, 4); ptr += 4;
7545 		memcpy(ptr, &srcX1, 4); ptr += 4;
7546 		memcpy(ptr, &srcY1, 4); ptr += 4;
7547 		memcpy(ptr, &dstX0, 4); ptr += 4;
7548 		memcpy(ptr, &dstY0, 4); ptr += 4;
7549 		memcpy(ptr, &dstX1, 4); ptr += 4;
7550 		memcpy(ptr, &dstY1, 4); ptr += 4;
7551 		memcpy(ptr, &mask, 4); ptr += 4;
7552 		memcpy(ptr, &filter, 4); ptr += 4;
7553 
7554 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7555 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7556 
7557 }
7558 
glInvalidateFramebuffer_enc(void * self,GLenum target,GLsizei numAttachments,const GLenum * attachments)7559 void glInvalidateFramebuffer_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments)
7560 {
7561 	ENCODER_DEBUG_LOG("glInvalidateFramebuffer(target:0x%08x, numAttachments:%d, attachments:0x%08x)", target, numAttachments, attachments);
7562 	AEMU_SCOPED_TRACE("glInvalidateFramebuffer encode");
7563 
7564 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7565 	IOStream *stream = ctx->m_stream;
7566 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7567 	bool useChecksum = checksumCalculator->getVersion() > 0;
7568 
7569 	const unsigned int __size_attachments =  (numAttachments * sizeof(GLenum));
7570 	 unsigned char *ptr;
7571 	 unsigned char *buf;
7572 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 1*4;
7573 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7574 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7575 	buf = stream->alloc(totalSize);
7576 	ptr = buf;
7577 	int tmp = OP_glInvalidateFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7578 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7579 
7580 		memcpy(ptr, &target, 4); ptr += 4;
7581 		memcpy(ptr, &numAttachments, 4); ptr += 4;
7582 	memcpy(ptr, &__size_attachments, 4); ptr += 4;
7583 	memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
7584 
7585 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7586 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7587 
7588 }
7589 
glInvalidateSubFramebuffer_enc(void * self,GLenum target,GLsizei numAttachments,const GLenum * attachments,GLint x,GLint y,GLsizei width,GLsizei height)7590 void glInvalidateSubFramebuffer_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height)
7591 {
7592 	ENCODER_DEBUG_LOG("glInvalidateSubFramebuffer(target:0x%08x, numAttachments:%d, attachments:0x%08x, x:%d, y:%d, width:%d, height:%d)", target, numAttachments, attachments, x, y, width, height);
7593 	AEMU_SCOPED_TRACE("glInvalidateSubFramebuffer encode");
7594 
7595 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7596 	IOStream *stream = ctx->m_stream;
7597 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7598 	bool useChecksum = checksumCalculator->getVersion() > 0;
7599 
7600 	const unsigned int __size_attachments =  (numAttachments * sizeof(GLenum));
7601 	 unsigned char *ptr;
7602 	 unsigned char *buf;
7603 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 4 + 4 + 4 + 4 + 1*4;
7604 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7605 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7606 	buf = stream->alloc(totalSize);
7607 	ptr = buf;
7608 	int tmp = OP_glInvalidateSubFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7609 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7610 
7611 		memcpy(ptr, &target, 4); ptr += 4;
7612 		memcpy(ptr, &numAttachments, 4); ptr += 4;
7613 	memcpy(ptr, &__size_attachments, 4); ptr += 4;
7614 	memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
7615 		memcpy(ptr, &x, 4); ptr += 4;
7616 		memcpy(ptr, &y, 4); ptr += 4;
7617 		memcpy(ptr, &width, 4); ptr += 4;
7618 		memcpy(ptr, &height, 4); ptr += 4;
7619 
7620 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7621 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7622 
7623 }
7624 
glFramebufferTextureLayer_enc(void * self,GLenum target,GLenum attachment,GLuint texture,GLint level,GLint layer)7625 void glFramebufferTextureLayer_enc(void *self , GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
7626 {
7627 	ENCODER_DEBUG_LOG("glFramebufferTextureLayer(target:0x%08x, attachment:0x%08x, texture:%u, level:%d, layer:%d)", target, attachment, texture, level, layer);
7628 	AEMU_SCOPED_TRACE("glFramebufferTextureLayer encode");
7629 
7630 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7631 	IOStream *stream = ctx->m_stream;
7632 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7633 	bool useChecksum = checksumCalculator->getVersion() > 0;
7634 
7635 	 unsigned char *ptr;
7636 	 unsigned char *buf;
7637 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7638 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7639 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7640 	buf = stream->alloc(totalSize);
7641 	ptr = buf;
7642 	int tmp = OP_glFramebufferTextureLayer;memcpy(ptr, &tmp, 4); ptr += 4;
7643 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7644 
7645 		memcpy(ptr, &target, 4); ptr += 4;
7646 		memcpy(ptr, &attachment, 4); ptr += 4;
7647 		memcpy(ptr, &texture, 4); ptr += 4;
7648 		memcpy(ptr, &level, 4); ptr += 4;
7649 		memcpy(ptr, &layer, 4); ptr += 4;
7650 
7651 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7652 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7653 
7654 }
7655 
glRenderbufferStorageMultisample_enc(void * self,GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height)7656 void glRenderbufferStorageMultisample_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
7657 {
7658 	ENCODER_DEBUG_LOG("glRenderbufferStorageMultisample(target:0x%08x, samples:%d, internalformat:0x%08x, width:%d, height:%d)", target, samples, internalformat, width, height);
7659 	AEMU_SCOPED_TRACE("glRenderbufferStorageMultisample encode");
7660 
7661 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7662 	IOStream *stream = ctx->m_stream;
7663 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7664 	bool useChecksum = checksumCalculator->getVersion() > 0;
7665 
7666 	 unsigned char *ptr;
7667 	 unsigned char *buf;
7668 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7669 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7670 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7671 	buf = stream->alloc(totalSize);
7672 	ptr = buf;
7673 	int tmp = OP_glRenderbufferStorageMultisample;memcpy(ptr, &tmp, 4); ptr += 4;
7674 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7675 
7676 		memcpy(ptr, &target, 4); ptr += 4;
7677 		memcpy(ptr, &samples, 4); ptr += 4;
7678 		memcpy(ptr, &internalformat, 4); ptr += 4;
7679 		memcpy(ptr, &width, 4); ptr += 4;
7680 		memcpy(ptr, &height, 4); ptr += 4;
7681 
7682 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7683 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7684 
7685 }
7686 
glTexStorage2D_enc(void * self,GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height)7687 void glTexStorage2D_enc(void *self , GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
7688 {
7689 	ENCODER_DEBUG_LOG("glTexStorage2D(target:0x%08x, levels:%d, internalformat:0x%08x, width:%d, height:%d)", target, levels, internalformat, width, height);
7690 	AEMU_SCOPED_TRACE("glTexStorage2D encode");
7691 
7692 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7693 	IOStream *stream = ctx->m_stream;
7694 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7695 	bool useChecksum = checksumCalculator->getVersion() > 0;
7696 
7697 	 unsigned char *ptr;
7698 	 unsigned char *buf;
7699 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7700 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7701 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7702 	buf = stream->alloc(totalSize);
7703 	ptr = buf;
7704 	int tmp = OP_glTexStorage2D;memcpy(ptr, &tmp, 4); ptr += 4;
7705 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7706 
7707 		memcpy(ptr, &target, 4); ptr += 4;
7708 		memcpy(ptr, &levels, 4); ptr += 4;
7709 		memcpy(ptr, &internalformat, 4); ptr += 4;
7710 		memcpy(ptr, &width, 4); ptr += 4;
7711 		memcpy(ptr, &height, 4); ptr += 4;
7712 
7713 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7714 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7715 
7716 }
7717 
glGetInternalformativ_enc(void * self,GLenum target,GLenum internalformat,GLenum pname,GLsizei bufSize,GLint * params)7718 void glGetInternalformativ_enc(void *self , GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params)
7719 {
7720 	ENCODER_DEBUG_LOG("glGetInternalformativ(target:0x%08x, internalformat:0x%08x, pname:0x%08x, bufSize:%d, params:0x%08x)", target, internalformat, pname, bufSize, params);
7721 	AEMU_SCOPED_TRACE("glGetInternalformativ encode");
7722 
7723 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7724 	IOStream *stream = ctx->m_stream;
7725 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7726 	bool useChecksum = checksumCalculator->getVersion() > 0;
7727 
7728 	const unsigned int __size_params =  (sizeof(GLint) * bufSize);
7729 	 unsigned char *ptr;
7730 	 unsigned char *buf;
7731 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 1*4;
7732 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7733 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7734 	buf = stream->alloc(totalSize);
7735 	ptr = buf;
7736 	int tmp = OP_glGetInternalformativ;memcpy(ptr, &tmp, 4); ptr += 4;
7737 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7738 
7739 		memcpy(ptr, &target, 4); ptr += 4;
7740 		memcpy(ptr, &internalformat, 4); ptr += 4;
7741 		memcpy(ptr, &pname, 4); ptr += 4;
7742 		memcpy(ptr, &bufSize, 4); ptr += 4;
7743 	memcpy(ptr, &__size_params, 4); ptr += 4;
7744 
7745 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7746 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7747 
7748 	stream->readback(params, __size_params);
7749 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
7750 	if (useChecksum) {
7751 		unsigned char *checksumBufPtr = NULL;
7752 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7753 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7754 		stream->readback(checksumBufPtr, checksumSize);
7755 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7756 			ALOGE("glGetInternalformativ: GL communication error, please report this issue to b.android.com.\n");
7757 			abort();
7758 		}
7759 	}
7760 }
7761 
glBeginTransformFeedback_enc(void * self,GLenum primitiveMode)7762 void glBeginTransformFeedback_enc(void *self , GLenum primitiveMode)
7763 {
7764 	ENCODER_DEBUG_LOG("glBeginTransformFeedback(primitiveMode:0x%08x)", primitiveMode);
7765 	AEMU_SCOPED_TRACE("glBeginTransformFeedback encode");
7766 
7767 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7768 	IOStream *stream = ctx->m_stream;
7769 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7770 	bool useChecksum = checksumCalculator->getVersion() > 0;
7771 
7772 	 unsigned char *ptr;
7773 	 unsigned char *buf;
7774 	 const size_t sizeWithoutChecksum = 8 + 4;
7775 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7776 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7777 	buf = stream->alloc(totalSize);
7778 	ptr = buf;
7779 	int tmp = OP_glBeginTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7780 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7781 
7782 		memcpy(ptr, &primitiveMode, 4); ptr += 4;
7783 
7784 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7785 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7786 
7787 }
7788 
glEndTransformFeedback_enc(void * self)7789 void glEndTransformFeedback_enc(void *self )
7790 {
7791 	ENCODER_DEBUG_LOG("glEndTransformFeedback()");
7792 	AEMU_SCOPED_TRACE("glEndTransformFeedback encode");
7793 
7794 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7795 	IOStream *stream = ctx->m_stream;
7796 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7797 	bool useChecksum = checksumCalculator->getVersion() > 0;
7798 
7799 	 unsigned char *ptr;
7800 	 unsigned char *buf;
7801 	 const size_t sizeWithoutChecksum = 8;
7802 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7803 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7804 	buf = stream->alloc(totalSize);
7805 	ptr = buf;
7806 	int tmp = OP_glEndTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7807 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7808 
7809 
7810 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7811 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7812 
7813 }
7814 
glGenTransformFeedbacks_enc(void * self,GLsizei n,GLuint * ids)7815 void glGenTransformFeedbacks_enc(void *self , GLsizei n, GLuint* ids)
7816 {
7817 	ENCODER_DEBUG_LOG("glGenTransformFeedbacks(n:%d, ids:0x%08x)", n, ids);
7818 	AEMU_SCOPED_TRACE("glGenTransformFeedbacks encode");
7819 
7820 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7821 	IOStream *stream = ctx->m_stream;
7822 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7823 	bool useChecksum = checksumCalculator->getVersion() > 0;
7824 
7825 	const unsigned int __size_ids =  (n * sizeof(GLuint));
7826 	 unsigned char *ptr;
7827 	 unsigned char *buf;
7828 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
7829 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7830 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7831 	buf = stream->alloc(totalSize);
7832 	ptr = buf;
7833 	int tmp = OP_glGenTransformFeedbacks;memcpy(ptr, &tmp, 4); ptr += 4;
7834 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7835 
7836 		memcpy(ptr, &n, 4); ptr += 4;
7837 	memcpy(ptr, &__size_ids, 4); ptr += 4;
7838 
7839 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7840 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7841 
7842 	stream->readback(ids, __size_ids);
7843 	if (useChecksum) checksumCalculator->addBuffer(ids, __size_ids);
7844 	if (useChecksum) {
7845 		unsigned char *checksumBufPtr = NULL;
7846 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7847 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7848 		stream->readback(checksumBufPtr, checksumSize);
7849 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7850 			ALOGE("glGenTransformFeedbacks: GL communication error, please report this issue to b.android.com.\n");
7851 			abort();
7852 		}
7853 	}
7854 }
7855 
glDeleteTransformFeedbacks_enc(void * self,GLsizei n,const GLuint * ids)7856 void glDeleteTransformFeedbacks_enc(void *self , GLsizei n, const GLuint* ids)
7857 {
7858 	ENCODER_DEBUG_LOG("glDeleteTransformFeedbacks(n:%d, ids:0x%08x)", n, ids);
7859 	AEMU_SCOPED_TRACE("glDeleteTransformFeedbacks encode");
7860 
7861 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7862 	IOStream *stream = ctx->m_stream;
7863 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7864 	bool useChecksum = checksumCalculator->getVersion() > 0;
7865 
7866 	const unsigned int __size_ids =  (n * sizeof(GLuint));
7867 	 unsigned char *ptr;
7868 	 unsigned char *buf;
7869 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_ids + 1*4;
7870 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7871 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7872 	buf = stream->alloc(totalSize);
7873 	ptr = buf;
7874 	int tmp = OP_glDeleteTransformFeedbacks;memcpy(ptr, &tmp, 4); ptr += 4;
7875 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7876 
7877 		memcpy(ptr, &n, 4); ptr += 4;
7878 	memcpy(ptr, &__size_ids, 4); ptr += 4;
7879 	memcpy(ptr, ids, __size_ids);ptr += __size_ids;
7880 
7881 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7882 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7883 
7884 }
7885 
glBindTransformFeedback_enc(void * self,GLenum target,GLuint id)7886 void glBindTransformFeedback_enc(void *self , GLenum target, GLuint id)
7887 {
7888 	ENCODER_DEBUG_LOG("glBindTransformFeedback(target:0x%08x, id:%u)", target, id);
7889 	AEMU_SCOPED_TRACE("glBindTransformFeedback encode");
7890 
7891 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7892 	IOStream *stream = ctx->m_stream;
7893 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7894 	bool useChecksum = checksumCalculator->getVersion() > 0;
7895 
7896 	 unsigned char *ptr;
7897 	 unsigned char *buf;
7898 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7899 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7900 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7901 	buf = stream->alloc(totalSize);
7902 	ptr = buf;
7903 	int tmp = OP_glBindTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7904 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7905 
7906 		memcpy(ptr, &target, 4); ptr += 4;
7907 		memcpy(ptr, &id, 4); ptr += 4;
7908 
7909 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7910 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7911 
7912 }
7913 
glPauseTransformFeedback_enc(void * self)7914 void glPauseTransformFeedback_enc(void *self )
7915 {
7916 	ENCODER_DEBUG_LOG("glPauseTransformFeedback()");
7917 	AEMU_SCOPED_TRACE("glPauseTransformFeedback encode");
7918 
7919 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7920 	IOStream *stream = ctx->m_stream;
7921 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7922 	bool useChecksum = checksumCalculator->getVersion() > 0;
7923 
7924 	 unsigned char *ptr;
7925 	 unsigned char *buf;
7926 	 const size_t sizeWithoutChecksum = 8;
7927 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7928 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7929 	buf = stream->alloc(totalSize);
7930 	ptr = buf;
7931 	int tmp = OP_glPauseTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7932 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7933 
7934 
7935 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7936 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7937 
7938 }
7939 
glResumeTransformFeedback_enc(void * self)7940 void glResumeTransformFeedback_enc(void *self )
7941 {
7942 	ENCODER_DEBUG_LOG("glResumeTransformFeedback()");
7943 	AEMU_SCOPED_TRACE("glResumeTransformFeedback encode");
7944 
7945 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7946 	IOStream *stream = ctx->m_stream;
7947 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7948 	bool useChecksum = checksumCalculator->getVersion() > 0;
7949 
7950 	 unsigned char *ptr;
7951 	 unsigned char *buf;
7952 	 const size_t sizeWithoutChecksum = 8;
7953 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7954 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7955 	buf = stream->alloc(totalSize);
7956 	ptr = buf;
7957 	int tmp = OP_glResumeTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7958 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7959 
7960 
7961 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7962 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7963 
7964 }
7965 
glIsTransformFeedback_enc(void * self,GLuint id)7966 GLboolean glIsTransformFeedback_enc(void *self , GLuint id)
7967 {
7968 	ENCODER_DEBUG_LOG("glIsTransformFeedback(id:%u)", id);
7969 	AEMU_SCOPED_TRACE("glIsTransformFeedback encode");
7970 
7971 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7972 	IOStream *stream = ctx->m_stream;
7973 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7974 	bool useChecksum = checksumCalculator->getVersion() > 0;
7975 
7976 	 unsigned char *ptr;
7977 	 unsigned char *buf;
7978 	 const size_t sizeWithoutChecksum = 8 + 4;
7979 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7980 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7981 	buf = stream->alloc(totalSize);
7982 	ptr = buf;
7983 	int tmp = OP_glIsTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7984 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7985 
7986 		memcpy(ptr, &id, 4); ptr += 4;
7987 
7988 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7989 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7990 
7991 
7992 	GLboolean retval;
7993 	stream->readback(&retval, 1);
7994 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
7995 	if (useChecksum) {
7996 		unsigned char *checksumBufPtr = NULL;
7997 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7998 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7999 		stream->readback(checksumBufPtr, checksumSize);
8000 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8001 			ALOGE("glIsTransformFeedback: GL communication error, please report this issue to b.android.com.\n");
8002 			abort();
8003 		}
8004 	}
8005 	return retval;
8006 }
8007 
glTransformFeedbackVaryingsAEMU_enc(void * self,GLuint program,GLsizei count,const char * packedVaryings,GLuint packedVaryingsLen,GLenum bufferMode)8008 void glTransformFeedbackVaryingsAEMU_enc(void *self , GLuint program, GLsizei count, const char* packedVaryings, GLuint packedVaryingsLen, GLenum bufferMode)
8009 {
8010 	ENCODER_DEBUG_LOG("glTransformFeedbackVaryingsAEMU(program:%u, count:%d, packedVaryings:0x%08x, packedVaryingsLen:%u, bufferMode:0x%08x)", program, count, packedVaryings, packedVaryingsLen, bufferMode);
8011 	AEMU_SCOPED_TRACE("glTransformFeedbackVaryingsAEMU encode");
8012 
8013 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8014 	IOStream *stream = ctx->m_stream;
8015 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8016 	bool useChecksum = checksumCalculator->getVersion() > 0;
8017 
8018 	const unsigned int __size_packedVaryings =  packedVaryingsLen;
8019 	 unsigned char *ptr;
8020 	 unsigned char *buf;
8021 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedVaryings + 4 + 4 + 1*4;
8022 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8023 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8024 	buf = stream->alloc(totalSize);
8025 	ptr = buf;
8026 	int tmp = OP_glTransformFeedbackVaryingsAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
8027 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8028 
8029 		memcpy(ptr, &program, 4); ptr += 4;
8030 		memcpy(ptr, &count, 4); ptr += 4;
8031 	memcpy(ptr, &__size_packedVaryings, 4); ptr += 4;
8032 	memcpy(ptr, packedVaryings, __size_packedVaryings);ptr += __size_packedVaryings;
8033 		memcpy(ptr, &packedVaryingsLen, 4); ptr += 4;
8034 		memcpy(ptr, &bufferMode, 4); ptr += 4;
8035 
8036 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8037 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8038 
8039 }
8040 
glGetTransformFeedbackVarying_enc(void * self,GLuint program,GLuint index,GLsizei bufSize,GLsizei * length,GLsizei * size,GLenum * type,char * name)8041 void glGetTransformFeedbackVarying_enc(void *self , GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, char* name)
8042 {
8043 	ENCODER_DEBUG_LOG("glGetTransformFeedbackVarying(program:%u, index:%u, bufSize:%d, length:0x%08x, size:0x%08x, type:0x%08x, name:0x%08x)", program, index, bufSize, length, size, type, name);
8044 	AEMU_SCOPED_TRACE("glGetTransformFeedbackVarying encode");
8045 
8046 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8047 	IOStream *stream = ctx->m_stream;
8048 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8049 	bool useChecksum = checksumCalculator->getVersion() > 0;
8050 
8051 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
8052 	const unsigned int __size_size =  (sizeof(GLsizei));
8053 	const unsigned int __size_type = ((type != NULL) ?  (sizeof(GLenum)) : 0);
8054 	const unsigned int __size_name = ((name != NULL) ?  bufSize : 0);
8055 	 unsigned char *ptr;
8056 	 unsigned char *buf;
8057 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
8058 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8059 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8060 	buf = stream->alloc(totalSize);
8061 	ptr = buf;
8062 	int tmp = OP_glGetTransformFeedbackVarying;memcpy(ptr, &tmp, 4); ptr += 4;
8063 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8064 
8065 		memcpy(ptr, &program, 4); ptr += 4;
8066 		memcpy(ptr, &index, 4); ptr += 4;
8067 		memcpy(ptr, &bufSize, 4); ptr += 4;
8068 	memcpy(ptr, &__size_length, 4); ptr += 4;
8069 	memcpy(ptr, &__size_size, 4); ptr += 4;
8070 	memcpy(ptr, &__size_type, 4); ptr += 4;
8071 	memcpy(ptr, &__size_name, 4); ptr += 4;
8072 
8073 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8074 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8075 
8076 	if (length != NULL) {
8077 		stream->readback(length, __size_length);
8078 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
8079 	}
8080 	stream->readback(size, __size_size);
8081 	if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
8082 	if (type != NULL) {
8083 		stream->readback(type, __size_type);
8084 		if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
8085 	}
8086 	if (name != NULL) {
8087 		stream->readback(name, __size_name);
8088 		if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
8089 	}
8090 	if (useChecksum) {
8091 		unsigned char *checksumBufPtr = NULL;
8092 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8093 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8094 		stream->readback(checksumBufPtr, checksumSize);
8095 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8096 			ALOGE("glGetTransformFeedbackVarying: GL communication error, please report this issue to b.android.com.\n");
8097 			abort();
8098 		}
8099 	}
8100 }
8101 
glGenSamplers_enc(void * self,GLsizei n,GLuint * samplers)8102 void glGenSamplers_enc(void *self , GLsizei n, GLuint* samplers)
8103 {
8104 	ENCODER_DEBUG_LOG("glGenSamplers(n:%d, samplers:0x%08x)", n, samplers);
8105 	AEMU_SCOPED_TRACE("glGenSamplers encode");
8106 
8107 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8108 	IOStream *stream = ctx->m_stream;
8109 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8110 	bool useChecksum = checksumCalculator->getVersion() > 0;
8111 
8112 	const unsigned int __size_samplers =  (n * sizeof(GLuint));
8113 	 unsigned char *ptr;
8114 	 unsigned char *buf;
8115 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
8116 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8117 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8118 	buf = stream->alloc(totalSize);
8119 	ptr = buf;
8120 	int tmp = OP_glGenSamplers;memcpy(ptr, &tmp, 4); ptr += 4;
8121 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8122 
8123 		memcpy(ptr, &n, 4); ptr += 4;
8124 	memcpy(ptr, &__size_samplers, 4); ptr += 4;
8125 
8126 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8127 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8128 
8129 	stream->readback(samplers, __size_samplers);
8130 	if (useChecksum) checksumCalculator->addBuffer(samplers, __size_samplers);
8131 	if (useChecksum) {
8132 		unsigned char *checksumBufPtr = NULL;
8133 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8134 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8135 		stream->readback(checksumBufPtr, checksumSize);
8136 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8137 			ALOGE("glGenSamplers: GL communication error, please report this issue to b.android.com.\n");
8138 			abort();
8139 		}
8140 	}
8141 }
8142 
glDeleteSamplers_enc(void * self,GLsizei n,const GLuint * samplers)8143 void glDeleteSamplers_enc(void *self , GLsizei n, const GLuint* samplers)
8144 {
8145 	ENCODER_DEBUG_LOG("glDeleteSamplers(n:%d, samplers:0x%08x)", n, samplers);
8146 	AEMU_SCOPED_TRACE("glDeleteSamplers encode");
8147 
8148 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8149 	IOStream *stream = ctx->m_stream;
8150 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8151 	bool useChecksum = checksumCalculator->getVersion() > 0;
8152 
8153 	const unsigned int __size_samplers =  (n * sizeof(GLuint));
8154 	 unsigned char *ptr;
8155 	 unsigned char *buf;
8156 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_samplers + 1*4;
8157 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8158 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8159 	buf = stream->alloc(totalSize);
8160 	ptr = buf;
8161 	int tmp = OP_glDeleteSamplers;memcpy(ptr, &tmp, 4); ptr += 4;
8162 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8163 
8164 		memcpy(ptr, &n, 4); ptr += 4;
8165 	memcpy(ptr, &__size_samplers, 4); ptr += 4;
8166 	memcpy(ptr, samplers, __size_samplers);ptr += __size_samplers;
8167 
8168 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8169 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8170 
8171 }
8172 
glBindSampler_enc(void * self,GLuint unit,GLuint sampler)8173 void glBindSampler_enc(void *self , GLuint unit, GLuint sampler)
8174 {
8175 	ENCODER_DEBUG_LOG("glBindSampler(unit:%u, sampler:%u)", unit, sampler);
8176 	AEMU_SCOPED_TRACE("glBindSampler encode");
8177 
8178 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8179 	IOStream *stream = ctx->m_stream;
8180 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8181 	bool useChecksum = checksumCalculator->getVersion() > 0;
8182 
8183 	 unsigned char *ptr;
8184 	 unsigned char *buf;
8185 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
8186 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8187 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8188 	buf = stream->alloc(totalSize);
8189 	ptr = buf;
8190 	int tmp = OP_glBindSampler;memcpy(ptr, &tmp, 4); ptr += 4;
8191 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8192 
8193 		memcpy(ptr, &unit, 4); ptr += 4;
8194 		memcpy(ptr, &sampler, 4); ptr += 4;
8195 
8196 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8197 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8198 
8199 }
8200 
glSamplerParameterf_enc(void * self,GLuint sampler,GLenum pname,GLfloat param)8201 void glSamplerParameterf_enc(void *self , GLuint sampler, GLenum pname, GLfloat param)
8202 {
8203 	ENCODER_DEBUG_LOG("glSamplerParameterf(sampler:%u, pname:0x%08x, param:%f)", sampler, pname, param);
8204 	AEMU_SCOPED_TRACE("glSamplerParameterf encode");
8205 
8206 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8207 	IOStream *stream = ctx->m_stream;
8208 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8209 	bool useChecksum = checksumCalculator->getVersion() > 0;
8210 
8211 	 unsigned char *ptr;
8212 	 unsigned char *buf;
8213 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
8214 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8215 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8216 	buf = stream->alloc(totalSize);
8217 	ptr = buf;
8218 	int tmp = OP_glSamplerParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
8219 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8220 
8221 		memcpy(ptr, &sampler, 4); ptr += 4;
8222 		memcpy(ptr, &pname, 4); ptr += 4;
8223 		memcpy(ptr, &param, 4); ptr += 4;
8224 
8225 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8226 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8227 
8228 }
8229 
glSamplerParameteri_enc(void * self,GLuint sampler,GLenum pname,GLint param)8230 void glSamplerParameteri_enc(void *self , GLuint sampler, GLenum pname, GLint param)
8231 {
8232 	ENCODER_DEBUG_LOG("glSamplerParameteri(sampler:%u, pname:0x%08x, param:%d)", sampler, pname, param);
8233 	AEMU_SCOPED_TRACE("glSamplerParameteri encode");
8234 
8235 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8236 	IOStream *stream = ctx->m_stream;
8237 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8238 	bool useChecksum = checksumCalculator->getVersion() > 0;
8239 
8240 	 unsigned char *ptr;
8241 	 unsigned char *buf;
8242 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
8243 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8244 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8245 	buf = stream->alloc(totalSize);
8246 	ptr = buf;
8247 	int tmp = OP_glSamplerParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
8248 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8249 
8250 		memcpy(ptr, &sampler, 4); ptr += 4;
8251 		memcpy(ptr, &pname, 4); ptr += 4;
8252 		memcpy(ptr, &param, 4); ptr += 4;
8253 
8254 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8255 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8256 
8257 }
8258 
glSamplerParameterfv_enc(void * self,GLuint sampler,GLenum pname,const GLfloat * params)8259 void glSamplerParameterfv_enc(void *self , GLuint sampler, GLenum pname, const GLfloat* params)
8260 {
8261 	ENCODER_DEBUG_LOG("glSamplerParameterfv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8262 	AEMU_SCOPED_TRACE("glSamplerParameterfv encode");
8263 
8264 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8265 	IOStream *stream = ctx->m_stream;
8266 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8267 	bool useChecksum = checksumCalculator->getVersion() > 0;
8268 
8269 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
8270 	 unsigned char *ptr;
8271 	 unsigned char *buf;
8272 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
8273 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8274 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8275 	buf = stream->alloc(totalSize);
8276 	ptr = buf;
8277 	int tmp = OP_glSamplerParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
8278 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8279 
8280 		memcpy(ptr, &sampler, 4); ptr += 4;
8281 		memcpy(ptr, &pname, 4); ptr += 4;
8282 	memcpy(ptr, &__size_params, 4); ptr += 4;
8283 	memcpy(ptr, params, __size_params);ptr += __size_params;
8284 
8285 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8286 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8287 
8288 }
8289 
glSamplerParameteriv_enc(void * self,GLuint sampler,GLenum pname,const GLint * params)8290 void glSamplerParameteriv_enc(void *self , GLuint sampler, GLenum pname, const GLint* params)
8291 {
8292 	ENCODER_DEBUG_LOG("glSamplerParameteriv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8293 	AEMU_SCOPED_TRACE("glSamplerParameteriv encode");
8294 
8295 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8296 	IOStream *stream = ctx->m_stream;
8297 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8298 	bool useChecksum = checksumCalculator->getVersion() > 0;
8299 
8300 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
8301 	 unsigned char *ptr;
8302 	 unsigned char *buf;
8303 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
8304 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8305 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8306 	buf = stream->alloc(totalSize);
8307 	ptr = buf;
8308 	int tmp = OP_glSamplerParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
8309 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8310 
8311 		memcpy(ptr, &sampler, 4); ptr += 4;
8312 		memcpy(ptr, &pname, 4); ptr += 4;
8313 	memcpy(ptr, &__size_params, 4); ptr += 4;
8314 	memcpy(ptr, params, __size_params);ptr += __size_params;
8315 
8316 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8317 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8318 
8319 }
8320 
glGetSamplerParameterfv_enc(void * self,GLuint sampler,GLenum pname,GLfloat * params)8321 void glGetSamplerParameterfv_enc(void *self , GLuint sampler, GLenum pname, GLfloat* params)
8322 {
8323 	ENCODER_DEBUG_LOG("glGetSamplerParameterfv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8324 	AEMU_SCOPED_TRACE("glGetSamplerParameterfv encode");
8325 
8326 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8327 	IOStream *stream = ctx->m_stream;
8328 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8329 	bool useChecksum = checksumCalculator->getVersion() > 0;
8330 
8331 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
8332 	 unsigned char *ptr;
8333 	 unsigned char *buf;
8334 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8335 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8336 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8337 	buf = stream->alloc(totalSize);
8338 	ptr = buf;
8339 	int tmp = OP_glGetSamplerParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
8340 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8341 
8342 		memcpy(ptr, &sampler, 4); ptr += 4;
8343 		memcpy(ptr, &pname, 4); ptr += 4;
8344 	memcpy(ptr, &__size_params, 4); ptr += 4;
8345 
8346 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8347 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8348 
8349 	stream->readback(params, __size_params);
8350 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8351 	if (useChecksum) {
8352 		unsigned char *checksumBufPtr = NULL;
8353 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8354 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8355 		stream->readback(checksumBufPtr, checksumSize);
8356 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8357 			ALOGE("glGetSamplerParameterfv: GL communication error, please report this issue to b.android.com.\n");
8358 			abort();
8359 		}
8360 	}
8361 }
8362 
glGetSamplerParameteriv_enc(void * self,GLuint sampler,GLenum pname,GLint * params)8363 void glGetSamplerParameteriv_enc(void *self , GLuint sampler, GLenum pname, GLint* params)
8364 {
8365 	ENCODER_DEBUG_LOG("glGetSamplerParameteriv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8366 	AEMU_SCOPED_TRACE("glGetSamplerParameteriv encode");
8367 
8368 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8369 	IOStream *stream = ctx->m_stream;
8370 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8371 	bool useChecksum = checksumCalculator->getVersion() > 0;
8372 
8373 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
8374 	 unsigned char *ptr;
8375 	 unsigned char *buf;
8376 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8377 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8378 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8379 	buf = stream->alloc(totalSize);
8380 	ptr = buf;
8381 	int tmp = OP_glGetSamplerParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
8382 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8383 
8384 		memcpy(ptr, &sampler, 4); ptr += 4;
8385 		memcpy(ptr, &pname, 4); ptr += 4;
8386 	memcpy(ptr, &__size_params, 4); ptr += 4;
8387 
8388 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8389 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8390 
8391 	stream->readback(params, __size_params);
8392 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8393 	if (useChecksum) {
8394 		unsigned char *checksumBufPtr = NULL;
8395 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8396 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8397 		stream->readback(checksumBufPtr, checksumSize);
8398 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8399 			ALOGE("glGetSamplerParameteriv: GL communication error, please report this issue to b.android.com.\n");
8400 			abort();
8401 		}
8402 	}
8403 }
8404 
glIsSampler_enc(void * self,GLuint sampler)8405 GLboolean glIsSampler_enc(void *self , GLuint sampler)
8406 {
8407 	ENCODER_DEBUG_LOG("glIsSampler(sampler:%u)", sampler);
8408 	AEMU_SCOPED_TRACE("glIsSampler encode");
8409 
8410 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8411 	IOStream *stream = ctx->m_stream;
8412 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8413 	bool useChecksum = checksumCalculator->getVersion() > 0;
8414 
8415 	 unsigned char *ptr;
8416 	 unsigned char *buf;
8417 	 const size_t sizeWithoutChecksum = 8 + 4;
8418 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8419 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8420 	buf = stream->alloc(totalSize);
8421 	ptr = buf;
8422 	int tmp = OP_glIsSampler;memcpy(ptr, &tmp, 4); ptr += 4;
8423 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8424 
8425 		memcpy(ptr, &sampler, 4); ptr += 4;
8426 
8427 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8428 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8429 
8430 
8431 	GLboolean retval;
8432 	stream->readback(&retval, 1);
8433 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
8434 	if (useChecksum) {
8435 		unsigned char *checksumBufPtr = NULL;
8436 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8437 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8438 		stream->readback(checksumBufPtr, checksumSize);
8439 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8440 			ALOGE("glIsSampler: GL communication error, please report this issue to b.android.com.\n");
8441 			abort();
8442 		}
8443 	}
8444 	return retval;
8445 }
8446 
glGenQueries_enc(void * self,GLsizei n,GLuint * queries)8447 void glGenQueries_enc(void *self , GLsizei n, GLuint* queries)
8448 {
8449 	ENCODER_DEBUG_LOG("glGenQueries(n:%d, queries:0x%08x)", n, queries);
8450 	AEMU_SCOPED_TRACE("glGenQueries encode");
8451 
8452 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8453 	IOStream *stream = ctx->m_stream;
8454 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8455 	bool useChecksum = checksumCalculator->getVersion() > 0;
8456 
8457 	const unsigned int __size_queries =  (n * sizeof(GLuint));
8458 	 unsigned char *ptr;
8459 	 unsigned char *buf;
8460 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
8461 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8462 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8463 	buf = stream->alloc(totalSize);
8464 	ptr = buf;
8465 	int tmp = OP_glGenQueries;memcpy(ptr, &tmp, 4); ptr += 4;
8466 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8467 
8468 		memcpy(ptr, &n, 4); ptr += 4;
8469 	memcpy(ptr, &__size_queries, 4); ptr += 4;
8470 
8471 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8472 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8473 
8474 	stream->readback(queries, __size_queries);
8475 	if (useChecksum) checksumCalculator->addBuffer(queries, __size_queries);
8476 	if (useChecksum) {
8477 		unsigned char *checksumBufPtr = NULL;
8478 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8479 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8480 		stream->readback(checksumBufPtr, checksumSize);
8481 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8482 			ALOGE("glGenQueries: GL communication error, please report this issue to b.android.com.\n");
8483 			abort();
8484 		}
8485 	}
8486 }
8487 
glDeleteQueries_enc(void * self,GLsizei n,const GLuint * queries)8488 void glDeleteQueries_enc(void *self , GLsizei n, const GLuint* queries)
8489 {
8490 	ENCODER_DEBUG_LOG("glDeleteQueries(n:%d, queries:0x%08x)", n, queries);
8491 	AEMU_SCOPED_TRACE("glDeleteQueries encode");
8492 
8493 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8494 	IOStream *stream = ctx->m_stream;
8495 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8496 	bool useChecksum = checksumCalculator->getVersion() > 0;
8497 
8498 	const unsigned int __size_queries =  (n * sizeof(GLuint));
8499 	 unsigned char *ptr;
8500 	 unsigned char *buf;
8501 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_queries + 1*4;
8502 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8503 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8504 	buf = stream->alloc(totalSize);
8505 	ptr = buf;
8506 	int tmp = OP_glDeleteQueries;memcpy(ptr, &tmp, 4); ptr += 4;
8507 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8508 
8509 		memcpy(ptr, &n, 4); ptr += 4;
8510 	memcpy(ptr, &__size_queries, 4); ptr += 4;
8511 	memcpy(ptr, queries, __size_queries);ptr += __size_queries;
8512 
8513 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8514 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8515 
8516 }
8517 
glBeginQuery_enc(void * self,GLenum target,GLuint query)8518 void glBeginQuery_enc(void *self , GLenum target, GLuint query)
8519 {
8520 	ENCODER_DEBUG_LOG("glBeginQuery(target:0x%08x, query:%u)", target, query);
8521 	AEMU_SCOPED_TRACE("glBeginQuery encode");
8522 
8523 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8524 	IOStream *stream = ctx->m_stream;
8525 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8526 	bool useChecksum = checksumCalculator->getVersion() > 0;
8527 
8528 	 unsigned char *ptr;
8529 	 unsigned char *buf;
8530 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
8531 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8532 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8533 	buf = stream->alloc(totalSize);
8534 	ptr = buf;
8535 	int tmp = OP_glBeginQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8536 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8537 
8538 		memcpy(ptr, &target, 4); ptr += 4;
8539 		memcpy(ptr, &query, 4); ptr += 4;
8540 
8541 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8542 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8543 
8544 }
8545 
glEndQuery_enc(void * self,GLenum target)8546 void glEndQuery_enc(void *self , GLenum target)
8547 {
8548 	ENCODER_DEBUG_LOG("glEndQuery(target:0x%08x)", target);
8549 	AEMU_SCOPED_TRACE("glEndQuery encode");
8550 
8551 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8552 	IOStream *stream = ctx->m_stream;
8553 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8554 	bool useChecksum = checksumCalculator->getVersion() > 0;
8555 
8556 	 unsigned char *ptr;
8557 	 unsigned char *buf;
8558 	 const size_t sizeWithoutChecksum = 8 + 4;
8559 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8560 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8561 	buf = stream->alloc(totalSize);
8562 	ptr = buf;
8563 	int tmp = OP_glEndQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8564 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8565 
8566 		memcpy(ptr, &target, 4); ptr += 4;
8567 
8568 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8569 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8570 
8571 }
8572 
glGetQueryiv_enc(void * self,GLenum target,GLenum pname,GLint * params)8573 void glGetQueryiv_enc(void *self , GLenum target, GLenum pname, GLint* params)
8574 {
8575 	ENCODER_DEBUG_LOG("glGetQueryiv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
8576 	AEMU_SCOPED_TRACE("glGetQueryiv encode");
8577 
8578 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8579 	IOStream *stream = ctx->m_stream;
8580 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8581 	bool useChecksum = checksumCalculator->getVersion() > 0;
8582 
8583 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
8584 	 unsigned char *ptr;
8585 	 unsigned char *buf;
8586 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8587 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8588 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8589 	buf = stream->alloc(totalSize);
8590 	ptr = buf;
8591 	int tmp = OP_glGetQueryiv;memcpy(ptr, &tmp, 4); ptr += 4;
8592 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8593 
8594 		memcpy(ptr, &target, 4); ptr += 4;
8595 		memcpy(ptr, &pname, 4); ptr += 4;
8596 	memcpy(ptr, &__size_params, 4); ptr += 4;
8597 
8598 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8599 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8600 
8601 	stream->readback(params, __size_params);
8602 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8603 	if (useChecksum) {
8604 		unsigned char *checksumBufPtr = NULL;
8605 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8606 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8607 		stream->readback(checksumBufPtr, checksumSize);
8608 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8609 			ALOGE("glGetQueryiv: GL communication error, please report this issue to b.android.com.\n");
8610 			abort();
8611 		}
8612 	}
8613 }
8614 
glGetQueryObjectuiv_enc(void * self,GLuint query,GLenum pname,GLuint * params)8615 void glGetQueryObjectuiv_enc(void *self , GLuint query, GLenum pname, GLuint* params)
8616 {
8617 	ENCODER_DEBUG_LOG("glGetQueryObjectuiv(query:%u, pname:0x%08x, params:0x%08x)", query, pname, params);
8618 	AEMU_SCOPED_TRACE("glGetQueryObjectuiv encode");
8619 
8620 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8621 	IOStream *stream = ctx->m_stream;
8622 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8623 	bool useChecksum = checksumCalculator->getVersion() > 0;
8624 
8625 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLuint));
8626 	 unsigned char *ptr;
8627 	 unsigned char *buf;
8628 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8629 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8630 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8631 	buf = stream->alloc(totalSize);
8632 	ptr = buf;
8633 	int tmp = OP_glGetQueryObjectuiv;memcpy(ptr, &tmp, 4); ptr += 4;
8634 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8635 
8636 		memcpy(ptr, &query, 4); ptr += 4;
8637 		memcpy(ptr, &pname, 4); ptr += 4;
8638 	memcpy(ptr, &__size_params, 4); ptr += 4;
8639 
8640 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8641 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8642 
8643 	stream->readback(params, __size_params);
8644 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8645 	if (useChecksum) {
8646 		unsigned char *checksumBufPtr = NULL;
8647 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8648 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8649 		stream->readback(checksumBufPtr, checksumSize);
8650 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8651 			ALOGE("glGetQueryObjectuiv: GL communication error, please report this issue to b.android.com.\n");
8652 			abort();
8653 		}
8654 	}
8655 }
8656 
glIsQuery_enc(void * self,GLuint query)8657 GLboolean glIsQuery_enc(void *self , GLuint query)
8658 {
8659 	ENCODER_DEBUG_LOG("glIsQuery(query:%u)", query);
8660 	AEMU_SCOPED_TRACE("glIsQuery encode");
8661 
8662 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8663 	IOStream *stream = ctx->m_stream;
8664 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8665 	bool useChecksum = checksumCalculator->getVersion() > 0;
8666 
8667 	 unsigned char *ptr;
8668 	 unsigned char *buf;
8669 	 const size_t sizeWithoutChecksum = 8 + 4;
8670 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8671 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8672 	buf = stream->alloc(totalSize);
8673 	ptr = buf;
8674 	int tmp = OP_glIsQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8675 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8676 
8677 		memcpy(ptr, &query, 4); ptr += 4;
8678 
8679 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8680 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8681 
8682 
8683 	GLboolean retval;
8684 	stream->readback(&retval, 1);
8685 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
8686 	if (useChecksum) {
8687 		unsigned char *checksumBufPtr = NULL;
8688 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8689 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8690 		stream->readback(checksumBufPtr, checksumSize);
8691 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8692 			ALOGE("glIsQuery: GL communication error, please report this issue to b.android.com.\n");
8693 			abort();
8694 		}
8695 	}
8696 	return retval;
8697 }
8698 
glProgramParameteri_enc(void * self,GLuint program,GLenum pname,GLint value)8699 void glProgramParameteri_enc(void *self , GLuint program, GLenum pname, GLint value)
8700 {
8701 	ENCODER_DEBUG_LOG("glProgramParameteri(program:%u, pname:0x%08x, value:%d)", program, pname, value);
8702 	AEMU_SCOPED_TRACE("glProgramParameteri encode");
8703 
8704 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8705 	IOStream *stream = ctx->m_stream;
8706 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8707 	bool useChecksum = checksumCalculator->getVersion() > 0;
8708 
8709 	 unsigned char *ptr;
8710 	 unsigned char *buf;
8711 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
8712 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8713 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8714 	buf = stream->alloc(totalSize);
8715 	ptr = buf;
8716 	int tmp = OP_glProgramParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
8717 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8718 
8719 		memcpy(ptr, &program, 4); ptr += 4;
8720 		memcpy(ptr, &pname, 4); ptr += 4;
8721 		memcpy(ptr, &value, 4); ptr += 4;
8722 
8723 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8724 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8725 
8726 }
8727 
glProgramBinary_enc(void * self,GLuint program,GLenum binaryFormat,const void * binary,GLsizei length)8728 void glProgramBinary_enc(void *self , GLuint program, GLenum binaryFormat, const void* binary, GLsizei length)
8729 {
8730 	ENCODER_DEBUG_LOG("glProgramBinary(program:%u, binaryFormat:0x%08x, binary:0x%08x, length:%d)", program, binaryFormat, binary, length);
8731 	AEMU_SCOPED_TRACE("glProgramBinary encode");
8732 
8733 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8734 	IOStream *stream = ctx->m_stream;
8735 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8736 	bool useChecksum = checksumCalculator->getVersion() > 0;
8737 
8738 	const unsigned int __size_binary =  length;
8739 	 unsigned char *ptr;
8740 	 unsigned char *buf;
8741 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_binary + 4 + 1*4;
8742 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8743 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8744 	buf = stream->alloc(totalSize);
8745 	ptr = buf;
8746 	int tmp = OP_glProgramBinary;memcpy(ptr, &tmp, 4); ptr += 4;
8747 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8748 
8749 		memcpy(ptr, &program, 4); ptr += 4;
8750 		memcpy(ptr, &binaryFormat, 4); ptr += 4;
8751 	memcpy(ptr, &__size_binary, 4); ptr += 4;
8752 	memcpy(ptr, binary, __size_binary);ptr += __size_binary;
8753 		memcpy(ptr, &length, 4); ptr += 4;
8754 
8755 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8756 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8757 
8758 }
8759 
glGetProgramBinary_enc(void * self,GLuint program,GLsizei bufSize,GLsizei * length,GLenum * binaryFormat,void * binary)8760 void glGetProgramBinary_enc(void *self , GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void* binary)
8761 {
8762 	ENCODER_DEBUG_LOG("glGetProgramBinary(program:%u, bufSize:%d, length:0x%08x, binaryFormat:0x%08x, binary:0x%08x)", program, bufSize, length, binaryFormat, binary);
8763 	AEMU_SCOPED_TRACE("glGetProgramBinary encode");
8764 
8765 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8766 	IOStream *stream = ctx->m_stream;
8767 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8768 	bool useChecksum = checksumCalculator->getVersion() > 0;
8769 
8770 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
8771 	const unsigned int __size_binaryFormat =  (sizeof(GLenum));
8772 	const unsigned int __size_binary =  bufSize;
8773 	 unsigned char *ptr;
8774 	 unsigned char *buf;
8775 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 0 + 3*4;
8776 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8777 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8778 	buf = stream->alloc(totalSize);
8779 	ptr = buf;
8780 	int tmp = OP_glGetProgramBinary;memcpy(ptr, &tmp, 4); ptr += 4;
8781 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8782 
8783 		memcpy(ptr, &program, 4); ptr += 4;
8784 		memcpy(ptr, &bufSize, 4); ptr += 4;
8785 	memcpy(ptr, &__size_length, 4); ptr += 4;
8786 	memcpy(ptr, &__size_binaryFormat, 4); ptr += 4;
8787 	memcpy(ptr, &__size_binary, 4); ptr += 4;
8788 
8789 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8790 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8791 
8792 	if (length != NULL) {
8793 		stream->readback(length, __size_length);
8794 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
8795 	}
8796 	stream->readback(binaryFormat, __size_binaryFormat);
8797 	if (useChecksum) checksumCalculator->addBuffer(binaryFormat, __size_binaryFormat);
8798 	stream->readback(binary, __size_binary);
8799 	if (useChecksum) checksumCalculator->addBuffer(binary, __size_binary);
8800 	if (useChecksum) {
8801 		unsigned char *checksumBufPtr = NULL;
8802 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8803 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8804 		stream->readback(checksumBufPtr, checksumSize);
8805 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8806 			ALOGE("glGetProgramBinary: GL communication error, please report this issue to b.android.com.\n");
8807 			abort();
8808 		}
8809 	}
8810 }
8811 
glGetFragDataLocation_enc(void * self,GLuint program,const char * name)8812 GLint glGetFragDataLocation_enc(void *self , GLuint program, const char* name)
8813 {
8814 	ENCODER_DEBUG_LOG("glGetFragDataLocation(program:%u, name:0x%08x)", program, name);
8815 	AEMU_SCOPED_TRACE("glGetFragDataLocation encode");
8816 
8817 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8818 	IOStream *stream = ctx->m_stream;
8819 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8820 	bool useChecksum = checksumCalculator->getVersion() > 0;
8821 
8822 	const unsigned int __size_name =  (strlen(name) + 1);
8823 	 unsigned char *ptr;
8824 	 unsigned char *buf;
8825 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
8826 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8827 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8828 	buf = stream->alloc(totalSize);
8829 	ptr = buf;
8830 	int tmp = OP_glGetFragDataLocation;memcpy(ptr, &tmp, 4); ptr += 4;
8831 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8832 
8833 		memcpy(ptr, &program, 4); ptr += 4;
8834 	memcpy(ptr, &__size_name, 4); ptr += 4;
8835 	memcpy(ptr, name, __size_name);ptr += __size_name;
8836 
8837 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8838 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8839 
8840 
8841 	GLint retval;
8842 	stream->readback(&retval, 4);
8843 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
8844 	if (useChecksum) {
8845 		unsigned char *checksumBufPtr = NULL;
8846 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8847 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8848 		stream->readback(checksumBufPtr, checksumSize);
8849 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8850 			ALOGE("glGetFragDataLocation: GL communication error, please report this issue to b.android.com.\n");
8851 			abort();
8852 		}
8853 	}
8854 	return retval;
8855 }
8856 
glGetInteger64v_enc(void * self,GLenum pname,GLint64 * data)8857 void glGetInteger64v_enc(void *self , GLenum pname, GLint64* data)
8858 {
8859 	ENCODER_DEBUG_LOG("glGetInteger64v(pname:0x%08x, data:%p)", pname, data);
8860 	AEMU_SCOPED_TRACE("glGetInteger64v encode");
8861 
8862 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8863 	IOStream *stream = ctx->m_stream;
8864 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8865 	bool useChecksum = checksumCalculator->getVersion() > 0;
8866 
8867 	const unsigned int __size_data =  (glUtilsParamSize(pname) * sizeof(GLint64));
8868 	 unsigned char *ptr;
8869 	 unsigned char *buf;
8870 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
8871 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8872 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8873 	buf = stream->alloc(totalSize);
8874 	ptr = buf;
8875 	int tmp = OP_glGetInteger64v;memcpy(ptr, &tmp, 4); ptr += 4;
8876 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8877 
8878 		memcpy(ptr, &pname, 4); ptr += 4;
8879 	memcpy(ptr, &__size_data, 4); ptr += 4;
8880 
8881 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8882 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8883 
8884 	stream->readback(data, __size_data);
8885 	if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8886 	if (useChecksum) {
8887 		unsigned char *checksumBufPtr = NULL;
8888 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8889 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8890 		stream->readback(checksumBufPtr, checksumSize);
8891 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8892 			ALOGE("glGetInteger64v: GL communication error, please report this issue to b.android.com.\n");
8893 			abort();
8894 		}
8895 	}
8896 }
8897 
glGetIntegeri_v_enc(void * self,GLenum target,GLuint index,GLint * data)8898 void glGetIntegeri_v_enc(void *self , GLenum target, GLuint index, GLint* data)
8899 {
8900 	ENCODER_DEBUG_LOG("glGetIntegeri_v(target:0x%08x, index:%u, data:0x%08x)", target, index, data);
8901 	AEMU_SCOPED_TRACE("glGetIntegeri_v encode");
8902 
8903 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8904 	IOStream *stream = ctx->m_stream;
8905 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8906 	bool useChecksum = checksumCalculator->getVersion() > 0;
8907 
8908 	const unsigned int __size_data =  (sizeof(GLint));
8909 	 unsigned char *ptr;
8910 	 unsigned char *buf;
8911 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8912 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8913 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8914 	buf = stream->alloc(totalSize);
8915 	ptr = buf;
8916 	int tmp = OP_glGetIntegeri_v;memcpy(ptr, &tmp, 4); ptr += 4;
8917 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8918 
8919 		memcpy(ptr, &target, 4); ptr += 4;
8920 		memcpy(ptr, &index, 4); ptr += 4;
8921 	memcpy(ptr, &__size_data, 4); ptr += 4;
8922 
8923 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8924 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8925 
8926 	stream->readback(data, __size_data);
8927 	if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8928 	if (useChecksum) {
8929 		unsigned char *checksumBufPtr = NULL;
8930 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8931 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8932 		stream->readback(checksumBufPtr, checksumSize);
8933 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8934 			ALOGE("glGetIntegeri_v: GL communication error, please report this issue to b.android.com.\n");
8935 			abort();
8936 		}
8937 	}
8938 }
8939 
glGetInteger64i_v_enc(void * self,GLenum target,GLuint index,GLint64 * data)8940 void glGetInteger64i_v_enc(void *self , GLenum target, GLuint index, GLint64* data)
8941 {
8942 	ENCODER_DEBUG_LOG("glGetInteger64i_v(target:0x%08x, index:%u, data:%p)", target, index, data);
8943 	AEMU_SCOPED_TRACE("glGetInteger64i_v encode");
8944 
8945 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8946 	IOStream *stream = ctx->m_stream;
8947 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8948 	bool useChecksum = checksumCalculator->getVersion() > 0;
8949 
8950 	const unsigned int __size_data =  (sizeof(GLint64));
8951 	 unsigned char *ptr;
8952 	 unsigned char *buf;
8953 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8954 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8955 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8956 	buf = stream->alloc(totalSize);
8957 	ptr = buf;
8958 	int tmp = OP_glGetInteger64i_v;memcpy(ptr, &tmp, 4); ptr += 4;
8959 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8960 
8961 		memcpy(ptr, &target, 4); ptr += 4;
8962 		memcpy(ptr, &index, 4); ptr += 4;
8963 	memcpy(ptr, &__size_data, 4); ptr += 4;
8964 
8965 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8966 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8967 
8968 	stream->readback(data, __size_data);
8969 	if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8970 	if (useChecksum) {
8971 		unsigned char *checksumBufPtr = NULL;
8972 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8973 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8974 		stream->readback(checksumBufPtr, checksumSize);
8975 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8976 			ALOGE("glGetInteger64i_v: GL communication error, please report this issue to b.android.com.\n");
8977 			abort();
8978 		}
8979 	}
8980 }
8981 
glTexImage3D_enc(void * self,GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)8982 void glTexImage3D_enc(void *self , GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* data)
8983 {
8984 	ENCODER_DEBUG_LOG("glTexImage3D(target:0x%08x, level:%d, internalFormat:%d, width:%d, height:%d, depth:%d, border:%d, format:0x%08x, type:0x%08x, data:0x%08x)", target, level, internalFormat, width, height, depth, border, format, type, data);
8985 	AEMU_SCOPED_TRACE("glTexImage3D encode");
8986 
8987 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8988 	IOStream *stream = ctx->m_stream;
8989 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8990 	bool useChecksum = checksumCalculator->getVersion() > 0;
8991 
8992 	const unsigned int __size_data = ((data != NULL) ?  glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
8993 	 unsigned char *ptr;
8994 	 unsigned char *buf;
8995 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
8996 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8997 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8998 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
8999 	ptr = buf;
9000 	int tmp = OP_glTexImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9001 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9002 
9003 		memcpy(ptr, &target, 4); ptr += 4;
9004 		memcpy(ptr, &level, 4); ptr += 4;
9005 		memcpy(ptr, &internalFormat, 4); ptr += 4;
9006 		memcpy(ptr, &width, 4); ptr += 4;
9007 		memcpy(ptr, &height, 4); ptr += 4;
9008 		memcpy(ptr, &depth, 4); ptr += 4;
9009 		memcpy(ptr, &border, 4); ptr += 4;
9010 		memcpy(ptr, &format, 4); ptr += 4;
9011 		memcpy(ptr, &type, 4); ptr += 4;
9012 
9013 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9014 	stream->flush();
9015 	stream->writeFully(&__size_data,4);
9016 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9017 	if (data != NULL) {
9018 		 stream->uploadPixels(self, width, height, depth, format, type, data);
9019 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9020 	}
9021 	buf = stream->alloc(checksumSize);
9022 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9023 
9024 }
9025 
glTexImage3DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,GLuint offset)9026 void glTexImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLuint offset)
9027 {
9028 	ENCODER_DEBUG_LOG("glTexImage3DOffsetAEMU(target:0x%08x, level:%d, internalFormat:%d, width:%d, height:%d, depth:%d, border:%d, format:0x%08x, type:0x%08x, offset:%u)", target, level, internalFormat, width, height, depth, border, format, type, offset);
9029 	AEMU_SCOPED_TRACE("glTexImage3DOffsetAEMU encode");
9030 
9031 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9032 	IOStream *stream = ctx->m_stream;
9033 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9034 	bool useChecksum = checksumCalculator->getVersion() > 0;
9035 
9036 	 unsigned char *ptr;
9037 	 unsigned char *buf;
9038 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9039 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9040 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9041 	buf = stream->alloc(totalSize);
9042 	ptr = buf;
9043 	int tmp = OP_glTexImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9044 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9045 
9046 		memcpy(ptr, &target, 4); ptr += 4;
9047 		memcpy(ptr, &level, 4); ptr += 4;
9048 		memcpy(ptr, &internalFormat, 4); ptr += 4;
9049 		memcpy(ptr, &width, 4); ptr += 4;
9050 		memcpy(ptr, &height, 4); ptr += 4;
9051 		memcpy(ptr, &depth, 4); ptr += 4;
9052 		memcpy(ptr, &border, 4); ptr += 4;
9053 		memcpy(ptr, &format, 4); ptr += 4;
9054 		memcpy(ptr, &type, 4); ptr += 4;
9055 		memcpy(ptr, &offset, 4); ptr += 4;
9056 
9057 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9058 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9059 
9060 }
9061 
glTexStorage3D_enc(void * self,GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth)9062 void glTexStorage3D_enc(void *self , GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
9063 {
9064 	ENCODER_DEBUG_LOG("glTexStorage3D(target:0x%08x, levels:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d)", target, levels, internalformat, width, height, depth);
9065 	AEMU_SCOPED_TRACE("glTexStorage3D encode");
9066 
9067 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9068 	IOStream *stream = ctx->m_stream;
9069 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9070 	bool useChecksum = checksumCalculator->getVersion() > 0;
9071 
9072 	 unsigned char *ptr;
9073 	 unsigned char *buf;
9074 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
9075 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9076 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9077 	buf = stream->alloc(totalSize);
9078 	ptr = buf;
9079 	int tmp = OP_glTexStorage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9080 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9081 
9082 		memcpy(ptr, &target, 4); ptr += 4;
9083 		memcpy(ptr, &levels, 4); ptr += 4;
9084 		memcpy(ptr, &internalformat, 4); ptr += 4;
9085 		memcpy(ptr, &width, 4); ptr += 4;
9086 		memcpy(ptr, &height, 4); ptr += 4;
9087 		memcpy(ptr, &depth, 4); ptr += 4;
9088 
9089 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9090 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9091 
9092 }
9093 
glTexSubImage3D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)9094 void glTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* data)
9095 {
9096 	ENCODER_DEBUG_LOG("glTexSubImage3D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, width:%d, height:%d, depth:%d, format:0x%08x, type:0x%08x, data:0x%08x)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
9097 	AEMU_SCOPED_TRACE("glTexSubImage3D encode");
9098 
9099 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9100 	IOStream *stream = ctx->m_stream;
9101 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9102 	bool useChecksum = checksumCalculator->getVersion() > 0;
9103 
9104 	const unsigned int __size_data = ((data != NULL) ?  glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
9105 	 unsigned char *ptr;
9106 	 unsigned char *buf;
9107 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
9108 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9109 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9110 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9111 	ptr = buf;
9112 	int tmp = OP_glTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9113 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9114 
9115 		memcpy(ptr, &target, 4); ptr += 4;
9116 		memcpy(ptr, &level, 4); ptr += 4;
9117 		memcpy(ptr, &xoffset, 4); ptr += 4;
9118 		memcpy(ptr, &yoffset, 4); ptr += 4;
9119 		memcpy(ptr, &zoffset, 4); ptr += 4;
9120 		memcpy(ptr, &width, 4); ptr += 4;
9121 		memcpy(ptr, &height, 4); ptr += 4;
9122 		memcpy(ptr, &depth, 4); ptr += 4;
9123 		memcpy(ptr, &format, 4); ptr += 4;
9124 		memcpy(ptr, &type, 4); ptr += 4;
9125 
9126 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9127 	stream->flush();
9128 	stream->writeFully(&__size_data,4);
9129 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9130 	if (data != NULL) {
9131 		 stream->uploadPixels(self, width, height, depth, format, type, data);
9132 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9133 	}
9134 	buf = stream->alloc(checksumSize);
9135 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9136 
9137 }
9138 
glTexSubImage3DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,GLuint offset)9139 void glTexSubImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLuint offset)
9140 {
9141 	ENCODER_DEBUG_LOG("glTexSubImage3DOffsetAEMU(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, width:%d, height:%d, depth:%d, format:0x%08x, type:0x%08x, offset:%u)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, offset);
9142 	AEMU_SCOPED_TRACE("glTexSubImage3DOffsetAEMU encode");
9143 
9144 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9145 	IOStream *stream = ctx->m_stream;
9146 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9147 	bool useChecksum = checksumCalculator->getVersion() > 0;
9148 
9149 	 unsigned char *ptr;
9150 	 unsigned char *buf;
9151 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9152 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9153 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9154 	buf = stream->alloc(totalSize);
9155 	ptr = buf;
9156 	int tmp = OP_glTexSubImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9157 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9158 
9159 		memcpy(ptr, &target, 4); ptr += 4;
9160 		memcpy(ptr, &level, 4); ptr += 4;
9161 		memcpy(ptr, &xoffset, 4); ptr += 4;
9162 		memcpy(ptr, &yoffset, 4); ptr += 4;
9163 		memcpy(ptr, &zoffset, 4); ptr += 4;
9164 		memcpy(ptr, &width, 4); ptr += 4;
9165 		memcpy(ptr, &height, 4); ptr += 4;
9166 		memcpy(ptr, &depth, 4); ptr += 4;
9167 		memcpy(ptr, &format, 4); ptr += 4;
9168 		memcpy(ptr, &type, 4); ptr += 4;
9169 		memcpy(ptr, &offset, 4); ptr += 4;
9170 
9171 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9172 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9173 
9174 }
9175 
glCompressedTexImage3D_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)9176 void glCompressedTexImage3D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
9177 {
9178 	ENCODER_DEBUG_LOG("glCompressedTexImage3D(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d, border:%d, imageSize:%d, data:0x%08x)", target, level, internalformat, width, height, depth, border, imageSize, data);
9179 	AEMU_SCOPED_TRACE("glCompressedTexImage3D encode");
9180 
9181 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9182 	IOStream *stream = ctx->m_stream;
9183 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9184 	bool useChecksum = checksumCalculator->getVersion() > 0;
9185 
9186 	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
9187 	 unsigned char *ptr;
9188 	 unsigned char *buf;
9189 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
9190 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9191 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9192 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9193 	ptr = buf;
9194 	int tmp = OP_glCompressedTexImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9195 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9196 
9197 		memcpy(ptr, &target, 4); ptr += 4;
9198 		memcpy(ptr, &level, 4); ptr += 4;
9199 		memcpy(ptr, &internalformat, 4); ptr += 4;
9200 		memcpy(ptr, &width, 4); ptr += 4;
9201 		memcpy(ptr, &height, 4); ptr += 4;
9202 		memcpy(ptr, &depth, 4); ptr += 4;
9203 		memcpy(ptr, &border, 4); ptr += 4;
9204 		memcpy(ptr, &imageSize, 4); ptr += 4;
9205 
9206 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9207 	stream->flush();
9208 	stream->writeFully(&__size_data,4);
9209 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9210 	if (data != NULL) {
9211 		stream->writeFully(data, __size_data);
9212 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9213 	}
9214 	buf = stream->alloc(checksumSize);
9215 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9216 
9217 }
9218 
glCompressedTexImage3DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,GLuint offset)9219 void glCompressedTexImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLuint offset)
9220 {
9221 	ENCODER_DEBUG_LOG("glCompressedTexImage3DOffsetAEMU(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d, border:%d, imageSize:%d, offset:%u)", target, level, internalformat, width, height, depth, border, imageSize, offset);
9222 	AEMU_SCOPED_TRACE("glCompressedTexImage3DOffsetAEMU encode");
9223 
9224 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9225 	IOStream *stream = ctx->m_stream;
9226 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9227 	bool useChecksum = checksumCalculator->getVersion() > 0;
9228 
9229 	 unsigned char *ptr;
9230 	 unsigned char *buf;
9231 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9232 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9233 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9234 	buf = stream->alloc(totalSize);
9235 	ptr = buf;
9236 	int tmp = OP_glCompressedTexImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9237 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9238 
9239 		memcpy(ptr, &target, 4); ptr += 4;
9240 		memcpy(ptr, &level, 4); ptr += 4;
9241 		memcpy(ptr, &internalformat, 4); ptr += 4;
9242 		memcpy(ptr, &width, 4); ptr += 4;
9243 		memcpy(ptr, &height, 4); ptr += 4;
9244 		memcpy(ptr, &depth, 4); ptr += 4;
9245 		memcpy(ptr, &border, 4); ptr += 4;
9246 		memcpy(ptr, &imageSize, 4); ptr += 4;
9247 		memcpy(ptr, &offset, 4); ptr += 4;
9248 
9249 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9250 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9251 
9252 }
9253 
glCompressedTexSubImage3D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)9254 void glCompressedTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
9255 {
9256 	ENCODER_DEBUG_LOG("glCompressedTexSubImage3D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, width:%d, height:%d, depth:%d, format:0x%08x, imageSize:%d, data:0x%08x)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
9257 	AEMU_SCOPED_TRACE("glCompressedTexSubImage3D encode");
9258 
9259 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9260 	IOStream *stream = ctx->m_stream;
9261 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9262 	bool useChecksum = checksumCalculator->getVersion() > 0;
9263 
9264 	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
9265 	 unsigned char *ptr;
9266 	 unsigned char *buf;
9267 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
9268 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9269 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9270 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9271 	ptr = buf;
9272 	int tmp = OP_glCompressedTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9273 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9274 
9275 		memcpy(ptr, &target, 4); ptr += 4;
9276 		memcpy(ptr, &level, 4); ptr += 4;
9277 		memcpy(ptr, &xoffset, 4); ptr += 4;
9278 		memcpy(ptr, &yoffset, 4); ptr += 4;
9279 		memcpy(ptr, &zoffset, 4); ptr += 4;
9280 		memcpy(ptr, &width, 4); ptr += 4;
9281 		memcpy(ptr, &height, 4); ptr += 4;
9282 		memcpy(ptr, &depth, 4); ptr += 4;
9283 		memcpy(ptr, &format, 4); ptr += 4;
9284 		memcpy(ptr, &imageSize, 4); ptr += 4;
9285 
9286 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9287 	stream->flush();
9288 	stream->writeFully(&__size_data,4);
9289 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9290 	if (data != NULL) {
9291 		stream->writeFully(data, __size_data);
9292 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9293 	}
9294 	buf = stream->alloc(checksumSize);
9295 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9296 
9297 }
9298 
glCompressedTexSubImage3DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,GLuint data)9299 void glCompressedTexSubImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLuint data)
9300 {
9301 	ENCODER_DEBUG_LOG("glCompressedTexSubImage3DOffsetAEMU(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, width:%d, height:%d, depth:%d, format:0x%08x, imageSize:%d, data:%u)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
9302 	AEMU_SCOPED_TRACE("glCompressedTexSubImage3DOffsetAEMU encode");
9303 
9304 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9305 	IOStream *stream = ctx->m_stream;
9306 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9307 	bool useChecksum = checksumCalculator->getVersion() > 0;
9308 
9309 	 unsigned char *ptr;
9310 	 unsigned char *buf;
9311 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9312 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9313 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9314 	buf = stream->alloc(totalSize);
9315 	ptr = buf;
9316 	int tmp = OP_glCompressedTexSubImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9317 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9318 
9319 		memcpy(ptr, &target, 4); ptr += 4;
9320 		memcpy(ptr, &level, 4); ptr += 4;
9321 		memcpy(ptr, &xoffset, 4); ptr += 4;
9322 		memcpy(ptr, &yoffset, 4); ptr += 4;
9323 		memcpy(ptr, &zoffset, 4); ptr += 4;
9324 		memcpy(ptr, &width, 4); ptr += 4;
9325 		memcpy(ptr, &height, 4); ptr += 4;
9326 		memcpy(ptr, &depth, 4); ptr += 4;
9327 		memcpy(ptr, &format, 4); ptr += 4;
9328 		memcpy(ptr, &imageSize, 4); ptr += 4;
9329 		memcpy(ptr, &data, 4); ptr += 4;
9330 
9331 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9332 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9333 
9334 }
9335 
glCopyTexSubImage3D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)9336 void glCopyTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
9337 {
9338 	ENCODER_DEBUG_LOG("glCopyTexSubImage3D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, x:%d, y:%d, width:%d, height:%d)", target, level, xoffset, yoffset, zoffset, x, y, width, height);
9339 	AEMU_SCOPED_TRACE("glCopyTexSubImage3D encode");
9340 
9341 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9342 	IOStream *stream = ctx->m_stream;
9343 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9344 	bool useChecksum = checksumCalculator->getVersion() > 0;
9345 
9346 	 unsigned char *ptr;
9347 	 unsigned char *buf;
9348 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9349 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9350 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9351 	buf = stream->alloc(totalSize);
9352 	ptr = buf;
9353 	int tmp = OP_glCopyTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9354 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9355 
9356 		memcpy(ptr, &target, 4); ptr += 4;
9357 		memcpy(ptr, &level, 4); ptr += 4;
9358 		memcpy(ptr, &xoffset, 4); ptr += 4;
9359 		memcpy(ptr, &yoffset, 4); ptr += 4;
9360 		memcpy(ptr, &zoffset, 4); ptr += 4;
9361 		memcpy(ptr, &x, 4); ptr += 4;
9362 		memcpy(ptr, &y, 4); ptr += 4;
9363 		memcpy(ptr, &width, 4); ptr += 4;
9364 		memcpy(ptr, &height, 4); ptr += 4;
9365 
9366 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9367 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9368 
9369 }
9370 
glGetBooleani_v_enc(void * self,GLenum target,GLuint index,GLboolean * data)9371 void glGetBooleani_v_enc(void *self , GLenum target, GLuint index, GLboolean* data)
9372 {
9373 	ENCODER_DEBUG_LOG("glGetBooleani_v(target:0x%08x, index:%u, data:0x%08x)", target, index, data);
9374 	AEMU_SCOPED_TRACE("glGetBooleani_v encode");
9375 
9376 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9377 	IOStream *stream = ctx->m_stream;
9378 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9379 	bool useChecksum = checksumCalculator->getVersion() > 0;
9380 
9381 	const unsigned int __size_data =  (sizeof(GLboolean));
9382 	 unsigned char *ptr;
9383 	 unsigned char *buf;
9384 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
9385 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9386 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9387 	buf = stream->alloc(totalSize);
9388 	ptr = buf;
9389 	int tmp = OP_glGetBooleani_v;memcpy(ptr, &tmp, 4); ptr += 4;
9390 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9391 
9392 		memcpy(ptr, &target, 4); ptr += 4;
9393 		memcpy(ptr, &index, 4); ptr += 4;
9394 	memcpy(ptr, &__size_data, 4); ptr += 4;
9395 
9396 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9397 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9398 
9399 	stream->readback(data, __size_data);
9400 	if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9401 	if (useChecksum) {
9402 		unsigned char *checksumBufPtr = NULL;
9403 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9404 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9405 		stream->readback(checksumBufPtr, checksumSize);
9406 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9407 			ALOGE("glGetBooleani_v: GL communication error, please report this issue to b.android.com.\n");
9408 			abort();
9409 		}
9410 	}
9411 }
9412 
glMemoryBarrier_enc(void * self,GLbitfield barriers)9413 void glMemoryBarrier_enc(void *self , GLbitfield barriers)
9414 {
9415 	ENCODER_DEBUG_LOG("glMemoryBarrier(barriers:0x%08x)", barriers);
9416 	AEMU_SCOPED_TRACE("glMemoryBarrier encode");
9417 
9418 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9419 	IOStream *stream = ctx->m_stream;
9420 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9421 	bool useChecksum = checksumCalculator->getVersion() > 0;
9422 
9423 	 unsigned char *ptr;
9424 	 unsigned char *buf;
9425 	 const size_t sizeWithoutChecksum = 8 + 4;
9426 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9427 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9428 	buf = stream->alloc(totalSize);
9429 	ptr = buf;
9430 	int tmp = OP_glMemoryBarrier;memcpy(ptr, &tmp, 4); ptr += 4;
9431 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9432 
9433 		memcpy(ptr, &barriers, 4); ptr += 4;
9434 
9435 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9436 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9437 
9438 }
9439 
glMemoryBarrierByRegion_enc(void * self,GLbitfield barriers)9440 void glMemoryBarrierByRegion_enc(void *self , GLbitfield barriers)
9441 {
9442 	ENCODER_DEBUG_LOG("glMemoryBarrierByRegion(barriers:0x%08x)", barriers);
9443 	AEMU_SCOPED_TRACE("glMemoryBarrierByRegion encode");
9444 
9445 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9446 	IOStream *stream = ctx->m_stream;
9447 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9448 	bool useChecksum = checksumCalculator->getVersion() > 0;
9449 
9450 	 unsigned char *ptr;
9451 	 unsigned char *buf;
9452 	 const size_t sizeWithoutChecksum = 8 + 4;
9453 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9454 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9455 	buf = stream->alloc(totalSize);
9456 	ptr = buf;
9457 	int tmp = OP_glMemoryBarrierByRegion;memcpy(ptr, &tmp, 4); ptr += 4;
9458 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9459 
9460 		memcpy(ptr, &barriers, 4); ptr += 4;
9461 
9462 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9463 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9464 
9465 }
9466 
glGenProgramPipelines_enc(void * self,GLsizei n,GLuint * pipelines)9467 void glGenProgramPipelines_enc(void *self , GLsizei n, GLuint* pipelines)
9468 {
9469 	ENCODER_DEBUG_LOG("glGenProgramPipelines(n:%d, pipelines:0x%08x)", n, pipelines);
9470 	AEMU_SCOPED_TRACE("glGenProgramPipelines encode");
9471 
9472 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9473 	IOStream *stream = ctx->m_stream;
9474 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9475 	bool useChecksum = checksumCalculator->getVersion() > 0;
9476 
9477 	const unsigned int __size_pipelines =  (n * sizeof(GLuint));
9478 	 unsigned char *ptr;
9479 	 unsigned char *buf;
9480 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
9481 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9482 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9483 	buf = stream->alloc(totalSize);
9484 	ptr = buf;
9485 	int tmp = OP_glGenProgramPipelines;memcpy(ptr, &tmp, 4); ptr += 4;
9486 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9487 
9488 		memcpy(ptr, &n, 4); ptr += 4;
9489 	memcpy(ptr, &__size_pipelines, 4); ptr += 4;
9490 
9491 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9492 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9493 
9494 	stream->readback(pipelines, __size_pipelines);
9495 	if (useChecksum) checksumCalculator->addBuffer(pipelines, __size_pipelines);
9496 	if (useChecksum) {
9497 		unsigned char *checksumBufPtr = NULL;
9498 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9499 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9500 		stream->readback(checksumBufPtr, checksumSize);
9501 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9502 			ALOGE("glGenProgramPipelines: GL communication error, please report this issue to b.android.com.\n");
9503 			abort();
9504 		}
9505 	}
9506 }
9507 
glDeleteProgramPipelines_enc(void * self,GLsizei n,const GLuint * pipelines)9508 void glDeleteProgramPipelines_enc(void *self , GLsizei n, const GLuint* pipelines)
9509 {
9510 	ENCODER_DEBUG_LOG("glDeleteProgramPipelines(n:%d, pipelines:0x%08x)", n, pipelines);
9511 	AEMU_SCOPED_TRACE("glDeleteProgramPipelines encode");
9512 
9513 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9514 	IOStream *stream = ctx->m_stream;
9515 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9516 	bool useChecksum = checksumCalculator->getVersion() > 0;
9517 
9518 	const unsigned int __size_pipelines =  (n * sizeof(GLuint));
9519 	 unsigned char *ptr;
9520 	 unsigned char *buf;
9521 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_pipelines + 1*4;
9522 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9523 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9524 	buf = stream->alloc(totalSize);
9525 	ptr = buf;
9526 	int tmp = OP_glDeleteProgramPipelines;memcpy(ptr, &tmp, 4); ptr += 4;
9527 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9528 
9529 		memcpy(ptr, &n, 4); ptr += 4;
9530 	memcpy(ptr, &__size_pipelines, 4); ptr += 4;
9531 	memcpy(ptr, pipelines, __size_pipelines);ptr += __size_pipelines;
9532 
9533 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9534 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9535 
9536 }
9537 
glBindProgramPipeline_enc(void * self,GLuint pipeline)9538 void glBindProgramPipeline_enc(void *self , GLuint pipeline)
9539 {
9540 	ENCODER_DEBUG_LOG("glBindProgramPipeline(pipeline:%u)", pipeline);
9541 	AEMU_SCOPED_TRACE("glBindProgramPipeline encode");
9542 
9543 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9544 	IOStream *stream = ctx->m_stream;
9545 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9546 	bool useChecksum = checksumCalculator->getVersion() > 0;
9547 
9548 	 unsigned char *ptr;
9549 	 unsigned char *buf;
9550 	 const size_t sizeWithoutChecksum = 8 + 4;
9551 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9552 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9553 	buf = stream->alloc(totalSize);
9554 	ptr = buf;
9555 	int tmp = OP_glBindProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
9556 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9557 
9558 		memcpy(ptr, &pipeline, 4); ptr += 4;
9559 
9560 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9561 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9562 
9563 }
9564 
glGetProgramPipelineiv_enc(void * self,GLuint pipeline,GLenum pname,GLint * params)9565 void glGetProgramPipelineiv_enc(void *self , GLuint pipeline, GLenum pname, GLint* params)
9566 {
9567 	ENCODER_DEBUG_LOG("glGetProgramPipelineiv(pipeline:%u, pname:0x%08x, params:0x%08x)", pipeline, pname, params);
9568 	AEMU_SCOPED_TRACE("glGetProgramPipelineiv encode");
9569 
9570 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9571 	IOStream *stream = ctx->m_stream;
9572 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9573 	bool useChecksum = checksumCalculator->getVersion() > 0;
9574 
9575 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
9576 	 unsigned char *ptr;
9577 	 unsigned char *buf;
9578 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
9579 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9580 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9581 	buf = stream->alloc(totalSize);
9582 	ptr = buf;
9583 	int tmp = OP_glGetProgramPipelineiv;memcpy(ptr, &tmp, 4); ptr += 4;
9584 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9585 
9586 		memcpy(ptr, &pipeline, 4); ptr += 4;
9587 		memcpy(ptr, &pname, 4); ptr += 4;
9588 	memcpy(ptr, &__size_params, 4); ptr += 4;
9589 
9590 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9591 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9592 
9593 	stream->readback(params, __size_params);
9594 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
9595 	if (useChecksum) {
9596 		unsigned char *checksumBufPtr = NULL;
9597 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9598 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9599 		stream->readback(checksumBufPtr, checksumSize);
9600 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9601 			ALOGE("glGetProgramPipelineiv: GL communication error, please report this issue to b.android.com.\n");
9602 			abort();
9603 		}
9604 	}
9605 }
9606 
glGetProgramPipelineInfoLog_enc(void * self,GLuint pipeline,GLsizei bufSize,GLsizei * length,GLchar * infoLog)9607 void glGetProgramPipelineInfoLog_enc(void *self , GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog)
9608 {
9609 	ENCODER_DEBUG_LOG("glGetProgramPipelineInfoLog(pipeline:%u, bufSize:%d, length:0x%08x, infoLog:0x%08x)", pipeline, bufSize, length, infoLog);
9610 	AEMU_SCOPED_TRACE("glGetProgramPipelineInfoLog encode");
9611 
9612 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9613 	IOStream *stream = ctx->m_stream;
9614 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9615 	bool useChecksum = checksumCalculator->getVersion() > 0;
9616 
9617 	const unsigned int __size_length = ((length != NULL) ?  sizeof(GLsizei) : 0);
9618 	const unsigned int __size_infoLog =  bufSize;
9619 	 unsigned char *ptr;
9620 	 unsigned char *buf;
9621 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
9622 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9623 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9624 	buf = stream->alloc(totalSize);
9625 	ptr = buf;
9626 	int tmp = OP_glGetProgramPipelineInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
9627 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9628 
9629 		memcpy(ptr, &pipeline, 4); ptr += 4;
9630 		memcpy(ptr, &bufSize, 4); ptr += 4;
9631 	memcpy(ptr, &__size_length, 4); ptr += 4;
9632 	memcpy(ptr, &__size_infoLog, 4); ptr += 4;
9633 
9634 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9635 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9636 
9637 	if (length != NULL) {
9638 		stream->readback(length, __size_length);
9639 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
9640 	}
9641 	stream->readback(infoLog, __size_infoLog);
9642 	if (useChecksum) checksumCalculator->addBuffer(infoLog, __size_infoLog);
9643 	if (useChecksum) {
9644 		unsigned char *checksumBufPtr = NULL;
9645 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9646 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9647 		stream->readback(checksumBufPtr, checksumSize);
9648 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9649 			ALOGE("glGetProgramPipelineInfoLog: GL communication error, please report this issue to b.android.com.\n");
9650 			abort();
9651 		}
9652 	}
9653 }
9654 
glValidateProgramPipeline_enc(void * self,GLuint pipeline)9655 void glValidateProgramPipeline_enc(void *self , GLuint pipeline)
9656 {
9657 	ENCODER_DEBUG_LOG("glValidateProgramPipeline(pipeline:%u)", pipeline);
9658 	AEMU_SCOPED_TRACE("glValidateProgramPipeline encode");
9659 
9660 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9661 	IOStream *stream = ctx->m_stream;
9662 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9663 	bool useChecksum = checksumCalculator->getVersion() > 0;
9664 
9665 	 unsigned char *ptr;
9666 	 unsigned char *buf;
9667 	 const size_t sizeWithoutChecksum = 8 + 4;
9668 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9669 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9670 	buf = stream->alloc(totalSize);
9671 	ptr = buf;
9672 	int tmp = OP_glValidateProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
9673 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9674 
9675 		memcpy(ptr, &pipeline, 4); ptr += 4;
9676 
9677 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9678 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9679 
9680 }
9681 
glIsProgramPipeline_enc(void * self,GLuint pipeline)9682 GLboolean glIsProgramPipeline_enc(void *self , GLuint pipeline)
9683 {
9684 	ENCODER_DEBUG_LOG("glIsProgramPipeline(pipeline:%u)", pipeline);
9685 	AEMU_SCOPED_TRACE("glIsProgramPipeline encode");
9686 
9687 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9688 	IOStream *stream = ctx->m_stream;
9689 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9690 	bool useChecksum = checksumCalculator->getVersion() > 0;
9691 
9692 	 unsigned char *ptr;
9693 	 unsigned char *buf;
9694 	 const size_t sizeWithoutChecksum = 8 + 4;
9695 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9696 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9697 	buf = stream->alloc(totalSize);
9698 	ptr = buf;
9699 	int tmp = OP_glIsProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
9700 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9701 
9702 		memcpy(ptr, &pipeline, 4); ptr += 4;
9703 
9704 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9705 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9706 
9707 
9708 	GLboolean retval;
9709 	stream->readback(&retval, 1);
9710 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
9711 	if (useChecksum) {
9712 		unsigned char *checksumBufPtr = NULL;
9713 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9714 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9715 		stream->readback(checksumBufPtr, checksumSize);
9716 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9717 			ALOGE("glIsProgramPipeline: GL communication error, please report this issue to b.android.com.\n");
9718 			abort();
9719 		}
9720 	}
9721 	return retval;
9722 }
9723 
glUseProgramStages_enc(void * self,GLuint pipeline,GLbitfield stages,GLuint program)9724 void glUseProgramStages_enc(void *self , GLuint pipeline, GLbitfield stages, GLuint program)
9725 {
9726 	ENCODER_DEBUG_LOG("glUseProgramStages(pipeline:%u, stages:0x%08x, program:%u)", pipeline, stages, program);
9727 	AEMU_SCOPED_TRACE("glUseProgramStages encode");
9728 
9729 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9730 	IOStream *stream = ctx->m_stream;
9731 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9732 	bool useChecksum = checksumCalculator->getVersion() > 0;
9733 
9734 	 unsigned char *ptr;
9735 	 unsigned char *buf;
9736 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9737 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9738 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9739 	buf = stream->alloc(totalSize);
9740 	ptr = buf;
9741 	int tmp = OP_glUseProgramStages;memcpy(ptr, &tmp, 4); ptr += 4;
9742 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9743 
9744 		memcpy(ptr, &pipeline, 4); ptr += 4;
9745 		memcpy(ptr, &stages, 4); ptr += 4;
9746 		memcpy(ptr, &program, 4); ptr += 4;
9747 
9748 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9749 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9750 
9751 }
9752 
glActiveShaderProgram_enc(void * self,GLuint pipeline,GLuint program)9753 void glActiveShaderProgram_enc(void *self , GLuint pipeline, GLuint program)
9754 {
9755 	ENCODER_DEBUG_LOG("glActiveShaderProgram(pipeline:%u, program:%u)", pipeline, program);
9756 	AEMU_SCOPED_TRACE("glActiveShaderProgram encode");
9757 
9758 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9759 	IOStream *stream = ctx->m_stream;
9760 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9761 	bool useChecksum = checksumCalculator->getVersion() > 0;
9762 
9763 	 unsigned char *ptr;
9764 	 unsigned char *buf;
9765 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
9766 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9767 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9768 	buf = stream->alloc(totalSize);
9769 	ptr = buf;
9770 	int tmp = OP_glActiveShaderProgram;memcpy(ptr, &tmp, 4); ptr += 4;
9771 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9772 
9773 		memcpy(ptr, &pipeline, 4); ptr += 4;
9774 		memcpy(ptr, &program, 4); ptr += 4;
9775 
9776 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9777 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9778 
9779 }
9780 
glCreateShaderProgramvAEMU_enc(void * self,GLenum type,GLsizei count,const char * packedStrings,GLuint packedLen)9781 GLuint glCreateShaderProgramvAEMU_enc(void *self , GLenum type, GLsizei count, const char* packedStrings, GLuint packedLen)
9782 {
9783 	ENCODER_DEBUG_LOG("glCreateShaderProgramvAEMU(type:0x%08x, count:%d, packedStrings:0x%08x, packedLen:%u)", type, count, packedStrings, packedLen);
9784 	AEMU_SCOPED_TRACE("glCreateShaderProgramvAEMU encode");
9785 
9786 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9787 	IOStream *stream = ctx->m_stream;
9788 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9789 	bool useChecksum = checksumCalculator->getVersion() > 0;
9790 
9791 	const unsigned int __size_packedStrings =  packedLen;
9792 	 unsigned char *ptr;
9793 	 unsigned char *buf;
9794 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedStrings + 4 + 1*4;
9795 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9796 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9797 	buf = stream->alloc(totalSize);
9798 	ptr = buf;
9799 	int tmp = OP_glCreateShaderProgramvAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9800 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9801 
9802 		memcpy(ptr, &type, 4); ptr += 4;
9803 		memcpy(ptr, &count, 4); ptr += 4;
9804 	memcpy(ptr, &__size_packedStrings, 4); ptr += 4;
9805 	memcpy(ptr, packedStrings, __size_packedStrings);ptr += __size_packedStrings;
9806 		memcpy(ptr, &packedLen, 4); ptr += 4;
9807 
9808 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9809 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9810 
9811 
9812 	GLuint retval;
9813 	stream->readback(&retval, 4);
9814 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
9815 	if (useChecksum) {
9816 		unsigned char *checksumBufPtr = NULL;
9817 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9818 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9819 		stream->readback(checksumBufPtr, checksumSize);
9820 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9821 			ALOGE("glCreateShaderProgramvAEMU: GL communication error, please report this issue to b.android.com.\n");
9822 			abort();
9823 		}
9824 	}
9825 	return retval;
9826 }
9827 
glProgramUniform1f_enc(void * self,GLuint program,GLint location,GLfloat v0)9828 void glProgramUniform1f_enc(void *self , GLuint program, GLint location, GLfloat v0)
9829 {
9830 	ENCODER_DEBUG_LOG("glProgramUniform1f(program:%u, location:%d, v0:%f)", program, location, v0);
9831 	AEMU_SCOPED_TRACE("glProgramUniform1f encode");
9832 
9833 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9834 	IOStream *stream = ctx->m_stream;
9835 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9836 	bool useChecksum = checksumCalculator->getVersion() > 0;
9837 
9838 	 unsigned char *ptr;
9839 	 unsigned char *buf;
9840 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9841 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9842 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9843 	buf = stream->alloc(totalSize);
9844 	ptr = buf;
9845 	int tmp = OP_glProgramUniform1f;memcpy(ptr, &tmp, 4); ptr += 4;
9846 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9847 
9848 		memcpy(ptr, &program, 4); ptr += 4;
9849 		memcpy(ptr, &location, 4); ptr += 4;
9850 		memcpy(ptr, &v0, 4); ptr += 4;
9851 
9852 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9853 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9854 
9855 }
9856 
glProgramUniform2f_enc(void * self,GLuint program,GLint location,GLfloat v0,GLfloat v1)9857 void glProgramUniform2f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1)
9858 {
9859 	ENCODER_DEBUG_LOG("glProgramUniform2f(program:%u, location:%d, v0:%f, v1:%f)", program, location, v0, v1);
9860 	AEMU_SCOPED_TRACE("glProgramUniform2f encode");
9861 
9862 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9863 	IOStream *stream = ctx->m_stream;
9864 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9865 	bool useChecksum = checksumCalculator->getVersion() > 0;
9866 
9867 	 unsigned char *ptr;
9868 	 unsigned char *buf;
9869 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
9870 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9871 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9872 	buf = stream->alloc(totalSize);
9873 	ptr = buf;
9874 	int tmp = OP_glProgramUniform2f;memcpy(ptr, &tmp, 4); ptr += 4;
9875 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9876 
9877 		memcpy(ptr, &program, 4); ptr += 4;
9878 		memcpy(ptr, &location, 4); ptr += 4;
9879 		memcpy(ptr, &v0, 4); ptr += 4;
9880 		memcpy(ptr, &v1, 4); ptr += 4;
9881 
9882 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9883 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9884 
9885 }
9886 
glProgramUniform3f_enc(void * self,GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2)9887 void glProgramUniform3f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
9888 {
9889 	ENCODER_DEBUG_LOG("glProgramUniform3f(program:%u, location:%d, v0:%f, v1:%f, v2:%f)", program, location, v0, v1, v2);
9890 	AEMU_SCOPED_TRACE("glProgramUniform3f encode");
9891 
9892 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9893 	IOStream *stream = ctx->m_stream;
9894 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9895 	bool useChecksum = checksumCalculator->getVersion() > 0;
9896 
9897 	 unsigned char *ptr;
9898 	 unsigned char *buf;
9899 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
9900 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9901 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9902 	buf = stream->alloc(totalSize);
9903 	ptr = buf;
9904 	int tmp = OP_glProgramUniform3f;memcpy(ptr, &tmp, 4); ptr += 4;
9905 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9906 
9907 		memcpy(ptr, &program, 4); ptr += 4;
9908 		memcpy(ptr, &location, 4); ptr += 4;
9909 		memcpy(ptr, &v0, 4); ptr += 4;
9910 		memcpy(ptr, &v1, 4); ptr += 4;
9911 		memcpy(ptr, &v2, 4); ptr += 4;
9912 
9913 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9914 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9915 
9916 }
9917 
glProgramUniform4f_enc(void * self,GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)9918 void glProgramUniform4f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
9919 {
9920 	ENCODER_DEBUG_LOG("glProgramUniform4f(program:%u, location:%d, v0:%f, v1:%f, v2:%f, v3:%f)", program, location, v0, v1, v2, v3);
9921 	AEMU_SCOPED_TRACE("glProgramUniform4f encode");
9922 
9923 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9924 	IOStream *stream = ctx->m_stream;
9925 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9926 	bool useChecksum = checksumCalculator->getVersion() > 0;
9927 
9928 	 unsigned char *ptr;
9929 	 unsigned char *buf;
9930 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
9931 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9932 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9933 	buf = stream->alloc(totalSize);
9934 	ptr = buf;
9935 	int tmp = OP_glProgramUniform4f;memcpy(ptr, &tmp, 4); ptr += 4;
9936 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9937 
9938 		memcpy(ptr, &program, 4); ptr += 4;
9939 		memcpy(ptr, &location, 4); ptr += 4;
9940 		memcpy(ptr, &v0, 4); ptr += 4;
9941 		memcpy(ptr, &v1, 4); ptr += 4;
9942 		memcpy(ptr, &v2, 4); ptr += 4;
9943 		memcpy(ptr, &v3, 4); ptr += 4;
9944 
9945 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9946 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9947 
9948 }
9949 
glProgramUniform1i_enc(void * self,GLuint program,GLint location,GLint v0)9950 void glProgramUniform1i_enc(void *self , GLuint program, GLint location, GLint v0)
9951 {
9952 	ENCODER_DEBUG_LOG("glProgramUniform1i(program:%u, location:%d, v0:%d)", program, location, v0);
9953 	AEMU_SCOPED_TRACE("glProgramUniform1i encode");
9954 
9955 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9956 	IOStream *stream = ctx->m_stream;
9957 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9958 	bool useChecksum = checksumCalculator->getVersion() > 0;
9959 
9960 	 unsigned char *ptr;
9961 	 unsigned char *buf;
9962 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9963 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9964 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9965 	buf = stream->alloc(totalSize);
9966 	ptr = buf;
9967 	int tmp = OP_glProgramUniform1i;memcpy(ptr, &tmp, 4); ptr += 4;
9968 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9969 
9970 		memcpy(ptr, &program, 4); ptr += 4;
9971 		memcpy(ptr, &location, 4); ptr += 4;
9972 		memcpy(ptr, &v0, 4); ptr += 4;
9973 
9974 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9975 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9976 
9977 }
9978 
glProgramUniform2i_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1)9979 void glProgramUniform2i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1)
9980 {
9981 	ENCODER_DEBUG_LOG("glProgramUniform2i(program:%u, location:%d, v0:%d, v1:%d)", program, location, v0, v1);
9982 	AEMU_SCOPED_TRACE("glProgramUniform2i encode");
9983 
9984 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9985 	IOStream *stream = ctx->m_stream;
9986 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9987 	bool useChecksum = checksumCalculator->getVersion() > 0;
9988 
9989 	 unsigned char *ptr;
9990 	 unsigned char *buf;
9991 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
9992 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9993 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9994 	buf = stream->alloc(totalSize);
9995 	ptr = buf;
9996 	int tmp = OP_glProgramUniform2i;memcpy(ptr, &tmp, 4); ptr += 4;
9997 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9998 
9999 		memcpy(ptr, &program, 4); ptr += 4;
10000 		memcpy(ptr, &location, 4); ptr += 4;
10001 		memcpy(ptr, &v0, 4); ptr += 4;
10002 		memcpy(ptr, &v1, 4); ptr += 4;
10003 
10004 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10005 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10006 
10007 }
10008 
glProgramUniform3i_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLint v2)10009 void glProgramUniform3i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
10010 {
10011 	ENCODER_DEBUG_LOG("glProgramUniform3i(program:%u, location:%d, v0:%d, v1:%d, v2:%d)", program, location, v0, v1, v2);
10012 	AEMU_SCOPED_TRACE("glProgramUniform3i encode");
10013 
10014 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10015 	IOStream *stream = ctx->m_stream;
10016 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10017 	bool useChecksum = checksumCalculator->getVersion() > 0;
10018 
10019 	 unsigned char *ptr;
10020 	 unsigned char *buf;
10021 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
10022 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10023 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10024 	buf = stream->alloc(totalSize);
10025 	ptr = buf;
10026 	int tmp = OP_glProgramUniform3i;memcpy(ptr, &tmp, 4); ptr += 4;
10027 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10028 
10029 		memcpy(ptr, &program, 4); ptr += 4;
10030 		memcpy(ptr, &location, 4); ptr += 4;
10031 		memcpy(ptr, &v0, 4); ptr += 4;
10032 		memcpy(ptr, &v1, 4); ptr += 4;
10033 		memcpy(ptr, &v2, 4); ptr += 4;
10034 
10035 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10036 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10037 
10038 }
10039 
glProgramUniform4i_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLint v2,GLint v3)10040 void glProgramUniform4i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
10041 {
10042 	ENCODER_DEBUG_LOG("glProgramUniform4i(program:%u, location:%d, v0:%d, v1:%d, v2:%d, v3:%d)", program, location, v0, v1, v2, v3);
10043 	AEMU_SCOPED_TRACE("glProgramUniform4i encode");
10044 
10045 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10046 	IOStream *stream = ctx->m_stream;
10047 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10048 	bool useChecksum = checksumCalculator->getVersion() > 0;
10049 
10050 	 unsigned char *ptr;
10051 	 unsigned char *buf;
10052 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
10053 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10054 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10055 	buf = stream->alloc(totalSize);
10056 	ptr = buf;
10057 	int tmp = OP_glProgramUniform4i;memcpy(ptr, &tmp, 4); ptr += 4;
10058 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10059 
10060 		memcpy(ptr, &program, 4); ptr += 4;
10061 		memcpy(ptr, &location, 4); ptr += 4;
10062 		memcpy(ptr, &v0, 4); ptr += 4;
10063 		memcpy(ptr, &v1, 4); ptr += 4;
10064 		memcpy(ptr, &v2, 4); ptr += 4;
10065 		memcpy(ptr, &v3, 4); ptr += 4;
10066 
10067 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10068 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10069 
10070 }
10071 
glProgramUniform1ui_enc(void * self,GLuint program,GLint location,GLuint v0)10072 void glProgramUniform1ui_enc(void *self , GLuint program, GLint location, GLuint v0)
10073 {
10074 	ENCODER_DEBUG_LOG("glProgramUniform1ui(program:%u, location:%d, v0:%u)", program, location, v0);
10075 	AEMU_SCOPED_TRACE("glProgramUniform1ui encode");
10076 
10077 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10078 	IOStream *stream = ctx->m_stream;
10079 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10080 	bool useChecksum = checksumCalculator->getVersion() > 0;
10081 
10082 	 unsigned char *ptr;
10083 	 unsigned char *buf;
10084 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
10085 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10086 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10087 	buf = stream->alloc(totalSize);
10088 	ptr = buf;
10089 	int tmp = OP_glProgramUniform1ui;memcpy(ptr, &tmp, 4); ptr += 4;
10090 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10091 
10092 		memcpy(ptr, &program, 4); ptr += 4;
10093 		memcpy(ptr, &location, 4); ptr += 4;
10094 		memcpy(ptr, &v0, 4); ptr += 4;
10095 
10096 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10097 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10098 
10099 }
10100 
glProgramUniform2ui_enc(void * self,GLuint program,GLint location,GLint v0,GLuint v1)10101 void glProgramUniform2ui_enc(void *self , GLuint program, GLint location, GLint v0, GLuint v1)
10102 {
10103 	ENCODER_DEBUG_LOG("glProgramUniform2ui(program:%u, location:%d, v0:%d, v1:%u)", program, location, v0, v1);
10104 	AEMU_SCOPED_TRACE("glProgramUniform2ui encode");
10105 
10106 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10107 	IOStream *stream = ctx->m_stream;
10108 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10109 	bool useChecksum = checksumCalculator->getVersion() > 0;
10110 
10111 	 unsigned char *ptr;
10112 	 unsigned char *buf;
10113 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
10114 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10115 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10116 	buf = stream->alloc(totalSize);
10117 	ptr = buf;
10118 	int tmp = OP_glProgramUniform2ui;memcpy(ptr, &tmp, 4); ptr += 4;
10119 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10120 
10121 		memcpy(ptr, &program, 4); ptr += 4;
10122 		memcpy(ptr, &location, 4); ptr += 4;
10123 		memcpy(ptr, &v0, 4); ptr += 4;
10124 		memcpy(ptr, &v1, 4); ptr += 4;
10125 
10126 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10127 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10128 
10129 }
10130 
glProgramUniform3ui_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLuint v2)10131 void glProgramUniform3ui_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLuint v2)
10132 {
10133 	ENCODER_DEBUG_LOG("glProgramUniform3ui(program:%u, location:%d, v0:%d, v1:%d, v2:%u)", program, location, v0, v1, v2);
10134 	AEMU_SCOPED_TRACE("glProgramUniform3ui encode");
10135 
10136 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10137 	IOStream *stream = ctx->m_stream;
10138 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10139 	bool useChecksum = checksumCalculator->getVersion() > 0;
10140 
10141 	 unsigned char *ptr;
10142 	 unsigned char *buf;
10143 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
10144 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10145 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10146 	buf = stream->alloc(totalSize);
10147 	ptr = buf;
10148 	int tmp = OP_glProgramUniform3ui;memcpy(ptr, &tmp, 4); ptr += 4;
10149 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10150 
10151 		memcpy(ptr, &program, 4); ptr += 4;
10152 		memcpy(ptr, &location, 4); ptr += 4;
10153 		memcpy(ptr, &v0, 4); ptr += 4;
10154 		memcpy(ptr, &v1, 4); ptr += 4;
10155 		memcpy(ptr, &v2, 4); ptr += 4;
10156 
10157 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10158 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10159 
10160 }
10161 
glProgramUniform4ui_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLint v2,GLuint v3)10162 void glProgramUniform4ui_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLuint v3)
10163 {
10164 	ENCODER_DEBUG_LOG("glProgramUniform4ui(program:%u, location:%d, v0:%d, v1:%d, v2:%d, v3:%u)", program, location, v0, v1, v2, v3);
10165 	AEMU_SCOPED_TRACE("glProgramUniform4ui encode");
10166 
10167 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10168 	IOStream *stream = ctx->m_stream;
10169 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10170 	bool useChecksum = checksumCalculator->getVersion() > 0;
10171 
10172 	 unsigned char *ptr;
10173 	 unsigned char *buf;
10174 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
10175 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10176 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10177 	buf = stream->alloc(totalSize);
10178 	ptr = buf;
10179 	int tmp = OP_glProgramUniform4ui;memcpy(ptr, &tmp, 4); ptr += 4;
10180 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10181 
10182 		memcpy(ptr, &program, 4); ptr += 4;
10183 		memcpy(ptr, &location, 4); ptr += 4;
10184 		memcpy(ptr, &v0, 4); ptr += 4;
10185 		memcpy(ptr, &v1, 4); ptr += 4;
10186 		memcpy(ptr, &v2, 4); ptr += 4;
10187 		memcpy(ptr, &v3, 4); ptr += 4;
10188 
10189 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10190 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10191 
10192 }
10193 
glProgramUniform1fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10194 void glProgramUniform1fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10195 {
10196 	ENCODER_DEBUG_LOG("glProgramUniform1fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10197 	AEMU_SCOPED_TRACE("glProgramUniform1fv encode");
10198 
10199 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10200 	IOStream *stream = ctx->m_stream;
10201 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10202 	bool useChecksum = checksumCalculator->getVersion() > 0;
10203 
10204 	const unsigned int __size_value =  (count * sizeof(GLfloat));
10205 	 unsigned char *ptr;
10206 	 unsigned char *buf;
10207 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10208 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10209 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10210 	buf = stream->alloc(totalSize);
10211 	ptr = buf;
10212 	int tmp = OP_glProgramUniform1fv;memcpy(ptr, &tmp, 4); ptr += 4;
10213 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10214 
10215 		memcpy(ptr, &program, 4); ptr += 4;
10216 		memcpy(ptr, &location, 4); ptr += 4;
10217 		memcpy(ptr, &count, 4); ptr += 4;
10218 	memcpy(ptr, &__size_value, 4); ptr += 4;
10219 	memcpy(ptr, value, __size_value);ptr += __size_value;
10220 
10221 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10222 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10223 
10224 }
10225 
glProgramUniform2fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10226 void glProgramUniform2fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10227 {
10228 	ENCODER_DEBUG_LOG("glProgramUniform2fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10229 	AEMU_SCOPED_TRACE("glProgramUniform2fv encode");
10230 
10231 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10232 	IOStream *stream = ctx->m_stream;
10233 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10234 	bool useChecksum = checksumCalculator->getVersion() > 0;
10235 
10236 	const unsigned int __size_value =  (count * 2 * sizeof(GLfloat));
10237 	 unsigned char *ptr;
10238 	 unsigned char *buf;
10239 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10240 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10241 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10242 	buf = stream->alloc(totalSize);
10243 	ptr = buf;
10244 	int tmp = OP_glProgramUniform2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10245 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10246 
10247 		memcpy(ptr, &program, 4); ptr += 4;
10248 		memcpy(ptr, &location, 4); ptr += 4;
10249 		memcpy(ptr, &count, 4); ptr += 4;
10250 	memcpy(ptr, &__size_value, 4); ptr += 4;
10251 	memcpy(ptr, value, __size_value);ptr += __size_value;
10252 
10253 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10254 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10255 
10256 }
10257 
glProgramUniform3fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10258 void glProgramUniform3fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10259 {
10260 	ENCODER_DEBUG_LOG("glProgramUniform3fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10261 	AEMU_SCOPED_TRACE("glProgramUniform3fv encode");
10262 
10263 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10264 	IOStream *stream = ctx->m_stream;
10265 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10266 	bool useChecksum = checksumCalculator->getVersion() > 0;
10267 
10268 	const unsigned int __size_value =  (count * 3 * sizeof(GLfloat));
10269 	 unsigned char *ptr;
10270 	 unsigned char *buf;
10271 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10272 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10273 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10274 	buf = stream->alloc(totalSize);
10275 	ptr = buf;
10276 	int tmp = OP_glProgramUniform3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10277 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10278 
10279 		memcpy(ptr, &program, 4); ptr += 4;
10280 		memcpy(ptr, &location, 4); ptr += 4;
10281 		memcpy(ptr, &count, 4); ptr += 4;
10282 	memcpy(ptr, &__size_value, 4); ptr += 4;
10283 	memcpy(ptr, value, __size_value);ptr += __size_value;
10284 
10285 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10286 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10287 
10288 }
10289 
glProgramUniform4fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10290 void glProgramUniform4fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10291 {
10292 	ENCODER_DEBUG_LOG("glProgramUniform4fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10293 	AEMU_SCOPED_TRACE("glProgramUniform4fv encode");
10294 
10295 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10296 	IOStream *stream = ctx->m_stream;
10297 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10298 	bool useChecksum = checksumCalculator->getVersion() > 0;
10299 
10300 	const unsigned int __size_value =  (count * 4 * sizeof(GLfloat));
10301 	 unsigned char *ptr;
10302 	 unsigned char *buf;
10303 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10304 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10305 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10306 	buf = stream->alloc(totalSize);
10307 	ptr = buf;
10308 	int tmp = OP_glProgramUniform4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10309 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10310 
10311 		memcpy(ptr, &program, 4); ptr += 4;
10312 		memcpy(ptr, &location, 4); ptr += 4;
10313 		memcpy(ptr, &count, 4); ptr += 4;
10314 	memcpy(ptr, &__size_value, 4); ptr += 4;
10315 	memcpy(ptr, value, __size_value);ptr += __size_value;
10316 
10317 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10318 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10319 
10320 }
10321 
glProgramUniform1iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10322 void glProgramUniform1iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10323 {
10324 	ENCODER_DEBUG_LOG("glProgramUniform1iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10325 	AEMU_SCOPED_TRACE("glProgramUniform1iv encode");
10326 
10327 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10328 	IOStream *stream = ctx->m_stream;
10329 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10330 	bool useChecksum = checksumCalculator->getVersion() > 0;
10331 
10332 	const unsigned int __size_value =  (count * sizeof(GLint));
10333 	 unsigned char *ptr;
10334 	 unsigned char *buf;
10335 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10336 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10337 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10338 	buf = stream->alloc(totalSize);
10339 	ptr = buf;
10340 	int tmp = OP_glProgramUniform1iv;memcpy(ptr, &tmp, 4); ptr += 4;
10341 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10342 
10343 		memcpy(ptr, &program, 4); ptr += 4;
10344 		memcpy(ptr, &location, 4); ptr += 4;
10345 		memcpy(ptr, &count, 4); ptr += 4;
10346 	memcpy(ptr, &__size_value, 4); ptr += 4;
10347 	memcpy(ptr, value, __size_value);ptr += __size_value;
10348 
10349 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10350 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10351 
10352 }
10353 
glProgramUniform2iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10354 void glProgramUniform2iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10355 {
10356 	ENCODER_DEBUG_LOG("glProgramUniform2iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10357 	AEMU_SCOPED_TRACE("glProgramUniform2iv encode");
10358 
10359 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10360 	IOStream *stream = ctx->m_stream;
10361 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10362 	bool useChecksum = checksumCalculator->getVersion() > 0;
10363 
10364 	const unsigned int __size_value =  (count * 2 * sizeof(GLint));
10365 	 unsigned char *ptr;
10366 	 unsigned char *buf;
10367 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10368 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10369 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10370 	buf = stream->alloc(totalSize);
10371 	ptr = buf;
10372 	int tmp = OP_glProgramUniform2iv;memcpy(ptr, &tmp, 4); ptr += 4;
10373 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10374 
10375 		memcpy(ptr, &program, 4); ptr += 4;
10376 		memcpy(ptr, &location, 4); ptr += 4;
10377 		memcpy(ptr, &count, 4); ptr += 4;
10378 	memcpy(ptr, &__size_value, 4); ptr += 4;
10379 	memcpy(ptr, value, __size_value);ptr += __size_value;
10380 
10381 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10382 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10383 
10384 }
10385 
glProgramUniform3iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10386 void glProgramUniform3iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10387 {
10388 	ENCODER_DEBUG_LOG("glProgramUniform3iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10389 	AEMU_SCOPED_TRACE("glProgramUniform3iv encode");
10390 
10391 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10392 	IOStream *stream = ctx->m_stream;
10393 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10394 	bool useChecksum = checksumCalculator->getVersion() > 0;
10395 
10396 	const unsigned int __size_value =  (count * 3 * sizeof(GLint));
10397 	 unsigned char *ptr;
10398 	 unsigned char *buf;
10399 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10400 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10401 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10402 	buf = stream->alloc(totalSize);
10403 	ptr = buf;
10404 	int tmp = OP_glProgramUniform3iv;memcpy(ptr, &tmp, 4); ptr += 4;
10405 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10406 
10407 		memcpy(ptr, &program, 4); ptr += 4;
10408 		memcpy(ptr, &location, 4); ptr += 4;
10409 		memcpy(ptr, &count, 4); ptr += 4;
10410 	memcpy(ptr, &__size_value, 4); ptr += 4;
10411 	memcpy(ptr, value, __size_value);ptr += __size_value;
10412 
10413 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10414 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10415 
10416 }
10417 
glProgramUniform4iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10418 void glProgramUniform4iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10419 {
10420 	ENCODER_DEBUG_LOG("glProgramUniform4iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10421 	AEMU_SCOPED_TRACE("glProgramUniform4iv encode");
10422 
10423 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10424 	IOStream *stream = ctx->m_stream;
10425 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10426 	bool useChecksum = checksumCalculator->getVersion() > 0;
10427 
10428 	const unsigned int __size_value =  (count * 4 * sizeof(GLint));
10429 	 unsigned char *ptr;
10430 	 unsigned char *buf;
10431 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10432 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10433 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10434 	buf = stream->alloc(totalSize);
10435 	ptr = buf;
10436 	int tmp = OP_glProgramUniform4iv;memcpy(ptr, &tmp, 4); ptr += 4;
10437 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10438 
10439 		memcpy(ptr, &program, 4); ptr += 4;
10440 		memcpy(ptr, &location, 4); ptr += 4;
10441 		memcpy(ptr, &count, 4); ptr += 4;
10442 	memcpy(ptr, &__size_value, 4); ptr += 4;
10443 	memcpy(ptr, value, __size_value);ptr += __size_value;
10444 
10445 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10446 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10447 
10448 }
10449 
glProgramUniform1uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10450 void glProgramUniform1uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10451 {
10452 	ENCODER_DEBUG_LOG("glProgramUniform1uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10453 	AEMU_SCOPED_TRACE("glProgramUniform1uiv encode");
10454 
10455 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10456 	IOStream *stream = ctx->m_stream;
10457 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10458 	bool useChecksum = checksumCalculator->getVersion() > 0;
10459 
10460 	const unsigned int __size_value =  (count * sizeof(GLuint));
10461 	 unsigned char *ptr;
10462 	 unsigned char *buf;
10463 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10464 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10465 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10466 	buf = stream->alloc(totalSize);
10467 	ptr = buf;
10468 	int tmp = OP_glProgramUniform1uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10469 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10470 
10471 		memcpy(ptr, &program, 4); ptr += 4;
10472 		memcpy(ptr, &location, 4); ptr += 4;
10473 		memcpy(ptr, &count, 4); ptr += 4;
10474 	memcpy(ptr, &__size_value, 4); ptr += 4;
10475 	memcpy(ptr, value, __size_value);ptr += __size_value;
10476 
10477 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10478 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10479 
10480 }
10481 
glProgramUniform2uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10482 void glProgramUniform2uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10483 {
10484 	ENCODER_DEBUG_LOG("glProgramUniform2uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10485 	AEMU_SCOPED_TRACE("glProgramUniform2uiv encode");
10486 
10487 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10488 	IOStream *stream = ctx->m_stream;
10489 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10490 	bool useChecksum = checksumCalculator->getVersion() > 0;
10491 
10492 	const unsigned int __size_value =  (count * 2 * sizeof(GLuint));
10493 	 unsigned char *ptr;
10494 	 unsigned char *buf;
10495 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10496 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10497 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10498 	buf = stream->alloc(totalSize);
10499 	ptr = buf;
10500 	int tmp = OP_glProgramUniform2uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10501 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10502 
10503 		memcpy(ptr, &program, 4); ptr += 4;
10504 		memcpy(ptr, &location, 4); ptr += 4;
10505 		memcpy(ptr, &count, 4); ptr += 4;
10506 	memcpy(ptr, &__size_value, 4); ptr += 4;
10507 	memcpy(ptr, value, __size_value);ptr += __size_value;
10508 
10509 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10510 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10511 
10512 }
10513 
glProgramUniform3uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10514 void glProgramUniform3uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10515 {
10516 	ENCODER_DEBUG_LOG("glProgramUniform3uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10517 	AEMU_SCOPED_TRACE("glProgramUniform3uiv encode");
10518 
10519 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10520 	IOStream *stream = ctx->m_stream;
10521 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10522 	bool useChecksum = checksumCalculator->getVersion() > 0;
10523 
10524 	const unsigned int __size_value =  (count * 3 * sizeof(GLuint));
10525 	 unsigned char *ptr;
10526 	 unsigned char *buf;
10527 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10528 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10529 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10530 	buf = stream->alloc(totalSize);
10531 	ptr = buf;
10532 	int tmp = OP_glProgramUniform3uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10533 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10534 
10535 		memcpy(ptr, &program, 4); ptr += 4;
10536 		memcpy(ptr, &location, 4); ptr += 4;
10537 		memcpy(ptr, &count, 4); ptr += 4;
10538 	memcpy(ptr, &__size_value, 4); ptr += 4;
10539 	memcpy(ptr, value, __size_value);ptr += __size_value;
10540 
10541 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10542 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10543 
10544 }
10545 
glProgramUniform4uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10546 void glProgramUniform4uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10547 {
10548 	ENCODER_DEBUG_LOG("glProgramUniform4uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10549 	AEMU_SCOPED_TRACE("glProgramUniform4uiv encode");
10550 
10551 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10552 	IOStream *stream = ctx->m_stream;
10553 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10554 	bool useChecksum = checksumCalculator->getVersion() > 0;
10555 
10556 	const unsigned int __size_value =  (count * 4 * sizeof(GLuint));
10557 	 unsigned char *ptr;
10558 	 unsigned char *buf;
10559 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10560 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10561 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10562 	buf = stream->alloc(totalSize);
10563 	ptr = buf;
10564 	int tmp = OP_glProgramUniform4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10565 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10566 
10567 		memcpy(ptr, &program, 4); ptr += 4;
10568 		memcpy(ptr, &location, 4); ptr += 4;
10569 		memcpy(ptr, &count, 4); ptr += 4;
10570 	memcpy(ptr, &__size_value, 4); ptr += 4;
10571 	memcpy(ptr, value, __size_value);ptr += __size_value;
10572 
10573 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10574 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10575 
10576 }
10577 
glProgramUniformMatrix2fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10578 void glProgramUniformMatrix2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10579 {
10580 	ENCODER_DEBUG_LOG("glProgramUniformMatrix2fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10581 	AEMU_SCOPED_TRACE("glProgramUniformMatrix2fv encode");
10582 
10583 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10584 	IOStream *stream = ctx->m_stream;
10585 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10586 	bool useChecksum = checksumCalculator->getVersion() > 0;
10587 
10588 	const unsigned int __size_value =  (count * 4 * sizeof(GLfloat));
10589 	 unsigned char *ptr;
10590 	 unsigned char *buf;
10591 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10592 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10593 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10594 	buf = stream->alloc(totalSize);
10595 	ptr = buf;
10596 	int tmp = OP_glProgramUniformMatrix2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10597 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10598 
10599 		memcpy(ptr, &program, 4); ptr += 4;
10600 		memcpy(ptr, &location, 4); ptr += 4;
10601 		memcpy(ptr, &count, 4); ptr += 4;
10602 		memcpy(ptr, &transpose, 1); ptr += 1;
10603 	memcpy(ptr, &__size_value, 4); ptr += 4;
10604 	memcpy(ptr, value, __size_value);ptr += __size_value;
10605 
10606 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10607 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10608 
10609 }
10610 
glProgramUniformMatrix3fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10611 void glProgramUniformMatrix3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10612 {
10613 	ENCODER_DEBUG_LOG("glProgramUniformMatrix3fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10614 	AEMU_SCOPED_TRACE("glProgramUniformMatrix3fv encode");
10615 
10616 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10617 	IOStream *stream = ctx->m_stream;
10618 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10619 	bool useChecksum = checksumCalculator->getVersion() > 0;
10620 
10621 	const unsigned int __size_value =  (count * 9 * sizeof(GLfloat));
10622 	 unsigned char *ptr;
10623 	 unsigned char *buf;
10624 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10625 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10626 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10627 	buf = stream->alloc(totalSize);
10628 	ptr = buf;
10629 	int tmp = OP_glProgramUniformMatrix3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10630 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10631 
10632 		memcpy(ptr, &program, 4); ptr += 4;
10633 		memcpy(ptr, &location, 4); ptr += 4;
10634 		memcpy(ptr, &count, 4); ptr += 4;
10635 		memcpy(ptr, &transpose, 1); ptr += 1;
10636 	memcpy(ptr, &__size_value, 4); ptr += 4;
10637 	memcpy(ptr, value, __size_value);ptr += __size_value;
10638 
10639 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10640 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10641 
10642 }
10643 
glProgramUniformMatrix4fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10644 void glProgramUniformMatrix4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10645 {
10646 	ENCODER_DEBUG_LOG("glProgramUniformMatrix4fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10647 	AEMU_SCOPED_TRACE("glProgramUniformMatrix4fv encode");
10648 
10649 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10650 	IOStream *stream = ctx->m_stream;
10651 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10652 	bool useChecksum = checksumCalculator->getVersion() > 0;
10653 
10654 	const unsigned int __size_value =  (count * 16 * sizeof(GLfloat));
10655 	 unsigned char *ptr;
10656 	 unsigned char *buf;
10657 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10658 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10659 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10660 	buf = stream->alloc(totalSize);
10661 	ptr = buf;
10662 	int tmp = OP_glProgramUniformMatrix4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10663 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10664 
10665 		memcpy(ptr, &program, 4); ptr += 4;
10666 		memcpy(ptr, &location, 4); ptr += 4;
10667 		memcpy(ptr, &count, 4); ptr += 4;
10668 		memcpy(ptr, &transpose, 1); ptr += 1;
10669 	memcpy(ptr, &__size_value, 4); ptr += 4;
10670 	memcpy(ptr, value, __size_value);ptr += __size_value;
10671 
10672 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10673 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10674 
10675 }
10676 
glProgramUniformMatrix2x3fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10677 void glProgramUniformMatrix2x3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10678 {
10679 	ENCODER_DEBUG_LOG("glProgramUniformMatrix2x3fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10680 	AEMU_SCOPED_TRACE("glProgramUniformMatrix2x3fv encode");
10681 
10682 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10683 	IOStream *stream = ctx->m_stream;
10684 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10685 	bool useChecksum = checksumCalculator->getVersion() > 0;
10686 
10687 	const unsigned int __size_value =  (count * 6 * sizeof(GLfloat));
10688 	 unsigned char *ptr;
10689 	 unsigned char *buf;
10690 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10691 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10692 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10693 	buf = stream->alloc(totalSize);
10694 	ptr = buf;
10695 	int tmp = OP_glProgramUniformMatrix2x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10696 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10697 
10698 		memcpy(ptr, &program, 4); ptr += 4;
10699 		memcpy(ptr, &location, 4); ptr += 4;
10700 		memcpy(ptr, &count, 4); ptr += 4;
10701 		memcpy(ptr, &transpose, 1); ptr += 1;
10702 	memcpy(ptr, &__size_value, 4); ptr += 4;
10703 	memcpy(ptr, value, __size_value);ptr += __size_value;
10704 
10705 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10706 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10707 
10708 }
10709 
glProgramUniformMatrix3x2fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10710 void glProgramUniformMatrix3x2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10711 {
10712 	ENCODER_DEBUG_LOG("glProgramUniformMatrix3x2fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10713 	AEMU_SCOPED_TRACE("glProgramUniformMatrix3x2fv encode");
10714 
10715 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10716 	IOStream *stream = ctx->m_stream;
10717 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10718 	bool useChecksum = checksumCalculator->getVersion() > 0;
10719 
10720 	const unsigned int __size_value =  (count * 6 * sizeof(GLfloat));
10721 	 unsigned char *ptr;
10722 	 unsigned char *buf;
10723 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10724 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10725 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10726 	buf = stream->alloc(totalSize);
10727 	ptr = buf;
10728 	int tmp = OP_glProgramUniformMatrix3x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10729 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10730 
10731 		memcpy(ptr, &program, 4); ptr += 4;
10732 		memcpy(ptr, &location, 4); ptr += 4;
10733 		memcpy(ptr, &count, 4); ptr += 4;
10734 		memcpy(ptr, &transpose, 1); ptr += 1;
10735 	memcpy(ptr, &__size_value, 4); ptr += 4;
10736 	memcpy(ptr, value, __size_value);ptr += __size_value;
10737 
10738 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10739 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10740 
10741 }
10742 
glProgramUniformMatrix2x4fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10743 void glProgramUniformMatrix2x4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10744 {
10745 	ENCODER_DEBUG_LOG("glProgramUniformMatrix2x4fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10746 	AEMU_SCOPED_TRACE("glProgramUniformMatrix2x4fv encode");
10747 
10748 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10749 	IOStream *stream = ctx->m_stream;
10750 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10751 	bool useChecksum = checksumCalculator->getVersion() > 0;
10752 
10753 	const unsigned int __size_value =  (count * 8 * sizeof(GLfloat));
10754 	 unsigned char *ptr;
10755 	 unsigned char *buf;
10756 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10757 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10758 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10759 	buf = stream->alloc(totalSize);
10760 	ptr = buf;
10761 	int tmp = OP_glProgramUniformMatrix2x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10762 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10763 
10764 		memcpy(ptr, &program, 4); ptr += 4;
10765 		memcpy(ptr, &location, 4); ptr += 4;
10766 		memcpy(ptr, &count, 4); ptr += 4;
10767 		memcpy(ptr, &transpose, 1); ptr += 1;
10768 	memcpy(ptr, &__size_value, 4); ptr += 4;
10769 	memcpy(ptr, value, __size_value);ptr += __size_value;
10770 
10771 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10772 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10773 
10774 }
10775 
glProgramUniformMatrix4x2fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10776 void glProgramUniformMatrix4x2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10777 {
10778 	ENCODER_DEBUG_LOG("glProgramUniformMatrix4x2fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10779 	AEMU_SCOPED_TRACE("glProgramUniformMatrix4x2fv encode");
10780 
10781 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10782 	IOStream *stream = ctx->m_stream;
10783 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10784 	bool useChecksum = checksumCalculator->getVersion() > 0;
10785 
10786 	const unsigned int __size_value =  (count * 8 * sizeof(GLfloat));
10787 	 unsigned char *ptr;
10788 	 unsigned char *buf;
10789 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10790 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10791 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10792 	buf = stream->alloc(totalSize);
10793 	ptr = buf;
10794 	int tmp = OP_glProgramUniformMatrix4x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10795 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10796 
10797 		memcpy(ptr, &program, 4); ptr += 4;
10798 		memcpy(ptr, &location, 4); ptr += 4;
10799 		memcpy(ptr, &count, 4); ptr += 4;
10800 		memcpy(ptr, &transpose, 1); ptr += 1;
10801 	memcpy(ptr, &__size_value, 4); ptr += 4;
10802 	memcpy(ptr, value, __size_value);ptr += __size_value;
10803 
10804 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10805 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10806 
10807 }
10808 
glProgramUniformMatrix3x4fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10809 void glProgramUniformMatrix3x4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10810 {
10811 	ENCODER_DEBUG_LOG("glProgramUniformMatrix3x4fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10812 	AEMU_SCOPED_TRACE("glProgramUniformMatrix3x4fv encode");
10813 
10814 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10815 	IOStream *stream = ctx->m_stream;
10816 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10817 	bool useChecksum = checksumCalculator->getVersion() > 0;
10818 
10819 	const unsigned int __size_value =  (count * 12 * sizeof(GLfloat));
10820 	 unsigned char *ptr;
10821 	 unsigned char *buf;
10822 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10823 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10824 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10825 	buf = stream->alloc(totalSize);
10826 	ptr = buf;
10827 	int tmp = OP_glProgramUniformMatrix3x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10828 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10829 
10830 		memcpy(ptr, &program, 4); ptr += 4;
10831 		memcpy(ptr, &location, 4); ptr += 4;
10832 		memcpy(ptr, &count, 4); ptr += 4;
10833 		memcpy(ptr, &transpose, 1); ptr += 1;
10834 	memcpy(ptr, &__size_value, 4); ptr += 4;
10835 	memcpy(ptr, value, __size_value);ptr += __size_value;
10836 
10837 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10838 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10839 
10840 }
10841 
glProgramUniformMatrix4x3fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10842 void glProgramUniformMatrix4x3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10843 {
10844 	ENCODER_DEBUG_LOG("glProgramUniformMatrix4x3fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10845 	AEMU_SCOPED_TRACE("glProgramUniformMatrix4x3fv encode");
10846 
10847 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10848 	IOStream *stream = ctx->m_stream;
10849 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10850 	bool useChecksum = checksumCalculator->getVersion() > 0;
10851 
10852 	const unsigned int __size_value =  (count * 12 * sizeof(GLfloat));
10853 	 unsigned char *ptr;
10854 	 unsigned char *buf;
10855 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10856 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10857 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10858 	buf = stream->alloc(totalSize);
10859 	ptr = buf;
10860 	int tmp = OP_glProgramUniformMatrix4x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10861 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10862 
10863 		memcpy(ptr, &program, 4); ptr += 4;
10864 		memcpy(ptr, &location, 4); ptr += 4;
10865 		memcpy(ptr, &count, 4); ptr += 4;
10866 		memcpy(ptr, &transpose, 1); ptr += 1;
10867 	memcpy(ptr, &__size_value, 4); ptr += 4;
10868 	memcpy(ptr, value, __size_value);ptr += __size_value;
10869 
10870 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10871 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10872 
10873 }
10874 
glGetProgramInterfaceiv_enc(void * self,GLuint program,GLenum programInterface,GLenum pname,GLint * params)10875 void glGetProgramInterfaceiv_enc(void *self , GLuint program, GLenum programInterface, GLenum pname, GLint* params)
10876 {
10877 	ENCODER_DEBUG_LOG("glGetProgramInterfaceiv(program:%u, programInterface:0x%08x, pname:0x%08x, params:0x%08x)", program, programInterface, pname, params);
10878 	AEMU_SCOPED_TRACE("glGetProgramInterfaceiv encode");
10879 
10880 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10881 	IOStream *stream = ctx->m_stream;
10882 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10883 	bool useChecksum = checksumCalculator->getVersion() > 0;
10884 
10885 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
10886 	 unsigned char *ptr;
10887 	 unsigned char *buf;
10888 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
10889 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10890 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10891 	buf = stream->alloc(totalSize);
10892 	ptr = buf;
10893 	int tmp = OP_glGetProgramInterfaceiv;memcpy(ptr, &tmp, 4); ptr += 4;
10894 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10895 
10896 		memcpy(ptr, &program, 4); ptr += 4;
10897 		memcpy(ptr, &programInterface, 4); ptr += 4;
10898 		memcpy(ptr, &pname, 4); ptr += 4;
10899 	memcpy(ptr, &__size_params, 4); ptr += 4;
10900 
10901 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10902 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10903 
10904 	stream->readback(params, __size_params);
10905 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
10906 	if (useChecksum) {
10907 		unsigned char *checksumBufPtr = NULL;
10908 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
10909 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10910 		stream->readback(checksumBufPtr, checksumSize);
10911 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10912 			ALOGE("glGetProgramInterfaceiv: GL communication error, please report this issue to b.android.com.\n");
10913 			abort();
10914 		}
10915 	}
10916 }
10917 
glGetProgramResourceiv_enc(void * self,GLuint program,GLenum programInterface,GLuint index,GLsizei propCount,const GLenum * props,GLsizei bufSize,GLsizei * length,GLint * params)10918 void glGetProgramResourceiv_enc(void *self , GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei* length, GLint* params)
10919 {
10920 	ENCODER_DEBUG_LOG("glGetProgramResourceiv(program:%u, programInterface:0x%08x, index:%u, propCount:%d, props:0x%08x, bufSize:%d, length:0x%08x, params:0x%08x)", program, programInterface, index, propCount, props, bufSize, length, params);
10921 	AEMU_SCOPED_TRACE("glGetProgramResourceiv encode");
10922 
10923 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10924 	IOStream *stream = ctx->m_stream;
10925 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10926 	bool useChecksum = checksumCalculator->getVersion() > 0;
10927 
10928 	const unsigned int __size_props =  (propCount * sizeof(GLenum));
10929 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
10930 	const unsigned int __size_params =  (bufSize * sizeof(GLint));
10931 	 unsigned char *ptr;
10932 	 unsigned char *buf;
10933 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_props + 4 + 0 + 0 + 3*4;
10934 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10935 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10936 	buf = stream->alloc(totalSize);
10937 	ptr = buf;
10938 	int tmp = OP_glGetProgramResourceiv;memcpy(ptr, &tmp, 4); ptr += 4;
10939 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10940 
10941 		memcpy(ptr, &program, 4); ptr += 4;
10942 		memcpy(ptr, &programInterface, 4); ptr += 4;
10943 		memcpy(ptr, &index, 4); ptr += 4;
10944 		memcpy(ptr, &propCount, 4); ptr += 4;
10945 	memcpy(ptr, &__size_props, 4); ptr += 4;
10946 	memcpy(ptr, props, __size_props);ptr += __size_props;
10947 		memcpy(ptr, &bufSize, 4); ptr += 4;
10948 	memcpy(ptr, &__size_length, 4); ptr += 4;
10949 	memcpy(ptr, &__size_params, 4); ptr += 4;
10950 
10951 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10952 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10953 
10954 	if (length != NULL) {
10955 		stream->readback(length, __size_length);
10956 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
10957 	}
10958 	stream->readback(params, __size_params);
10959 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
10960 	if (useChecksum) {
10961 		unsigned char *checksumBufPtr = NULL;
10962 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
10963 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10964 		stream->readback(checksumBufPtr, checksumSize);
10965 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10966 			ALOGE("glGetProgramResourceiv: GL communication error, please report this issue to b.android.com.\n");
10967 			abort();
10968 		}
10969 	}
10970 }
10971 
glGetProgramResourceIndex_enc(void * self,GLuint program,GLenum programInterface,const char * name)10972 GLuint glGetProgramResourceIndex_enc(void *self , GLuint program, GLenum programInterface, const char* name)
10973 {
10974 	ENCODER_DEBUG_LOG("glGetProgramResourceIndex(program:%u, programInterface:0x%08x, name:0x%08x)", program, programInterface, name);
10975 	AEMU_SCOPED_TRACE("glGetProgramResourceIndex encode");
10976 
10977 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10978 	IOStream *stream = ctx->m_stream;
10979 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10980 	bool useChecksum = checksumCalculator->getVersion() > 0;
10981 
10982 	const unsigned int __size_name =  (strlen(name) + 1);
10983 	 unsigned char *ptr;
10984 	 unsigned char *buf;
10985 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
10986 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10987 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10988 	buf = stream->alloc(totalSize);
10989 	ptr = buf;
10990 	int tmp = OP_glGetProgramResourceIndex;memcpy(ptr, &tmp, 4); ptr += 4;
10991 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10992 
10993 		memcpy(ptr, &program, 4); ptr += 4;
10994 		memcpy(ptr, &programInterface, 4); ptr += 4;
10995 	memcpy(ptr, &__size_name, 4); ptr += 4;
10996 	memcpy(ptr, name, __size_name);ptr += __size_name;
10997 
10998 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10999 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11000 
11001 
11002 	GLuint retval;
11003 	stream->readback(&retval, 4);
11004 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
11005 	if (useChecksum) {
11006 		unsigned char *checksumBufPtr = NULL;
11007 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11008 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11009 		stream->readback(checksumBufPtr, checksumSize);
11010 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11011 			ALOGE("glGetProgramResourceIndex: GL communication error, please report this issue to b.android.com.\n");
11012 			abort();
11013 		}
11014 	}
11015 	return retval;
11016 }
11017 
glGetProgramResourceLocation_enc(void * self,GLuint program,GLenum programInterface,const char * name)11018 GLint glGetProgramResourceLocation_enc(void *self , GLuint program, GLenum programInterface, const char* name)
11019 {
11020 	ENCODER_DEBUG_LOG("glGetProgramResourceLocation(program:%u, programInterface:0x%08x, name:0x%08x)", program, programInterface, name);
11021 	AEMU_SCOPED_TRACE("glGetProgramResourceLocation encode");
11022 
11023 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11024 	IOStream *stream = ctx->m_stream;
11025 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11026 	bool useChecksum = checksumCalculator->getVersion() > 0;
11027 
11028 	const unsigned int __size_name =  (strlen(name) + 1);
11029 	 unsigned char *ptr;
11030 	 unsigned char *buf;
11031 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
11032 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11033 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11034 	buf = stream->alloc(totalSize);
11035 	ptr = buf;
11036 	int tmp = OP_glGetProgramResourceLocation;memcpy(ptr, &tmp, 4); ptr += 4;
11037 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11038 
11039 		memcpy(ptr, &program, 4); ptr += 4;
11040 		memcpy(ptr, &programInterface, 4); ptr += 4;
11041 	memcpy(ptr, &__size_name, 4); ptr += 4;
11042 	memcpy(ptr, name, __size_name);ptr += __size_name;
11043 
11044 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11045 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11046 
11047 
11048 	GLint retval;
11049 	stream->readback(&retval, 4);
11050 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
11051 	if (useChecksum) {
11052 		unsigned char *checksumBufPtr = NULL;
11053 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11054 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11055 		stream->readback(checksumBufPtr, checksumSize);
11056 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11057 			ALOGE("glGetProgramResourceLocation: GL communication error, please report this issue to b.android.com.\n");
11058 			abort();
11059 		}
11060 	}
11061 	return retval;
11062 }
11063 
glGetProgramResourceName_enc(void * self,GLuint program,GLenum programInterface,GLuint index,GLsizei bufSize,GLsizei * length,char * name)11064 void glGetProgramResourceName_enc(void *self , GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, char* name)
11065 {
11066 	ENCODER_DEBUG_LOG("glGetProgramResourceName(program:%u, programInterface:0x%08x, index:%u, bufSize:%d, length:0x%08x, name:0x%08x)", program, programInterface, index, bufSize, length, name);
11067 	AEMU_SCOPED_TRACE("glGetProgramResourceName encode");
11068 
11069 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11070 	IOStream *stream = ctx->m_stream;
11071 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11072 	bool useChecksum = checksumCalculator->getVersion() > 0;
11073 
11074 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
11075 	const unsigned int __size_name =  bufSize;
11076 	 unsigned char *ptr;
11077 	 unsigned char *buf;
11078 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 0 + 2*4;
11079 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11080 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11081 	buf = stream->alloc(totalSize);
11082 	ptr = buf;
11083 	int tmp = OP_glGetProgramResourceName;memcpy(ptr, &tmp, 4); ptr += 4;
11084 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11085 
11086 		memcpy(ptr, &program, 4); ptr += 4;
11087 		memcpy(ptr, &programInterface, 4); ptr += 4;
11088 		memcpy(ptr, &index, 4); ptr += 4;
11089 		memcpy(ptr, &bufSize, 4); ptr += 4;
11090 	memcpy(ptr, &__size_length, 4); ptr += 4;
11091 	memcpy(ptr, &__size_name, 4); ptr += 4;
11092 
11093 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11094 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11095 
11096 	if (length != NULL) {
11097 		stream->readback(length, __size_length);
11098 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
11099 	}
11100 	stream->readback(name, __size_name);
11101 	if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
11102 	if (useChecksum) {
11103 		unsigned char *checksumBufPtr = NULL;
11104 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11105 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11106 		stream->readback(checksumBufPtr, checksumSize);
11107 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11108 			ALOGE("glGetProgramResourceName: GL communication error, please report this issue to b.android.com.\n");
11109 			abort();
11110 		}
11111 	}
11112 }
11113 
glBindImageTexture_enc(void * self,GLuint unit,GLuint texture,GLint level,GLboolean layered,GLint layer,GLenum access,GLenum format)11114 void glBindImageTexture_enc(void *self , GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
11115 {
11116 	ENCODER_DEBUG_LOG("glBindImageTexture(unit:%u, texture:%u, level:%d, layered:%d, layer:%d, access:0x%08x, format:0x%08x)", unit, texture, level, layered, layer, access, format);
11117 	AEMU_SCOPED_TRACE("glBindImageTexture encode");
11118 
11119 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11120 	IOStream *stream = ctx->m_stream;
11121 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11122 	bool useChecksum = checksumCalculator->getVersion() > 0;
11123 
11124 	 unsigned char *ptr;
11125 	 unsigned char *buf;
11126 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + 4 + 4;
11127 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11128 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11129 	buf = stream->alloc(totalSize);
11130 	ptr = buf;
11131 	int tmp = OP_glBindImageTexture;memcpy(ptr, &tmp, 4); ptr += 4;
11132 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11133 
11134 		memcpy(ptr, &unit, 4); ptr += 4;
11135 		memcpy(ptr, &texture, 4); ptr += 4;
11136 		memcpy(ptr, &level, 4); ptr += 4;
11137 		memcpy(ptr, &layered, 1); ptr += 1;
11138 		memcpy(ptr, &layer, 4); ptr += 4;
11139 		memcpy(ptr, &access, 4); ptr += 4;
11140 		memcpy(ptr, &format, 4); ptr += 4;
11141 
11142 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11143 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11144 
11145 }
11146 
glDispatchCompute_enc(void * self,GLuint num_groups_x,GLuint num_groups_y,GLuint num_groups_z)11147 void glDispatchCompute_enc(void *self , GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
11148 {
11149 	ENCODER_DEBUG_LOG("glDispatchCompute(num_groups_x:%u, num_groups_y:%u, num_groups_z:%u)", num_groups_x, num_groups_y, num_groups_z);
11150 	AEMU_SCOPED_TRACE("glDispatchCompute encode");
11151 
11152 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11153 	IOStream *stream = ctx->m_stream;
11154 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11155 	bool useChecksum = checksumCalculator->getVersion() > 0;
11156 
11157 	 unsigned char *ptr;
11158 	 unsigned char *buf;
11159 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
11160 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11161 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11162 	buf = stream->alloc(totalSize);
11163 	ptr = buf;
11164 	int tmp = OP_glDispatchCompute;memcpy(ptr, &tmp, 4); ptr += 4;
11165 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11166 
11167 		memcpy(ptr, &num_groups_x, 4); ptr += 4;
11168 		memcpy(ptr, &num_groups_y, 4); ptr += 4;
11169 		memcpy(ptr, &num_groups_z, 4); ptr += 4;
11170 
11171 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11172 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11173 
11174 }
11175 
glDispatchComputeIndirect_enc(void * self,GLintptr indirect)11176 void glDispatchComputeIndirect_enc(void *self , GLintptr indirect)
11177 {
11178 	ENCODER_DEBUG_LOG("glDispatchComputeIndirect(indirect:0x%08lx)", indirect);
11179 	AEMU_SCOPED_TRACE("glDispatchComputeIndirect encode");
11180 
11181 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11182 	IOStream *stream = ctx->m_stream;
11183 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11184 	bool useChecksum = checksumCalculator->getVersion() > 0;
11185 
11186 	 unsigned char *ptr;
11187 	 unsigned char *buf;
11188 	 const size_t sizeWithoutChecksum = 8 + 4;
11189 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11190 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11191 	buf = stream->alloc(totalSize);
11192 	ptr = buf;
11193 	int tmp = OP_glDispatchComputeIndirect;memcpy(ptr, &tmp, 4); ptr += 4;
11194 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11195 
11196 		memcpy(ptr, &indirect, 4); ptr += 4;
11197 
11198 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11199 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11200 
11201 }
11202 
glBindVertexBuffer_enc(void * self,GLuint bindingindex,GLuint buffer,GLintptr offset,GLintptr stride)11203 void glBindVertexBuffer_enc(void *self , GLuint bindingindex, GLuint buffer, GLintptr offset, GLintptr stride)
11204 {
11205 	ENCODER_DEBUG_LOG("glBindVertexBuffer(bindingindex:%u, buffer:%u, offset:0x%08lx, stride:0x%08lx)", bindingindex, buffer, offset, stride);
11206 	AEMU_SCOPED_TRACE("glBindVertexBuffer encode");
11207 
11208 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11209 	IOStream *stream = ctx->m_stream;
11210 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11211 	bool useChecksum = checksumCalculator->getVersion() > 0;
11212 
11213 	 unsigned char *ptr;
11214 	 unsigned char *buf;
11215 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
11216 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11217 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11218 	buf = stream->alloc(totalSize);
11219 	ptr = buf;
11220 	int tmp = OP_glBindVertexBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
11221 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11222 
11223 		memcpy(ptr, &bindingindex, 4); ptr += 4;
11224 		memcpy(ptr, &buffer, 4); ptr += 4;
11225 		memcpy(ptr, &offset, 4); ptr += 4;
11226 		memcpy(ptr, &stride, 4); ptr += 4;
11227 
11228 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11229 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11230 
11231 }
11232 
glVertexAttribBinding_enc(void * self,GLuint attribindex,GLuint bindingindex)11233 void glVertexAttribBinding_enc(void *self , GLuint attribindex, GLuint bindingindex)
11234 {
11235 	ENCODER_DEBUG_LOG("glVertexAttribBinding(attribindex:%u, bindingindex:%u)", attribindex, bindingindex);
11236 	AEMU_SCOPED_TRACE("glVertexAttribBinding encode");
11237 
11238 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11239 	IOStream *stream = ctx->m_stream;
11240 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11241 	bool useChecksum = checksumCalculator->getVersion() > 0;
11242 
11243 	 unsigned char *ptr;
11244 	 unsigned char *buf;
11245 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11246 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11247 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11248 	buf = stream->alloc(totalSize);
11249 	ptr = buf;
11250 	int tmp = OP_glVertexAttribBinding;memcpy(ptr, &tmp, 4); ptr += 4;
11251 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11252 
11253 		memcpy(ptr, &attribindex, 4); ptr += 4;
11254 		memcpy(ptr, &bindingindex, 4); ptr += 4;
11255 
11256 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11257 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11258 
11259 }
11260 
glVertexAttribFormat_enc(void * self,GLuint attribindex,GLint size,GLenum type,GLboolean normalized,GLuint relativeoffset)11261 void glVertexAttribFormat_enc(void *self , GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
11262 {
11263 	ENCODER_DEBUG_LOG("glVertexAttribFormat(attribindex:%u, size:%d, type:0x%08x, normalized:%d, relativeoffset:%u)", attribindex, size, type, normalized, relativeoffset);
11264 	AEMU_SCOPED_TRACE("glVertexAttribFormat encode");
11265 
11266 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11267 	IOStream *stream = ctx->m_stream;
11268 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11269 	bool useChecksum = checksumCalculator->getVersion() > 0;
11270 
11271 	 unsigned char *ptr;
11272 	 unsigned char *buf;
11273 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4;
11274 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11275 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11276 	buf = stream->alloc(totalSize);
11277 	ptr = buf;
11278 	int tmp = OP_glVertexAttribFormat;memcpy(ptr, &tmp, 4); ptr += 4;
11279 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11280 
11281 		memcpy(ptr, &attribindex, 4); ptr += 4;
11282 		memcpy(ptr, &size, 4); ptr += 4;
11283 		memcpy(ptr, &type, 4); ptr += 4;
11284 		memcpy(ptr, &normalized, 1); ptr += 1;
11285 		memcpy(ptr, &relativeoffset, 4); ptr += 4;
11286 
11287 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11288 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11289 
11290 }
11291 
glVertexAttribIFormat_enc(void * self,GLuint attribindex,GLint size,GLenum type,GLuint relativeoffset)11292 void glVertexAttribIFormat_enc(void *self , GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
11293 {
11294 	ENCODER_DEBUG_LOG("glVertexAttribIFormat(attribindex:%u, size:%d, type:0x%08x, relativeoffset:%u)", attribindex, size, type, relativeoffset);
11295 	AEMU_SCOPED_TRACE("glVertexAttribIFormat encode");
11296 
11297 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11298 	IOStream *stream = ctx->m_stream;
11299 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11300 	bool useChecksum = checksumCalculator->getVersion() > 0;
11301 
11302 	 unsigned char *ptr;
11303 	 unsigned char *buf;
11304 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
11305 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11306 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11307 	buf = stream->alloc(totalSize);
11308 	ptr = buf;
11309 	int tmp = OP_glVertexAttribIFormat;memcpy(ptr, &tmp, 4); ptr += 4;
11310 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11311 
11312 		memcpy(ptr, &attribindex, 4); ptr += 4;
11313 		memcpy(ptr, &size, 4); ptr += 4;
11314 		memcpy(ptr, &type, 4); ptr += 4;
11315 		memcpy(ptr, &relativeoffset, 4); ptr += 4;
11316 
11317 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11318 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11319 
11320 }
11321 
glVertexBindingDivisor_enc(void * self,GLuint bindingindex,GLuint divisor)11322 void glVertexBindingDivisor_enc(void *self , GLuint bindingindex, GLuint divisor)
11323 {
11324 	ENCODER_DEBUG_LOG("glVertexBindingDivisor(bindingindex:%u, divisor:%u)", bindingindex, divisor);
11325 	AEMU_SCOPED_TRACE("glVertexBindingDivisor encode");
11326 
11327 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11328 	IOStream *stream = ctx->m_stream;
11329 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11330 	bool useChecksum = checksumCalculator->getVersion() > 0;
11331 
11332 	 unsigned char *ptr;
11333 	 unsigned char *buf;
11334 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11335 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11336 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11337 	buf = stream->alloc(totalSize);
11338 	ptr = buf;
11339 	int tmp = OP_glVertexBindingDivisor;memcpy(ptr, &tmp, 4); ptr += 4;
11340 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11341 
11342 		memcpy(ptr, &bindingindex, 4); ptr += 4;
11343 		memcpy(ptr, &divisor, 4); ptr += 4;
11344 
11345 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11346 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11347 
11348 }
11349 
glDrawArraysIndirectDataAEMU_enc(void * self,GLenum mode,const void * indirect,GLuint datalen)11350 void glDrawArraysIndirectDataAEMU_enc(void *self , GLenum mode, const void* indirect, GLuint datalen)
11351 {
11352 	ENCODER_DEBUG_LOG("glDrawArraysIndirectDataAEMU(mode:0x%08x, indirect:0x%08x, datalen:%u)", mode, indirect, datalen);
11353 	AEMU_SCOPED_TRACE("glDrawArraysIndirectDataAEMU encode");
11354 
11355 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11356 	IOStream *stream = ctx->m_stream;
11357 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11358 	bool useChecksum = checksumCalculator->getVersion() > 0;
11359 
11360 	const unsigned int __size_indirect =  datalen;
11361 	 unsigned char *ptr;
11362 	 unsigned char *buf;
11363 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_indirect + 4 + 1*4;
11364 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11365 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11366 	buf = stream->alloc(totalSize);
11367 	ptr = buf;
11368 	int tmp = OP_glDrawArraysIndirectDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11369 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11370 
11371 		memcpy(ptr, &mode, 4); ptr += 4;
11372 	memcpy(ptr, &__size_indirect, 4); ptr += 4;
11373 	memcpy(ptr, indirect, __size_indirect);ptr += __size_indirect;
11374 		memcpy(ptr, &datalen, 4); ptr += 4;
11375 
11376 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11377 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11378 
11379 }
11380 
glDrawArraysIndirectOffsetAEMU_enc(void * self,GLenum mode,GLuint offset)11381 void glDrawArraysIndirectOffsetAEMU_enc(void *self , GLenum mode, GLuint offset)
11382 {
11383 	ENCODER_DEBUG_LOG("glDrawArraysIndirectOffsetAEMU(mode:0x%08x, offset:%u)", mode, offset);
11384 	AEMU_SCOPED_TRACE("glDrawArraysIndirectOffsetAEMU encode");
11385 
11386 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11387 	IOStream *stream = ctx->m_stream;
11388 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11389 	bool useChecksum = checksumCalculator->getVersion() > 0;
11390 
11391 	 unsigned char *ptr;
11392 	 unsigned char *buf;
11393 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11394 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11395 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11396 	buf = stream->alloc(totalSize);
11397 	ptr = buf;
11398 	int tmp = OP_glDrawArraysIndirectOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11399 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11400 
11401 		memcpy(ptr, &mode, 4); ptr += 4;
11402 		memcpy(ptr, &offset, 4); ptr += 4;
11403 
11404 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11405 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11406 
11407 }
11408 
glDrawElementsIndirectDataAEMU_enc(void * self,GLenum mode,GLenum type,const void * indirect,GLuint datalen)11409 void glDrawElementsIndirectDataAEMU_enc(void *self , GLenum mode, GLenum type, const void* indirect, GLuint datalen)
11410 {
11411 	ENCODER_DEBUG_LOG("glDrawElementsIndirectDataAEMU(mode:0x%08x, type:0x%08x, indirect:0x%08x, datalen:%u)", mode, type, indirect, datalen);
11412 	AEMU_SCOPED_TRACE("glDrawElementsIndirectDataAEMU encode");
11413 
11414 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11415 	IOStream *stream = ctx->m_stream;
11416 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11417 	bool useChecksum = checksumCalculator->getVersion() > 0;
11418 
11419 	const unsigned int __size_indirect =  datalen;
11420 	 unsigned char *ptr;
11421 	 unsigned char *buf;
11422 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_indirect + 4 + 1*4;
11423 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11424 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11425 	buf = stream->alloc(totalSize);
11426 	ptr = buf;
11427 	int tmp = OP_glDrawElementsIndirectDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11428 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11429 
11430 		memcpy(ptr, &mode, 4); ptr += 4;
11431 		memcpy(ptr, &type, 4); ptr += 4;
11432 	memcpy(ptr, &__size_indirect, 4); ptr += 4;
11433 	memcpy(ptr, indirect, __size_indirect);ptr += __size_indirect;
11434 		memcpy(ptr, &datalen, 4); ptr += 4;
11435 
11436 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11437 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11438 
11439 }
11440 
glDrawElementsIndirectOffsetAEMU_enc(void * self,GLenum mode,GLenum type,GLuint offset)11441 void glDrawElementsIndirectOffsetAEMU_enc(void *self , GLenum mode, GLenum type, GLuint offset)
11442 {
11443 	ENCODER_DEBUG_LOG("glDrawElementsIndirectOffsetAEMU(mode:0x%08x, type:0x%08x, offset:%u)", mode, type, offset);
11444 	AEMU_SCOPED_TRACE("glDrawElementsIndirectOffsetAEMU encode");
11445 
11446 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11447 	IOStream *stream = ctx->m_stream;
11448 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11449 	bool useChecksum = checksumCalculator->getVersion() > 0;
11450 
11451 	 unsigned char *ptr;
11452 	 unsigned char *buf;
11453 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
11454 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11455 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11456 	buf = stream->alloc(totalSize);
11457 	ptr = buf;
11458 	int tmp = OP_glDrawElementsIndirectOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11459 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11460 
11461 		memcpy(ptr, &mode, 4); ptr += 4;
11462 		memcpy(ptr, &type, 4); ptr += 4;
11463 		memcpy(ptr, &offset, 4); ptr += 4;
11464 
11465 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11466 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11467 
11468 }
11469 
glTexStorage2DMultisample_enc(void * self,GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height,GLboolean fixedsamplelocations)11470 void glTexStorage2DMultisample_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
11471 {
11472 	ENCODER_DEBUG_LOG("glTexStorage2DMultisample(target:0x%08x, samples:%d, internalformat:0x%08x, width:%d, height:%d, fixedsamplelocations:%d)", target, samples, internalformat, width, height, fixedsamplelocations);
11473 	AEMU_SCOPED_TRACE("glTexStorage2DMultisample encode");
11474 
11475 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11476 	IOStream *stream = ctx->m_stream;
11477 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11478 	bool useChecksum = checksumCalculator->getVersion() > 0;
11479 
11480 	 unsigned char *ptr;
11481 	 unsigned char *buf;
11482 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 1;
11483 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11484 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11485 	buf = stream->alloc(totalSize);
11486 	ptr = buf;
11487 	int tmp = OP_glTexStorage2DMultisample;memcpy(ptr, &tmp, 4); ptr += 4;
11488 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11489 
11490 		memcpy(ptr, &target, 4); ptr += 4;
11491 		memcpy(ptr, &samples, 4); ptr += 4;
11492 		memcpy(ptr, &internalformat, 4); ptr += 4;
11493 		memcpy(ptr, &width, 4); ptr += 4;
11494 		memcpy(ptr, &height, 4); ptr += 4;
11495 		memcpy(ptr, &fixedsamplelocations, 1); ptr += 1;
11496 
11497 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11498 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11499 
11500 }
11501 
glSampleMaski_enc(void * self,GLuint maskNumber,GLbitfield mask)11502 void glSampleMaski_enc(void *self , GLuint maskNumber, GLbitfield mask)
11503 {
11504 	ENCODER_DEBUG_LOG("glSampleMaski(maskNumber:%u, mask:0x%08x)", maskNumber, mask);
11505 	AEMU_SCOPED_TRACE("glSampleMaski encode");
11506 
11507 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11508 	IOStream *stream = ctx->m_stream;
11509 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11510 	bool useChecksum = checksumCalculator->getVersion() > 0;
11511 
11512 	 unsigned char *ptr;
11513 	 unsigned char *buf;
11514 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11515 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11516 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11517 	buf = stream->alloc(totalSize);
11518 	ptr = buf;
11519 	int tmp = OP_glSampleMaski;memcpy(ptr, &tmp, 4); ptr += 4;
11520 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11521 
11522 		memcpy(ptr, &maskNumber, 4); ptr += 4;
11523 		memcpy(ptr, &mask, 4); ptr += 4;
11524 
11525 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11526 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11527 
11528 }
11529 
glGetMultisamplefv_enc(void * self,GLenum pname,GLuint index,GLfloat * val)11530 void glGetMultisamplefv_enc(void *self , GLenum pname, GLuint index, GLfloat* val)
11531 {
11532 	ENCODER_DEBUG_LOG("glGetMultisamplefv(pname:0x%08x, index:%u, val:0x%08x)", pname, index, val);
11533 	AEMU_SCOPED_TRACE("glGetMultisamplefv encode");
11534 
11535 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11536 	IOStream *stream = ctx->m_stream;
11537 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11538 	bool useChecksum = checksumCalculator->getVersion() > 0;
11539 
11540 	const unsigned int __size_val =  (glUtilsParamSize(pname) * sizeof(GLfloat));
11541 	 unsigned char *ptr;
11542 	 unsigned char *buf;
11543 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
11544 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11545 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11546 	buf = stream->alloc(totalSize);
11547 	ptr = buf;
11548 	int tmp = OP_glGetMultisamplefv;memcpy(ptr, &tmp, 4); ptr += 4;
11549 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11550 
11551 		memcpy(ptr, &pname, 4); ptr += 4;
11552 		memcpy(ptr, &index, 4); ptr += 4;
11553 	memcpy(ptr, &__size_val, 4); ptr += 4;
11554 
11555 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11556 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11557 
11558 	stream->readback(val, __size_val);
11559 	if (useChecksum) checksumCalculator->addBuffer(val, __size_val);
11560 	if (useChecksum) {
11561 		unsigned char *checksumBufPtr = NULL;
11562 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11563 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11564 		stream->readback(checksumBufPtr, checksumSize);
11565 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11566 			ALOGE("glGetMultisamplefv: GL communication error, please report this issue to b.android.com.\n");
11567 			abort();
11568 		}
11569 	}
11570 }
11571 
glFramebufferParameteri_enc(void * self,GLenum target,GLenum pname,GLint param)11572 void glFramebufferParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
11573 {
11574 	ENCODER_DEBUG_LOG("glFramebufferParameteri(target:0x%08x, pname:0x%08x, param:%d)", target, pname, param);
11575 	AEMU_SCOPED_TRACE("glFramebufferParameteri encode");
11576 
11577 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11578 	IOStream *stream = ctx->m_stream;
11579 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11580 	bool useChecksum = checksumCalculator->getVersion() > 0;
11581 
11582 	 unsigned char *ptr;
11583 	 unsigned char *buf;
11584 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
11585 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11586 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11587 	buf = stream->alloc(totalSize);
11588 	ptr = buf;
11589 	int tmp = OP_glFramebufferParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
11590 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11591 
11592 		memcpy(ptr, &target, 4); ptr += 4;
11593 		memcpy(ptr, &pname, 4); ptr += 4;
11594 		memcpy(ptr, &param, 4); ptr += 4;
11595 
11596 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11597 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11598 
11599 }
11600 
glGetFramebufferParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)11601 void glGetFramebufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
11602 {
11603 	ENCODER_DEBUG_LOG("glGetFramebufferParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
11604 	AEMU_SCOPED_TRACE("glGetFramebufferParameteriv encode");
11605 
11606 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11607 	IOStream *stream = ctx->m_stream;
11608 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11609 	bool useChecksum = checksumCalculator->getVersion() > 0;
11610 
11611 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
11612 	 unsigned char *ptr;
11613 	 unsigned char *buf;
11614 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
11615 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11616 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11617 	buf = stream->alloc(totalSize);
11618 	ptr = buf;
11619 	int tmp = OP_glGetFramebufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
11620 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11621 
11622 		memcpy(ptr, &target, 4); ptr += 4;
11623 		memcpy(ptr, &pname, 4); ptr += 4;
11624 	memcpy(ptr, &__size_params, 4); ptr += 4;
11625 
11626 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11627 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11628 
11629 	stream->readback(params, __size_params);
11630 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
11631 	if (useChecksum) {
11632 		unsigned char *checksumBufPtr = NULL;
11633 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11634 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11635 		stream->readback(checksumBufPtr, checksumSize);
11636 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11637 			ALOGE("glGetFramebufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
11638 			abort();
11639 		}
11640 	}
11641 }
11642 
glGetTexLevelParameterfv_enc(void * self,GLenum target,GLint level,GLenum pname,GLfloat * params)11643 void glGetTexLevelParameterfv_enc(void *self , GLenum target, GLint level, GLenum pname, GLfloat* params)
11644 {
11645 	ENCODER_DEBUG_LOG("glGetTexLevelParameterfv(target:0x%08x, level:%d, pname:0x%08x, params:0x%08x)", target, level, pname, params);
11646 	AEMU_SCOPED_TRACE("glGetTexLevelParameterfv encode");
11647 
11648 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11649 	IOStream *stream = ctx->m_stream;
11650 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11651 	bool useChecksum = checksumCalculator->getVersion() > 0;
11652 
11653 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
11654 	 unsigned char *ptr;
11655 	 unsigned char *buf;
11656 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
11657 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11658 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11659 	buf = stream->alloc(totalSize);
11660 	ptr = buf;
11661 	int tmp = OP_glGetTexLevelParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
11662 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11663 
11664 		memcpy(ptr, &target, 4); ptr += 4;
11665 		memcpy(ptr, &level, 4); ptr += 4;
11666 		memcpy(ptr, &pname, 4); ptr += 4;
11667 	memcpy(ptr, &__size_params, 4); ptr += 4;
11668 
11669 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11670 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11671 
11672 	stream->readback(params, __size_params);
11673 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
11674 	if (useChecksum) {
11675 		unsigned char *checksumBufPtr = NULL;
11676 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11677 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11678 		stream->readback(checksumBufPtr, checksumSize);
11679 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11680 			ALOGE("glGetTexLevelParameterfv: GL communication error, please report this issue to b.android.com.\n");
11681 			abort();
11682 		}
11683 	}
11684 }
11685 
glGetTexLevelParameteriv_enc(void * self,GLenum target,GLint level,GLenum pname,GLint * params)11686 void glGetTexLevelParameteriv_enc(void *self , GLenum target, GLint level, GLenum pname, GLint* params)
11687 {
11688 	ENCODER_DEBUG_LOG("glGetTexLevelParameteriv(target:0x%08x, level:%d, pname:0x%08x, params:0x%08x)", target, level, pname, params);
11689 	AEMU_SCOPED_TRACE("glGetTexLevelParameteriv encode");
11690 
11691 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11692 	IOStream *stream = ctx->m_stream;
11693 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11694 	bool useChecksum = checksumCalculator->getVersion() > 0;
11695 
11696 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
11697 	 unsigned char *ptr;
11698 	 unsigned char *buf;
11699 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
11700 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11701 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11702 	buf = stream->alloc(totalSize);
11703 	ptr = buf;
11704 	int tmp = OP_glGetTexLevelParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
11705 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11706 
11707 		memcpy(ptr, &target, 4); ptr += 4;
11708 		memcpy(ptr, &level, 4); ptr += 4;
11709 		memcpy(ptr, &pname, 4); ptr += 4;
11710 	memcpy(ptr, &__size_params, 4); ptr += 4;
11711 
11712 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11713 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11714 
11715 	stream->readback(params, __size_params);
11716 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
11717 	if (useChecksum) {
11718 		unsigned char *checksumBufPtr = NULL;
11719 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11720 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11721 		stream->readback(checksumBufPtr, checksumSize);
11722 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11723 			ALOGE("glGetTexLevelParameteriv: GL communication error, please report this issue to b.android.com.\n");
11724 			abort();
11725 		}
11726 	}
11727 }
11728 
glMapBufferRangeDMA_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr)11729 void glMapBufferRangeDMA_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr)
11730 {
11731 	ENCODER_DEBUG_LOG("glMapBufferRangeDMA(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, paddr:0x%016lx)", target, offset, length, access, paddr);
11732 	AEMU_SCOPED_TRACE("glMapBufferRangeDMA encode");
11733 
11734 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11735 	IOStream *stream = ctx->m_stream;
11736 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11737 	bool useChecksum = checksumCalculator->getVersion() > 0;
11738 
11739 	 unsigned char *ptr;
11740 	 unsigned char *buf;
11741 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8;
11742 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11743 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11744 	buf = stream->alloc(totalSize);
11745 	ptr = buf;
11746 	int tmp = OP_glMapBufferRangeDMA;memcpy(ptr, &tmp, 4); ptr += 4;
11747 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11748 
11749 		memcpy(ptr, &target, 4); ptr += 4;
11750 		memcpy(ptr, &offset, 4); ptr += 4;
11751 		memcpy(ptr, &length, 4); ptr += 4;
11752 		memcpy(ptr, &access, 4); ptr += 4;
11753 		memcpy(ptr, &paddr, 8); ptr += 8;
11754 
11755 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11756 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11757 
11758 }
11759 
glUnmapBufferDMA_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr,GLboolean * out_res)11760 void glUnmapBufferDMA_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr, GLboolean* out_res)
11761 {
11762 	ENCODER_DEBUG_LOG("glUnmapBufferDMA(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, paddr:0x%016lx, out_res:0x%08x)", target, offset, length, access, paddr, out_res);
11763 	AEMU_SCOPED_TRACE("glUnmapBufferDMA encode");
11764 
11765 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11766 	IOStream *stream = ctx->m_stream;
11767 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11768 	bool useChecksum = checksumCalculator->getVersion() > 0;
11769 
11770 	const unsigned int __size_out_res =  (sizeof(GLboolean));
11771 	 unsigned char *ptr;
11772 	 unsigned char *buf;
11773 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8 + 0 + 1*4;
11774 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11775 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11776 	buf = stream->alloc(totalSize);
11777 	ptr = buf;
11778 	int tmp = OP_glUnmapBufferDMA;memcpy(ptr, &tmp, 4); ptr += 4;
11779 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11780 
11781 		memcpy(ptr, &target, 4); ptr += 4;
11782 		memcpy(ptr, &offset, 4); ptr += 4;
11783 		memcpy(ptr, &length, 4); ptr += 4;
11784 		memcpy(ptr, &access, 4); ptr += 4;
11785 		memcpy(ptr, &paddr, 8); ptr += 8;
11786 	memcpy(ptr, &__size_out_res, 4); ptr += 4;
11787 
11788 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11789 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11790 
11791 	stream->readback(out_res, __size_out_res);
11792 	if (useChecksum) checksumCalculator->addBuffer(out_res, __size_out_res);
11793 	if (useChecksum) {
11794 		unsigned char *checksumBufPtr = NULL;
11795 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11796 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11797 		stream->readback(checksumBufPtr, checksumSize);
11798 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11799 			ALOGE("glUnmapBufferDMA: GL communication error, please report this issue to b.android.com.\n");
11800 			abort();
11801 		}
11802 	}
11803 }
11804 
glMapBufferRangeDirect_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr)11805 uint64_t glMapBufferRangeDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr)
11806 {
11807 	ENCODER_DEBUG_LOG("glMapBufferRangeDirect(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, paddr:0x%016lx)", target, offset, length, access, paddr);
11808 	AEMU_SCOPED_TRACE("glMapBufferRangeDirect encode");
11809 
11810 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11811 	IOStream *stream = ctx->m_stream;
11812 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11813 	bool useChecksum = checksumCalculator->getVersion() > 0;
11814 
11815 	 unsigned char *ptr;
11816 	 unsigned char *buf;
11817 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8;
11818 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11819 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11820 	buf = stream->alloc(totalSize);
11821 	ptr = buf;
11822 	int tmp = OP_glMapBufferRangeDirect;memcpy(ptr, &tmp, 4); ptr += 4;
11823 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11824 
11825 		memcpy(ptr, &target, 4); ptr += 4;
11826 		memcpy(ptr, &offset, 4); ptr += 4;
11827 		memcpy(ptr, &length, 4); ptr += 4;
11828 		memcpy(ptr, &access, 4); ptr += 4;
11829 		memcpy(ptr, &paddr, 8); ptr += 8;
11830 
11831 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11832 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11833 
11834 
11835 	uint64_t retval;
11836 	stream->readback(&retval, 8);
11837 	if (useChecksum) checksumCalculator->addBuffer(&retval, 8);
11838 	if (useChecksum) {
11839 		unsigned char *checksumBufPtr = NULL;
11840 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11841 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11842 		stream->readback(checksumBufPtr, checksumSize);
11843 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11844 			ALOGE("glMapBufferRangeDirect: GL communication error, please report this issue to b.android.com.\n");
11845 			abort();
11846 		}
11847 	}
11848 	return retval;
11849 }
11850 
glUnmapBufferDirect_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr,uint64_t guest_ptr,GLboolean * out_res)11851 void glUnmapBufferDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr, uint64_t guest_ptr, GLboolean* out_res)
11852 {
11853 	ENCODER_DEBUG_LOG("glUnmapBufferDirect(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, paddr:0x%016lx, guest_ptr:0x%016lx, out_res:0x%08x)", target, offset, length, access, paddr, guest_ptr, out_res);
11854 	AEMU_SCOPED_TRACE("glUnmapBufferDirect encode");
11855 
11856 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11857 	IOStream *stream = ctx->m_stream;
11858 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11859 	bool useChecksum = checksumCalculator->getVersion() > 0;
11860 
11861 	const unsigned int __size_out_res =  (sizeof(GLboolean));
11862 	 unsigned char *ptr;
11863 	 unsigned char *buf;
11864 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8 + 8 + 0 + 1*4;
11865 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11866 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11867 	buf = stream->alloc(totalSize);
11868 	ptr = buf;
11869 	int tmp = OP_glUnmapBufferDirect;memcpy(ptr, &tmp, 4); ptr += 4;
11870 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11871 
11872 		memcpy(ptr, &target, 4); ptr += 4;
11873 		memcpy(ptr, &offset, 4); ptr += 4;
11874 		memcpy(ptr, &length, 4); ptr += 4;
11875 		memcpy(ptr, &access, 4); ptr += 4;
11876 		memcpy(ptr, &paddr, 8); ptr += 8;
11877 		memcpy(ptr, &guest_ptr, 8); ptr += 8;
11878 	memcpy(ptr, &__size_out_res, 4); ptr += 4;
11879 
11880 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11881 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11882 
11883 	stream->readback(out_res, __size_out_res);
11884 	if (useChecksum) checksumCalculator->addBuffer(out_res, __size_out_res);
11885 	if (useChecksum) {
11886 		unsigned char *checksumBufPtr = NULL;
11887 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11888 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11889 		stream->readback(checksumBufPtr, checksumSize);
11890 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11891 			ALOGE("glUnmapBufferDirect: GL communication error, please report this issue to b.android.com.\n");
11892 			abort();
11893 		}
11894 	}
11895 }
11896 
glFlushMappedBufferRangeDirect_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access)11897 void glFlushMappedBufferRangeDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
11898 {
11899 	ENCODER_DEBUG_LOG("glFlushMappedBufferRangeDirect(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x)", target, offset, length, access);
11900 	AEMU_SCOPED_TRACE("glFlushMappedBufferRangeDirect encode");
11901 
11902 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11903 	IOStream *stream = ctx->m_stream;
11904 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11905 	bool useChecksum = checksumCalculator->getVersion() > 0;
11906 
11907 	 unsigned char *ptr;
11908 	 unsigned char *buf;
11909 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
11910 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11911 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11912 	buf = stream->alloc(totalSize);
11913 	ptr = buf;
11914 	int tmp = OP_glFlushMappedBufferRangeDirect;memcpy(ptr, &tmp, 4); ptr += 4;
11915 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11916 
11917 		memcpy(ptr, &target, 4); ptr += 4;
11918 		memcpy(ptr, &offset, 4); ptr += 4;
11919 		memcpy(ptr, &length, 4); ptr += 4;
11920 		memcpy(ptr, &access, 4); ptr += 4;
11921 
11922 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11923 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11924 
11925 }
11926 
glGetGraphicsResetStatusEXT_enc(void * self)11927 GLenum glGetGraphicsResetStatusEXT_enc(void *self )
11928 {
11929 	ENCODER_DEBUG_LOG("glGetGraphicsResetStatusEXT()");
11930 	AEMU_SCOPED_TRACE("glGetGraphicsResetStatusEXT encode");
11931 
11932 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11933 	IOStream *stream = ctx->m_stream;
11934 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11935 	bool useChecksum = checksumCalculator->getVersion() > 0;
11936 
11937 	 unsigned char *ptr;
11938 	 unsigned char *buf;
11939 	 const size_t sizeWithoutChecksum = 8;
11940 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11941 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11942 	buf = stream->alloc(totalSize);
11943 	ptr = buf;
11944 	int tmp = OP_glGetGraphicsResetStatusEXT;memcpy(ptr, &tmp, 4); ptr += 4;
11945 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11946 
11947 
11948 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11949 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11950 
11951 
11952 	GLenum retval;
11953 	stream->readback(&retval, 4);
11954 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
11955 	if (useChecksum) {
11956 		unsigned char *checksumBufPtr = NULL;
11957 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11958 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11959 		stream->readback(checksumBufPtr, checksumSize);
11960 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11961 			ALOGE("glGetGraphicsResetStatusEXT: GL communication error, please report this issue to b.android.com.\n");
11962 			abort();
11963 		}
11964 	}
11965 	return retval;
11966 }
11967 
glReadnPixelsEXT_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,GLvoid * data)11968 void glReadnPixelsEXT_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid* data)
11969 {
11970 	ENCODER_DEBUG_LOG("glReadnPixelsEXT(x:%d, y:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, bufSize:%d, data:0x%08x)", x, y, width, height, format, type, bufSize, data);
11971 	AEMU_SCOPED_TRACE("glReadnPixelsEXT encode");
11972 
11973 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11974 	IOStream *stream = ctx->m_stream;
11975 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11976 	bool useChecksum = checksumCalculator->getVersion() > 0;
11977 
11978 	const unsigned int __size_data =  bufSize;
11979 	 unsigned char *ptr;
11980 	 unsigned char *buf;
11981 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 0 + 1*4;
11982 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11983 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11984 	buf = stream->alloc(totalSize);
11985 	ptr = buf;
11986 	int tmp = OP_glReadnPixelsEXT;memcpy(ptr, &tmp, 4); ptr += 4;
11987 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11988 
11989 		memcpy(ptr, &x, 4); ptr += 4;
11990 		memcpy(ptr, &y, 4); ptr += 4;
11991 		memcpy(ptr, &width, 4); ptr += 4;
11992 		memcpy(ptr, &height, 4); ptr += 4;
11993 		memcpy(ptr, &format, 4); ptr += 4;
11994 		memcpy(ptr, &type, 4); ptr += 4;
11995 		memcpy(ptr, &bufSize, 4); ptr += 4;
11996 	memcpy(ptr, &__size_data, 4); ptr += 4;
11997 
11998 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11999 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12000 
12001 	stream->readback(data, __size_data);
12002 	if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
12003 	if (useChecksum) {
12004 		unsigned char *checksumBufPtr = NULL;
12005 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
12006 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12007 		stream->readback(checksumBufPtr, checksumSize);
12008 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12009 			ALOGE("glReadnPixelsEXT: GL communication error, please report this issue to b.android.com.\n");
12010 			abort();
12011 		}
12012 	}
12013 }
12014 
glGetnUniformfvEXT_enc(void * self,GLuint program,GLint location,GLsizei bufSize,GLfloat * params)12015 void glGetnUniformfvEXT_enc(void *self , GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
12016 {
12017 	ENCODER_DEBUG_LOG("glGetnUniformfvEXT(program:%u, location:%d, bufSize:%d, params:0x%08x)", program, location, bufSize, params);
12018 	AEMU_SCOPED_TRACE("glGetnUniformfvEXT encode");
12019 
12020 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12021 	IOStream *stream = ctx->m_stream;
12022 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12023 	bool useChecksum = checksumCalculator->getVersion() > 0;
12024 
12025 	const unsigned int __size_params =  bufSize;
12026 	 unsigned char *ptr;
12027 	 unsigned char *buf;
12028 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
12029 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12030 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12031 	buf = stream->alloc(totalSize);
12032 	ptr = buf;
12033 	int tmp = OP_glGetnUniformfvEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12034 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12035 
12036 		memcpy(ptr, &program, 4); ptr += 4;
12037 		memcpy(ptr, &location, 4); ptr += 4;
12038 		memcpy(ptr, &bufSize, 4); ptr += 4;
12039 	memcpy(ptr, &__size_params, 4); ptr += 4;
12040 
12041 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12042 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12043 
12044 	stream->readback(params, __size_params);
12045 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
12046 	if (useChecksum) {
12047 		unsigned char *checksumBufPtr = NULL;
12048 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
12049 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12050 		stream->readback(checksumBufPtr, checksumSize);
12051 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12052 			ALOGE("glGetnUniformfvEXT: GL communication error, please report this issue to b.android.com.\n");
12053 			abort();
12054 		}
12055 	}
12056 }
12057 
glGetnUniformivEXT_enc(void * self,GLuint program,GLint location,GLsizei bufSize,GLint * params)12058 void glGetnUniformivEXT_enc(void *self , GLuint program, GLint location, GLsizei bufSize, GLint* params)
12059 {
12060 	ENCODER_DEBUG_LOG("glGetnUniformivEXT(program:%u, location:%d, bufSize:%d, params:0x%08x)", program, location, bufSize, params);
12061 	AEMU_SCOPED_TRACE("glGetnUniformivEXT encode");
12062 
12063 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12064 	IOStream *stream = ctx->m_stream;
12065 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12066 	bool useChecksum = checksumCalculator->getVersion() > 0;
12067 
12068 	const unsigned int __size_params =  bufSize;
12069 	 unsigned char *ptr;
12070 	 unsigned char *buf;
12071 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
12072 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12073 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12074 	buf = stream->alloc(totalSize);
12075 	ptr = buf;
12076 	int tmp = OP_glGetnUniformivEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12077 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12078 
12079 		memcpy(ptr, &program, 4); ptr += 4;
12080 		memcpy(ptr, &location, 4); ptr += 4;
12081 		memcpy(ptr, &bufSize, 4); ptr += 4;
12082 	memcpy(ptr, &__size_params, 4); ptr += 4;
12083 
12084 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12085 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12086 
12087 	stream->readback(params, __size_params);
12088 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
12089 	if (useChecksum) {
12090 		unsigned char *checksumBufPtr = NULL;
12091 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
12092 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12093 		stream->readback(checksumBufPtr, checksumSize);
12094 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12095 			ALOGE("glGetnUniformivEXT: GL communication error, please report this issue to b.android.com.\n");
12096 			abort();
12097 		}
12098 	}
12099 }
12100 
glDrawArraysNullAEMU_enc(void * self,GLenum mode,GLint first,GLsizei count)12101 void glDrawArraysNullAEMU_enc(void *self , GLenum mode, GLint first, GLsizei count)
12102 {
12103 	ENCODER_DEBUG_LOG("glDrawArraysNullAEMU(mode:0x%08x, first:%d, count:%d)", mode, first, count);
12104 	AEMU_SCOPED_TRACE("glDrawArraysNullAEMU encode");
12105 
12106 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12107 	IOStream *stream = ctx->m_stream;
12108 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12109 	bool useChecksum = checksumCalculator->getVersion() > 0;
12110 
12111 	 unsigned char *ptr;
12112 	 unsigned char *buf;
12113 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
12114 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12115 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12116 	buf = stream->alloc(totalSize);
12117 	ptr = buf;
12118 	int tmp = OP_glDrawArraysNullAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12119 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12120 
12121 		memcpy(ptr, &mode, 4); ptr += 4;
12122 		memcpy(ptr, &first, 4); ptr += 4;
12123 		memcpy(ptr, &count, 4); ptr += 4;
12124 
12125 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12126 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12127 
12128 }
12129 
glDrawElementsOffsetNullAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,GLuint offset)12130 void glDrawElementsOffsetNullAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset)
12131 {
12132 	ENCODER_DEBUG_LOG("glDrawElementsOffsetNullAEMU(mode:0x%08x, count:%d, type:0x%08x, offset:%u)", mode, count, type, offset);
12133 	AEMU_SCOPED_TRACE("glDrawElementsOffsetNullAEMU encode");
12134 
12135 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12136 	IOStream *stream = ctx->m_stream;
12137 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12138 	bool useChecksum = checksumCalculator->getVersion() > 0;
12139 
12140 	 unsigned char *ptr;
12141 	 unsigned char *buf;
12142 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
12143 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12144 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12145 	buf = stream->alloc(totalSize);
12146 	ptr = buf;
12147 	int tmp = OP_glDrawElementsOffsetNullAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12148 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12149 
12150 		memcpy(ptr, &mode, 4); ptr += 4;
12151 		memcpy(ptr, &count, 4); ptr += 4;
12152 		memcpy(ptr, &type, 4); ptr += 4;
12153 		memcpy(ptr, &offset, 4); ptr += 4;
12154 
12155 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12156 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12157 
12158 }
12159 
glDrawElementsDataNullAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,void * data,GLuint datalen)12160 void glDrawElementsDataNullAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
12161 {
12162 	ENCODER_DEBUG_LOG("glDrawElementsDataNullAEMU(mode:0x%08x, count:%d, type:0x%08x, data:0x%08x, datalen:%u)", mode, count, type, data, datalen);
12163 	AEMU_SCOPED_TRACE("glDrawElementsDataNullAEMU encode");
12164 
12165 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12166 	IOStream *stream = ctx->m_stream;
12167 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12168 	bool useChecksum = checksumCalculator->getVersion() > 0;
12169 
12170 	const unsigned int __size_data =  datalen;
12171 	 unsigned char *ptr;
12172 	 unsigned char *buf;
12173 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
12174 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12175 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12176 	buf = stream->alloc(totalSize);
12177 	ptr = buf;
12178 	int tmp = OP_glDrawElementsDataNullAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12179 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12180 
12181 		memcpy(ptr, &mode, 4); ptr += 4;
12182 		memcpy(ptr, &count, 4); ptr += 4;
12183 		memcpy(ptr, &type, 4); ptr += 4;
12184 	memcpy(ptr, &__size_data, 4); ptr += 4;
12185 	memcpy(ptr, data, __size_data);ptr += __size_data;
12186 		memcpy(ptr, &datalen, 4); ptr += 4;
12187 
12188 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12189 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12190 
12191 }
12192 
glUnmapBufferAsyncAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer,GLboolean * out_res)12193 void glUnmapBufferAsyncAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer, GLboolean* out_res)
12194 {
12195 	ENCODER_DEBUG_LOG("glUnmapBufferAsyncAEMU(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, guest_buffer:0x%08x, out_res:0x%08x)", target, offset, length, access, guest_buffer, out_res);
12196 	AEMU_SCOPED_TRACE("glUnmapBufferAsyncAEMU encode");
12197 
12198 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12199 	IOStream *stream = ctx->m_stream;
12200 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12201 	bool useChecksum = checksumCalculator->getVersion() > 0;
12202 
12203 	const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ?  length : 0);
12204 	const unsigned int __size_out_res =  (sizeof(GLboolean));
12205 	 unsigned char *ptr;
12206 	 unsigned char *buf;
12207 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + __size_out_res + 2*4;
12208 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12209 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12210 	buf = stream->alloc(8 + 4 + 4 + 4 + 4);
12211 	ptr = buf;
12212 	int tmp = OP_glUnmapBufferAsyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12213 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12214 
12215 		memcpy(ptr, &target, 4); ptr += 4;
12216 		memcpy(ptr, &offset, 4); ptr += 4;
12217 		memcpy(ptr, &length, 4); ptr += 4;
12218 		memcpy(ptr, &access, 4); ptr += 4;
12219 
12220 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12221 	stream->flush();
12222 	stream->writeFully(&__size_guest_buffer,4);
12223 	if (useChecksum) checksumCalculator->addBuffer(&__size_guest_buffer,4);
12224 	if (guest_buffer != NULL) {
12225 		stream->writeFully(guest_buffer, __size_guest_buffer);
12226 		if (useChecksum) checksumCalculator->addBuffer(guest_buffer, __size_guest_buffer);
12227 	}
12228 	buf = stream->alloc(__size_out_res + 1*4);
12229 	ptr = buf;
12230 	memcpy(ptr, &__size_out_res, 4); ptr += 4;
12231 	memcpy(ptr, out_res, __size_out_res);ptr += __size_out_res;
12232 
12233 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12234 	buf = stream->alloc(checksumSize);
12235 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
12236 
12237 }
12238 
glFlushMappedBufferRangeAEMU2_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer)12239 void glFlushMappedBufferRangeAEMU2_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer)
12240 {
12241 	ENCODER_DEBUG_LOG("glFlushMappedBufferRangeAEMU2(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, guest_buffer:0x%08x)", target, offset, length, access, guest_buffer);
12242 	AEMU_SCOPED_TRACE("glFlushMappedBufferRangeAEMU2 encode");
12243 
12244 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12245 	IOStream *stream = ctx->m_stream;
12246 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12247 	bool useChecksum = checksumCalculator->getVersion() > 0;
12248 
12249 	const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ?  length : 0);
12250 	 unsigned char *ptr;
12251 	 unsigned char *buf;
12252 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + 1*4;
12253 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12254 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12255 	buf = stream->alloc(8 + 4 + 4 + 4 + 4);
12256 	ptr = buf;
12257 	int tmp = OP_glFlushMappedBufferRangeAEMU2;memcpy(ptr, &tmp, 4); ptr += 4;
12258 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12259 
12260 		memcpy(ptr, &target, 4); ptr += 4;
12261 		memcpy(ptr, &offset, 4); ptr += 4;
12262 		memcpy(ptr, &length, 4); ptr += 4;
12263 		memcpy(ptr, &access, 4); ptr += 4;
12264 
12265 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12266 	stream->flush();
12267 	stream->writeFully(&__size_guest_buffer,4);
12268 	if (useChecksum) checksumCalculator->addBuffer(&__size_guest_buffer,4);
12269 	if (guest_buffer != NULL) {
12270 		stream->writeFully(guest_buffer, __size_guest_buffer);
12271 		if (useChecksum) checksumCalculator->addBuffer(guest_buffer, __size_guest_buffer);
12272 	}
12273 	buf = stream->alloc(checksumSize);
12274 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
12275 
12276 }
12277 
glBufferDataSyncAEMU_enc(void * self,GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)12278 GLboolean glBufferDataSyncAEMU_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
12279 {
12280 	ENCODER_DEBUG_LOG("glBufferDataSyncAEMU(target:0x%08x, size:0x%08lx, data:0x%08x, usage:0x%08x)", target, size, data, usage);
12281 	AEMU_SCOPED_TRACE("glBufferDataSyncAEMU encode");
12282 
12283 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12284 	IOStream *stream = ctx->m_stream;
12285 	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12286 	bool useChecksum = checksumCalculator->getVersion() > 0;
12287 
12288 	const unsigned int __size_data = ((data != NULL) ?  size : 0);
12289 	 unsigned char *ptr;
12290 	 unsigned char *buf;
12291 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
12292 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12293 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12294 	buf = stream->alloc(totalSize);
12295 	ptr = buf;
12296 	int tmp = OP_glBufferDataSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12297 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12298 
12299 		memcpy(ptr, &target, 4); ptr += 4;
12300 		memcpy(ptr, &size, 4); ptr += 4;
12301 	memcpy(ptr, &__size_data, 4); ptr += 4;
12302 	if (data != NULL) memcpy(ptr, data, __size_data);ptr += __size_data;
12303 		memcpy(ptr, &usage, 4); ptr += 4;
12304 
12305 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12306 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12307 
12308 
12309 	GLboolean retval;
12310 	stream->readback(&retval, 1);
12311 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
12312 	if (useChecksum) {
12313 		unsigned char *checksumBufPtr = NULL;
12314 		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
12315 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12316 		stream->readback(checksumBufPtr, checksumSize);
12317 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12318 			ALOGE("glBufferDataSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
12319 			abort();
12320 		}
12321 	}
12322 	return retval;
12323 }
12324 
12325 }  // namespace
12326 
gl2_encoder_context_t(IOStream * stream,ChecksumCalculator * checksumCalculator)12327 gl2_encoder_context_t::gl2_encoder_context_t(IOStream *stream, ChecksumCalculator *checksumCalculator)
12328 {
12329 	m_stream = stream;
12330 	m_checksumCalculator = checksumCalculator;
12331 
12332 	this->glActiveTexture = &glActiveTexture_enc;
12333 	this->glAttachShader = &glAttachShader_enc;
12334 	this->glBindAttribLocation = &glBindAttribLocation_enc;
12335 	this->glBindBuffer = &glBindBuffer_enc;
12336 	this->glBindFramebuffer = &glBindFramebuffer_enc;
12337 	this->glBindRenderbuffer = &glBindRenderbuffer_enc;
12338 	this->glBindTexture = &glBindTexture_enc;
12339 	this->glBlendColor = &glBlendColor_enc;
12340 	this->glBlendEquation = &glBlendEquation_enc;
12341 	this->glBlendEquationSeparate = &glBlendEquationSeparate_enc;
12342 	this->glBlendFunc = &glBlendFunc_enc;
12343 	this->glBlendFuncSeparate = &glBlendFuncSeparate_enc;
12344 	this->glBufferData = &glBufferData_enc;
12345 	this->glBufferSubData = &glBufferSubData_enc;
12346 	this->glCheckFramebufferStatus = &glCheckFramebufferStatus_enc;
12347 	this->glClear = &glClear_enc;
12348 	this->glClearColor = &glClearColor_enc;
12349 	this->glClearDepthf = &glClearDepthf_enc;
12350 	this->glClearStencil = &glClearStencil_enc;
12351 	this->glColorMask = &glColorMask_enc;
12352 	this->glCompileShader = &glCompileShader_enc;
12353 	this->glCompressedTexImage2D = &glCompressedTexImage2D_enc;
12354 	this->glCompressedTexSubImage2D = &glCompressedTexSubImage2D_enc;
12355 	this->glCopyTexImage2D = &glCopyTexImage2D_enc;
12356 	this->glCopyTexSubImage2D = &glCopyTexSubImage2D_enc;
12357 	this->glCreateProgram = &glCreateProgram_enc;
12358 	this->glCreateShader = &glCreateShader_enc;
12359 	this->glCullFace = &glCullFace_enc;
12360 	this->glDeleteBuffers = &glDeleteBuffers_enc;
12361 	this->glDeleteFramebuffers = &glDeleteFramebuffers_enc;
12362 	this->glDeleteProgram = &glDeleteProgram_enc;
12363 	this->glDeleteRenderbuffers = &glDeleteRenderbuffers_enc;
12364 	this->glDeleteShader = &glDeleteShader_enc;
12365 	this->glDeleteTextures = &glDeleteTextures_enc;
12366 	this->glDepthFunc = &glDepthFunc_enc;
12367 	this->glDepthMask = &glDepthMask_enc;
12368 	this->glDepthRangef = &glDepthRangef_enc;
12369 	this->glDetachShader = &glDetachShader_enc;
12370 	this->glDisable = &glDisable_enc;
12371 	this->glDisableVertexAttribArray = &glDisableVertexAttribArray_enc;
12372 	this->glDrawArrays = &glDrawArrays_enc;
12373 	this->glDrawElements = (glDrawElements_client_proc_t) &enc_unsupported;
12374 	this->glEnable = &glEnable_enc;
12375 	this->glEnableVertexAttribArray = &glEnableVertexAttribArray_enc;
12376 	this->glFinish = &glFinish_enc;
12377 	this->glFlush = &glFlush_enc;
12378 	this->glFramebufferRenderbuffer = &glFramebufferRenderbuffer_enc;
12379 	this->glFramebufferTexture2D = &glFramebufferTexture2D_enc;
12380 	this->glFrontFace = &glFrontFace_enc;
12381 	this->glGenBuffers = &glGenBuffers_enc;
12382 	this->glGenerateMipmap = &glGenerateMipmap_enc;
12383 	this->glGenFramebuffers = &glGenFramebuffers_enc;
12384 	this->glGenRenderbuffers = &glGenRenderbuffers_enc;
12385 	this->glGenTextures = &glGenTextures_enc;
12386 	this->glGetActiveAttrib = &glGetActiveAttrib_enc;
12387 	this->glGetActiveUniform = &glGetActiveUniform_enc;
12388 	this->glGetAttachedShaders = &glGetAttachedShaders_enc;
12389 	this->glGetAttribLocation = &glGetAttribLocation_enc;
12390 	this->glGetBooleanv = &glGetBooleanv_enc;
12391 	this->glGetBufferParameteriv = &glGetBufferParameteriv_enc;
12392 	this->glGetError = &glGetError_enc;
12393 	this->glGetFloatv = &glGetFloatv_enc;
12394 	this->glGetFramebufferAttachmentParameteriv = &glGetFramebufferAttachmentParameteriv_enc;
12395 	this->glGetIntegerv = &glGetIntegerv_enc;
12396 	this->glGetProgramiv = &glGetProgramiv_enc;
12397 	this->glGetProgramInfoLog = &glGetProgramInfoLog_enc;
12398 	this->glGetRenderbufferParameteriv = &glGetRenderbufferParameteriv_enc;
12399 	this->glGetShaderiv = &glGetShaderiv_enc;
12400 	this->glGetShaderInfoLog = &glGetShaderInfoLog_enc;
12401 	this->glGetShaderPrecisionFormat = &glGetShaderPrecisionFormat_enc;
12402 	this->glGetShaderSource = &glGetShaderSource_enc;
12403 	this->glGetString = (glGetString_client_proc_t) &enc_unsupported;
12404 	this->glGetTexParameterfv = &glGetTexParameterfv_enc;
12405 	this->glGetTexParameteriv = &glGetTexParameteriv_enc;
12406 	this->glGetUniformfv = &glGetUniformfv_enc;
12407 	this->glGetUniformiv = &glGetUniformiv_enc;
12408 	this->glGetUniformLocation = &glGetUniformLocation_enc;
12409 	this->glGetVertexAttribfv = &glGetVertexAttribfv_enc;
12410 	this->glGetVertexAttribiv = &glGetVertexAttribiv_enc;
12411 	this->glGetVertexAttribPointerv = (glGetVertexAttribPointerv_client_proc_t) &enc_unsupported;
12412 	this->glHint = &glHint_enc;
12413 	this->glIsBuffer = &glIsBuffer_enc;
12414 	this->glIsEnabled = &glIsEnabled_enc;
12415 	this->glIsFramebuffer = &glIsFramebuffer_enc;
12416 	this->glIsProgram = &glIsProgram_enc;
12417 	this->glIsRenderbuffer = &glIsRenderbuffer_enc;
12418 	this->glIsShader = &glIsShader_enc;
12419 	this->glIsTexture = &glIsTexture_enc;
12420 	this->glLineWidth = &glLineWidth_enc;
12421 	this->glLinkProgram = &glLinkProgram_enc;
12422 	this->glPixelStorei = &glPixelStorei_enc;
12423 	this->glPolygonOffset = &glPolygonOffset_enc;
12424 	this->glReadPixels = &glReadPixels_enc;
12425 	this->glReleaseShaderCompiler = &glReleaseShaderCompiler_enc;
12426 	this->glRenderbufferStorage = &glRenderbufferStorage_enc;
12427 	this->glSampleCoverage = &glSampleCoverage_enc;
12428 	this->glScissor = &glScissor_enc;
12429 	this->glShaderBinary = (glShaderBinary_client_proc_t) &enc_unsupported;
12430 	this->glShaderSource = (glShaderSource_client_proc_t) &enc_unsupported;
12431 	this->glStencilFunc = &glStencilFunc_enc;
12432 	this->glStencilFuncSeparate = &glStencilFuncSeparate_enc;
12433 	this->glStencilMask = &glStencilMask_enc;
12434 	this->glStencilMaskSeparate = &glStencilMaskSeparate_enc;
12435 	this->glStencilOp = &glStencilOp_enc;
12436 	this->glStencilOpSeparate = &glStencilOpSeparate_enc;
12437 	this->glTexImage2D = &glTexImage2D_enc;
12438 	this->glTexParameterf = &glTexParameterf_enc;
12439 	this->glTexParameterfv = &glTexParameterfv_enc;
12440 	this->glTexParameteri = &glTexParameteri_enc;
12441 	this->glTexParameteriv = &glTexParameteriv_enc;
12442 	this->glTexSubImage2D = &glTexSubImage2D_enc;
12443 	this->glUniform1f = &glUniform1f_enc;
12444 	this->glUniform1fv = &glUniform1fv_enc;
12445 	this->glUniform1i = &glUniform1i_enc;
12446 	this->glUniform1iv = &glUniform1iv_enc;
12447 	this->glUniform2f = &glUniform2f_enc;
12448 	this->glUniform2fv = &glUniform2fv_enc;
12449 	this->glUniform2i = &glUniform2i_enc;
12450 	this->glUniform2iv = &glUniform2iv_enc;
12451 	this->glUniform3f = &glUniform3f_enc;
12452 	this->glUniform3fv = &glUniform3fv_enc;
12453 	this->glUniform3i = &glUniform3i_enc;
12454 	this->glUniform3iv = &glUniform3iv_enc;
12455 	this->glUniform4f = &glUniform4f_enc;
12456 	this->glUniform4fv = &glUniform4fv_enc;
12457 	this->glUniform4i = &glUniform4i_enc;
12458 	this->glUniform4iv = &glUniform4iv_enc;
12459 	this->glUniformMatrix2fv = &glUniformMatrix2fv_enc;
12460 	this->glUniformMatrix3fv = &glUniformMatrix3fv_enc;
12461 	this->glUniformMatrix4fv = &glUniformMatrix4fv_enc;
12462 	this->glUseProgram = &glUseProgram_enc;
12463 	this->glValidateProgram = &glValidateProgram_enc;
12464 	this->glVertexAttrib1f = &glVertexAttrib1f_enc;
12465 	this->glVertexAttrib1fv = &glVertexAttrib1fv_enc;
12466 	this->glVertexAttrib2f = &glVertexAttrib2f_enc;
12467 	this->glVertexAttrib2fv = &glVertexAttrib2fv_enc;
12468 	this->glVertexAttrib3f = &glVertexAttrib3f_enc;
12469 	this->glVertexAttrib3fv = &glVertexAttrib3fv_enc;
12470 	this->glVertexAttrib4f = &glVertexAttrib4f_enc;
12471 	this->glVertexAttrib4fv = &glVertexAttrib4fv_enc;
12472 	this->glVertexAttribPointer = (glVertexAttribPointer_client_proc_t) &enc_unsupported;
12473 	this->glViewport = &glViewport_enc;
12474 	this->glEGLImageTargetTexture2DOES = &glEGLImageTargetTexture2DOES_enc;
12475 	this->glEGLImageTargetRenderbufferStorageOES = &glEGLImageTargetRenderbufferStorageOES_enc;
12476 	this->glGetProgramBinaryOES = (glGetProgramBinaryOES_client_proc_t) &enc_unsupported;
12477 	this->glProgramBinaryOES = (glProgramBinaryOES_client_proc_t) &enc_unsupported;
12478 	this->glMapBufferOES = (glMapBufferOES_client_proc_t) &enc_unsupported;
12479 	this->glUnmapBufferOES = &glUnmapBufferOES_enc;
12480 	this->glTexImage3DOES = &glTexImage3DOES_enc;
12481 	this->glTexSubImage3DOES = &glTexSubImage3DOES_enc;
12482 	this->glCopyTexSubImage3DOES = &glCopyTexSubImage3DOES_enc;
12483 	this->glCompressedTexImage3DOES = &glCompressedTexImage3DOES_enc;
12484 	this->glCompressedTexSubImage3DOES = &glCompressedTexSubImage3DOES_enc;
12485 	this->glFramebufferTexture3DOES = &glFramebufferTexture3DOES_enc;
12486 	this->glBindVertexArrayOES = &glBindVertexArrayOES_enc;
12487 	this->glDeleteVertexArraysOES = &glDeleteVertexArraysOES_enc;
12488 	this->glGenVertexArraysOES = &glGenVertexArraysOES_enc;
12489 	this->glIsVertexArrayOES = &glIsVertexArrayOES_enc;
12490 	this->glDiscardFramebufferEXT = &glDiscardFramebufferEXT_enc;
12491 	this->glMultiDrawArraysEXT = (glMultiDrawArraysEXT_client_proc_t) &enc_unsupported;
12492 	this->glMultiDrawElementsEXT = (glMultiDrawElementsEXT_client_proc_t) &enc_unsupported;
12493 	this->glGetPerfMonitorGroupsAMD = (glGetPerfMonitorGroupsAMD_client_proc_t) &enc_unsupported;
12494 	this->glGetPerfMonitorCountersAMD = (glGetPerfMonitorCountersAMD_client_proc_t) &enc_unsupported;
12495 	this->glGetPerfMonitorGroupStringAMD = (glGetPerfMonitorGroupStringAMD_client_proc_t) &enc_unsupported;
12496 	this->glGetPerfMonitorCounterStringAMD = (glGetPerfMonitorCounterStringAMD_client_proc_t) &enc_unsupported;
12497 	this->glGetPerfMonitorCounterInfoAMD = (glGetPerfMonitorCounterInfoAMD_client_proc_t) &enc_unsupported;
12498 	this->glGenPerfMonitorsAMD = (glGenPerfMonitorsAMD_client_proc_t) &enc_unsupported;
12499 	this->glDeletePerfMonitorsAMD = (glDeletePerfMonitorsAMD_client_proc_t) &enc_unsupported;
12500 	this->glSelectPerfMonitorCountersAMD = (glSelectPerfMonitorCountersAMD_client_proc_t) &enc_unsupported;
12501 	this->glBeginPerfMonitorAMD = (glBeginPerfMonitorAMD_client_proc_t) &enc_unsupported;
12502 	this->glEndPerfMonitorAMD = (glEndPerfMonitorAMD_client_proc_t) &enc_unsupported;
12503 	this->glGetPerfMonitorCounterDataAMD = (glGetPerfMonitorCounterDataAMD_client_proc_t) &enc_unsupported;
12504 	this->glRenderbufferStorageMultisampleIMG = (glRenderbufferStorageMultisampleIMG_client_proc_t) &enc_unsupported;
12505 	this->glFramebufferTexture2DMultisampleIMG = (glFramebufferTexture2DMultisampleIMG_client_proc_t) &enc_unsupported;
12506 	this->glDeleteFencesNV = (glDeleteFencesNV_client_proc_t) &enc_unsupported;
12507 	this->glGenFencesNV = (glGenFencesNV_client_proc_t) &enc_unsupported;
12508 	this->glIsFenceNV = (glIsFenceNV_client_proc_t) &enc_unsupported;
12509 	this->glTestFenceNV = (glTestFenceNV_client_proc_t) &enc_unsupported;
12510 	this->glGetFenceivNV = (glGetFenceivNV_client_proc_t) &enc_unsupported;
12511 	this->glFinishFenceNV = (glFinishFenceNV_client_proc_t) &enc_unsupported;
12512 	this->glSetFenceNV = (glSetFenceNV_client_proc_t) &enc_unsupported;
12513 	this->glCoverageMaskNV = (glCoverageMaskNV_client_proc_t) &enc_unsupported;
12514 	this->glCoverageOperationNV = (glCoverageOperationNV_client_proc_t) &enc_unsupported;
12515 	this->glGetDriverControlsQCOM = (glGetDriverControlsQCOM_client_proc_t) &enc_unsupported;
12516 	this->glGetDriverControlStringQCOM = (glGetDriverControlStringQCOM_client_proc_t) &enc_unsupported;
12517 	this->glEnableDriverControlQCOM = (glEnableDriverControlQCOM_client_proc_t) &enc_unsupported;
12518 	this->glDisableDriverControlQCOM = (glDisableDriverControlQCOM_client_proc_t) &enc_unsupported;
12519 	this->glExtGetTexturesQCOM = (glExtGetTexturesQCOM_client_proc_t) &enc_unsupported;
12520 	this->glExtGetBuffersQCOM = (glExtGetBuffersQCOM_client_proc_t) &enc_unsupported;
12521 	this->glExtGetRenderbuffersQCOM = (glExtGetRenderbuffersQCOM_client_proc_t) &enc_unsupported;
12522 	this->glExtGetFramebuffersQCOM = (glExtGetFramebuffersQCOM_client_proc_t) &enc_unsupported;
12523 	this->glExtGetTexLevelParameterivQCOM = (glExtGetTexLevelParameterivQCOM_client_proc_t) &enc_unsupported;
12524 	this->glExtTexObjectStateOverrideiQCOM = (glExtTexObjectStateOverrideiQCOM_client_proc_t) &enc_unsupported;
12525 	this->glExtGetTexSubImageQCOM = (glExtGetTexSubImageQCOM_client_proc_t) &enc_unsupported;
12526 	this->glExtGetBufferPointervQCOM = (glExtGetBufferPointervQCOM_client_proc_t) &enc_unsupported;
12527 	this->glExtGetShadersQCOM = (glExtGetShadersQCOM_client_proc_t) &enc_unsupported;
12528 	this->glExtGetProgramsQCOM = (glExtGetProgramsQCOM_client_proc_t) &enc_unsupported;
12529 	this->glExtIsProgramBinaryQCOM = (glExtIsProgramBinaryQCOM_client_proc_t) &enc_unsupported;
12530 	this->glExtGetProgramBinarySourceQCOM = (glExtGetProgramBinarySourceQCOM_client_proc_t) &enc_unsupported;
12531 	this->glStartTilingQCOM = (glStartTilingQCOM_client_proc_t) &enc_unsupported;
12532 	this->glEndTilingQCOM = (glEndTilingQCOM_client_proc_t) &enc_unsupported;
12533 	this->glVertexAttribPointerData = &glVertexAttribPointerData_enc;
12534 	this->glVertexAttribPointerOffset = &glVertexAttribPointerOffset_enc;
12535 	this->glDrawElementsOffset = &glDrawElementsOffset_enc;
12536 	this->glDrawElementsData = &glDrawElementsData_enc;
12537 	this->glGetCompressedTextureFormats = &glGetCompressedTextureFormats_enc;
12538 	this->glShaderString = &glShaderString_enc;
12539 	this->glFinishRoundTrip = &glFinishRoundTrip_enc;
12540 	this->glGenVertexArrays = &glGenVertexArrays_enc;
12541 	this->glBindVertexArray = &glBindVertexArray_enc;
12542 	this->glDeleteVertexArrays = &glDeleteVertexArrays_enc;
12543 	this->glIsVertexArray = &glIsVertexArray_enc;
12544 	this->glMapBufferRange = (glMapBufferRange_client_proc_t) &enc_unsupported;
12545 	this->glUnmapBuffer = (glUnmapBuffer_client_proc_t) &enc_unsupported;
12546 	this->glFlushMappedBufferRange = (glFlushMappedBufferRange_client_proc_t) &enc_unsupported;
12547 	this->glMapBufferRangeAEMU = &glMapBufferRangeAEMU_enc;
12548 	this->glUnmapBufferAEMU = &glUnmapBufferAEMU_enc;
12549 	this->glFlushMappedBufferRangeAEMU = &glFlushMappedBufferRangeAEMU_enc;
12550 	this->glReadPixelsOffsetAEMU = &glReadPixelsOffsetAEMU_enc;
12551 	this->glCompressedTexImage2DOffsetAEMU = &glCompressedTexImage2DOffsetAEMU_enc;
12552 	this->glCompressedTexSubImage2DOffsetAEMU = &glCompressedTexSubImage2DOffsetAEMU_enc;
12553 	this->glTexImage2DOffsetAEMU = &glTexImage2DOffsetAEMU_enc;
12554 	this->glTexSubImage2DOffsetAEMU = &glTexSubImage2DOffsetAEMU_enc;
12555 	this->glBindBufferRange = &glBindBufferRange_enc;
12556 	this->glBindBufferBase = &glBindBufferBase_enc;
12557 	this->glCopyBufferSubData = &glCopyBufferSubData_enc;
12558 	this->glClearBufferiv = &glClearBufferiv_enc;
12559 	this->glClearBufferuiv = &glClearBufferuiv_enc;
12560 	this->glClearBufferfv = &glClearBufferfv_enc;
12561 	this->glClearBufferfi = &glClearBufferfi_enc;
12562 	this->glGetBufferParameteri64v = (glGetBufferParameteri64v_client_proc_t) &enc_unsupported;
12563 	this->glGetBufferPointerv = (glGetBufferPointerv_client_proc_t) &enc_unsupported;
12564 	this->glUniformBlockBinding = &glUniformBlockBinding_enc;
12565 	this->glGetUniformBlockIndex = &glGetUniformBlockIndex_enc;
12566 	this->glGetUniformIndices = (glGetUniformIndices_client_proc_t) &enc_unsupported;
12567 	this->glGetUniformIndicesAEMU = &glGetUniformIndicesAEMU_enc;
12568 	this->glGetActiveUniformBlockiv = &glGetActiveUniformBlockiv_enc;
12569 	this->glGetActiveUniformBlockName = &glGetActiveUniformBlockName_enc;
12570 	this->glUniform1ui = &glUniform1ui_enc;
12571 	this->glUniform2ui = &glUniform2ui_enc;
12572 	this->glUniform3ui = &glUniform3ui_enc;
12573 	this->glUniform4ui = &glUniform4ui_enc;
12574 	this->glUniform1uiv = &glUniform1uiv_enc;
12575 	this->glUniform2uiv = &glUniform2uiv_enc;
12576 	this->glUniform3uiv = &glUniform3uiv_enc;
12577 	this->glUniform4uiv = &glUniform4uiv_enc;
12578 	this->glUniformMatrix2x3fv = &glUniformMatrix2x3fv_enc;
12579 	this->glUniformMatrix3x2fv = &glUniformMatrix3x2fv_enc;
12580 	this->glUniformMatrix2x4fv = &glUniformMatrix2x4fv_enc;
12581 	this->glUniformMatrix4x2fv = &glUniformMatrix4x2fv_enc;
12582 	this->glUniformMatrix3x4fv = &glUniformMatrix3x4fv_enc;
12583 	this->glUniformMatrix4x3fv = &glUniformMatrix4x3fv_enc;
12584 	this->glGetUniformuiv = &glGetUniformuiv_enc;
12585 	this->glGetActiveUniformsiv = &glGetActiveUniformsiv_enc;
12586 	this->glVertexAttribI4i = &glVertexAttribI4i_enc;
12587 	this->glVertexAttribI4ui = &glVertexAttribI4ui_enc;
12588 	this->glVertexAttribI4iv = &glVertexAttribI4iv_enc;
12589 	this->glVertexAttribI4uiv = &glVertexAttribI4uiv_enc;
12590 	this->glVertexAttribIPointer = (glVertexAttribIPointer_client_proc_t) &enc_unsupported;
12591 	this->glVertexAttribIPointerOffsetAEMU = &glVertexAttribIPointerOffsetAEMU_enc;
12592 	this->glVertexAttribIPointerDataAEMU = &glVertexAttribIPointerDataAEMU_enc;
12593 	this->glGetVertexAttribIiv = &glGetVertexAttribIiv_enc;
12594 	this->glGetVertexAttribIuiv = &glGetVertexAttribIuiv_enc;
12595 	this->glVertexAttribDivisor = &glVertexAttribDivisor_enc;
12596 	this->glDrawArraysInstanced = &glDrawArraysInstanced_enc;
12597 	this->glDrawElementsInstanced = (glDrawElementsInstanced_client_proc_t) &enc_unsupported;
12598 	this->glDrawElementsInstancedDataAEMU = &glDrawElementsInstancedDataAEMU_enc;
12599 	this->glDrawElementsInstancedOffsetAEMU = &glDrawElementsInstancedOffsetAEMU_enc;
12600 	this->glDrawRangeElements = (glDrawRangeElements_client_proc_t) &enc_unsupported;
12601 	this->glDrawRangeElementsDataAEMU = &glDrawRangeElementsDataAEMU_enc;
12602 	this->glDrawRangeElementsOffsetAEMU = &glDrawRangeElementsOffsetAEMU_enc;
12603 	this->glFenceSync = (glFenceSync_client_proc_t) &enc_unsupported;
12604 	this->glClientWaitSync = (glClientWaitSync_client_proc_t) &enc_unsupported;
12605 	this->glWaitSync = (glWaitSync_client_proc_t) &enc_unsupported;
12606 	this->glDeleteSync = (glDeleteSync_client_proc_t) &enc_unsupported;
12607 	this->glIsSync = (glIsSync_client_proc_t) &enc_unsupported;
12608 	this->glGetSynciv = (glGetSynciv_client_proc_t) &enc_unsupported;
12609 	this->glFenceSyncAEMU = &glFenceSyncAEMU_enc;
12610 	this->glClientWaitSyncAEMU = &glClientWaitSyncAEMU_enc;
12611 	this->glWaitSyncAEMU = &glWaitSyncAEMU_enc;
12612 	this->glDeleteSyncAEMU = &glDeleteSyncAEMU_enc;
12613 	this->glIsSyncAEMU = &glIsSyncAEMU_enc;
12614 	this->glGetSyncivAEMU = &glGetSyncivAEMU_enc;
12615 	this->glDrawBuffers = &glDrawBuffers_enc;
12616 	this->glReadBuffer = &glReadBuffer_enc;
12617 	this->glBlitFramebuffer = &glBlitFramebuffer_enc;
12618 	this->glInvalidateFramebuffer = &glInvalidateFramebuffer_enc;
12619 	this->glInvalidateSubFramebuffer = &glInvalidateSubFramebuffer_enc;
12620 	this->glFramebufferTextureLayer = &glFramebufferTextureLayer_enc;
12621 	this->glRenderbufferStorageMultisample = &glRenderbufferStorageMultisample_enc;
12622 	this->glTexStorage2D = &glTexStorage2D_enc;
12623 	this->glGetInternalformativ = &glGetInternalformativ_enc;
12624 	this->glBeginTransformFeedback = &glBeginTransformFeedback_enc;
12625 	this->glEndTransformFeedback = &glEndTransformFeedback_enc;
12626 	this->glGenTransformFeedbacks = &glGenTransformFeedbacks_enc;
12627 	this->glDeleteTransformFeedbacks = &glDeleteTransformFeedbacks_enc;
12628 	this->glBindTransformFeedback = &glBindTransformFeedback_enc;
12629 	this->glPauseTransformFeedback = &glPauseTransformFeedback_enc;
12630 	this->glResumeTransformFeedback = &glResumeTransformFeedback_enc;
12631 	this->glIsTransformFeedback = &glIsTransformFeedback_enc;
12632 	this->glTransformFeedbackVaryings = (glTransformFeedbackVaryings_client_proc_t) &enc_unsupported;
12633 	this->glTransformFeedbackVaryingsAEMU = &glTransformFeedbackVaryingsAEMU_enc;
12634 	this->glGetTransformFeedbackVarying = &glGetTransformFeedbackVarying_enc;
12635 	this->glGenSamplers = &glGenSamplers_enc;
12636 	this->glDeleteSamplers = &glDeleteSamplers_enc;
12637 	this->glBindSampler = &glBindSampler_enc;
12638 	this->glSamplerParameterf = &glSamplerParameterf_enc;
12639 	this->glSamplerParameteri = &glSamplerParameteri_enc;
12640 	this->glSamplerParameterfv = &glSamplerParameterfv_enc;
12641 	this->glSamplerParameteriv = &glSamplerParameteriv_enc;
12642 	this->glGetSamplerParameterfv = &glGetSamplerParameterfv_enc;
12643 	this->glGetSamplerParameteriv = &glGetSamplerParameteriv_enc;
12644 	this->glIsSampler = &glIsSampler_enc;
12645 	this->glGenQueries = &glGenQueries_enc;
12646 	this->glDeleteQueries = &glDeleteQueries_enc;
12647 	this->glBeginQuery = &glBeginQuery_enc;
12648 	this->glEndQuery = &glEndQuery_enc;
12649 	this->glGetQueryiv = &glGetQueryiv_enc;
12650 	this->glGetQueryObjectuiv = &glGetQueryObjectuiv_enc;
12651 	this->glIsQuery = &glIsQuery_enc;
12652 	this->glProgramParameteri = &glProgramParameteri_enc;
12653 	this->glProgramBinary = &glProgramBinary_enc;
12654 	this->glGetProgramBinary = &glGetProgramBinary_enc;
12655 	this->glGetFragDataLocation = &glGetFragDataLocation_enc;
12656 	this->glGetInteger64v = &glGetInteger64v_enc;
12657 	this->glGetIntegeri_v = &glGetIntegeri_v_enc;
12658 	this->glGetInteger64i_v = &glGetInteger64i_v_enc;
12659 	this->glTexImage3D = &glTexImage3D_enc;
12660 	this->glTexImage3DOffsetAEMU = &glTexImage3DOffsetAEMU_enc;
12661 	this->glTexStorage3D = &glTexStorage3D_enc;
12662 	this->glTexSubImage3D = &glTexSubImage3D_enc;
12663 	this->glTexSubImage3DOffsetAEMU = &glTexSubImage3DOffsetAEMU_enc;
12664 	this->glCompressedTexImage3D = &glCompressedTexImage3D_enc;
12665 	this->glCompressedTexImage3DOffsetAEMU = &glCompressedTexImage3DOffsetAEMU_enc;
12666 	this->glCompressedTexSubImage3D = &glCompressedTexSubImage3D_enc;
12667 	this->glCompressedTexSubImage3DOffsetAEMU = &glCompressedTexSubImage3DOffsetAEMU_enc;
12668 	this->glCopyTexSubImage3D = &glCopyTexSubImage3D_enc;
12669 	this->glGetStringi = (glGetStringi_client_proc_t) &enc_unsupported;
12670 	this->glGetBooleani_v = &glGetBooleani_v_enc;
12671 	this->glMemoryBarrier = &glMemoryBarrier_enc;
12672 	this->glMemoryBarrierByRegion = &glMemoryBarrierByRegion_enc;
12673 	this->glGenProgramPipelines = &glGenProgramPipelines_enc;
12674 	this->glDeleteProgramPipelines = &glDeleteProgramPipelines_enc;
12675 	this->glBindProgramPipeline = &glBindProgramPipeline_enc;
12676 	this->glGetProgramPipelineiv = &glGetProgramPipelineiv_enc;
12677 	this->glGetProgramPipelineInfoLog = &glGetProgramPipelineInfoLog_enc;
12678 	this->glValidateProgramPipeline = &glValidateProgramPipeline_enc;
12679 	this->glIsProgramPipeline = &glIsProgramPipeline_enc;
12680 	this->glUseProgramStages = &glUseProgramStages_enc;
12681 	this->glActiveShaderProgram = &glActiveShaderProgram_enc;
12682 	this->glCreateShaderProgramv = (glCreateShaderProgramv_client_proc_t) &enc_unsupported;
12683 	this->glCreateShaderProgramvAEMU = &glCreateShaderProgramvAEMU_enc;
12684 	this->glProgramUniform1f = &glProgramUniform1f_enc;
12685 	this->glProgramUniform2f = &glProgramUniform2f_enc;
12686 	this->glProgramUniform3f = &glProgramUniform3f_enc;
12687 	this->glProgramUniform4f = &glProgramUniform4f_enc;
12688 	this->glProgramUniform1i = &glProgramUniform1i_enc;
12689 	this->glProgramUniform2i = &glProgramUniform2i_enc;
12690 	this->glProgramUniform3i = &glProgramUniform3i_enc;
12691 	this->glProgramUniform4i = &glProgramUniform4i_enc;
12692 	this->glProgramUniform1ui = &glProgramUniform1ui_enc;
12693 	this->glProgramUniform2ui = &glProgramUniform2ui_enc;
12694 	this->glProgramUniform3ui = &glProgramUniform3ui_enc;
12695 	this->glProgramUniform4ui = &glProgramUniform4ui_enc;
12696 	this->glProgramUniform1fv = &glProgramUniform1fv_enc;
12697 	this->glProgramUniform2fv = &glProgramUniform2fv_enc;
12698 	this->glProgramUniform3fv = &glProgramUniform3fv_enc;
12699 	this->glProgramUniform4fv = &glProgramUniform4fv_enc;
12700 	this->glProgramUniform1iv = &glProgramUniform1iv_enc;
12701 	this->glProgramUniform2iv = &glProgramUniform2iv_enc;
12702 	this->glProgramUniform3iv = &glProgramUniform3iv_enc;
12703 	this->glProgramUniform4iv = &glProgramUniform4iv_enc;
12704 	this->glProgramUniform1uiv = &glProgramUniform1uiv_enc;
12705 	this->glProgramUniform2uiv = &glProgramUniform2uiv_enc;
12706 	this->glProgramUniform3uiv = &glProgramUniform3uiv_enc;
12707 	this->glProgramUniform4uiv = &glProgramUniform4uiv_enc;
12708 	this->glProgramUniformMatrix2fv = &glProgramUniformMatrix2fv_enc;
12709 	this->glProgramUniformMatrix3fv = &glProgramUniformMatrix3fv_enc;
12710 	this->glProgramUniformMatrix4fv = &glProgramUniformMatrix4fv_enc;
12711 	this->glProgramUniformMatrix2x3fv = &glProgramUniformMatrix2x3fv_enc;
12712 	this->glProgramUniformMatrix3x2fv = &glProgramUniformMatrix3x2fv_enc;
12713 	this->glProgramUniformMatrix2x4fv = &glProgramUniformMatrix2x4fv_enc;
12714 	this->glProgramUniformMatrix4x2fv = &glProgramUniformMatrix4x2fv_enc;
12715 	this->glProgramUniformMatrix3x4fv = &glProgramUniformMatrix3x4fv_enc;
12716 	this->glProgramUniformMatrix4x3fv = &glProgramUniformMatrix4x3fv_enc;
12717 	this->glGetProgramInterfaceiv = &glGetProgramInterfaceiv_enc;
12718 	this->glGetProgramResourceiv = &glGetProgramResourceiv_enc;
12719 	this->glGetProgramResourceIndex = &glGetProgramResourceIndex_enc;
12720 	this->glGetProgramResourceLocation = &glGetProgramResourceLocation_enc;
12721 	this->glGetProgramResourceName = &glGetProgramResourceName_enc;
12722 	this->glBindImageTexture = &glBindImageTexture_enc;
12723 	this->glDispatchCompute = &glDispatchCompute_enc;
12724 	this->glDispatchComputeIndirect = &glDispatchComputeIndirect_enc;
12725 	this->glBindVertexBuffer = &glBindVertexBuffer_enc;
12726 	this->glVertexAttribBinding = &glVertexAttribBinding_enc;
12727 	this->glVertexAttribFormat = &glVertexAttribFormat_enc;
12728 	this->glVertexAttribIFormat = &glVertexAttribIFormat_enc;
12729 	this->glVertexBindingDivisor = &glVertexBindingDivisor_enc;
12730 	this->glDrawArraysIndirect = (glDrawArraysIndirect_client_proc_t) &enc_unsupported;
12731 	this->glDrawArraysIndirectDataAEMU = &glDrawArraysIndirectDataAEMU_enc;
12732 	this->glDrawArraysIndirectOffsetAEMU = &glDrawArraysIndirectOffsetAEMU_enc;
12733 	this->glDrawElementsIndirect = (glDrawElementsIndirect_client_proc_t) &enc_unsupported;
12734 	this->glDrawElementsIndirectDataAEMU = &glDrawElementsIndirectDataAEMU_enc;
12735 	this->glDrawElementsIndirectOffsetAEMU = &glDrawElementsIndirectOffsetAEMU_enc;
12736 	this->glTexStorage2DMultisample = &glTexStorage2DMultisample_enc;
12737 	this->glSampleMaski = &glSampleMaski_enc;
12738 	this->glGetMultisamplefv = &glGetMultisamplefv_enc;
12739 	this->glFramebufferParameteri = &glFramebufferParameteri_enc;
12740 	this->glGetFramebufferParameteriv = &glGetFramebufferParameteriv_enc;
12741 	this->glGetTexLevelParameterfv = &glGetTexLevelParameterfv_enc;
12742 	this->glGetTexLevelParameteriv = &glGetTexLevelParameteriv_enc;
12743 	this->glMapBufferRangeDMA = &glMapBufferRangeDMA_enc;
12744 	this->glUnmapBufferDMA = &glUnmapBufferDMA_enc;
12745 	this->glMapBufferRangeDirect = &glMapBufferRangeDirect_enc;
12746 	this->glUnmapBufferDirect = &glUnmapBufferDirect_enc;
12747 	this->glFlushMappedBufferRangeDirect = &glFlushMappedBufferRangeDirect_enc;
12748 	this->glGetGraphicsResetStatusEXT = &glGetGraphicsResetStatusEXT_enc;
12749 	this->glReadnPixelsEXT = &glReadnPixelsEXT_enc;
12750 	this->glGetnUniformfvEXT = &glGetnUniformfvEXT_enc;
12751 	this->glGetnUniformivEXT = &glGetnUniformivEXT_enc;
12752 	this->glDrawArraysNullAEMU = &glDrawArraysNullAEMU_enc;
12753 	this->glDrawElementsNullAEMU = (glDrawElementsNullAEMU_client_proc_t) &enc_unsupported;
12754 	this->glDrawElementsOffsetNullAEMU = &glDrawElementsOffsetNullAEMU_enc;
12755 	this->glDrawElementsDataNullAEMU = &glDrawElementsDataNullAEMU_enc;
12756 	this->glUnmapBufferAsyncAEMU = &glUnmapBufferAsyncAEMU_enc;
12757 	this->glFlushMappedBufferRangeAEMU2 = &glFlushMappedBufferRangeAEMU2_enc;
12758 	this->glBufferDataSyncAEMU = &glBufferDataSyncAEMU_enc;
12759 }
12760 
12761