1 // Generated Code - DO NOT EDIT !!
2 // generated by 'emugen'
3 
4 
5 #include <string.h>
6 #include "gl2_opcodes.h"
7 
8 #include "gl2_enc.h"
9 
10 
11 #include <vector>
12 
13 #include <stdio.h>
14 
15 #include "aemu/base/Tracing.h"
16 
17 #include "EncoderDebug.h"
18 
19 using gfxstream::guest::ChecksumCalculator;
20 
21 using gfxstream::guest::IOStream;
22 
23 namespace {
24 
enc_unsupported()25 void enc_unsupported()
26 {
27 	ALOGE("Function is unsupported\n");
28 }
29 
glActiveTexture_enc(void * self,GLenum texture)30 void glActiveTexture_enc(void *self , GLenum texture)
31 {
32 	ENCODER_DEBUG_LOG("glActiveTexture(texture:0x%08x)", texture);
33 	AEMU_SCOPED_TRACE("glActiveTexture encode");
34 
35 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
36 	IOStream *stream = ctx->m_stream;
37 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
38 	bool useChecksum = checksumCalculator->getVersion() > 0;
39 
40 	 unsigned char *ptr;
41 	 unsigned char *buf;
42 	 const size_t sizeWithoutChecksum = 8 + 4;
43 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
44 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
45 	buf = stream->alloc(totalSize);
46 	ptr = buf;
47 	int tmp = OP_glActiveTexture;memcpy(ptr, &tmp, 4); ptr += 4;
48 	memcpy(ptr, &totalSize, 4);  ptr += 4;
49 
50 		memcpy(ptr, &texture, 4); ptr += 4;
51 
52 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
53 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
54 
55 }
56 
glAttachShader_enc(void * self,GLuint program,GLuint shader)57 void glAttachShader_enc(void *self , GLuint program, GLuint shader)
58 {
59 	ENCODER_DEBUG_LOG("glAttachShader(program:%u, shader:%u)", program, shader);
60 	AEMU_SCOPED_TRACE("glAttachShader encode");
61 
62 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
63 	IOStream *stream = ctx->m_stream;
64 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
65 	bool useChecksum = checksumCalculator->getVersion() > 0;
66 
67 	 unsigned char *ptr;
68 	 unsigned char *buf;
69 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
70 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
71 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
72 	buf = stream->alloc(totalSize);
73 	ptr = buf;
74 	int tmp = OP_glAttachShader;memcpy(ptr, &tmp, 4); ptr += 4;
75 	memcpy(ptr, &totalSize, 4);  ptr += 4;
76 
77 		memcpy(ptr, &program, 4); ptr += 4;
78 		memcpy(ptr, &shader, 4); ptr += 4;
79 
80 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
81 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
82 
83 }
84 
glBindAttribLocation_enc(void * self,GLuint program,GLuint index,const GLchar * name)85 void glBindAttribLocation_enc(void *self , GLuint program, GLuint index, const GLchar* name)
86 {
87 	ENCODER_DEBUG_LOG("glBindAttribLocation(program:%u, index:%u, name:0x%08x)", program, index, name);
88 	AEMU_SCOPED_TRACE("glBindAttribLocation encode");
89 
90 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
91 	IOStream *stream = ctx->m_stream;
92 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
93 	bool useChecksum = checksumCalculator->getVersion() > 0;
94 
95 	const unsigned int __size_name =  (strlen(name) + 1);
96 	 unsigned char *ptr;
97 	 unsigned char *buf;
98 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
99 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
100 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
101 	buf = stream->alloc(totalSize);
102 	ptr = buf;
103 	int tmp = OP_glBindAttribLocation;memcpy(ptr, &tmp, 4); ptr += 4;
104 	memcpy(ptr, &totalSize, 4);  ptr += 4;
105 
106 		memcpy(ptr, &program, 4); ptr += 4;
107 		memcpy(ptr, &index, 4); ptr += 4;
108 	memcpy(ptr, &__size_name, 4); ptr += 4;
109 	memcpy(ptr, name, __size_name);ptr += __size_name;
110 
111 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
112 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
113 
114 }
115 
glBindBuffer_enc(void * self,GLenum target,GLuint buffer)116 void glBindBuffer_enc(void *self , GLenum target, GLuint buffer)
117 {
118 	ENCODER_DEBUG_LOG("glBindBuffer(target:0x%08x, buffer:%u)", target, buffer);
119 	AEMU_SCOPED_TRACE("glBindBuffer encode");
120 
121 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
122 	IOStream *stream = ctx->m_stream;
123 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
124 	bool useChecksum = checksumCalculator->getVersion() > 0;
125 
126 	 unsigned char *ptr;
127 	 unsigned char *buf;
128 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
129 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
130 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
131 	buf = stream->alloc(totalSize);
132 	ptr = buf;
133 	int tmp = OP_glBindBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
134 	memcpy(ptr, &totalSize, 4);  ptr += 4;
135 
136 		memcpy(ptr, &target, 4); ptr += 4;
137 		memcpy(ptr, &buffer, 4); ptr += 4;
138 
139 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
140 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
141 
142 }
143 
glBindFramebuffer_enc(void * self,GLenum target,GLuint framebuffer)144 void glBindFramebuffer_enc(void *self , GLenum target, GLuint framebuffer)
145 {
146 	ENCODER_DEBUG_LOG("glBindFramebuffer(target:0x%08x, framebuffer:%u)", target, framebuffer);
147 	AEMU_SCOPED_TRACE("glBindFramebuffer encode");
148 
149 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
150 	IOStream *stream = ctx->m_stream;
151 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
152 	bool useChecksum = checksumCalculator->getVersion() > 0;
153 
154 	 unsigned char *ptr;
155 	 unsigned char *buf;
156 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
157 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
158 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
159 	buf = stream->alloc(totalSize);
160 	ptr = buf;
161 	int tmp = OP_glBindFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
162 	memcpy(ptr, &totalSize, 4);  ptr += 4;
163 
164 		memcpy(ptr, &target, 4); ptr += 4;
165 		memcpy(ptr, &framebuffer, 4); ptr += 4;
166 
167 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
168 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
169 
170 }
171 
glBindRenderbuffer_enc(void * self,GLenum target,GLuint renderbuffer)172 void glBindRenderbuffer_enc(void *self , GLenum target, GLuint renderbuffer)
173 {
174 	ENCODER_DEBUG_LOG("glBindRenderbuffer(target:0x%08x, renderbuffer:%u)", target, renderbuffer);
175 	AEMU_SCOPED_TRACE("glBindRenderbuffer encode");
176 
177 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
178 	IOStream *stream = ctx->m_stream;
179 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
180 	bool useChecksum = checksumCalculator->getVersion() > 0;
181 
182 	 unsigned char *ptr;
183 	 unsigned char *buf;
184 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
185 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
186 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
187 	buf = stream->alloc(totalSize);
188 	ptr = buf;
189 	int tmp = OP_glBindRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
190 	memcpy(ptr, &totalSize, 4);  ptr += 4;
191 
192 		memcpy(ptr, &target, 4); ptr += 4;
193 		memcpy(ptr, &renderbuffer, 4); ptr += 4;
194 
195 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
196 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
197 
198 }
199 
glBindTexture_enc(void * self,GLenum target,GLuint texture)200 void glBindTexture_enc(void *self , GLenum target, GLuint texture)
201 {
202 	ENCODER_DEBUG_LOG("glBindTexture(target:0x%08x, texture:%u)", target, texture);
203 	AEMU_SCOPED_TRACE("glBindTexture encode");
204 
205 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
206 	IOStream *stream = ctx->m_stream;
207 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
208 	bool useChecksum = checksumCalculator->getVersion() > 0;
209 
210 	 unsigned char *ptr;
211 	 unsigned char *buf;
212 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
213 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
214 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
215 	buf = stream->alloc(totalSize);
216 	ptr = buf;
217 	int tmp = OP_glBindTexture;memcpy(ptr, &tmp, 4); ptr += 4;
218 	memcpy(ptr, &totalSize, 4);  ptr += 4;
219 
220 		memcpy(ptr, &target, 4); ptr += 4;
221 		memcpy(ptr, &texture, 4); ptr += 4;
222 
223 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
224 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
225 
226 }
227 
glBlendColor_enc(void * self,GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)228 void glBlendColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
229 {
230 	ENCODER_DEBUG_LOG("glBlendColor(red:%f, green:%f, blue:%f, alpha:%f)", red, green, blue, alpha);
231 	AEMU_SCOPED_TRACE("glBlendColor encode");
232 
233 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
234 	IOStream *stream = ctx->m_stream;
235 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
236 	bool useChecksum = checksumCalculator->getVersion() > 0;
237 
238 	 unsigned char *ptr;
239 	 unsigned char *buf;
240 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
241 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
242 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
243 	buf = stream->alloc(totalSize);
244 	ptr = buf;
245 	int tmp = OP_glBlendColor;memcpy(ptr, &tmp, 4); ptr += 4;
246 	memcpy(ptr, &totalSize, 4);  ptr += 4;
247 
248 		memcpy(ptr, &red, 4); ptr += 4;
249 		memcpy(ptr, &green, 4); ptr += 4;
250 		memcpy(ptr, &blue, 4); ptr += 4;
251 		memcpy(ptr, &alpha, 4); ptr += 4;
252 
253 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
254 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
255 
256 }
257 
glBlendEquation_enc(void * self,GLenum mode)258 void glBlendEquation_enc(void *self , GLenum mode)
259 {
260 	ENCODER_DEBUG_LOG("glBlendEquation(mode:0x%08x)", mode);
261 	AEMU_SCOPED_TRACE("glBlendEquation encode");
262 
263 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
264 	IOStream *stream = ctx->m_stream;
265 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
266 	bool useChecksum = checksumCalculator->getVersion() > 0;
267 
268 	 unsigned char *ptr;
269 	 unsigned char *buf;
270 	 const size_t sizeWithoutChecksum = 8 + 4;
271 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
272 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
273 	buf = stream->alloc(totalSize);
274 	ptr = buf;
275 	int tmp = OP_glBlendEquation;memcpy(ptr, &tmp, 4); ptr += 4;
276 	memcpy(ptr, &totalSize, 4);  ptr += 4;
277 
278 		memcpy(ptr, &mode, 4); ptr += 4;
279 
280 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
281 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
282 
283 }
284 
glBlendEquationSeparate_enc(void * self,GLenum modeRGB,GLenum modeAlpha)285 void glBlendEquationSeparate_enc(void *self , GLenum modeRGB, GLenum modeAlpha)
286 {
287 	ENCODER_DEBUG_LOG("glBlendEquationSeparate(modeRGB:0x%08x, modeAlpha:0x%08x)", modeRGB, modeAlpha);
288 	AEMU_SCOPED_TRACE("glBlendEquationSeparate encode");
289 
290 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
291 	IOStream *stream = ctx->m_stream;
292 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
293 	bool useChecksum = checksumCalculator->getVersion() > 0;
294 
295 	 unsigned char *ptr;
296 	 unsigned char *buf;
297 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
298 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
299 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
300 	buf = stream->alloc(totalSize);
301 	ptr = buf;
302 	int tmp = OP_glBlendEquationSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
303 	memcpy(ptr, &totalSize, 4);  ptr += 4;
304 
305 		memcpy(ptr, &modeRGB, 4); ptr += 4;
306 		memcpy(ptr, &modeAlpha, 4); ptr += 4;
307 
308 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
309 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
310 
311 }
312 
glBlendFunc_enc(void * self,GLenum sfactor,GLenum dfactor)313 void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor)
314 {
315 	ENCODER_DEBUG_LOG("glBlendFunc(sfactor:0x%08x, dfactor:0x%08x)", sfactor, dfactor);
316 	AEMU_SCOPED_TRACE("glBlendFunc encode");
317 
318 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
319 	IOStream *stream = ctx->m_stream;
320 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
321 	bool useChecksum = checksumCalculator->getVersion() > 0;
322 
323 	 unsigned char *ptr;
324 	 unsigned char *buf;
325 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
326 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
327 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
328 	buf = stream->alloc(totalSize);
329 	ptr = buf;
330 	int tmp = OP_glBlendFunc;memcpy(ptr, &tmp, 4); ptr += 4;
331 	memcpy(ptr, &totalSize, 4);  ptr += 4;
332 
333 		memcpy(ptr, &sfactor, 4); ptr += 4;
334 		memcpy(ptr, &dfactor, 4); ptr += 4;
335 
336 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
337 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
338 
339 }
340 
glBlendFuncSeparate_enc(void * self,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)341 void glBlendFuncSeparate_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
342 {
343 	ENCODER_DEBUG_LOG("glBlendFuncSeparate(srcRGB:0x%08x, dstRGB:0x%08x, srcAlpha:0x%08x, dstAlpha:0x%08x)", srcRGB, dstRGB, srcAlpha, dstAlpha);
344 	AEMU_SCOPED_TRACE("glBlendFuncSeparate encode");
345 
346 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
347 	IOStream *stream = ctx->m_stream;
348 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
349 	bool useChecksum = checksumCalculator->getVersion() > 0;
350 
351 	 unsigned char *ptr;
352 	 unsigned char *buf;
353 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
354 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
355 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
356 	buf = stream->alloc(totalSize);
357 	ptr = buf;
358 	int tmp = OP_glBlendFuncSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
359 	memcpy(ptr, &totalSize, 4);  ptr += 4;
360 
361 		memcpy(ptr, &srcRGB, 4); ptr += 4;
362 		memcpy(ptr, &dstRGB, 4); ptr += 4;
363 		memcpy(ptr, &srcAlpha, 4); ptr += 4;
364 		memcpy(ptr, &dstAlpha, 4); ptr += 4;
365 
366 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
367 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
368 
369 }
370 
glBufferData_enc(void * self,GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)371 void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
372 {
373 	ENCODER_DEBUG_LOG("glBufferData(target:0x%08x, size:0x%08lx, data:0x%08x, usage:0x%08x)", target, size, data, usage);
374 	AEMU_SCOPED_TRACE("glBufferData encode");
375 
376 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
377 	IOStream *stream = ctx->m_stream;
378 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
379 	bool useChecksum = checksumCalculator->getVersion() > 0;
380 
381 	const unsigned int __size_data = ((data != NULL) ?  size : 0);
382 	 unsigned char *ptr;
383 	 unsigned char *buf;
384 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
385 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
386 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
387 	buf = stream->alloc(8 + 4 + 4);
388 	ptr = buf;
389 	int tmp = OP_glBufferData;memcpy(ptr, &tmp, 4); ptr += 4;
390 	memcpy(ptr, &totalSize, 4);  ptr += 4;
391 
392 		memcpy(ptr, &target, 4); ptr += 4;
393 		memcpy(ptr, &size, 4); ptr += 4;
394 
395 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
396 	stream->flush();
397 	stream->writeFully(&__size_data,4);
398 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
399 	if (data != NULL) {
400 		stream->writeFully(data, __size_data);
401 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
402 	}
403 	buf = stream->alloc(4);
404 	ptr = buf;
405 		memcpy(ptr, &usage, 4); ptr += 4;
406 
407 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
408 	buf = stream->alloc(checksumSize);
409 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
410 
411 }
412 
glBufferSubData_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)413 void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
414 {
415 	ENCODER_DEBUG_LOG("glBufferSubData(target:0x%08x, offset:0x%08lx, size:0x%08lx, data:0x%08x)", target, offset, size, data);
416 	AEMU_SCOPED_TRACE("glBufferSubData encode");
417 
418 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
419 	IOStream *stream = ctx->m_stream;
420 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
421 	bool useChecksum = checksumCalculator->getVersion() > 0;
422 
423 	const unsigned int __size_data = ((data != NULL) ?  size : 0);
424 	 unsigned char *ptr;
425 	 unsigned char *buf;
426 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 1*4;
427 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
428 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
429 	buf = stream->alloc(8 + 4 + 4 + 4);
430 	ptr = buf;
431 	int tmp = OP_glBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
432 	memcpy(ptr, &totalSize, 4);  ptr += 4;
433 
434 		memcpy(ptr, &target, 4); ptr += 4;
435 		memcpy(ptr, &offset, 4); ptr += 4;
436 		memcpy(ptr, &size, 4); ptr += 4;
437 
438 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
439 	stream->flush();
440 	stream->writeFully(&__size_data,4);
441 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
442 	if (data != NULL) {
443 		stream->writeFully(data, __size_data);
444 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
445 	}
446 	buf = stream->alloc(checksumSize);
447 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
448 
449 }
450 
glCheckFramebufferStatus_enc(void * self,GLenum target)451 GLenum glCheckFramebufferStatus_enc(void *self , GLenum target)
452 {
453 	ENCODER_DEBUG_LOG("glCheckFramebufferStatus(target:0x%08x)", target);
454 	AEMU_SCOPED_TRACE("glCheckFramebufferStatus encode");
455 
456 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
457 	IOStream *stream = ctx->m_stream;
458 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
459 	bool useChecksum = checksumCalculator->getVersion() > 0;
460 
461 	 unsigned char *ptr;
462 	 unsigned char *buf;
463 	 const size_t sizeWithoutChecksum = 8 + 4;
464 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
465 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
466 	buf = stream->alloc(totalSize);
467 	ptr = buf;
468 	int tmp = OP_glCheckFramebufferStatus;memcpy(ptr, &tmp, 4); ptr += 4;
469 	memcpy(ptr, &totalSize, 4);  ptr += 4;
470 
471 		memcpy(ptr, &target, 4); ptr += 4;
472 
473 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
474 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
475 
476 
477 	GLenum retval;
478 	stream->readback(&retval, 4);
479 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
480 	if (useChecksum) {
481 		unsigned char *checksumBufPtr = NULL;
482 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
483 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
484 		stream->readback(checksumBufPtr, checksumSize);
485 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
486 			ALOGE("glCheckFramebufferStatus: GL communication error, please report this issue to b.android.com.\n");
487 			abort();
488 		}
489 	}
490 	return retval;
491 }
492 
glClear_enc(void * self,GLbitfield mask)493 void glClear_enc(void *self , GLbitfield mask)
494 {
495 	ENCODER_DEBUG_LOG("glClear(mask:0x%08x)", mask);
496 	AEMU_SCOPED_TRACE("glClear encode");
497 
498 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
499 	IOStream *stream = ctx->m_stream;
500 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
501 	bool useChecksum = checksumCalculator->getVersion() > 0;
502 
503 	 unsigned char *ptr;
504 	 unsigned char *buf;
505 	 const size_t sizeWithoutChecksum = 8 + 4;
506 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
507 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
508 	buf = stream->alloc(totalSize);
509 	ptr = buf;
510 	int tmp = OP_glClear;memcpy(ptr, &tmp, 4); ptr += 4;
511 	memcpy(ptr, &totalSize, 4);  ptr += 4;
512 
513 		memcpy(ptr, &mask, 4); ptr += 4;
514 
515 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
516 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
517 
518 }
519 
glClearColor_enc(void * self,GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)520 void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
521 {
522 	ENCODER_DEBUG_LOG("glClearColor(red:%f, green:%f, blue:%f, alpha:%f)", red, green, blue, alpha);
523 	AEMU_SCOPED_TRACE("glClearColor encode");
524 
525 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
526 	IOStream *stream = ctx->m_stream;
527 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
528 	bool useChecksum = checksumCalculator->getVersion() > 0;
529 
530 	 unsigned char *ptr;
531 	 unsigned char *buf;
532 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
533 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
534 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
535 	buf = stream->alloc(totalSize);
536 	ptr = buf;
537 	int tmp = OP_glClearColor;memcpy(ptr, &tmp, 4); ptr += 4;
538 	memcpy(ptr, &totalSize, 4);  ptr += 4;
539 
540 		memcpy(ptr, &red, 4); ptr += 4;
541 		memcpy(ptr, &green, 4); ptr += 4;
542 		memcpy(ptr, &blue, 4); ptr += 4;
543 		memcpy(ptr, &alpha, 4); ptr += 4;
544 
545 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
546 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
547 
548 }
549 
glClearDepthf_enc(void * self,GLclampf depth)550 void glClearDepthf_enc(void *self , GLclampf depth)
551 {
552 	ENCODER_DEBUG_LOG("glClearDepthf(depth:%f)", depth);
553 	AEMU_SCOPED_TRACE("glClearDepthf encode");
554 
555 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
556 	IOStream *stream = ctx->m_stream;
557 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
558 	bool useChecksum = checksumCalculator->getVersion() > 0;
559 
560 	 unsigned char *ptr;
561 	 unsigned char *buf;
562 	 const size_t sizeWithoutChecksum = 8 + 4;
563 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
564 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
565 	buf = stream->alloc(totalSize);
566 	ptr = buf;
567 	int tmp = OP_glClearDepthf;memcpy(ptr, &tmp, 4); ptr += 4;
568 	memcpy(ptr, &totalSize, 4);  ptr += 4;
569 
570 		memcpy(ptr, &depth, 4); ptr += 4;
571 
572 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
573 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
574 
575 }
576 
glClearStencil_enc(void * self,GLint s)577 void glClearStencil_enc(void *self , GLint s)
578 {
579 	ENCODER_DEBUG_LOG("glClearStencil(s:%d)", s);
580 	AEMU_SCOPED_TRACE("glClearStencil encode");
581 
582 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
583 	IOStream *stream = ctx->m_stream;
584 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
585 	bool useChecksum = checksumCalculator->getVersion() > 0;
586 
587 	 unsigned char *ptr;
588 	 unsigned char *buf;
589 	 const size_t sizeWithoutChecksum = 8 + 4;
590 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
591 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
592 	buf = stream->alloc(totalSize);
593 	ptr = buf;
594 	int tmp = OP_glClearStencil;memcpy(ptr, &tmp, 4); ptr += 4;
595 	memcpy(ptr, &totalSize, 4);  ptr += 4;
596 
597 		memcpy(ptr, &s, 4); ptr += 4;
598 
599 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
600 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
601 
602 }
603 
glColorMask_enc(void * self,GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)604 void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
605 {
606 	ENCODER_DEBUG_LOG("glColorMask(red:%d, green:%d, blue:%d, alpha:%d)", red, green, blue, alpha);
607 	AEMU_SCOPED_TRACE("glColorMask encode");
608 
609 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
610 	IOStream *stream = ctx->m_stream;
611 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
612 	bool useChecksum = checksumCalculator->getVersion() > 0;
613 
614 	 unsigned char *ptr;
615 	 unsigned char *buf;
616 	 const size_t sizeWithoutChecksum = 8 + 1 + 1 + 1 + 1;
617 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
618 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
619 	buf = stream->alloc(totalSize);
620 	ptr = buf;
621 	int tmp = OP_glColorMask;memcpy(ptr, &tmp, 4); ptr += 4;
622 	memcpy(ptr, &totalSize, 4);  ptr += 4;
623 
624 		memcpy(ptr, &red, 1); ptr += 1;
625 		memcpy(ptr, &green, 1); ptr += 1;
626 		memcpy(ptr, &blue, 1); ptr += 1;
627 		memcpy(ptr, &alpha, 1); ptr += 1;
628 
629 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
630 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
631 
632 }
633 
glCompileShader_enc(void * self,GLuint shader)634 void glCompileShader_enc(void *self , GLuint shader)
635 {
636 	ENCODER_DEBUG_LOG("glCompileShader(shader:%u)", shader);
637 	AEMU_SCOPED_TRACE("glCompileShader encode");
638 
639 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
640 	IOStream *stream = ctx->m_stream;
641 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
642 	bool useChecksum = checksumCalculator->getVersion() > 0;
643 
644 	 unsigned char *ptr;
645 	 unsigned char *buf;
646 	 const size_t sizeWithoutChecksum = 8 + 4;
647 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
648 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
649 	buf = stream->alloc(totalSize);
650 	ptr = buf;
651 	int tmp = OP_glCompileShader;memcpy(ptr, &tmp, 4); ptr += 4;
652 	memcpy(ptr, &totalSize, 4);  ptr += 4;
653 
654 		memcpy(ptr, &shader, 4); ptr += 4;
655 
656 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
657 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
658 
659 }
660 
glCompressedTexImage2D_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)661 void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
662 {
663 	ENCODER_DEBUG_LOG("glCompressedTexImage2D(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, border:%d, imageSize:%d, data:0x%08x)", target, level, internalformat, width, height, border, imageSize, data);
664 	AEMU_SCOPED_TRACE("glCompressedTexImage2D encode");
665 
666 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
667 	IOStream *stream = ctx->m_stream;
668 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
669 	bool useChecksum = checksumCalculator->getVersion() > 0;
670 
671 	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
672 	 unsigned char *ptr;
673 	 unsigned char *buf;
674 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
675 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
676 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
677 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
678 	ptr = buf;
679 	int tmp = OP_glCompressedTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
680 	memcpy(ptr, &totalSize, 4);  ptr += 4;
681 
682 		memcpy(ptr, &target, 4); ptr += 4;
683 		memcpy(ptr, &level, 4); ptr += 4;
684 		memcpy(ptr, &internalformat, 4); ptr += 4;
685 		memcpy(ptr, &width, 4); ptr += 4;
686 		memcpy(ptr, &height, 4); ptr += 4;
687 		memcpy(ptr, &border, 4); ptr += 4;
688 		memcpy(ptr, &imageSize, 4); ptr += 4;
689 
690 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
691 	stream->flush();
692 	stream->writeFully(&__size_data,4);
693 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
694 	if (data != NULL) {
695 		stream->writeFully(data, __size_data);
696 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
697 	}
698 	buf = stream->alloc(checksumSize);
699 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
700 
701 }
702 
glCompressedTexSubImage2D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)703 void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
704 {
705 	ENCODER_DEBUG_LOG("glCompressedTexSubImage2D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, width:%d, height:%d, format:0x%08x, imageSize:%d, data:0x%08x)", target, level, xoffset, yoffset, width, height, format, imageSize, data);
706 	AEMU_SCOPED_TRACE("glCompressedTexSubImage2D encode");
707 
708 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
709 	IOStream *stream = ctx->m_stream;
710 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
711 	bool useChecksum = checksumCalculator->getVersion() > 0;
712 
713 	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
714 	 unsigned char *ptr;
715 	 unsigned char *buf;
716 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
717 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
718 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
719 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
720 	ptr = buf;
721 	int tmp = OP_glCompressedTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
722 	memcpy(ptr, &totalSize, 4);  ptr += 4;
723 
724 		memcpy(ptr, &target, 4); ptr += 4;
725 		memcpy(ptr, &level, 4); ptr += 4;
726 		memcpy(ptr, &xoffset, 4); ptr += 4;
727 		memcpy(ptr, &yoffset, 4); ptr += 4;
728 		memcpy(ptr, &width, 4); ptr += 4;
729 		memcpy(ptr, &height, 4); ptr += 4;
730 		memcpy(ptr, &format, 4); ptr += 4;
731 		memcpy(ptr, &imageSize, 4); ptr += 4;
732 
733 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
734 	stream->flush();
735 	stream->writeFully(&__size_data,4);
736 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
737 	if (data != NULL) {
738 		stream->writeFully(data, __size_data);
739 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
740 	}
741 	buf = stream->alloc(checksumSize);
742 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
743 
744 }
745 
glCopyTexImage2D_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)746 void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
747 {
748 	ENCODER_DEBUG_LOG("glCopyTexImage2D(target:0x%08x, level:%d, internalformat:0x%08x, x:%d, y:%d, width:%d, height:%d, border:%d)", target, level, internalformat, x, y, width, height, border);
749 	AEMU_SCOPED_TRACE("glCopyTexImage2D encode");
750 
751 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
752 	IOStream *stream = ctx->m_stream;
753 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
754 	bool useChecksum = checksumCalculator->getVersion() > 0;
755 
756 	 unsigned char *ptr;
757 	 unsigned char *buf;
758 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
759 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
760 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
761 	buf = stream->alloc(totalSize);
762 	ptr = buf;
763 	int tmp = OP_glCopyTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
764 	memcpy(ptr, &totalSize, 4);  ptr += 4;
765 
766 		memcpy(ptr, &target, 4); ptr += 4;
767 		memcpy(ptr, &level, 4); ptr += 4;
768 		memcpy(ptr, &internalformat, 4); ptr += 4;
769 		memcpy(ptr, &x, 4); ptr += 4;
770 		memcpy(ptr, &y, 4); ptr += 4;
771 		memcpy(ptr, &width, 4); ptr += 4;
772 		memcpy(ptr, &height, 4); ptr += 4;
773 		memcpy(ptr, &border, 4); ptr += 4;
774 
775 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
776 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
777 
778 }
779 
glCopyTexSubImage2D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)780 void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
781 {
782 	ENCODER_DEBUG_LOG("glCopyTexSubImage2D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, x:%d, y:%d, width:%d, height:%d)", target, level, xoffset, yoffset, x, y, width, height);
783 	AEMU_SCOPED_TRACE("glCopyTexSubImage2D encode");
784 
785 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
786 	IOStream *stream = ctx->m_stream;
787 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
788 	bool useChecksum = checksumCalculator->getVersion() > 0;
789 
790 	 unsigned char *ptr;
791 	 unsigned char *buf;
792 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
793 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
794 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
795 	buf = stream->alloc(totalSize);
796 	ptr = buf;
797 	int tmp = OP_glCopyTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
798 	memcpy(ptr, &totalSize, 4);  ptr += 4;
799 
800 		memcpy(ptr, &target, 4); ptr += 4;
801 		memcpy(ptr, &level, 4); ptr += 4;
802 		memcpy(ptr, &xoffset, 4); ptr += 4;
803 		memcpy(ptr, &yoffset, 4); ptr += 4;
804 		memcpy(ptr, &x, 4); ptr += 4;
805 		memcpy(ptr, &y, 4); ptr += 4;
806 		memcpy(ptr, &width, 4); ptr += 4;
807 		memcpy(ptr, &height, 4); ptr += 4;
808 
809 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
810 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
811 
812 }
813 
glCreateProgram_enc(void * self)814 GLuint glCreateProgram_enc(void *self )
815 {
816 	ENCODER_DEBUG_LOG("glCreateProgram()");
817 	AEMU_SCOPED_TRACE("glCreateProgram encode");
818 
819 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
820 	IOStream *stream = ctx->m_stream;
821 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
822 	bool useChecksum = checksumCalculator->getVersion() > 0;
823 
824 	 unsigned char *ptr;
825 	 unsigned char *buf;
826 	 const size_t sizeWithoutChecksum = 8;
827 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
828 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
829 	buf = stream->alloc(totalSize);
830 	ptr = buf;
831 	int tmp = OP_glCreateProgram;memcpy(ptr, &tmp, 4); ptr += 4;
832 	memcpy(ptr, &totalSize, 4);  ptr += 4;
833 
834 
835 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
836 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
837 
838 
839 	GLuint retval;
840 	stream->readback(&retval, 4);
841 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
842 	if (useChecksum) {
843 		unsigned char *checksumBufPtr = NULL;
844 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
845 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
846 		stream->readback(checksumBufPtr, checksumSize);
847 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
848 			ALOGE("glCreateProgram: GL communication error, please report this issue to b.android.com.\n");
849 			abort();
850 		}
851 	}
852 	return retval;
853 }
854 
glCreateShader_enc(void * self,GLenum type)855 GLuint glCreateShader_enc(void *self , GLenum type)
856 {
857 	ENCODER_DEBUG_LOG("glCreateShader(type:0x%08x)", type);
858 	AEMU_SCOPED_TRACE("glCreateShader encode");
859 
860 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
861 	IOStream *stream = ctx->m_stream;
862 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
863 	bool useChecksum = checksumCalculator->getVersion() > 0;
864 
865 	 unsigned char *ptr;
866 	 unsigned char *buf;
867 	 const size_t sizeWithoutChecksum = 8 + 4;
868 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
869 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
870 	buf = stream->alloc(totalSize);
871 	ptr = buf;
872 	int tmp = OP_glCreateShader;memcpy(ptr, &tmp, 4); ptr += 4;
873 	memcpy(ptr, &totalSize, 4);  ptr += 4;
874 
875 		memcpy(ptr, &type, 4); ptr += 4;
876 
877 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
878 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
879 
880 
881 	GLuint retval;
882 	stream->readback(&retval, 4);
883 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
884 	if (useChecksum) {
885 		unsigned char *checksumBufPtr = NULL;
886 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
887 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
888 		stream->readback(checksumBufPtr, checksumSize);
889 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
890 			ALOGE("glCreateShader: GL communication error, please report this issue to b.android.com.\n");
891 			abort();
892 		}
893 	}
894 	return retval;
895 }
896 
glCullFace_enc(void * self,GLenum mode)897 void glCullFace_enc(void *self , GLenum mode)
898 {
899 	ENCODER_DEBUG_LOG("glCullFace(mode:0x%08x)", mode);
900 	AEMU_SCOPED_TRACE("glCullFace encode");
901 
902 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
903 	IOStream *stream = ctx->m_stream;
904 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
905 	bool useChecksum = checksumCalculator->getVersion() > 0;
906 
907 	 unsigned char *ptr;
908 	 unsigned char *buf;
909 	 const size_t sizeWithoutChecksum = 8 + 4;
910 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
911 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
912 	buf = stream->alloc(totalSize);
913 	ptr = buf;
914 	int tmp = OP_glCullFace;memcpy(ptr, &tmp, 4); ptr += 4;
915 	memcpy(ptr, &totalSize, 4);  ptr += 4;
916 
917 		memcpy(ptr, &mode, 4); ptr += 4;
918 
919 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
920 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
921 
922 }
923 
glDeleteBuffers_enc(void * self,GLsizei n,const GLuint * buffers)924 void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers)
925 {
926 	ENCODER_DEBUG_LOG("glDeleteBuffers(n:%d, buffers:0x%08x)", n, buffers);
927 	AEMU_SCOPED_TRACE("glDeleteBuffers encode");
928 
929 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
930 	IOStream *stream = ctx->m_stream;
931 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
932 	bool useChecksum = checksumCalculator->getVersion() > 0;
933 
934 	const unsigned int __size_buffers =  (n * sizeof(GLuint));
935 	 unsigned char *ptr;
936 	 unsigned char *buf;
937 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_buffers + 1*4;
938 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
939 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
940 	buf = stream->alloc(totalSize);
941 	ptr = buf;
942 	int tmp = OP_glDeleteBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
943 	memcpy(ptr, &totalSize, 4);  ptr += 4;
944 
945 		memcpy(ptr, &n, 4); ptr += 4;
946 	memcpy(ptr, &__size_buffers, 4); ptr += 4;
947 	memcpy(ptr, buffers, __size_buffers);ptr += __size_buffers;
948 
949 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
950 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
951 
952 }
953 
glDeleteFramebuffers_enc(void * self,GLsizei n,const GLuint * framebuffers)954 void glDeleteFramebuffers_enc(void *self , GLsizei n, const GLuint* framebuffers)
955 {
956 	ENCODER_DEBUG_LOG("glDeleteFramebuffers(n:%d, framebuffers:0x%08x)", n, framebuffers);
957 	AEMU_SCOPED_TRACE("glDeleteFramebuffers encode");
958 
959 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
960 	IOStream *stream = ctx->m_stream;
961 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
962 	bool useChecksum = checksumCalculator->getVersion() > 0;
963 
964 	const unsigned int __size_framebuffers =  (n * sizeof(GLuint));
965 	 unsigned char *ptr;
966 	 unsigned char *buf;
967 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_framebuffers + 1*4;
968 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
969 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
970 	buf = stream->alloc(totalSize);
971 	ptr = buf;
972 	int tmp = OP_glDeleteFramebuffers;memcpy(ptr, &tmp, 4); ptr += 4;
973 	memcpy(ptr, &totalSize, 4);  ptr += 4;
974 
975 		memcpy(ptr, &n, 4); ptr += 4;
976 	memcpy(ptr, &__size_framebuffers, 4); ptr += 4;
977 	memcpy(ptr, framebuffers, __size_framebuffers);ptr += __size_framebuffers;
978 
979 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
980 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
981 
982 }
983 
glDeleteProgram_enc(void * self,GLuint program)984 void glDeleteProgram_enc(void *self , GLuint program)
985 {
986 	ENCODER_DEBUG_LOG("glDeleteProgram(program:%u)", program);
987 	AEMU_SCOPED_TRACE("glDeleteProgram encode");
988 
989 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
990 	IOStream *stream = ctx->m_stream;
991 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
992 	bool useChecksum = checksumCalculator->getVersion() > 0;
993 
994 	 unsigned char *ptr;
995 	 unsigned char *buf;
996 	 const size_t sizeWithoutChecksum = 8 + 4;
997 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
998 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
999 	buf = stream->alloc(totalSize);
1000 	ptr = buf;
1001 	int tmp = OP_glDeleteProgram;memcpy(ptr, &tmp, 4); ptr += 4;
1002 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1003 
1004 		memcpy(ptr, &program, 4); ptr += 4;
1005 
1006 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1007 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1008 
1009 }
1010 
glDeleteRenderbuffers_enc(void * self,GLsizei n,const GLuint * renderbuffers)1011 void glDeleteRenderbuffers_enc(void *self , GLsizei n, const GLuint* renderbuffers)
1012 {
1013 	ENCODER_DEBUG_LOG("glDeleteRenderbuffers(n:%d, renderbuffers:0x%08x)", n, renderbuffers);
1014 	AEMU_SCOPED_TRACE("glDeleteRenderbuffers encode");
1015 
1016 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1017 	IOStream *stream = ctx->m_stream;
1018 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1019 	bool useChecksum = checksumCalculator->getVersion() > 0;
1020 
1021 	const unsigned int __size_renderbuffers =  (n * sizeof(GLuint));
1022 	 unsigned char *ptr;
1023 	 unsigned char *buf;
1024 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_renderbuffers + 1*4;
1025 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1026 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1027 	buf = stream->alloc(totalSize);
1028 	ptr = buf;
1029 	int tmp = OP_glDeleteRenderbuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1030 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1031 
1032 		memcpy(ptr, &n, 4); ptr += 4;
1033 	memcpy(ptr, &__size_renderbuffers, 4); ptr += 4;
1034 	memcpy(ptr, renderbuffers, __size_renderbuffers);ptr += __size_renderbuffers;
1035 
1036 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1037 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1038 
1039 }
1040 
glDeleteShader_enc(void * self,GLuint shader)1041 void glDeleteShader_enc(void *self , GLuint shader)
1042 {
1043 	ENCODER_DEBUG_LOG("glDeleteShader(shader:%u)", shader);
1044 	AEMU_SCOPED_TRACE("glDeleteShader encode");
1045 
1046 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1047 	IOStream *stream = ctx->m_stream;
1048 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1049 	bool useChecksum = checksumCalculator->getVersion() > 0;
1050 
1051 	 unsigned char *ptr;
1052 	 unsigned char *buf;
1053 	 const size_t sizeWithoutChecksum = 8 + 4;
1054 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1055 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1056 	buf = stream->alloc(totalSize);
1057 	ptr = buf;
1058 	int tmp = OP_glDeleteShader;memcpy(ptr, &tmp, 4); ptr += 4;
1059 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1060 
1061 		memcpy(ptr, &shader, 4); ptr += 4;
1062 
1063 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1064 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1065 
1066 }
1067 
glDeleteTextures_enc(void * self,GLsizei n,const GLuint * textures)1068 void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures)
1069 {
1070 	ENCODER_DEBUG_LOG("glDeleteTextures(n:%d, textures:0x%08x)", n, textures);
1071 	AEMU_SCOPED_TRACE("glDeleteTextures encode");
1072 
1073 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1074 	IOStream *stream = ctx->m_stream;
1075 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1076 	bool useChecksum = checksumCalculator->getVersion() > 0;
1077 
1078 	const unsigned int __size_textures =  (n * sizeof(GLuint));
1079 	 unsigned char *ptr;
1080 	 unsigned char *buf;
1081 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_textures + 1*4;
1082 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1083 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1084 	buf = stream->alloc(totalSize);
1085 	ptr = buf;
1086 	int tmp = OP_glDeleteTextures;memcpy(ptr, &tmp, 4); ptr += 4;
1087 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1088 
1089 		memcpy(ptr, &n, 4); ptr += 4;
1090 	memcpy(ptr, &__size_textures, 4); ptr += 4;
1091 	memcpy(ptr, textures, __size_textures);ptr += __size_textures;
1092 
1093 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1094 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1095 
1096 }
1097 
glDepthFunc_enc(void * self,GLenum func)1098 void glDepthFunc_enc(void *self , GLenum func)
1099 {
1100 	ENCODER_DEBUG_LOG("glDepthFunc(func:0x%08x)", func);
1101 	AEMU_SCOPED_TRACE("glDepthFunc encode");
1102 
1103 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1104 	IOStream *stream = ctx->m_stream;
1105 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1106 	bool useChecksum = checksumCalculator->getVersion() > 0;
1107 
1108 	 unsigned char *ptr;
1109 	 unsigned char *buf;
1110 	 const size_t sizeWithoutChecksum = 8 + 4;
1111 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1112 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1113 	buf = stream->alloc(totalSize);
1114 	ptr = buf;
1115 	int tmp = OP_glDepthFunc;memcpy(ptr, &tmp, 4); ptr += 4;
1116 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1117 
1118 		memcpy(ptr, &func, 4); ptr += 4;
1119 
1120 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1121 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1122 
1123 }
1124 
glDepthMask_enc(void * self,GLboolean flag)1125 void glDepthMask_enc(void *self , GLboolean flag)
1126 {
1127 	ENCODER_DEBUG_LOG("glDepthMask(flag:%d)", flag);
1128 	AEMU_SCOPED_TRACE("glDepthMask encode");
1129 
1130 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1131 	IOStream *stream = ctx->m_stream;
1132 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1133 	bool useChecksum = checksumCalculator->getVersion() > 0;
1134 
1135 	 unsigned char *ptr;
1136 	 unsigned char *buf;
1137 	 const size_t sizeWithoutChecksum = 8 + 1;
1138 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1139 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1140 	buf = stream->alloc(totalSize);
1141 	ptr = buf;
1142 	int tmp = OP_glDepthMask;memcpy(ptr, &tmp, 4); ptr += 4;
1143 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1144 
1145 		memcpy(ptr, &flag, 1); ptr += 1;
1146 
1147 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1148 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1149 
1150 }
1151 
glDepthRangef_enc(void * self,GLclampf zNear,GLclampf zFar)1152 void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar)
1153 {
1154 	ENCODER_DEBUG_LOG("glDepthRangef(zNear:%f, zFar:%f)", zNear, zFar);
1155 	AEMU_SCOPED_TRACE("glDepthRangef encode");
1156 
1157 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1158 	IOStream *stream = ctx->m_stream;
1159 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1160 	bool useChecksum = checksumCalculator->getVersion() > 0;
1161 
1162 	 unsigned char *ptr;
1163 	 unsigned char *buf;
1164 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1165 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1166 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1167 	buf = stream->alloc(totalSize);
1168 	ptr = buf;
1169 	int tmp = OP_glDepthRangef;memcpy(ptr, &tmp, 4); ptr += 4;
1170 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1171 
1172 		memcpy(ptr, &zNear, 4); ptr += 4;
1173 		memcpy(ptr, &zFar, 4); ptr += 4;
1174 
1175 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1176 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1177 
1178 }
1179 
glDetachShader_enc(void * self,GLuint program,GLuint shader)1180 void glDetachShader_enc(void *self , GLuint program, GLuint shader)
1181 {
1182 	ENCODER_DEBUG_LOG("glDetachShader(program:%u, shader:%u)", program, shader);
1183 	AEMU_SCOPED_TRACE("glDetachShader encode");
1184 
1185 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1186 	IOStream *stream = ctx->m_stream;
1187 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1188 	bool useChecksum = checksumCalculator->getVersion() > 0;
1189 
1190 	 unsigned char *ptr;
1191 	 unsigned char *buf;
1192 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1193 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1194 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1195 	buf = stream->alloc(totalSize);
1196 	ptr = buf;
1197 	int tmp = OP_glDetachShader;memcpy(ptr, &tmp, 4); ptr += 4;
1198 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1199 
1200 		memcpy(ptr, &program, 4); ptr += 4;
1201 		memcpy(ptr, &shader, 4); ptr += 4;
1202 
1203 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1204 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1205 
1206 }
1207 
glDisable_enc(void * self,GLenum cap)1208 void glDisable_enc(void *self , GLenum cap)
1209 {
1210 	ENCODER_DEBUG_LOG("glDisable(cap:0x%08x)", cap);
1211 	AEMU_SCOPED_TRACE("glDisable encode");
1212 
1213 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1214 	IOStream *stream = ctx->m_stream;
1215 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1216 	bool useChecksum = checksumCalculator->getVersion() > 0;
1217 
1218 	 unsigned char *ptr;
1219 	 unsigned char *buf;
1220 	 const size_t sizeWithoutChecksum = 8 + 4;
1221 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1222 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1223 	buf = stream->alloc(totalSize);
1224 	ptr = buf;
1225 	int tmp = OP_glDisable;memcpy(ptr, &tmp, 4); ptr += 4;
1226 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1227 
1228 		memcpy(ptr, &cap, 4); ptr += 4;
1229 
1230 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1231 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1232 
1233 }
1234 
glDisableVertexAttribArray_enc(void * self,GLuint index)1235 void glDisableVertexAttribArray_enc(void *self , GLuint index)
1236 {
1237 	ENCODER_DEBUG_LOG("glDisableVertexAttribArray(index:%u)", index);
1238 	AEMU_SCOPED_TRACE("glDisableVertexAttribArray encode");
1239 
1240 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1241 	IOStream *stream = ctx->m_stream;
1242 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1243 	bool useChecksum = checksumCalculator->getVersion() > 0;
1244 
1245 	 unsigned char *ptr;
1246 	 unsigned char *buf;
1247 	 const size_t sizeWithoutChecksum = 8 + 4;
1248 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1249 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1250 	buf = stream->alloc(totalSize);
1251 	ptr = buf;
1252 	int tmp = OP_glDisableVertexAttribArray;memcpy(ptr, &tmp, 4); ptr += 4;
1253 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1254 
1255 		memcpy(ptr, &index, 4); ptr += 4;
1256 
1257 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1258 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1259 
1260 }
1261 
glDrawArrays_enc(void * self,GLenum mode,GLint first,GLsizei count)1262 void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count)
1263 {
1264 	ENCODER_DEBUG_LOG("glDrawArrays(mode:0x%08x, first:%d, count:%d)", mode, first, count);
1265 	AEMU_SCOPED_TRACE("glDrawArrays encode");
1266 
1267 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1268 	IOStream *stream = ctx->m_stream;
1269 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1270 	bool useChecksum = checksumCalculator->getVersion() > 0;
1271 
1272 	 unsigned char *ptr;
1273 	 unsigned char *buf;
1274 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
1275 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1276 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1277 	buf = stream->alloc(totalSize);
1278 	ptr = buf;
1279 	int tmp = OP_glDrawArrays;memcpy(ptr, &tmp, 4); ptr += 4;
1280 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1281 
1282 		memcpy(ptr, &mode, 4); ptr += 4;
1283 		memcpy(ptr, &first, 4); ptr += 4;
1284 		memcpy(ptr, &count, 4); ptr += 4;
1285 
1286 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1287 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1288 
1289 }
1290 
glEnable_enc(void * self,GLenum cap)1291 void glEnable_enc(void *self , GLenum cap)
1292 {
1293 	ENCODER_DEBUG_LOG("glEnable(cap:0x%08x)", cap);
1294 	AEMU_SCOPED_TRACE("glEnable encode");
1295 
1296 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1297 	IOStream *stream = ctx->m_stream;
1298 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1299 	bool useChecksum = checksumCalculator->getVersion() > 0;
1300 
1301 	 unsigned char *ptr;
1302 	 unsigned char *buf;
1303 	 const size_t sizeWithoutChecksum = 8 + 4;
1304 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1305 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1306 	buf = stream->alloc(totalSize);
1307 	ptr = buf;
1308 	int tmp = OP_glEnable;memcpy(ptr, &tmp, 4); ptr += 4;
1309 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1310 
1311 		memcpy(ptr, &cap, 4); ptr += 4;
1312 
1313 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1314 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1315 
1316 }
1317 
glEnableVertexAttribArray_enc(void * self,GLuint index)1318 void glEnableVertexAttribArray_enc(void *self , GLuint index)
1319 {
1320 	ENCODER_DEBUG_LOG("glEnableVertexAttribArray(index:%u)", index);
1321 	AEMU_SCOPED_TRACE("glEnableVertexAttribArray encode");
1322 
1323 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1324 	IOStream *stream = ctx->m_stream;
1325 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1326 	bool useChecksum = checksumCalculator->getVersion() > 0;
1327 
1328 	 unsigned char *ptr;
1329 	 unsigned char *buf;
1330 	 const size_t sizeWithoutChecksum = 8 + 4;
1331 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1332 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1333 	buf = stream->alloc(totalSize);
1334 	ptr = buf;
1335 	int tmp = OP_glEnableVertexAttribArray;memcpy(ptr, &tmp, 4); ptr += 4;
1336 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1337 
1338 		memcpy(ptr, &index, 4); ptr += 4;
1339 
1340 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1341 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1342 
1343 }
1344 
glFinish_enc(void * self)1345 void glFinish_enc(void *self )
1346 {
1347 	ENCODER_DEBUG_LOG("glFinish()");
1348 	AEMU_SCOPED_TRACE("glFinish encode");
1349 
1350 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1351 	IOStream *stream = ctx->m_stream;
1352 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1353 	bool useChecksum = checksumCalculator->getVersion() > 0;
1354 
1355 	 unsigned char *ptr;
1356 	 unsigned char *buf;
1357 	 const size_t sizeWithoutChecksum = 8;
1358 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1359 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1360 	buf = stream->alloc(totalSize);
1361 	ptr = buf;
1362 	int tmp = OP_glFinish;memcpy(ptr, &tmp, 4); ptr += 4;
1363 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1364 
1365 
1366 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1367 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1368 
1369 }
1370 
glFlush_enc(void * self)1371 void glFlush_enc(void *self )
1372 {
1373 	ENCODER_DEBUG_LOG("glFlush()");
1374 	AEMU_SCOPED_TRACE("glFlush encode");
1375 
1376 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1377 	IOStream *stream = ctx->m_stream;
1378 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1379 	bool useChecksum = checksumCalculator->getVersion() > 0;
1380 
1381 	 unsigned char *ptr;
1382 	 unsigned char *buf;
1383 	 const size_t sizeWithoutChecksum = 8;
1384 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1385 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1386 	buf = stream->alloc(totalSize);
1387 	ptr = buf;
1388 	int tmp = OP_glFlush;memcpy(ptr, &tmp, 4); ptr += 4;
1389 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1390 
1391 
1392 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1393 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1394 
1395 }
1396 
glFramebufferRenderbuffer_enc(void * self,GLenum target,GLenum attachment,GLenum renderbuffertarget,GLuint renderbuffer)1397 void glFramebufferRenderbuffer_enc(void *self , GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
1398 {
1399 	ENCODER_DEBUG_LOG("glFramebufferRenderbuffer(target:0x%08x, attachment:0x%08x, renderbuffertarget:0x%08x, renderbuffer:%u)", target, attachment, renderbuffertarget, renderbuffer);
1400 	AEMU_SCOPED_TRACE("glFramebufferRenderbuffer encode");
1401 
1402 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1403 	IOStream *stream = ctx->m_stream;
1404 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1405 	bool useChecksum = checksumCalculator->getVersion() > 0;
1406 
1407 	 unsigned char *ptr;
1408 	 unsigned char *buf;
1409 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
1410 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1411 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1412 	buf = stream->alloc(totalSize);
1413 	ptr = buf;
1414 	int tmp = OP_glFramebufferRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
1415 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1416 
1417 		memcpy(ptr, &target, 4); ptr += 4;
1418 		memcpy(ptr, &attachment, 4); ptr += 4;
1419 		memcpy(ptr, &renderbuffertarget, 4); ptr += 4;
1420 		memcpy(ptr, &renderbuffer, 4); ptr += 4;
1421 
1422 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1423 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1424 
1425 }
1426 
glFramebufferTexture2D_enc(void * self,GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level)1427 void glFramebufferTexture2D_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
1428 {
1429 	ENCODER_DEBUG_LOG("glFramebufferTexture2D(target:0x%08x, attachment:0x%08x, textarget:0x%08x, texture:%u, level:%d)", target, attachment, textarget, texture, level);
1430 	AEMU_SCOPED_TRACE("glFramebufferTexture2D encode");
1431 
1432 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1433 	IOStream *stream = ctx->m_stream;
1434 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1435 	bool useChecksum = checksumCalculator->getVersion() > 0;
1436 
1437 	 unsigned char *ptr;
1438 	 unsigned char *buf;
1439 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
1440 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1441 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1442 	buf = stream->alloc(totalSize);
1443 	ptr = buf;
1444 	int tmp = OP_glFramebufferTexture2D;memcpy(ptr, &tmp, 4); ptr += 4;
1445 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1446 
1447 		memcpy(ptr, &target, 4); ptr += 4;
1448 		memcpy(ptr, &attachment, 4); ptr += 4;
1449 		memcpy(ptr, &textarget, 4); ptr += 4;
1450 		memcpy(ptr, &texture, 4); ptr += 4;
1451 		memcpy(ptr, &level, 4); ptr += 4;
1452 
1453 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1454 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1455 
1456 }
1457 
glFrontFace_enc(void * self,GLenum mode)1458 void glFrontFace_enc(void *self , GLenum mode)
1459 {
1460 	ENCODER_DEBUG_LOG("glFrontFace(mode:0x%08x)", mode);
1461 	AEMU_SCOPED_TRACE("glFrontFace encode");
1462 
1463 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1464 	IOStream *stream = ctx->m_stream;
1465 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1466 	bool useChecksum = checksumCalculator->getVersion() > 0;
1467 
1468 	 unsigned char *ptr;
1469 	 unsigned char *buf;
1470 	 const size_t sizeWithoutChecksum = 8 + 4;
1471 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1472 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1473 	buf = stream->alloc(totalSize);
1474 	ptr = buf;
1475 	int tmp = OP_glFrontFace;memcpy(ptr, &tmp, 4); ptr += 4;
1476 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1477 
1478 		memcpy(ptr, &mode, 4); ptr += 4;
1479 
1480 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1481 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1482 
1483 }
1484 
glGenBuffers_enc(void * self,GLsizei n,GLuint * buffers)1485 void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers)
1486 {
1487 	ENCODER_DEBUG_LOG("glGenBuffers(n:%d, buffers:0x%08x)", n, buffers);
1488 	AEMU_SCOPED_TRACE("glGenBuffers encode");
1489 
1490 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1491 	IOStream *stream = ctx->m_stream;
1492 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1493 	bool useChecksum = checksumCalculator->getVersion() > 0;
1494 
1495 	const unsigned int __size_buffers =  (n * sizeof(GLuint));
1496 	 unsigned char *ptr;
1497 	 unsigned char *buf;
1498 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1499 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1500 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1501 	buf = stream->alloc(totalSize);
1502 	ptr = buf;
1503 	int tmp = OP_glGenBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1504 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1505 
1506 		memcpy(ptr, &n, 4); ptr += 4;
1507 	memcpy(ptr, &__size_buffers, 4); ptr += 4;
1508 
1509 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1510 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1511 
1512 	stream->readback(buffers, __size_buffers);
1513 	if (useChecksum) checksumCalculator->addBuffer(buffers, __size_buffers);
1514 	if (useChecksum) {
1515 		unsigned char *checksumBufPtr = NULL;
1516 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1517 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1518 		stream->readback(checksumBufPtr, checksumSize);
1519 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1520 			ALOGE("glGenBuffers: GL communication error, please report this issue to b.android.com.\n");
1521 			abort();
1522 		}
1523 	}
1524 }
1525 
glGenerateMipmap_enc(void * self,GLenum target)1526 void glGenerateMipmap_enc(void *self , GLenum target)
1527 {
1528 	ENCODER_DEBUG_LOG("glGenerateMipmap(target:0x%08x)", target);
1529 	AEMU_SCOPED_TRACE("glGenerateMipmap encode");
1530 
1531 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1532 	IOStream *stream = ctx->m_stream;
1533 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1534 	bool useChecksum = checksumCalculator->getVersion() > 0;
1535 
1536 	 unsigned char *ptr;
1537 	 unsigned char *buf;
1538 	 const size_t sizeWithoutChecksum = 8 + 4;
1539 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1540 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1541 	buf = stream->alloc(totalSize);
1542 	ptr = buf;
1543 	int tmp = OP_glGenerateMipmap;memcpy(ptr, &tmp, 4); ptr += 4;
1544 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1545 
1546 		memcpy(ptr, &target, 4); ptr += 4;
1547 
1548 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1549 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1550 
1551 }
1552 
glGenFramebuffers_enc(void * self,GLsizei n,GLuint * framebuffers)1553 void glGenFramebuffers_enc(void *self , GLsizei n, GLuint* framebuffers)
1554 {
1555 	ENCODER_DEBUG_LOG("glGenFramebuffers(n:%d, framebuffers:0x%08x)", n, framebuffers);
1556 	AEMU_SCOPED_TRACE("glGenFramebuffers encode");
1557 
1558 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1559 	IOStream *stream = ctx->m_stream;
1560 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1561 	bool useChecksum = checksumCalculator->getVersion() > 0;
1562 
1563 	const unsigned int __size_framebuffers =  (n * sizeof(GLuint));
1564 	 unsigned char *ptr;
1565 	 unsigned char *buf;
1566 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1567 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1568 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1569 	buf = stream->alloc(totalSize);
1570 	ptr = buf;
1571 	int tmp = OP_glGenFramebuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1572 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1573 
1574 		memcpy(ptr, &n, 4); ptr += 4;
1575 	memcpy(ptr, &__size_framebuffers, 4); ptr += 4;
1576 
1577 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1578 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1579 
1580 	stream->readback(framebuffers, __size_framebuffers);
1581 	if (useChecksum) checksumCalculator->addBuffer(framebuffers, __size_framebuffers);
1582 	if (useChecksum) {
1583 		unsigned char *checksumBufPtr = NULL;
1584 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1585 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1586 		stream->readback(checksumBufPtr, checksumSize);
1587 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1588 			ALOGE("glGenFramebuffers: GL communication error, please report this issue to b.android.com.\n");
1589 			abort();
1590 		}
1591 	}
1592 }
1593 
glGenRenderbuffers_enc(void * self,GLsizei n,GLuint * renderbuffers)1594 void glGenRenderbuffers_enc(void *self , GLsizei n, GLuint* renderbuffers)
1595 {
1596 	ENCODER_DEBUG_LOG("glGenRenderbuffers(n:%d, renderbuffers:0x%08x)", n, renderbuffers);
1597 	AEMU_SCOPED_TRACE("glGenRenderbuffers encode");
1598 
1599 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1600 	IOStream *stream = ctx->m_stream;
1601 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1602 	bool useChecksum = checksumCalculator->getVersion() > 0;
1603 
1604 	const unsigned int __size_renderbuffers =  (n * sizeof(GLuint));
1605 	 unsigned char *ptr;
1606 	 unsigned char *buf;
1607 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1608 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1609 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1610 	buf = stream->alloc(totalSize);
1611 	ptr = buf;
1612 	int tmp = OP_glGenRenderbuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1613 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1614 
1615 		memcpy(ptr, &n, 4); ptr += 4;
1616 	memcpy(ptr, &__size_renderbuffers, 4); ptr += 4;
1617 
1618 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1619 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1620 
1621 	stream->readback(renderbuffers, __size_renderbuffers);
1622 	if (useChecksum) checksumCalculator->addBuffer(renderbuffers, __size_renderbuffers);
1623 	if (useChecksum) {
1624 		unsigned char *checksumBufPtr = NULL;
1625 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1626 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1627 		stream->readback(checksumBufPtr, checksumSize);
1628 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1629 			ALOGE("glGenRenderbuffers: GL communication error, please report this issue to b.android.com.\n");
1630 			abort();
1631 		}
1632 	}
1633 }
1634 
glGenTextures_enc(void * self,GLsizei n,GLuint * textures)1635 void glGenTextures_enc(void *self , GLsizei n, GLuint* textures)
1636 {
1637 	ENCODER_DEBUG_LOG("glGenTextures(n:%d, textures:0x%08x)", n, textures);
1638 	AEMU_SCOPED_TRACE("glGenTextures encode");
1639 
1640 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1641 	IOStream *stream = ctx->m_stream;
1642 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1643 	bool useChecksum = checksumCalculator->getVersion() > 0;
1644 
1645 	const unsigned int __size_textures =  (n * sizeof(GLuint));
1646 	 unsigned char *ptr;
1647 	 unsigned char *buf;
1648 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1649 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1650 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1651 	buf = stream->alloc(totalSize);
1652 	ptr = buf;
1653 	int tmp = OP_glGenTextures;memcpy(ptr, &tmp, 4); ptr += 4;
1654 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1655 
1656 		memcpy(ptr, &n, 4); ptr += 4;
1657 	memcpy(ptr, &__size_textures, 4); ptr += 4;
1658 
1659 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1660 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1661 
1662 	stream->readback(textures, __size_textures);
1663 	if (useChecksum) checksumCalculator->addBuffer(textures, __size_textures);
1664 	if (useChecksum) {
1665 		unsigned char *checksumBufPtr = NULL;
1666 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1667 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1668 		stream->readback(checksumBufPtr, checksumSize);
1669 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1670 			ALOGE("glGenTextures: GL communication error, please report this issue to b.android.com.\n");
1671 			abort();
1672 		}
1673 	}
1674 }
1675 
glGetActiveAttrib_enc(void * self,GLuint program,GLuint index,GLsizei bufsize,GLsizei * length,GLint * size,GLenum * type,GLchar * name)1676 void glGetActiveAttrib_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
1677 {
1678 	ENCODER_DEBUG_LOG("glGetActiveAttrib(program:%u, index:%u, bufsize:%d, length:0x%08x, size:0x%08x, type:0x%08x, name:0x%08x)", program, index, bufsize, length, size, type, name);
1679 	AEMU_SCOPED_TRACE("glGetActiveAttrib encode");
1680 
1681 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1682 	IOStream *stream = ctx->m_stream;
1683 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1684 	bool useChecksum = checksumCalculator->getVersion() > 0;
1685 
1686 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
1687 	const unsigned int __size_size = ((size != NULL) ?  (sizeof(GLint)) : 0);
1688 	const unsigned int __size_type = ((type != NULL) ?  (sizeof(GLenum)) : 0);
1689 	const unsigned int __size_name = ((name != NULL) ?  bufsize : 0);
1690 	 unsigned char *ptr;
1691 	 unsigned char *buf;
1692 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
1693 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1694 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1695 	buf = stream->alloc(totalSize);
1696 	ptr = buf;
1697 	int tmp = OP_glGetActiveAttrib;memcpy(ptr, &tmp, 4); ptr += 4;
1698 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1699 
1700 		memcpy(ptr, &program, 4); ptr += 4;
1701 		memcpy(ptr, &index, 4); ptr += 4;
1702 		memcpy(ptr, &bufsize, 4); ptr += 4;
1703 	memcpy(ptr, &__size_length, 4); ptr += 4;
1704 	memcpy(ptr, &__size_size, 4); ptr += 4;
1705 	memcpy(ptr, &__size_type, 4); ptr += 4;
1706 	memcpy(ptr, &__size_name, 4); ptr += 4;
1707 
1708 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1709 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1710 
1711 	if (length != NULL) {
1712 		stream->readback(length, __size_length);
1713 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
1714 	}
1715 	if (size != NULL) {
1716 		stream->readback(size, __size_size);
1717 		if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
1718 	}
1719 	if (type != NULL) {
1720 		stream->readback(type, __size_type);
1721 		if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
1722 	}
1723 	if (name != NULL) {
1724 		stream->readback(name, __size_name);
1725 		if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
1726 	}
1727 	if (useChecksum) {
1728 		unsigned char *checksumBufPtr = NULL;
1729 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1730 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1731 		stream->readback(checksumBufPtr, checksumSize);
1732 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1733 			ALOGE("glGetActiveAttrib: GL communication error, please report this issue to b.android.com.\n");
1734 			abort();
1735 		}
1736 	}
1737 }
1738 
glGetActiveUniform_enc(void * self,GLuint program,GLuint index,GLsizei bufsize,GLsizei * length,GLint * size,GLenum * type,GLchar * name)1739 void glGetActiveUniform_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
1740 {
1741 	ENCODER_DEBUG_LOG("glGetActiveUniform(program:%u, index:%u, bufsize:%d, length:0x%08x, size:0x%08x, type:0x%08x, name:0x%08x)", program, index, bufsize, length, size, type, name);
1742 	AEMU_SCOPED_TRACE("glGetActiveUniform encode");
1743 
1744 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1745 	IOStream *stream = ctx->m_stream;
1746 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1747 	bool useChecksum = checksumCalculator->getVersion() > 0;
1748 
1749 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
1750 	const unsigned int __size_size = ((size != NULL) ?  (sizeof(GLint)) : 0);
1751 	const unsigned int __size_type = ((type != NULL) ?  (sizeof(GLenum)) : 0);
1752 	const unsigned int __size_name = ((name != NULL) ?  bufsize : 0);
1753 	 unsigned char *ptr;
1754 	 unsigned char *buf;
1755 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
1756 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1757 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1758 	buf = stream->alloc(totalSize);
1759 	ptr = buf;
1760 	int tmp = OP_glGetActiveUniform;memcpy(ptr, &tmp, 4); ptr += 4;
1761 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1762 
1763 		memcpy(ptr, &program, 4); ptr += 4;
1764 		memcpy(ptr, &index, 4); ptr += 4;
1765 		memcpy(ptr, &bufsize, 4); ptr += 4;
1766 	memcpy(ptr, &__size_length, 4); ptr += 4;
1767 	memcpy(ptr, &__size_size, 4); ptr += 4;
1768 	memcpy(ptr, &__size_type, 4); ptr += 4;
1769 	memcpy(ptr, &__size_name, 4); ptr += 4;
1770 
1771 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1772 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1773 
1774 	if (length != NULL) {
1775 		stream->readback(length, __size_length);
1776 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
1777 	}
1778 	if (size != NULL) {
1779 		stream->readback(size, __size_size);
1780 		if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
1781 	}
1782 	if (type != NULL) {
1783 		stream->readback(type, __size_type);
1784 		if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
1785 	}
1786 	if (name != NULL) {
1787 		stream->readback(name, __size_name);
1788 		if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
1789 	}
1790 	if (useChecksum) {
1791 		unsigned char *checksumBufPtr = NULL;
1792 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1793 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1794 		stream->readback(checksumBufPtr, checksumSize);
1795 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1796 			ALOGE("glGetActiveUniform: GL communication error, please report this issue to b.android.com.\n");
1797 			abort();
1798 		}
1799 	}
1800 }
1801 
glGetAttachedShaders_enc(void * self,GLuint program,GLsizei maxcount,GLsizei * count,GLuint * shaders)1802 void glGetAttachedShaders_enc(void *self , GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
1803 {
1804 	ENCODER_DEBUG_LOG("glGetAttachedShaders(program:%u, maxcount:%d, count:0x%08x, shaders:0x%08x)", program, maxcount, count, shaders);
1805 	AEMU_SCOPED_TRACE("glGetAttachedShaders encode");
1806 
1807 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1808 	IOStream *stream = ctx->m_stream;
1809 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1810 	bool useChecksum = checksumCalculator->getVersion() > 0;
1811 
1812 	const unsigned int __size_count = ((count != NULL) ?  (sizeof(GLsizei)) : 0);
1813 	const unsigned int __size_shaders =  (maxcount*sizeof(GLuint));
1814 	 unsigned char *ptr;
1815 	 unsigned char *buf;
1816 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
1817 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1818 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1819 	buf = stream->alloc(totalSize);
1820 	ptr = buf;
1821 	int tmp = OP_glGetAttachedShaders;memcpy(ptr, &tmp, 4); ptr += 4;
1822 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1823 
1824 		memcpy(ptr, &program, 4); ptr += 4;
1825 		memcpy(ptr, &maxcount, 4); ptr += 4;
1826 	memcpy(ptr, &__size_count, 4); ptr += 4;
1827 	memcpy(ptr, &__size_shaders, 4); ptr += 4;
1828 
1829 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1830 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1831 
1832 	if (count != NULL) {
1833 		stream->readback(count, __size_count);
1834 		if (useChecksum) checksumCalculator->addBuffer(count, __size_count);
1835 	}
1836 	stream->readback(shaders, __size_shaders);
1837 	if (useChecksum) checksumCalculator->addBuffer(shaders, __size_shaders);
1838 	if (useChecksum) {
1839 		unsigned char *checksumBufPtr = NULL;
1840 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1841 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1842 		stream->readback(checksumBufPtr, checksumSize);
1843 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1844 			ALOGE("glGetAttachedShaders: GL communication error, please report this issue to b.android.com.\n");
1845 			abort();
1846 		}
1847 	}
1848 }
1849 
glGetAttribLocation_enc(void * self,GLuint program,const GLchar * name)1850 int glGetAttribLocation_enc(void *self , GLuint program, const GLchar* name)
1851 {
1852 	ENCODER_DEBUG_LOG("glGetAttribLocation(program:%u, name:0x%08x)", program, name);
1853 	AEMU_SCOPED_TRACE("glGetAttribLocation encode");
1854 
1855 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1856 	IOStream *stream = ctx->m_stream;
1857 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1858 	bool useChecksum = checksumCalculator->getVersion() > 0;
1859 
1860 	const unsigned int __size_name =  (strlen(name) + 1);
1861 	 unsigned char *ptr;
1862 	 unsigned char *buf;
1863 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
1864 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1865 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1866 	buf = stream->alloc(totalSize);
1867 	ptr = buf;
1868 	int tmp = OP_glGetAttribLocation;memcpy(ptr, &tmp, 4); ptr += 4;
1869 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1870 
1871 		memcpy(ptr, &program, 4); ptr += 4;
1872 	memcpy(ptr, &__size_name, 4); ptr += 4;
1873 	memcpy(ptr, name, __size_name);ptr += __size_name;
1874 
1875 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1876 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1877 
1878 
1879 	int retval;
1880 	stream->readback(&retval, 4);
1881 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
1882 	if (useChecksum) {
1883 		unsigned char *checksumBufPtr = NULL;
1884 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1885 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1886 		stream->readback(checksumBufPtr, checksumSize);
1887 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1888 			ALOGE("glGetAttribLocation: GL communication error, please report this issue to b.android.com.\n");
1889 			abort();
1890 		}
1891 	}
1892 	return retval;
1893 }
1894 
glGetBooleanv_enc(void * self,GLenum pname,GLboolean * params)1895 void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params)
1896 {
1897 	ENCODER_DEBUG_LOG("glGetBooleanv(pname:0x%08x, params:0x%08x)", pname, params);
1898 	AEMU_SCOPED_TRACE("glGetBooleanv encode");
1899 
1900 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1901 	IOStream *stream = ctx->m_stream;
1902 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1903 	bool useChecksum = checksumCalculator->getVersion() > 0;
1904 
1905 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLboolean));
1906 	 unsigned char *ptr;
1907 	 unsigned char *buf;
1908 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1909 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1910 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1911 	buf = stream->alloc(totalSize);
1912 	ptr = buf;
1913 	int tmp = OP_glGetBooleanv;memcpy(ptr, &tmp, 4); ptr += 4;
1914 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1915 
1916 		memcpy(ptr, &pname, 4); ptr += 4;
1917 	memcpy(ptr, &__size_params, 4); ptr += 4;
1918 
1919 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1920 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1921 
1922 	stream->readback(params, __size_params);
1923 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
1924 	if (useChecksum) {
1925 		unsigned char *checksumBufPtr = NULL;
1926 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1927 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1928 		stream->readback(checksumBufPtr, checksumSize);
1929 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1930 			ALOGE("glGetBooleanv: GL communication error, please report this issue to b.android.com.\n");
1931 			abort();
1932 		}
1933 	}
1934 }
1935 
glGetBufferParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)1936 void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
1937 {
1938 	ENCODER_DEBUG_LOG("glGetBufferParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
1939 	AEMU_SCOPED_TRACE("glGetBufferParameteriv encode");
1940 
1941 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1942 	IOStream *stream = ctx->m_stream;
1943 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1944 	bool useChecksum = checksumCalculator->getVersion() > 0;
1945 
1946 	const unsigned int __size_params =  (sizeof(GLint));
1947 	 unsigned char *ptr;
1948 	 unsigned char *buf;
1949 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
1950 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1951 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1952 	buf = stream->alloc(totalSize);
1953 	ptr = buf;
1954 	int tmp = OP_glGetBufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
1955 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1956 
1957 		memcpy(ptr, &target, 4); ptr += 4;
1958 		memcpy(ptr, &pname, 4); ptr += 4;
1959 	memcpy(ptr, &__size_params, 4); ptr += 4;
1960 
1961 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1962 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1963 
1964 	stream->readback(params, __size_params);
1965 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
1966 	if (useChecksum) {
1967 		unsigned char *checksumBufPtr = NULL;
1968 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
1969 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1970 		stream->readback(checksumBufPtr, checksumSize);
1971 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1972 			ALOGE("glGetBufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
1973 			abort();
1974 		}
1975 	}
1976 }
1977 
glGetError_enc(void * self)1978 GLenum glGetError_enc(void *self )
1979 {
1980 	ENCODER_DEBUG_LOG("glGetError()");
1981 	AEMU_SCOPED_TRACE("glGetError encode");
1982 
1983 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1984 	IOStream *stream = ctx->m_stream;
1985 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1986 	bool useChecksum = checksumCalculator->getVersion() > 0;
1987 
1988 	 unsigned char *ptr;
1989 	 unsigned char *buf;
1990 	 const size_t sizeWithoutChecksum = 8;
1991 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1992 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1993 	buf = stream->alloc(totalSize);
1994 	ptr = buf;
1995 	int tmp = OP_glGetError;memcpy(ptr, &tmp, 4); ptr += 4;
1996 	memcpy(ptr, &totalSize, 4);  ptr += 4;
1997 
1998 
1999 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2000 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2001 
2002 
2003 	GLenum retval;
2004 	stream->readback(&retval, 4);
2005 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
2006 	if (useChecksum) {
2007 		unsigned char *checksumBufPtr = NULL;
2008 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2009 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2010 		stream->readback(checksumBufPtr, checksumSize);
2011 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2012 			ALOGE("glGetError: GL communication error, please report this issue to b.android.com.\n");
2013 			abort();
2014 		}
2015 	}
2016 	return retval;
2017 }
2018 
glGetFloatv_enc(void * self,GLenum pname,GLfloat * params)2019 void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params)
2020 {
2021 	ENCODER_DEBUG_LOG("glGetFloatv(pname:0x%08x, params:0x%08x)", pname, params);
2022 	AEMU_SCOPED_TRACE("glGetFloatv encode");
2023 
2024 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2025 	IOStream *stream = ctx->m_stream;
2026 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2027 	bool useChecksum = checksumCalculator->getVersion() > 0;
2028 
2029 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
2030 	 unsigned char *ptr;
2031 	 unsigned char *buf;
2032 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
2033 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2034 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2035 	buf = stream->alloc(totalSize);
2036 	ptr = buf;
2037 	int tmp = OP_glGetFloatv;memcpy(ptr, &tmp, 4); ptr += 4;
2038 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2039 
2040 		memcpy(ptr, &pname, 4); ptr += 4;
2041 	memcpy(ptr, &__size_params, 4); ptr += 4;
2042 
2043 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2044 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2045 
2046 	stream->readback(params, __size_params);
2047 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2048 	if (useChecksum) {
2049 		unsigned char *checksumBufPtr = NULL;
2050 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2051 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2052 		stream->readback(checksumBufPtr, checksumSize);
2053 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2054 			ALOGE("glGetFloatv: GL communication error, please report this issue to b.android.com.\n");
2055 			abort();
2056 		}
2057 	}
2058 }
2059 
glGetFramebufferAttachmentParameteriv_enc(void * self,GLenum target,GLenum attachment,GLenum pname,GLint * params)2060 void glGetFramebufferAttachmentParameteriv_enc(void *self , GLenum target, GLenum attachment, GLenum pname, GLint* params)
2061 {
2062 	ENCODER_DEBUG_LOG("glGetFramebufferAttachmentParameteriv(target:0x%08x, attachment:0x%08x, pname:0x%08x, params:0x%08x)", target, attachment, pname, params);
2063 	AEMU_SCOPED_TRACE("glGetFramebufferAttachmentParameteriv encode");
2064 
2065 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2066 	IOStream *stream = ctx->m_stream;
2067 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2068 	bool useChecksum = checksumCalculator->getVersion() > 0;
2069 
2070 	const unsigned int __size_params =  (sizeof(GLint));
2071 	 unsigned char *ptr;
2072 	 unsigned char *buf;
2073 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
2074 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2075 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2076 	buf = stream->alloc(totalSize);
2077 	ptr = buf;
2078 	int tmp = OP_glGetFramebufferAttachmentParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2079 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2080 
2081 		memcpy(ptr, &target, 4); ptr += 4;
2082 		memcpy(ptr, &attachment, 4); ptr += 4;
2083 		memcpy(ptr, &pname, 4); ptr += 4;
2084 	memcpy(ptr, &__size_params, 4); ptr += 4;
2085 
2086 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2087 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2088 
2089 	stream->readback(params, __size_params);
2090 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2091 	if (useChecksum) {
2092 		unsigned char *checksumBufPtr = NULL;
2093 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2094 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2095 		stream->readback(checksumBufPtr, checksumSize);
2096 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2097 			ALOGE("glGetFramebufferAttachmentParameteriv: GL communication error, please report this issue to b.android.com.\n");
2098 			abort();
2099 		}
2100 	}
2101 }
2102 
glGetIntegerv_enc(void * self,GLenum pname,GLint * params)2103 void glGetIntegerv_enc(void *self , GLenum pname, GLint* params)
2104 {
2105 	ENCODER_DEBUG_LOG("glGetIntegerv(pname:0x%08x, params:0x%08x)", pname, params);
2106 	AEMU_SCOPED_TRACE("glGetIntegerv encode");
2107 
2108 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2109 	IOStream *stream = ctx->m_stream;
2110 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2111 	bool useChecksum = checksumCalculator->getVersion() > 0;
2112 
2113 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
2114 	 unsigned char *ptr;
2115 	 unsigned char *buf;
2116 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
2117 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2118 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2119 	buf = stream->alloc(totalSize);
2120 	ptr = buf;
2121 	int tmp = OP_glGetIntegerv;memcpy(ptr, &tmp, 4); ptr += 4;
2122 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2123 
2124 		memcpy(ptr, &pname, 4); ptr += 4;
2125 	memcpy(ptr, &__size_params, 4); ptr += 4;
2126 
2127 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2128 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2129 
2130 	stream->readback(params, __size_params);
2131 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2132 	if (useChecksum) {
2133 		unsigned char *checksumBufPtr = NULL;
2134 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2135 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2136 		stream->readback(checksumBufPtr, checksumSize);
2137 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2138 			ALOGE("glGetIntegerv: GL communication error, please report this issue to b.android.com.\n");
2139 			abort();
2140 		}
2141 	}
2142 }
2143 
glGetProgramiv_enc(void * self,GLuint program,GLenum pname,GLint * params)2144 void glGetProgramiv_enc(void *self , GLuint program, GLenum pname, GLint* params)
2145 {
2146 	ENCODER_DEBUG_LOG("glGetProgramiv(program:%u, pname:0x%08x, params:0x%08x)", program, pname, params);
2147 	AEMU_SCOPED_TRACE("glGetProgramiv encode");
2148 
2149 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2150 	IOStream *stream = ctx->m_stream;
2151 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2152 	bool useChecksum = checksumCalculator->getVersion() > 0;
2153 
2154 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
2155 	 unsigned char *ptr;
2156 	 unsigned char *buf;
2157 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2158 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2159 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2160 	buf = stream->alloc(totalSize);
2161 	ptr = buf;
2162 	int tmp = OP_glGetProgramiv;memcpy(ptr, &tmp, 4); ptr += 4;
2163 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2164 
2165 		memcpy(ptr, &program, 4); ptr += 4;
2166 		memcpy(ptr, &pname, 4); ptr += 4;
2167 	memcpy(ptr, &__size_params, 4); ptr += 4;
2168 
2169 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2170 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2171 
2172 	stream->readback(params, __size_params);
2173 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2174 	if (useChecksum) {
2175 		unsigned char *checksumBufPtr = NULL;
2176 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2177 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2178 		stream->readback(checksumBufPtr, checksumSize);
2179 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2180 			ALOGE("glGetProgramiv: GL communication error, please report this issue to b.android.com.\n");
2181 			abort();
2182 		}
2183 	}
2184 }
2185 
glGetProgramInfoLog_enc(void * self,GLuint program,GLsizei bufsize,GLsizei * length,GLchar * infolog)2186 void glGetProgramInfoLog_enc(void *self , GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
2187 {
2188 	ENCODER_DEBUG_LOG("glGetProgramInfoLog(program:%u, bufsize:%d, length:0x%08x, infolog:0x%08x)", program, bufsize, length, infolog);
2189 	AEMU_SCOPED_TRACE("glGetProgramInfoLog encode");
2190 
2191 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2192 	IOStream *stream = ctx->m_stream;
2193 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2194 	bool useChecksum = checksumCalculator->getVersion() > 0;
2195 
2196 	const unsigned int __size_length = ((length != NULL) ?  sizeof(GLsizei) : 0);
2197 	const unsigned int __size_infolog =  bufsize;
2198 	 unsigned char *ptr;
2199 	 unsigned char *buf;
2200 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2201 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2202 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2203 	buf = stream->alloc(totalSize);
2204 	ptr = buf;
2205 	int tmp = OP_glGetProgramInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
2206 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2207 
2208 		memcpy(ptr, &program, 4); ptr += 4;
2209 		memcpy(ptr, &bufsize, 4); ptr += 4;
2210 	memcpy(ptr, &__size_length, 4); ptr += 4;
2211 	memcpy(ptr, &__size_infolog, 4); ptr += 4;
2212 
2213 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2214 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2215 
2216 	if (length != NULL) {
2217 		stream->readback(length, __size_length);
2218 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2219 	}
2220 	stream->readback(infolog, __size_infolog);
2221 	if (useChecksum) checksumCalculator->addBuffer(infolog, __size_infolog);
2222 	if (useChecksum) {
2223 		unsigned char *checksumBufPtr = NULL;
2224 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2225 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2226 		stream->readback(checksumBufPtr, checksumSize);
2227 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2228 			ALOGE("glGetProgramInfoLog: GL communication error, please report this issue to b.android.com.\n");
2229 			abort();
2230 		}
2231 	}
2232 }
2233 
glGetRenderbufferParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)2234 void glGetRenderbufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
2235 {
2236 	ENCODER_DEBUG_LOG("glGetRenderbufferParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
2237 	AEMU_SCOPED_TRACE("glGetRenderbufferParameteriv encode");
2238 
2239 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2240 	IOStream *stream = ctx->m_stream;
2241 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2242 	bool useChecksum = checksumCalculator->getVersion() > 0;
2243 
2244 	const unsigned int __size_params =  sizeof(GLint);
2245 	 unsigned char *ptr;
2246 	 unsigned char *buf;
2247 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2248 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2249 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2250 	buf = stream->alloc(totalSize);
2251 	ptr = buf;
2252 	int tmp = OP_glGetRenderbufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2253 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2254 
2255 		memcpy(ptr, &target, 4); ptr += 4;
2256 		memcpy(ptr, &pname, 4); ptr += 4;
2257 	memcpy(ptr, &__size_params, 4); ptr += 4;
2258 
2259 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2260 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2261 
2262 	stream->readback(params, __size_params);
2263 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2264 	if (useChecksum) {
2265 		unsigned char *checksumBufPtr = NULL;
2266 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2267 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2268 		stream->readback(checksumBufPtr, checksumSize);
2269 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2270 			ALOGE("glGetRenderbufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
2271 			abort();
2272 		}
2273 	}
2274 }
2275 
glGetShaderiv_enc(void * self,GLuint shader,GLenum pname,GLint * params)2276 void glGetShaderiv_enc(void *self , GLuint shader, GLenum pname, GLint* params)
2277 {
2278 	ENCODER_DEBUG_LOG("glGetShaderiv(shader:%u, pname:0x%08x, params:0x%08x)", shader, pname, params);
2279 	AEMU_SCOPED_TRACE("glGetShaderiv encode");
2280 
2281 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2282 	IOStream *stream = ctx->m_stream;
2283 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2284 	bool useChecksum = checksumCalculator->getVersion() > 0;
2285 
2286 	const unsigned int __size_params =  sizeof(GLint);
2287 	 unsigned char *ptr;
2288 	 unsigned char *buf;
2289 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2290 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2291 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2292 	buf = stream->alloc(totalSize);
2293 	ptr = buf;
2294 	int tmp = OP_glGetShaderiv;memcpy(ptr, &tmp, 4); ptr += 4;
2295 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2296 
2297 		memcpy(ptr, &shader, 4); ptr += 4;
2298 		memcpy(ptr, &pname, 4); ptr += 4;
2299 	memcpy(ptr, &__size_params, 4); ptr += 4;
2300 
2301 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2302 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2303 
2304 	stream->readback(params, __size_params);
2305 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2306 	if (useChecksum) {
2307 		unsigned char *checksumBufPtr = NULL;
2308 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2309 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2310 		stream->readback(checksumBufPtr, checksumSize);
2311 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2312 			ALOGE("glGetShaderiv: GL communication error, please report this issue to b.android.com.\n");
2313 			abort();
2314 		}
2315 	}
2316 }
2317 
glGetShaderInfoLog_enc(void * self,GLuint shader,GLsizei bufsize,GLsizei * length,GLchar * infolog)2318 void glGetShaderInfoLog_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
2319 {
2320 	ENCODER_DEBUG_LOG("glGetShaderInfoLog(shader:%u, bufsize:%d, length:0x%08x, infolog:0x%08x)", shader, bufsize, length, infolog);
2321 	AEMU_SCOPED_TRACE("glGetShaderInfoLog encode");
2322 
2323 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2324 	IOStream *stream = ctx->m_stream;
2325 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2326 	bool useChecksum = checksumCalculator->getVersion() > 0;
2327 
2328 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
2329 	const unsigned int __size_infolog =  bufsize;
2330 	 unsigned char *ptr;
2331 	 unsigned char *buf;
2332 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2333 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2334 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2335 	buf = stream->alloc(totalSize);
2336 	ptr = buf;
2337 	int tmp = OP_glGetShaderInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
2338 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2339 
2340 		memcpy(ptr, &shader, 4); ptr += 4;
2341 		memcpy(ptr, &bufsize, 4); ptr += 4;
2342 	memcpy(ptr, &__size_length, 4); ptr += 4;
2343 	memcpy(ptr, &__size_infolog, 4); ptr += 4;
2344 
2345 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2346 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2347 
2348 	if (length != NULL) {
2349 		stream->readback(length, __size_length);
2350 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2351 	}
2352 	stream->readback(infolog, __size_infolog);
2353 	if (useChecksum) checksumCalculator->addBuffer(infolog, __size_infolog);
2354 	if (useChecksum) {
2355 		unsigned char *checksumBufPtr = NULL;
2356 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2357 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2358 		stream->readback(checksumBufPtr, checksumSize);
2359 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2360 			ALOGE("glGetShaderInfoLog: GL communication error, please report this issue to b.android.com.\n");
2361 			abort();
2362 		}
2363 	}
2364 }
2365 
glGetShaderPrecisionFormat_enc(void * self,GLenum shadertype,GLenum precisiontype,GLint * range,GLint * precision)2366 void glGetShaderPrecisionFormat_enc(void *self , GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
2367 {
2368 	ENCODER_DEBUG_LOG("glGetShaderPrecisionFormat(shadertype:0x%08x, precisiontype:0x%08x, range:0x%08x, precision:0x%08x)", shadertype, precisiontype, range, precision);
2369 	AEMU_SCOPED_TRACE("glGetShaderPrecisionFormat encode");
2370 
2371 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2372 	IOStream *stream = ctx->m_stream;
2373 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2374 	bool useChecksum = checksumCalculator->getVersion() > 0;
2375 
2376 	const unsigned int __size_range =  (2 * sizeof(GLint));
2377 	const unsigned int __size_precision =  (sizeof(GLint));
2378 	 unsigned char *ptr;
2379 	 unsigned char *buf;
2380 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2381 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2382 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2383 	buf = stream->alloc(totalSize);
2384 	ptr = buf;
2385 	int tmp = OP_glGetShaderPrecisionFormat;memcpy(ptr, &tmp, 4); ptr += 4;
2386 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2387 
2388 		memcpy(ptr, &shadertype, 4); ptr += 4;
2389 		memcpy(ptr, &precisiontype, 4); ptr += 4;
2390 	memcpy(ptr, &__size_range, 4); ptr += 4;
2391 	memcpy(ptr, &__size_precision, 4); ptr += 4;
2392 
2393 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2394 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2395 
2396 	stream->readback(range, __size_range);
2397 	if (useChecksum) checksumCalculator->addBuffer(range, __size_range);
2398 	stream->readback(precision, __size_precision);
2399 	if (useChecksum) checksumCalculator->addBuffer(precision, __size_precision);
2400 	if (useChecksum) {
2401 		unsigned char *checksumBufPtr = NULL;
2402 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2403 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2404 		stream->readback(checksumBufPtr, checksumSize);
2405 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2406 			ALOGE("glGetShaderPrecisionFormat: GL communication error, please report this issue to b.android.com.\n");
2407 			abort();
2408 		}
2409 	}
2410 }
2411 
glGetShaderSource_enc(void * self,GLuint shader,GLsizei bufsize,GLsizei * length,GLchar * source)2412 void glGetShaderSource_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
2413 {
2414 	ENCODER_DEBUG_LOG("glGetShaderSource(shader:%u, bufsize:%d, length:0x%08x, source:0x%08x)", shader, bufsize, length, source);
2415 	AEMU_SCOPED_TRACE("glGetShaderSource encode");
2416 
2417 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2418 	IOStream *stream = ctx->m_stream;
2419 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2420 	bool useChecksum = checksumCalculator->getVersion() > 0;
2421 
2422 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
2423 	const unsigned int __size_source =  bufsize;
2424 	 unsigned char *ptr;
2425 	 unsigned char *buf;
2426 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2427 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2428 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2429 	buf = stream->alloc(totalSize);
2430 	ptr = buf;
2431 	int tmp = OP_glGetShaderSource;memcpy(ptr, &tmp, 4); ptr += 4;
2432 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2433 
2434 		memcpy(ptr, &shader, 4); ptr += 4;
2435 		memcpy(ptr, &bufsize, 4); ptr += 4;
2436 	memcpy(ptr, &__size_length, 4); ptr += 4;
2437 	memcpy(ptr, &__size_source, 4); ptr += 4;
2438 
2439 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2440 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2441 
2442 	if (length != NULL) {
2443 		stream->readback(length, __size_length);
2444 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2445 	}
2446 	stream->readback(source, __size_source);
2447 	if (useChecksum) checksumCalculator->addBuffer(source, __size_source);
2448 	if (useChecksum) {
2449 		unsigned char *checksumBufPtr = NULL;
2450 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2451 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2452 		stream->readback(checksumBufPtr, checksumSize);
2453 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2454 			ALOGE("glGetShaderSource: GL communication error, please report this issue to b.android.com.\n");
2455 			abort();
2456 		}
2457 	}
2458 }
2459 
glGetTexParameterfv_enc(void * self,GLenum target,GLenum pname,GLfloat * params)2460 void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* params)
2461 {
2462 	ENCODER_DEBUG_LOG("glGetTexParameterfv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
2463 	AEMU_SCOPED_TRACE("glGetTexParameterfv encode");
2464 
2465 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2466 	IOStream *stream = ctx->m_stream;
2467 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2468 	bool useChecksum = checksumCalculator->getVersion() > 0;
2469 
2470 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
2471 	 unsigned char *ptr;
2472 	 unsigned char *buf;
2473 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2474 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2475 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2476 	buf = stream->alloc(totalSize);
2477 	ptr = buf;
2478 	int tmp = OP_glGetTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
2479 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2480 
2481 		memcpy(ptr, &target, 4); ptr += 4;
2482 		memcpy(ptr, &pname, 4); ptr += 4;
2483 	memcpy(ptr, &__size_params, 4); ptr += 4;
2484 
2485 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2486 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2487 
2488 	stream->readback(params, __size_params);
2489 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2490 	if (useChecksum) {
2491 		unsigned char *checksumBufPtr = NULL;
2492 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2493 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2494 		stream->readback(checksumBufPtr, checksumSize);
2495 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2496 			ALOGE("glGetTexParameterfv: GL communication error, please report this issue to b.android.com.\n");
2497 			abort();
2498 		}
2499 	}
2500 }
2501 
glGetTexParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)2502 void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
2503 {
2504 	ENCODER_DEBUG_LOG("glGetTexParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
2505 	AEMU_SCOPED_TRACE("glGetTexParameteriv encode");
2506 
2507 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2508 	IOStream *stream = ctx->m_stream;
2509 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2510 	bool useChecksum = checksumCalculator->getVersion() > 0;
2511 
2512 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
2513 	 unsigned char *ptr;
2514 	 unsigned char *buf;
2515 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2516 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2517 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2518 	buf = stream->alloc(totalSize);
2519 	ptr = buf;
2520 	int tmp = OP_glGetTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2521 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2522 
2523 		memcpy(ptr, &target, 4); ptr += 4;
2524 		memcpy(ptr, &pname, 4); ptr += 4;
2525 	memcpy(ptr, &__size_params, 4); ptr += 4;
2526 
2527 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2528 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2529 
2530 	stream->readback(params, __size_params);
2531 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2532 	if (useChecksum) {
2533 		unsigned char *checksumBufPtr = NULL;
2534 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2535 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2536 		stream->readback(checksumBufPtr, checksumSize);
2537 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2538 			ALOGE("glGetTexParameteriv: GL communication error, please report this issue to b.android.com.\n");
2539 			abort();
2540 		}
2541 	}
2542 }
2543 
glGetUniformfv_enc(void * self,GLuint program,GLint location,GLfloat * params)2544 void glGetUniformfv_enc(void *self , GLuint program, GLint location, GLfloat* params)
2545 {
2546 	ENCODER_DEBUG_LOG("glGetUniformfv(program:%u, location:%d, params:0x%08x)", program, location, params);
2547 	AEMU_SCOPED_TRACE("glGetUniformfv encode");
2548 
2549 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2550 	IOStream *stream = ctx->m_stream;
2551 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2552 	bool useChecksum = checksumCalculator->getVersion() > 0;
2553 
2554 	const unsigned int __size_params =  glSizeof(glesv2_enc::uniformType(self, program, location));
2555 	 unsigned char *ptr;
2556 	 unsigned char *buf;
2557 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2558 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2559 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2560 	buf = stream->alloc(totalSize);
2561 	ptr = buf;
2562 	int tmp = OP_glGetUniformfv;memcpy(ptr, &tmp, 4); ptr += 4;
2563 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2564 
2565 		memcpy(ptr, &program, 4); ptr += 4;
2566 		memcpy(ptr, &location, 4); ptr += 4;
2567 	memcpy(ptr, &__size_params, 4); ptr += 4;
2568 
2569 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2570 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2571 
2572 	stream->readback(params, __size_params);
2573 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2574 	if (useChecksum) {
2575 		unsigned char *checksumBufPtr = NULL;
2576 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2577 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2578 		stream->readback(checksumBufPtr, checksumSize);
2579 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2580 			ALOGE("glGetUniformfv: GL communication error, please report this issue to b.android.com.\n");
2581 			abort();
2582 		}
2583 	}
2584 }
2585 
glGetUniformiv_enc(void * self,GLuint program,GLint location,GLint * params)2586 void glGetUniformiv_enc(void *self , GLuint program, GLint location, GLint* params)
2587 {
2588 	ENCODER_DEBUG_LOG("glGetUniformiv(program:%u, location:%d, params:0x%08x)", program, location, params);
2589 	AEMU_SCOPED_TRACE("glGetUniformiv encode");
2590 
2591 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2592 	IOStream *stream = ctx->m_stream;
2593 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2594 	bool useChecksum = checksumCalculator->getVersion() > 0;
2595 
2596 	const unsigned int __size_params =  glSizeof(glesv2_enc::uniformType(self, program, location));
2597 	 unsigned char *ptr;
2598 	 unsigned char *buf;
2599 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2600 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2601 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2602 	buf = stream->alloc(totalSize);
2603 	ptr = buf;
2604 	int tmp = OP_glGetUniformiv;memcpy(ptr, &tmp, 4); ptr += 4;
2605 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2606 
2607 		memcpy(ptr, &program, 4); ptr += 4;
2608 		memcpy(ptr, &location, 4); ptr += 4;
2609 	memcpy(ptr, &__size_params, 4); ptr += 4;
2610 
2611 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2612 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2613 
2614 	stream->readback(params, __size_params);
2615 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2616 	if (useChecksum) {
2617 		unsigned char *checksumBufPtr = NULL;
2618 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2619 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2620 		stream->readback(checksumBufPtr, checksumSize);
2621 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2622 			ALOGE("glGetUniformiv: GL communication error, please report this issue to b.android.com.\n");
2623 			abort();
2624 		}
2625 	}
2626 }
2627 
glGetUniformLocation_enc(void * self,GLuint program,const GLchar * name)2628 int glGetUniformLocation_enc(void *self , GLuint program, const GLchar* name)
2629 {
2630 	ENCODER_DEBUG_LOG("glGetUniformLocation(program:%u, name:0x%08x)", program, name);
2631 	AEMU_SCOPED_TRACE("glGetUniformLocation encode");
2632 
2633 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2634 	IOStream *stream = ctx->m_stream;
2635 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2636 	bool useChecksum = checksumCalculator->getVersion() > 0;
2637 
2638 	const unsigned int __size_name =  (strlen(name) + 1);
2639 	 unsigned char *ptr;
2640 	 unsigned char *buf;
2641 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
2642 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2643 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2644 	buf = stream->alloc(totalSize);
2645 	ptr = buf;
2646 	int tmp = OP_glGetUniformLocation;memcpy(ptr, &tmp, 4); ptr += 4;
2647 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2648 
2649 		memcpy(ptr, &program, 4); ptr += 4;
2650 	memcpy(ptr, &__size_name, 4); ptr += 4;
2651 	memcpy(ptr, name, __size_name);ptr += __size_name;
2652 
2653 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2654 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2655 
2656 
2657 	int retval;
2658 	stream->readback(&retval, 4);
2659 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
2660 	if (useChecksum) {
2661 		unsigned char *checksumBufPtr = NULL;
2662 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2663 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2664 		stream->readback(checksumBufPtr, checksumSize);
2665 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2666 			ALOGE("glGetUniformLocation: GL communication error, please report this issue to b.android.com.\n");
2667 			abort();
2668 		}
2669 	}
2670 	return retval;
2671 }
2672 
glGetVertexAttribfv_enc(void * self,GLuint index,GLenum pname,GLfloat * params)2673 void glGetVertexAttribfv_enc(void *self , GLuint index, GLenum pname, GLfloat* params)
2674 {
2675 	ENCODER_DEBUG_LOG("glGetVertexAttribfv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
2676 	AEMU_SCOPED_TRACE("glGetVertexAttribfv encode");
2677 
2678 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2679 	IOStream *stream = ctx->m_stream;
2680 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2681 	bool useChecksum = checksumCalculator->getVersion() > 0;
2682 
2683 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
2684 	 unsigned char *ptr;
2685 	 unsigned char *buf;
2686 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2687 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2688 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2689 	buf = stream->alloc(totalSize);
2690 	ptr = buf;
2691 	int tmp = OP_glGetVertexAttribfv;memcpy(ptr, &tmp, 4); ptr += 4;
2692 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2693 
2694 		memcpy(ptr, &index, 4); ptr += 4;
2695 		memcpy(ptr, &pname, 4); ptr += 4;
2696 	memcpy(ptr, &__size_params, 4); ptr += 4;
2697 
2698 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2699 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2700 
2701 	stream->readback(params, __size_params);
2702 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2703 	if (useChecksum) {
2704 		unsigned char *checksumBufPtr = NULL;
2705 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2706 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2707 		stream->readback(checksumBufPtr, checksumSize);
2708 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2709 			ALOGE("glGetVertexAttribfv: GL communication error, please report this issue to b.android.com.\n");
2710 			abort();
2711 		}
2712 	}
2713 }
2714 
glGetVertexAttribiv_enc(void * self,GLuint index,GLenum pname,GLint * params)2715 void glGetVertexAttribiv_enc(void *self , GLuint index, GLenum pname, GLint* params)
2716 {
2717 	ENCODER_DEBUG_LOG("glGetVertexAttribiv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
2718 	AEMU_SCOPED_TRACE("glGetVertexAttribiv encode");
2719 
2720 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2721 	IOStream *stream = ctx->m_stream;
2722 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2723 	bool useChecksum = checksumCalculator->getVersion() > 0;
2724 
2725 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
2726 	 unsigned char *ptr;
2727 	 unsigned char *buf;
2728 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2729 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2730 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2731 	buf = stream->alloc(totalSize);
2732 	ptr = buf;
2733 	int tmp = OP_glGetVertexAttribiv;memcpy(ptr, &tmp, 4); ptr += 4;
2734 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2735 
2736 		memcpy(ptr, &index, 4); ptr += 4;
2737 		memcpy(ptr, &pname, 4); ptr += 4;
2738 	memcpy(ptr, &__size_params, 4); ptr += 4;
2739 
2740 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2741 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2742 
2743 	stream->readback(params, __size_params);
2744 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2745 	if (useChecksum) {
2746 		unsigned char *checksumBufPtr = NULL;
2747 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2748 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2749 		stream->readback(checksumBufPtr, checksumSize);
2750 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2751 			ALOGE("glGetVertexAttribiv: GL communication error, please report this issue to b.android.com.\n");
2752 			abort();
2753 		}
2754 	}
2755 }
2756 
glHint_enc(void * self,GLenum target,GLenum mode)2757 void glHint_enc(void *self , GLenum target, GLenum mode)
2758 {
2759 	ENCODER_DEBUG_LOG("glHint(target:0x%08x, mode:0x%08x)", target, mode);
2760 	AEMU_SCOPED_TRACE("glHint encode");
2761 
2762 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2763 	IOStream *stream = ctx->m_stream;
2764 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2765 	bool useChecksum = checksumCalculator->getVersion() > 0;
2766 
2767 	 unsigned char *ptr;
2768 	 unsigned char *buf;
2769 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
2770 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2771 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2772 	buf = stream->alloc(totalSize);
2773 	ptr = buf;
2774 	int tmp = OP_glHint;memcpy(ptr, &tmp, 4); ptr += 4;
2775 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2776 
2777 		memcpy(ptr, &target, 4); ptr += 4;
2778 		memcpy(ptr, &mode, 4); ptr += 4;
2779 
2780 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2781 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2782 
2783 }
2784 
glIsBuffer_enc(void * self,GLuint buffer)2785 GLboolean glIsBuffer_enc(void *self , GLuint buffer)
2786 {
2787 	ENCODER_DEBUG_LOG("glIsBuffer(buffer:%u)", buffer);
2788 	AEMU_SCOPED_TRACE("glIsBuffer encode");
2789 
2790 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2791 	IOStream *stream = ctx->m_stream;
2792 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2793 	bool useChecksum = checksumCalculator->getVersion() > 0;
2794 
2795 	 unsigned char *ptr;
2796 	 unsigned char *buf;
2797 	 const size_t sizeWithoutChecksum = 8 + 4;
2798 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2799 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2800 	buf = stream->alloc(totalSize);
2801 	ptr = buf;
2802 	int tmp = OP_glIsBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2803 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2804 
2805 		memcpy(ptr, &buffer, 4); ptr += 4;
2806 
2807 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2808 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2809 
2810 
2811 	GLboolean retval;
2812 	stream->readback(&retval, 1);
2813 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2814 	if (useChecksum) {
2815 		unsigned char *checksumBufPtr = NULL;
2816 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2817 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2818 		stream->readback(checksumBufPtr, checksumSize);
2819 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2820 			ALOGE("glIsBuffer: GL communication error, please report this issue to b.android.com.\n");
2821 			abort();
2822 		}
2823 	}
2824 	return retval;
2825 }
2826 
glIsEnabled_enc(void * self,GLenum cap)2827 GLboolean glIsEnabled_enc(void *self , GLenum cap)
2828 {
2829 	ENCODER_DEBUG_LOG("glIsEnabled(cap:0x%08x)", cap);
2830 	AEMU_SCOPED_TRACE("glIsEnabled encode");
2831 
2832 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2833 	IOStream *stream = ctx->m_stream;
2834 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2835 	bool useChecksum = checksumCalculator->getVersion() > 0;
2836 
2837 	 unsigned char *ptr;
2838 	 unsigned char *buf;
2839 	 const size_t sizeWithoutChecksum = 8 + 4;
2840 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2841 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2842 	buf = stream->alloc(totalSize);
2843 	ptr = buf;
2844 	int tmp = OP_glIsEnabled;memcpy(ptr, &tmp, 4); ptr += 4;
2845 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2846 
2847 		memcpy(ptr, &cap, 4); ptr += 4;
2848 
2849 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2850 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2851 
2852 
2853 	GLboolean retval;
2854 	stream->readback(&retval, 1);
2855 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2856 	if (useChecksum) {
2857 		unsigned char *checksumBufPtr = NULL;
2858 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2859 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2860 		stream->readback(checksumBufPtr, checksumSize);
2861 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2862 			ALOGE("glIsEnabled: GL communication error, please report this issue to b.android.com.\n");
2863 			abort();
2864 		}
2865 	}
2866 	return retval;
2867 }
2868 
glIsFramebuffer_enc(void * self,GLuint framebuffer)2869 GLboolean glIsFramebuffer_enc(void *self , GLuint framebuffer)
2870 {
2871 	ENCODER_DEBUG_LOG("glIsFramebuffer(framebuffer:%u)", framebuffer);
2872 	AEMU_SCOPED_TRACE("glIsFramebuffer encode");
2873 
2874 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2875 	IOStream *stream = ctx->m_stream;
2876 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2877 	bool useChecksum = checksumCalculator->getVersion() > 0;
2878 
2879 	 unsigned char *ptr;
2880 	 unsigned char *buf;
2881 	 const size_t sizeWithoutChecksum = 8 + 4;
2882 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2883 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2884 	buf = stream->alloc(totalSize);
2885 	ptr = buf;
2886 	int tmp = OP_glIsFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2887 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2888 
2889 		memcpy(ptr, &framebuffer, 4); ptr += 4;
2890 
2891 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2892 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2893 
2894 
2895 	GLboolean retval;
2896 	stream->readback(&retval, 1);
2897 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2898 	if (useChecksum) {
2899 		unsigned char *checksumBufPtr = NULL;
2900 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2901 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2902 		stream->readback(checksumBufPtr, checksumSize);
2903 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2904 			ALOGE("glIsFramebuffer: GL communication error, please report this issue to b.android.com.\n");
2905 			abort();
2906 		}
2907 	}
2908 	return retval;
2909 }
2910 
glIsProgram_enc(void * self,GLuint program)2911 GLboolean glIsProgram_enc(void *self , GLuint program)
2912 {
2913 	ENCODER_DEBUG_LOG("glIsProgram(program:%u)", program);
2914 	AEMU_SCOPED_TRACE("glIsProgram encode");
2915 
2916 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2917 	IOStream *stream = ctx->m_stream;
2918 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2919 	bool useChecksum = checksumCalculator->getVersion() > 0;
2920 
2921 	 unsigned char *ptr;
2922 	 unsigned char *buf;
2923 	 const size_t sizeWithoutChecksum = 8 + 4;
2924 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2925 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2926 	buf = stream->alloc(totalSize);
2927 	ptr = buf;
2928 	int tmp = OP_glIsProgram;memcpy(ptr, &tmp, 4); ptr += 4;
2929 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2930 
2931 		memcpy(ptr, &program, 4); ptr += 4;
2932 
2933 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2934 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2935 
2936 
2937 	GLboolean retval;
2938 	stream->readback(&retval, 1);
2939 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2940 	if (useChecksum) {
2941 		unsigned char *checksumBufPtr = NULL;
2942 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2943 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2944 		stream->readback(checksumBufPtr, checksumSize);
2945 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2946 			ALOGE("glIsProgram: GL communication error, please report this issue to b.android.com.\n");
2947 			abort();
2948 		}
2949 	}
2950 	return retval;
2951 }
2952 
glIsRenderbuffer_enc(void * self,GLuint renderbuffer)2953 GLboolean glIsRenderbuffer_enc(void *self , GLuint renderbuffer)
2954 {
2955 	ENCODER_DEBUG_LOG("glIsRenderbuffer(renderbuffer:%u)", renderbuffer);
2956 	AEMU_SCOPED_TRACE("glIsRenderbuffer encode");
2957 
2958 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2959 	IOStream *stream = ctx->m_stream;
2960 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2961 	bool useChecksum = checksumCalculator->getVersion() > 0;
2962 
2963 	 unsigned char *ptr;
2964 	 unsigned char *buf;
2965 	 const size_t sizeWithoutChecksum = 8 + 4;
2966 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2967 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2968 	buf = stream->alloc(totalSize);
2969 	ptr = buf;
2970 	int tmp = OP_glIsRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2971 	memcpy(ptr, &totalSize, 4);  ptr += 4;
2972 
2973 		memcpy(ptr, &renderbuffer, 4); ptr += 4;
2974 
2975 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2976 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2977 
2978 
2979 	GLboolean retval;
2980 	stream->readback(&retval, 1);
2981 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2982 	if (useChecksum) {
2983 		unsigned char *checksumBufPtr = NULL;
2984 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
2985 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2986 		stream->readback(checksumBufPtr, checksumSize);
2987 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2988 			ALOGE("glIsRenderbuffer: GL communication error, please report this issue to b.android.com.\n");
2989 			abort();
2990 		}
2991 	}
2992 	return retval;
2993 }
2994 
glIsShader_enc(void * self,GLuint shader)2995 GLboolean glIsShader_enc(void *self , GLuint shader)
2996 {
2997 	ENCODER_DEBUG_LOG("glIsShader(shader:%u)", shader);
2998 	AEMU_SCOPED_TRACE("glIsShader encode");
2999 
3000 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3001 	IOStream *stream = ctx->m_stream;
3002 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3003 	bool useChecksum = checksumCalculator->getVersion() > 0;
3004 
3005 	 unsigned char *ptr;
3006 	 unsigned char *buf;
3007 	 const size_t sizeWithoutChecksum = 8 + 4;
3008 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3009 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3010 	buf = stream->alloc(totalSize);
3011 	ptr = buf;
3012 	int tmp = OP_glIsShader;memcpy(ptr, &tmp, 4); ptr += 4;
3013 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3014 
3015 		memcpy(ptr, &shader, 4); ptr += 4;
3016 
3017 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3018 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3019 
3020 
3021 	GLboolean retval;
3022 	stream->readback(&retval, 1);
3023 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
3024 	if (useChecksum) {
3025 		unsigned char *checksumBufPtr = NULL;
3026 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
3027 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
3028 		stream->readback(checksumBufPtr, checksumSize);
3029 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
3030 			ALOGE("glIsShader: GL communication error, please report this issue to b.android.com.\n");
3031 			abort();
3032 		}
3033 	}
3034 	return retval;
3035 }
3036 
glIsTexture_enc(void * self,GLuint texture)3037 GLboolean glIsTexture_enc(void *self , GLuint texture)
3038 {
3039 	ENCODER_DEBUG_LOG("glIsTexture(texture:%u)", texture);
3040 	AEMU_SCOPED_TRACE("glIsTexture encode");
3041 
3042 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3043 	IOStream *stream = ctx->m_stream;
3044 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3045 	bool useChecksum = checksumCalculator->getVersion() > 0;
3046 
3047 	 unsigned char *ptr;
3048 	 unsigned char *buf;
3049 	 const size_t sizeWithoutChecksum = 8 + 4;
3050 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3051 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3052 	buf = stream->alloc(totalSize);
3053 	ptr = buf;
3054 	int tmp = OP_glIsTexture;memcpy(ptr, &tmp, 4); ptr += 4;
3055 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3056 
3057 		memcpy(ptr, &texture, 4); ptr += 4;
3058 
3059 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3060 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3061 
3062 
3063 	GLboolean retval;
3064 	stream->readback(&retval, 1);
3065 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
3066 	if (useChecksum) {
3067 		unsigned char *checksumBufPtr = NULL;
3068 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
3069 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
3070 		stream->readback(checksumBufPtr, checksumSize);
3071 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
3072 			ALOGE("glIsTexture: GL communication error, please report this issue to b.android.com.\n");
3073 			abort();
3074 		}
3075 	}
3076 	return retval;
3077 }
3078 
glLineWidth_enc(void * self,GLfloat width)3079 void glLineWidth_enc(void *self , GLfloat width)
3080 {
3081 	ENCODER_DEBUG_LOG("glLineWidth(width:%f)", width);
3082 	AEMU_SCOPED_TRACE("glLineWidth encode");
3083 
3084 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3085 	IOStream *stream = ctx->m_stream;
3086 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3087 	bool useChecksum = checksumCalculator->getVersion() > 0;
3088 
3089 	 unsigned char *ptr;
3090 	 unsigned char *buf;
3091 	 const size_t sizeWithoutChecksum = 8 + 4;
3092 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3093 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3094 	buf = stream->alloc(totalSize);
3095 	ptr = buf;
3096 	int tmp = OP_glLineWidth;memcpy(ptr, &tmp, 4); ptr += 4;
3097 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3098 
3099 		memcpy(ptr, &width, 4); ptr += 4;
3100 
3101 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3102 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3103 
3104 }
3105 
glLinkProgram_enc(void * self,GLuint program)3106 void glLinkProgram_enc(void *self , GLuint program)
3107 {
3108 	ENCODER_DEBUG_LOG("glLinkProgram(program:%u)", program);
3109 	AEMU_SCOPED_TRACE("glLinkProgram encode");
3110 
3111 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3112 	IOStream *stream = ctx->m_stream;
3113 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3114 	bool useChecksum = checksumCalculator->getVersion() > 0;
3115 
3116 	 unsigned char *ptr;
3117 	 unsigned char *buf;
3118 	 const size_t sizeWithoutChecksum = 8 + 4;
3119 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3120 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3121 	buf = stream->alloc(totalSize);
3122 	ptr = buf;
3123 	int tmp = OP_glLinkProgram;memcpy(ptr, &tmp, 4); ptr += 4;
3124 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3125 
3126 		memcpy(ptr, &program, 4); ptr += 4;
3127 
3128 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3129 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3130 
3131 }
3132 
glPixelStorei_enc(void * self,GLenum pname,GLint param)3133 void glPixelStorei_enc(void *self , GLenum pname, GLint param)
3134 {
3135 	ENCODER_DEBUG_LOG("glPixelStorei(pname:0x%08x, param:%d)", pname, param);
3136 	AEMU_SCOPED_TRACE("glPixelStorei encode");
3137 
3138 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3139 	IOStream *stream = ctx->m_stream;
3140 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3141 	bool useChecksum = checksumCalculator->getVersion() > 0;
3142 
3143 	 unsigned char *ptr;
3144 	 unsigned char *buf;
3145 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3146 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3147 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3148 	buf = stream->alloc(totalSize);
3149 	ptr = buf;
3150 	int tmp = OP_glPixelStorei;memcpy(ptr, &tmp, 4); ptr += 4;
3151 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3152 
3153 		memcpy(ptr, &pname, 4); ptr += 4;
3154 		memcpy(ptr, &param, 4); ptr += 4;
3155 
3156 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3157 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3158 
3159 }
3160 
glPolygonOffset_enc(void * self,GLfloat factor,GLfloat units)3161 void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units)
3162 {
3163 	ENCODER_DEBUG_LOG("glPolygonOffset(factor:%f, units:%f)", factor, units);
3164 	AEMU_SCOPED_TRACE("glPolygonOffset encode");
3165 
3166 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3167 	IOStream *stream = ctx->m_stream;
3168 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3169 	bool useChecksum = checksumCalculator->getVersion() > 0;
3170 
3171 	 unsigned char *ptr;
3172 	 unsigned char *buf;
3173 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3174 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3175 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3176 	buf = stream->alloc(totalSize);
3177 	ptr = buf;
3178 	int tmp = OP_glPolygonOffset;memcpy(ptr, &tmp, 4); ptr += 4;
3179 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3180 
3181 		memcpy(ptr, &factor, 4); ptr += 4;
3182 		memcpy(ptr, &units, 4); ptr += 4;
3183 
3184 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3185 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3186 
3187 }
3188 
glReadPixels_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * pixels)3189 void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
3190 {
3191 	ENCODER_DEBUG_LOG("glReadPixels(x:%d, y:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, pixels:0x%08x)", x, y, width, height, format, type, pixels);
3192 	AEMU_SCOPED_TRACE("glReadPixels encode");
3193 
3194 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3195 	IOStream *stream = ctx->m_stream;
3196 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3197 	bool useChecksum = checksumCalculator->getVersion() > 0;
3198 
3199 	const unsigned int __size_pixels =  glesv2_enc::pixelDataSize(self, width, height, format, type, 1);
3200 	 unsigned char *ptr;
3201 	 unsigned char *buf;
3202 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 0 + 1*4;
3203 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3204 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3205 	buf = stream->alloc(totalSize);
3206 	ptr = buf;
3207 	int tmp = OP_glReadPixels;memcpy(ptr, &tmp, 4); ptr += 4;
3208 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3209 
3210 		memcpy(ptr, &x, 4); ptr += 4;
3211 		memcpy(ptr, &y, 4); ptr += 4;
3212 		memcpy(ptr, &width, 4); ptr += 4;
3213 		memcpy(ptr, &height, 4); ptr += 4;
3214 		memcpy(ptr, &format, 4); ptr += 4;
3215 		memcpy(ptr, &type, 4); ptr += 4;
3216 	memcpy(ptr, &__size_pixels, 4); ptr += 4;
3217 
3218 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3219 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3220 
3221 	 stream->readbackPixels(self, width, height, format, type, pixels);
3222 	if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3223 	if (useChecksum) {
3224 		unsigned char *checksumBufPtr = NULL;
3225 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
3226 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
3227 		stream->readback(checksumBufPtr, checksumSize);
3228 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
3229 			ALOGE("glReadPixels: GL communication error, please report this issue to b.android.com.\n");
3230 			abort();
3231 		}
3232 	}
3233 }
3234 
glReleaseShaderCompiler_enc(void * self)3235 void glReleaseShaderCompiler_enc(void *self )
3236 {
3237 	ENCODER_DEBUG_LOG("glReleaseShaderCompiler()");
3238 	AEMU_SCOPED_TRACE("glReleaseShaderCompiler encode");
3239 
3240 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3241 	IOStream *stream = ctx->m_stream;
3242 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3243 	bool useChecksum = checksumCalculator->getVersion() > 0;
3244 
3245 	 unsigned char *ptr;
3246 	 unsigned char *buf;
3247 	 const size_t sizeWithoutChecksum = 8;
3248 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3249 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3250 	buf = stream->alloc(totalSize);
3251 	ptr = buf;
3252 	int tmp = OP_glReleaseShaderCompiler;memcpy(ptr, &tmp, 4); ptr += 4;
3253 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3254 
3255 
3256 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3257 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3258 
3259 }
3260 
glRenderbufferStorage_enc(void * self,GLenum target,GLenum internalformat,GLsizei width,GLsizei height)3261 void glRenderbufferStorage_enc(void *self , GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
3262 {
3263 	ENCODER_DEBUG_LOG("glRenderbufferStorage(target:0x%08x, internalformat:0x%08x, width:%d, height:%d)", target, internalformat, width, height);
3264 	AEMU_SCOPED_TRACE("glRenderbufferStorage encode");
3265 
3266 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3267 	IOStream *stream = ctx->m_stream;
3268 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3269 	bool useChecksum = checksumCalculator->getVersion() > 0;
3270 
3271 	 unsigned char *ptr;
3272 	 unsigned char *buf;
3273 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3274 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3275 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3276 	buf = stream->alloc(totalSize);
3277 	ptr = buf;
3278 	int tmp = OP_glRenderbufferStorage;memcpy(ptr, &tmp, 4); ptr += 4;
3279 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3280 
3281 		memcpy(ptr, &target, 4); ptr += 4;
3282 		memcpy(ptr, &internalformat, 4); ptr += 4;
3283 		memcpy(ptr, &width, 4); ptr += 4;
3284 		memcpy(ptr, &height, 4); ptr += 4;
3285 
3286 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3287 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3288 
3289 }
3290 
glSampleCoverage_enc(void * self,GLclampf value,GLboolean invert)3291 void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert)
3292 {
3293 	ENCODER_DEBUG_LOG("glSampleCoverage(value:%f, invert:%d)", value, invert);
3294 	AEMU_SCOPED_TRACE("glSampleCoverage encode");
3295 
3296 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3297 	IOStream *stream = ctx->m_stream;
3298 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3299 	bool useChecksum = checksumCalculator->getVersion() > 0;
3300 
3301 	 unsigned char *ptr;
3302 	 unsigned char *buf;
3303 	 const size_t sizeWithoutChecksum = 8 + 4 + 1;
3304 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3305 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3306 	buf = stream->alloc(totalSize);
3307 	ptr = buf;
3308 	int tmp = OP_glSampleCoverage;memcpy(ptr, &tmp, 4); ptr += 4;
3309 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3310 
3311 		memcpy(ptr, &value, 4); ptr += 4;
3312 		memcpy(ptr, &invert, 1); ptr += 1;
3313 
3314 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3315 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3316 
3317 }
3318 
glScissor_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height)3319 void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
3320 {
3321 	ENCODER_DEBUG_LOG("glScissor(x:%d, y:%d, width:%d, height:%d)", x, y, width, height);
3322 	AEMU_SCOPED_TRACE("glScissor encode");
3323 
3324 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3325 	IOStream *stream = ctx->m_stream;
3326 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3327 	bool useChecksum = checksumCalculator->getVersion() > 0;
3328 
3329 	 unsigned char *ptr;
3330 	 unsigned char *buf;
3331 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3332 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3333 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3334 	buf = stream->alloc(totalSize);
3335 	ptr = buf;
3336 	int tmp = OP_glScissor;memcpy(ptr, &tmp, 4); ptr += 4;
3337 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3338 
3339 		memcpy(ptr, &x, 4); ptr += 4;
3340 		memcpy(ptr, &y, 4); ptr += 4;
3341 		memcpy(ptr, &width, 4); ptr += 4;
3342 		memcpy(ptr, &height, 4); ptr += 4;
3343 
3344 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3345 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3346 
3347 }
3348 
glStencilFunc_enc(void * self,GLenum func,GLint ref,GLuint mask)3349 void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask)
3350 {
3351 	ENCODER_DEBUG_LOG("glStencilFunc(func:0x%08x, ref:%d, mask:%u)", func, ref, mask);
3352 	AEMU_SCOPED_TRACE("glStencilFunc encode");
3353 
3354 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3355 	IOStream *stream = ctx->m_stream;
3356 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3357 	bool useChecksum = checksumCalculator->getVersion() > 0;
3358 
3359 	 unsigned char *ptr;
3360 	 unsigned char *buf;
3361 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3362 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3363 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3364 	buf = stream->alloc(totalSize);
3365 	ptr = buf;
3366 	int tmp = OP_glStencilFunc;memcpy(ptr, &tmp, 4); ptr += 4;
3367 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3368 
3369 		memcpy(ptr, &func, 4); ptr += 4;
3370 		memcpy(ptr, &ref, 4); ptr += 4;
3371 		memcpy(ptr, &mask, 4); ptr += 4;
3372 
3373 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3374 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3375 
3376 }
3377 
glStencilFuncSeparate_enc(void * self,GLenum face,GLenum func,GLint ref,GLuint mask)3378 void glStencilFuncSeparate_enc(void *self , GLenum face, GLenum func, GLint ref, GLuint mask)
3379 {
3380 	ENCODER_DEBUG_LOG("glStencilFuncSeparate(face:0x%08x, func:0x%08x, ref:%d, mask:%u)", face, func, ref, mask);
3381 	AEMU_SCOPED_TRACE("glStencilFuncSeparate encode");
3382 
3383 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3384 	IOStream *stream = ctx->m_stream;
3385 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3386 	bool useChecksum = checksumCalculator->getVersion() > 0;
3387 
3388 	 unsigned char *ptr;
3389 	 unsigned char *buf;
3390 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3391 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3392 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3393 	buf = stream->alloc(totalSize);
3394 	ptr = buf;
3395 	int tmp = OP_glStencilFuncSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3396 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3397 
3398 		memcpy(ptr, &face, 4); ptr += 4;
3399 		memcpy(ptr, &func, 4); ptr += 4;
3400 		memcpy(ptr, &ref, 4); ptr += 4;
3401 		memcpy(ptr, &mask, 4); ptr += 4;
3402 
3403 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3404 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3405 
3406 }
3407 
glStencilMask_enc(void * self,GLuint mask)3408 void glStencilMask_enc(void *self , GLuint mask)
3409 {
3410 	ENCODER_DEBUG_LOG("glStencilMask(mask:%u)", mask);
3411 	AEMU_SCOPED_TRACE("glStencilMask encode");
3412 
3413 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3414 	IOStream *stream = ctx->m_stream;
3415 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3416 	bool useChecksum = checksumCalculator->getVersion() > 0;
3417 
3418 	 unsigned char *ptr;
3419 	 unsigned char *buf;
3420 	 const size_t sizeWithoutChecksum = 8 + 4;
3421 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3422 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3423 	buf = stream->alloc(totalSize);
3424 	ptr = buf;
3425 	int tmp = OP_glStencilMask;memcpy(ptr, &tmp, 4); ptr += 4;
3426 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3427 
3428 		memcpy(ptr, &mask, 4); ptr += 4;
3429 
3430 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3431 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3432 
3433 }
3434 
glStencilMaskSeparate_enc(void * self,GLenum face,GLuint mask)3435 void glStencilMaskSeparate_enc(void *self , GLenum face, GLuint mask)
3436 {
3437 	ENCODER_DEBUG_LOG("glStencilMaskSeparate(face:0x%08x, mask:%u)", face, mask);
3438 	AEMU_SCOPED_TRACE("glStencilMaskSeparate encode");
3439 
3440 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3441 	IOStream *stream = ctx->m_stream;
3442 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3443 	bool useChecksum = checksumCalculator->getVersion() > 0;
3444 
3445 	 unsigned char *ptr;
3446 	 unsigned char *buf;
3447 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3448 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3449 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3450 	buf = stream->alloc(totalSize);
3451 	ptr = buf;
3452 	int tmp = OP_glStencilMaskSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3453 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3454 
3455 		memcpy(ptr, &face, 4); ptr += 4;
3456 		memcpy(ptr, &mask, 4); ptr += 4;
3457 
3458 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3459 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3460 
3461 }
3462 
glStencilOp_enc(void * self,GLenum fail,GLenum zfail,GLenum zpass)3463 void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass)
3464 {
3465 	ENCODER_DEBUG_LOG("glStencilOp(fail:0x%08x, zfail:0x%08x, zpass:0x%08x)", fail, zfail, zpass);
3466 	AEMU_SCOPED_TRACE("glStencilOp encode");
3467 
3468 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3469 	IOStream *stream = ctx->m_stream;
3470 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3471 	bool useChecksum = checksumCalculator->getVersion() > 0;
3472 
3473 	 unsigned char *ptr;
3474 	 unsigned char *buf;
3475 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3476 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3477 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3478 	buf = stream->alloc(totalSize);
3479 	ptr = buf;
3480 	int tmp = OP_glStencilOp;memcpy(ptr, &tmp, 4); ptr += 4;
3481 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3482 
3483 		memcpy(ptr, &fail, 4); ptr += 4;
3484 		memcpy(ptr, &zfail, 4); ptr += 4;
3485 		memcpy(ptr, &zpass, 4); ptr += 4;
3486 
3487 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3488 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3489 
3490 }
3491 
glStencilOpSeparate_enc(void * self,GLenum face,GLenum fail,GLenum zfail,GLenum zpass)3492 void glStencilOpSeparate_enc(void *self , GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
3493 {
3494 	ENCODER_DEBUG_LOG("glStencilOpSeparate(face:0x%08x, fail:0x%08x, zfail:0x%08x, zpass:0x%08x)", face, fail, zfail, zpass);
3495 	AEMU_SCOPED_TRACE("glStencilOpSeparate encode");
3496 
3497 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3498 	IOStream *stream = ctx->m_stream;
3499 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3500 	bool useChecksum = checksumCalculator->getVersion() > 0;
3501 
3502 	 unsigned char *ptr;
3503 	 unsigned char *buf;
3504 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3505 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3506 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3507 	buf = stream->alloc(totalSize);
3508 	ptr = buf;
3509 	int tmp = OP_glStencilOpSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3510 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3511 
3512 		memcpy(ptr, &face, 4); ptr += 4;
3513 		memcpy(ptr, &fail, 4); ptr += 4;
3514 		memcpy(ptr, &zfail, 4); ptr += 4;
3515 		memcpy(ptr, &zpass, 4); ptr += 4;
3516 
3517 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3518 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3519 
3520 }
3521 
glTexImage2D_enc(void * self,GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * pixels)3522 void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
3523 {
3524 	ENCODER_DEBUG_LOG("glTexImage2D(target:0x%08x, level:%d, internalformat:%d, width:%d, height:%d, border:%d, format:0x%08x, type:0x%08x, pixels:0x%08x)", target, level, internalformat, width, height, border, format, type, pixels);
3525 	AEMU_SCOPED_TRACE("glTexImage2D encode");
3526 
3527 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3528 	IOStream *stream = ctx->m_stream;
3529 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3530 	bool useChecksum = checksumCalculator->getVersion() > 0;
3531 
3532 	const unsigned int __size_pixels = ((pixels != NULL) ?  glesv2_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
3533 	 unsigned char *ptr;
3534 	 unsigned char *buf;
3535 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
3536 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3537 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3538 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3539 	ptr = buf;
3540 	int tmp = OP_glTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
3541 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3542 
3543 		memcpy(ptr, &target, 4); ptr += 4;
3544 		memcpy(ptr, &level, 4); ptr += 4;
3545 		memcpy(ptr, &internalformat, 4); ptr += 4;
3546 		memcpy(ptr, &width, 4); ptr += 4;
3547 		memcpy(ptr, &height, 4); ptr += 4;
3548 		memcpy(ptr, &border, 4); ptr += 4;
3549 		memcpy(ptr, &format, 4); ptr += 4;
3550 		memcpy(ptr, &type, 4); ptr += 4;
3551 
3552 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3553 	stream->flush();
3554 	stream->writeFully(&__size_pixels,4);
3555 	if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
3556 	if (pixels != NULL) {
3557 		 stream->uploadPixels(self, width, height, 1, format, type, pixels);
3558 		if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3559 	}
3560 	buf = stream->alloc(checksumSize);
3561 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
3562 
3563 }
3564 
glTexParameterf_enc(void * self,GLenum target,GLenum pname,GLfloat param)3565 void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param)
3566 {
3567 	ENCODER_DEBUG_LOG("glTexParameterf(target:0x%08x, pname:0x%08x, param:%f)", target, pname, param);
3568 	AEMU_SCOPED_TRACE("glTexParameterf encode");
3569 
3570 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3571 	IOStream *stream = ctx->m_stream;
3572 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3573 	bool useChecksum = checksumCalculator->getVersion() > 0;
3574 
3575 	 unsigned char *ptr;
3576 	 unsigned char *buf;
3577 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3578 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3579 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3580 	buf = stream->alloc(totalSize);
3581 	ptr = buf;
3582 	int tmp = OP_glTexParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
3583 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3584 
3585 		memcpy(ptr, &target, 4); ptr += 4;
3586 		memcpy(ptr, &pname, 4); ptr += 4;
3587 		memcpy(ptr, &param, 4); ptr += 4;
3588 
3589 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3590 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3591 
3592 }
3593 
glTexParameterfv_enc(void * self,GLenum target,GLenum pname,const GLfloat * params)3594 void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params)
3595 {
3596 	ENCODER_DEBUG_LOG("glTexParameterfv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
3597 	AEMU_SCOPED_TRACE("glTexParameterfv encode");
3598 
3599 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3600 	IOStream *stream = ctx->m_stream;
3601 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3602 	bool useChecksum = checksumCalculator->getVersion() > 0;
3603 
3604 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
3605 	 unsigned char *ptr;
3606 	 unsigned char *buf;
3607 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
3608 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3609 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3610 	buf = stream->alloc(totalSize);
3611 	ptr = buf;
3612 	int tmp = OP_glTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
3613 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3614 
3615 		memcpy(ptr, &target, 4); ptr += 4;
3616 		memcpy(ptr, &pname, 4); ptr += 4;
3617 	memcpy(ptr, &__size_params, 4); ptr += 4;
3618 	memcpy(ptr, params, __size_params);ptr += __size_params;
3619 
3620 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3621 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3622 
3623 }
3624 
glTexParameteri_enc(void * self,GLenum target,GLenum pname,GLint param)3625 void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
3626 {
3627 	ENCODER_DEBUG_LOG("glTexParameteri(target:0x%08x, pname:0x%08x, param:%d)", target, pname, param);
3628 	AEMU_SCOPED_TRACE("glTexParameteri encode");
3629 
3630 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3631 	IOStream *stream = ctx->m_stream;
3632 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3633 	bool useChecksum = checksumCalculator->getVersion() > 0;
3634 
3635 	 unsigned char *ptr;
3636 	 unsigned char *buf;
3637 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3638 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3639 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3640 	buf = stream->alloc(totalSize);
3641 	ptr = buf;
3642 	int tmp = OP_glTexParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
3643 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3644 
3645 		memcpy(ptr, &target, 4); ptr += 4;
3646 		memcpy(ptr, &pname, 4); ptr += 4;
3647 		memcpy(ptr, &param, 4); ptr += 4;
3648 
3649 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3650 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3651 
3652 }
3653 
glTexParameteriv_enc(void * self,GLenum target,GLenum pname,const GLint * params)3654 void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* params)
3655 {
3656 	ENCODER_DEBUG_LOG("glTexParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
3657 	AEMU_SCOPED_TRACE("glTexParameteriv encode");
3658 
3659 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3660 	IOStream *stream = ctx->m_stream;
3661 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3662 	bool useChecksum = checksumCalculator->getVersion() > 0;
3663 
3664 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
3665 	 unsigned char *ptr;
3666 	 unsigned char *buf;
3667 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
3668 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3669 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3670 	buf = stream->alloc(totalSize);
3671 	ptr = buf;
3672 	int tmp = OP_glTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
3673 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3674 
3675 		memcpy(ptr, &target, 4); ptr += 4;
3676 		memcpy(ptr, &pname, 4); ptr += 4;
3677 	memcpy(ptr, &__size_params, 4); ptr += 4;
3678 	memcpy(ptr, params, __size_params);ptr += __size_params;
3679 
3680 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3681 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3682 
3683 }
3684 
glTexSubImage2D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * pixels)3685 void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
3686 {
3687 	ENCODER_DEBUG_LOG("glTexSubImage2D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, pixels:0x%08x)", target, level, xoffset, yoffset, width, height, format, type, pixels);
3688 	AEMU_SCOPED_TRACE("glTexSubImage2D encode");
3689 
3690 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3691 	IOStream *stream = ctx->m_stream;
3692 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3693 	bool useChecksum = checksumCalculator->getVersion() > 0;
3694 
3695 	const unsigned int __size_pixels = ((pixels != NULL) ?  glesv2_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
3696 	 unsigned char *ptr;
3697 	 unsigned char *buf;
3698 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
3699 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3700 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3701 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3702 	ptr = buf;
3703 	int tmp = OP_glTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
3704 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3705 
3706 		memcpy(ptr, &target, 4); ptr += 4;
3707 		memcpy(ptr, &level, 4); ptr += 4;
3708 		memcpy(ptr, &xoffset, 4); ptr += 4;
3709 		memcpy(ptr, &yoffset, 4); ptr += 4;
3710 		memcpy(ptr, &width, 4); ptr += 4;
3711 		memcpy(ptr, &height, 4); ptr += 4;
3712 		memcpy(ptr, &format, 4); ptr += 4;
3713 		memcpy(ptr, &type, 4); ptr += 4;
3714 
3715 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3716 	stream->flush();
3717 	stream->writeFully(&__size_pixels,4);
3718 	if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
3719 	if (pixels != NULL) {
3720 		 stream->uploadPixels(self, width, height, 1, format, type, pixels);
3721 		if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3722 	}
3723 	buf = stream->alloc(checksumSize);
3724 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
3725 
3726 }
3727 
glUniform1f_enc(void * self,GLint location,GLfloat x)3728 void glUniform1f_enc(void *self , GLint location, GLfloat x)
3729 {
3730 	ENCODER_DEBUG_LOG("glUniform1f(location:%d, x:%f)", location, x);
3731 	AEMU_SCOPED_TRACE("glUniform1f encode");
3732 
3733 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3734 	IOStream *stream = ctx->m_stream;
3735 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3736 	bool useChecksum = checksumCalculator->getVersion() > 0;
3737 
3738 	 unsigned char *ptr;
3739 	 unsigned char *buf;
3740 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3741 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3742 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3743 	buf = stream->alloc(totalSize);
3744 	ptr = buf;
3745 	int tmp = OP_glUniform1f;memcpy(ptr, &tmp, 4); ptr += 4;
3746 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3747 
3748 		memcpy(ptr, &location, 4); ptr += 4;
3749 		memcpy(ptr, &x, 4); ptr += 4;
3750 
3751 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3752 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3753 
3754 }
3755 
glUniform1fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)3756 void glUniform1fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3757 {
3758 	ENCODER_DEBUG_LOG("glUniform1fv(location:%d, count:%d, v:0x%08x)", location, count, v);
3759 	AEMU_SCOPED_TRACE("glUniform1fv encode");
3760 
3761 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3762 	IOStream *stream = ctx->m_stream;
3763 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3764 	bool useChecksum = checksumCalculator->getVersion() > 0;
3765 
3766 	const unsigned int __size_v =  (count * sizeof(GLfloat));
3767 	 unsigned char *ptr;
3768 	 unsigned char *buf;
3769 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3770 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3771 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3772 	buf = stream->alloc(totalSize);
3773 	ptr = buf;
3774 	int tmp = OP_glUniform1fv;memcpy(ptr, &tmp, 4); ptr += 4;
3775 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3776 
3777 		memcpy(ptr, &location, 4); ptr += 4;
3778 		memcpy(ptr, &count, 4); ptr += 4;
3779 	memcpy(ptr, &__size_v, 4); ptr += 4;
3780 	memcpy(ptr, v, __size_v);ptr += __size_v;
3781 
3782 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3783 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3784 
3785 }
3786 
glUniform1i_enc(void * self,GLint location,GLint x)3787 void glUniform1i_enc(void *self , GLint location, GLint x)
3788 {
3789 	ENCODER_DEBUG_LOG("glUniform1i(location:%d, x:%d)", location, x);
3790 	AEMU_SCOPED_TRACE("glUniform1i encode");
3791 
3792 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3793 	IOStream *stream = ctx->m_stream;
3794 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3795 	bool useChecksum = checksumCalculator->getVersion() > 0;
3796 
3797 	 unsigned char *ptr;
3798 	 unsigned char *buf;
3799 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3800 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3801 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3802 	buf = stream->alloc(totalSize);
3803 	ptr = buf;
3804 	int tmp = OP_glUniform1i;memcpy(ptr, &tmp, 4); ptr += 4;
3805 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3806 
3807 		memcpy(ptr, &location, 4); ptr += 4;
3808 		memcpy(ptr, &x, 4); ptr += 4;
3809 
3810 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3811 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3812 
3813 }
3814 
glUniform1iv_enc(void * self,GLint location,GLsizei count,const GLint * v)3815 void glUniform1iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
3816 {
3817 	ENCODER_DEBUG_LOG("glUniform1iv(location:%d, count:%d, v:0x%08x)", location, count, v);
3818 	AEMU_SCOPED_TRACE("glUniform1iv encode");
3819 
3820 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3821 	IOStream *stream = ctx->m_stream;
3822 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3823 	bool useChecksum = checksumCalculator->getVersion() > 0;
3824 
3825 	const unsigned int __size_v =  (count * sizeof(GLint));
3826 	 unsigned char *ptr;
3827 	 unsigned char *buf;
3828 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3829 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3830 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3831 	buf = stream->alloc(totalSize);
3832 	ptr = buf;
3833 	int tmp = OP_glUniform1iv;memcpy(ptr, &tmp, 4); ptr += 4;
3834 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3835 
3836 		memcpy(ptr, &location, 4); ptr += 4;
3837 		memcpy(ptr, &count, 4); ptr += 4;
3838 	memcpy(ptr, &__size_v, 4); ptr += 4;
3839 	memcpy(ptr, v, __size_v);ptr += __size_v;
3840 
3841 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3842 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3843 
3844 }
3845 
glUniform2f_enc(void * self,GLint location,GLfloat x,GLfloat y)3846 void glUniform2f_enc(void *self , GLint location, GLfloat x, GLfloat y)
3847 {
3848 	ENCODER_DEBUG_LOG("glUniform2f(location:%d, x:%f, y:%f)", location, x, y);
3849 	AEMU_SCOPED_TRACE("glUniform2f encode");
3850 
3851 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3852 	IOStream *stream = ctx->m_stream;
3853 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3854 	bool useChecksum = checksumCalculator->getVersion() > 0;
3855 
3856 	 unsigned char *ptr;
3857 	 unsigned char *buf;
3858 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3859 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3860 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3861 	buf = stream->alloc(totalSize);
3862 	ptr = buf;
3863 	int tmp = OP_glUniform2f;memcpy(ptr, &tmp, 4); ptr += 4;
3864 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3865 
3866 		memcpy(ptr, &location, 4); ptr += 4;
3867 		memcpy(ptr, &x, 4); ptr += 4;
3868 		memcpy(ptr, &y, 4); ptr += 4;
3869 
3870 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3871 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3872 
3873 }
3874 
glUniform2fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)3875 void glUniform2fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3876 {
3877 	ENCODER_DEBUG_LOG("glUniform2fv(location:%d, count:%d, v:0x%08x)", location, count, v);
3878 	AEMU_SCOPED_TRACE("glUniform2fv encode");
3879 
3880 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3881 	IOStream *stream = ctx->m_stream;
3882 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3883 	bool useChecksum = checksumCalculator->getVersion() > 0;
3884 
3885 	const unsigned int __size_v =  (count * 2 * sizeof(GLfloat));
3886 	 unsigned char *ptr;
3887 	 unsigned char *buf;
3888 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3889 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3890 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3891 	buf = stream->alloc(totalSize);
3892 	ptr = buf;
3893 	int tmp = OP_glUniform2fv;memcpy(ptr, &tmp, 4); ptr += 4;
3894 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3895 
3896 		memcpy(ptr, &location, 4); ptr += 4;
3897 		memcpy(ptr, &count, 4); ptr += 4;
3898 	memcpy(ptr, &__size_v, 4); ptr += 4;
3899 	memcpy(ptr, v, __size_v);ptr += __size_v;
3900 
3901 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3902 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3903 
3904 }
3905 
glUniform2i_enc(void * self,GLint location,GLint x,GLint y)3906 void glUniform2i_enc(void *self , GLint location, GLint x, GLint y)
3907 {
3908 	ENCODER_DEBUG_LOG("glUniform2i(location:%d, x:%d, y:%d)", location, x, y);
3909 	AEMU_SCOPED_TRACE("glUniform2i encode");
3910 
3911 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3912 	IOStream *stream = ctx->m_stream;
3913 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3914 	bool useChecksum = checksumCalculator->getVersion() > 0;
3915 
3916 	 unsigned char *ptr;
3917 	 unsigned char *buf;
3918 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3919 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3920 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3921 	buf = stream->alloc(totalSize);
3922 	ptr = buf;
3923 	int tmp = OP_glUniform2i;memcpy(ptr, &tmp, 4); ptr += 4;
3924 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3925 
3926 		memcpy(ptr, &location, 4); ptr += 4;
3927 		memcpy(ptr, &x, 4); ptr += 4;
3928 		memcpy(ptr, &y, 4); ptr += 4;
3929 
3930 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3931 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3932 
3933 }
3934 
glUniform2iv_enc(void * self,GLint location,GLsizei count,const GLint * v)3935 void glUniform2iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
3936 {
3937 	ENCODER_DEBUG_LOG("glUniform2iv(location:%d, count:%d, v:0x%08x)", location, count, v);
3938 	AEMU_SCOPED_TRACE("glUniform2iv encode");
3939 
3940 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3941 	IOStream *stream = ctx->m_stream;
3942 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3943 	bool useChecksum = checksumCalculator->getVersion() > 0;
3944 
3945 	const unsigned int __size_v =  (count * 2 * sizeof(GLint));
3946 	 unsigned char *ptr;
3947 	 unsigned char *buf;
3948 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3949 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3950 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3951 	buf = stream->alloc(totalSize);
3952 	ptr = buf;
3953 	int tmp = OP_glUniform2iv;memcpy(ptr, &tmp, 4); ptr += 4;
3954 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3955 
3956 		memcpy(ptr, &location, 4); ptr += 4;
3957 		memcpy(ptr, &count, 4); ptr += 4;
3958 	memcpy(ptr, &__size_v, 4); ptr += 4;
3959 	memcpy(ptr, v, __size_v);ptr += __size_v;
3960 
3961 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3962 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3963 
3964 }
3965 
glUniform3f_enc(void * self,GLint location,GLfloat x,GLfloat y,GLfloat z)3966 void glUniform3f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z)
3967 {
3968 	ENCODER_DEBUG_LOG("glUniform3f(location:%d, x:%f, y:%f, z:%f)", location, x, y, z);
3969 	AEMU_SCOPED_TRACE("glUniform3f encode");
3970 
3971 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3972 	IOStream *stream = ctx->m_stream;
3973 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3974 	bool useChecksum = checksumCalculator->getVersion() > 0;
3975 
3976 	 unsigned char *ptr;
3977 	 unsigned char *buf;
3978 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3979 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3980 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3981 	buf = stream->alloc(totalSize);
3982 	ptr = buf;
3983 	int tmp = OP_glUniform3f;memcpy(ptr, &tmp, 4); ptr += 4;
3984 	memcpy(ptr, &totalSize, 4);  ptr += 4;
3985 
3986 		memcpy(ptr, &location, 4); ptr += 4;
3987 		memcpy(ptr, &x, 4); ptr += 4;
3988 		memcpy(ptr, &y, 4); ptr += 4;
3989 		memcpy(ptr, &z, 4); ptr += 4;
3990 
3991 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3992 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3993 
3994 }
3995 
glUniform3fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)3996 void glUniform3fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3997 {
3998 	ENCODER_DEBUG_LOG("glUniform3fv(location:%d, count:%d, v:0x%08x)", location, count, v);
3999 	AEMU_SCOPED_TRACE("glUniform3fv encode");
4000 
4001 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4002 	IOStream *stream = ctx->m_stream;
4003 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4004 	bool useChecksum = checksumCalculator->getVersion() > 0;
4005 
4006 	const unsigned int __size_v =  (count * 3 * sizeof(GLfloat));
4007 	 unsigned char *ptr;
4008 	 unsigned char *buf;
4009 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4010 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4011 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4012 	buf = stream->alloc(totalSize);
4013 	ptr = buf;
4014 	int tmp = OP_glUniform3fv;memcpy(ptr, &tmp, 4); ptr += 4;
4015 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4016 
4017 		memcpy(ptr, &location, 4); ptr += 4;
4018 		memcpy(ptr, &count, 4); ptr += 4;
4019 	memcpy(ptr, &__size_v, 4); ptr += 4;
4020 	memcpy(ptr, v, __size_v);ptr += __size_v;
4021 
4022 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4023 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4024 
4025 }
4026 
glUniform3i_enc(void * self,GLint location,GLint x,GLint y,GLint z)4027 void glUniform3i_enc(void *self , GLint location, GLint x, GLint y, GLint z)
4028 {
4029 	ENCODER_DEBUG_LOG("glUniform3i(location:%d, x:%d, y:%d, z:%d)", location, x, y, z);
4030 	AEMU_SCOPED_TRACE("glUniform3i encode");
4031 
4032 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4033 	IOStream *stream = ctx->m_stream;
4034 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4035 	bool useChecksum = checksumCalculator->getVersion() > 0;
4036 
4037 	 unsigned char *ptr;
4038 	 unsigned char *buf;
4039 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4040 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4041 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4042 	buf = stream->alloc(totalSize);
4043 	ptr = buf;
4044 	int tmp = OP_glUniform3i;memcpy(ptr, &tmp, 4); ptr += 4;
4045 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4046 
4047 		memcpy(ptr, &location, 4); ptr += 4;
4048 		memcpy(ptr, &x, 4); ptr += 4;
4049 		memcpy(ptr, &y, 4); ptr += 4;
4050 		memcpy(ptr, &z, 4); ptr += 4;
4051 
4052 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4053 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4054 
4055 }
4056 
glUniform3iv_enc(void * self,GLint location,GLsizei count,const GLint * v)4057 void glUniform3iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
4058 {
4059 	ENCODER_DEBUG_LOG("glUniform3iv(location:%d, count:%d, v:0x%08x)", location, count, v);
4060 	AEMU_SCOPED_TRACE("glUniform3iv encode");
4061 
4062 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4063 	IOStream *stream = ctx->m_stream;
4064 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4065 	bool useChecksum = checksumCalculator->getVersion() > 0;
4066 
4067 	const unsigned int __size_v =  (3 * count * sizeof(GLint));
4068 	 unsigned char *ptr;
4069 	 unsigned char *buf;
4070 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4071 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4072 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4073 	buf = stream->alloc(totalSize);
4074 	ptr = buf;
4075 	int tmp = OP_glUniform3iv;memcpy(ptr, &tmp, 4); ptr += 4;
4076 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4077 
4078 		memcpy(ptr, &location, 4); ptr += 4;
4079 		memcpy(ptr, &count, 4); ptr += 4;
4080 	memcpy(ptr, &__size_v, 4); ptr += 4;
4081 	memcpy(ptr, v, __size_v);ptr += __size_v;
4082 
4083 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4084 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4085 
4086 }
4087 
glUniform4f_enc(void * self,GLint location,GLfloat x,GLfloat y,GLfloat z,GLfloat w)4088 void glUniform4f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
4089 {
4090 	ENCODER_DEBUG_LOG("glUniform4f(location:%d, x:%f, y:%f, z:%f, w:%f)", location, x, y, z, w);
4091 	AEMU_SCOPED_TRACE("glUniform4f encode");
4092 
4093 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4094 	IOStream *stream = ctx->m_stream;
4095 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4096 	bool useChecksum = checksumCalculator->getVersion() > 0;
4097 
4098 	 unsigned char *ptr;
4099 	 unsigned char *buf;
4100 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4101 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4102 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4103 	buf = stream->alloc(totalSize);
4104 	ptr = buf;
4105 	int tmp = OP_glUniform4f;memcpy(ptr, &tmp, 4); ptr += 4;
4106 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4107 
4108 		memcpy(ptr, &location, 4); ptr += 4;
4109 		memcpy(ptr, &x, 4); ptr += 4;
4110 		memcpy(ptr, &y, 4); ptr += 4;
4111 		memcpy(ptr, &z, 4); ptr += 4;
4112 		memcpy(ptr, &w, 4); ptr += 4;
4113 
4114 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4115 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4116 
4117 }
4118 
glUniform4fv_enc(void * self,GLint location,GLsizei count,const GLfloat * v)4119 void glUniform4fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
4120 {
4121 	ENCODER_DEBUG_LOG("glUniform4fv(location:%d, count:%d, v:0x%08x)", location, count, v);
4122 	AEMU_SCOPED_TRACE("glUniform4fv encode");
4123 
4124 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4125 	IOStream *stream = ctx->m_stream;
4126 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4127 	bool useChecksum = checksumCalculator->getVersion() > 0;
4128 
4129 	const unsigned int __size_v =  (4 * count * sizeof(GLfloat));
4130 	 unsigned char *ptr;
4131 	 unsigned char *buf;
4132 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4133 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4134 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4135 	buf = stream->alloc(totalSize);
4136 	ptr = buf;
4137 	int tmp = OP_glUniform4fv;memcpy(ptr, &tmp, 4); ptr += 4;
4138 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4139 
4140 		memcpy(ptr, &location, 4); ptr += 4;
4141 		memcpy(ptr, &count, 4); ptr += 4;
4142 	memcpy(ptr, &__size_v, 4); ptr += 4;
4143 	memcpy(ptr, v, __size_v);ptr += __size_v;
4144 
4145 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4146 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4147 
4148 }
4149 
glUniform4i_enc(void * self,GLint location,GLint x,GLint y,GLint z,GLint w)4150 void glUniform4i_enc(void *self , GLint location, GLint x, GLint y, GLint z, GLint w)
4151 {
4152 	ENCODER_DEBUG_LOG("glUniform4i(location:%d, x:%d, y:%d, z:%d, w:%d)", location, x, y, z, w);
4153 	AEMU_SCOPED_TRACE("glUniform4i encode");
4154 
4155 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4156 	IOStream *stream = ctx->m_stream;
4157 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4158 	bool useChecksum = checksumCalculator->getVersion() > 0;
4159 
4160 	 unsigned char *ptr;
4161 	 unsigned char *buf;
4162 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4163 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4164 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4165 	buf = stream->alloc(totalSize);
4166 	ptr = buf;
4167 	int tmp = OP_glUniform4i;memcpy(ptr, &tmp, 4); ptr += 4;
4168 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4169 
4170 		memcpy(ptr, &location, 4); ptr += 4;
4171 		memcpy(ptr, &x, 4); ptr += 4;
4172 		memcpy(ptr, &y, 4); ptr += 4;
4173 		memcpy(ptr, &z, 4); ptr += 4;
4174 		memcpy(ptr, &w, 4); ptr += 4;
4175 
4176 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4177 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4178 
4179 }
4180 
glUniform4iv_enc(void * self,GLint location,GLsizei count,const GLint * v)4181 void glUniform4iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
4182 {
4183 	ENCODER_DEBUG_LOG("glUniform4iv(location:%d, count:%d, v:0x%08x)", location, count, v);
4184 	AEMU_SCOPED_TRACE("glUniform4iv encode");
4185 
4186 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4187 	IOStream *stream = ctx->m_stream;
4188 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4189 	bool useChecksum = checksumCalculator->getVersion() > 0;
4190 
4191 	const unsigned int __size_v =  (4 * count * sizeof(GLint));
4192 	 unsigned char *ptr;
4193 	 unsigned char *buf;
4194 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
4195 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4196 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4197 	buf = stream->alloc(totalSize);
4198 	ptr = buf;
4199 	int tmp = OP_glUniform4iv;memcpy(ptr, &tmp, 4); ptr += 4;
4200 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4201 
4202 		memcpy(ptr, &location, 4); ptr += 4;
4203 		memcpy(ptr, &count, 4); ptr += 4;
4204 	memcpy(ptr, &__size_v, 4); ptr += 4;
4205 	memcpy(ptr, v, __size_v);ptr += __size_v;
4206 
4207 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4208 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4209 
4210 }
4211 
glUniformMatrix2fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)4212 void glUniformMatrix2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
4213 {
4214 	ENCODER_DEBUG_LOG("glUniformMatrix2fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
4215 	AEMU_SCOPED_TRACE("glUniformMatrix2fv encode");
4216 
4217 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4218 	IOStream *stream = ctx->m_stream;
4219 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4220 	bool useChecksum = checksumCalculator->getVersion() > 0;
4221 
4222 	const unsigned int __size_value =  (count * 4 * sizeof(GLfloat));
4223 	 unsigned char *ptr;
4224 	 unsigned char *buf;
4225 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
4226 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4227 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4228 	buf = stream->alloc(totalSize);
4229 	ptr = buf;
4230 	int tmp = OP_glUniformMatrix2fv;memcpy(ptr, &tmp, 4); ptr += 4;
4231 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4232 
4233 		memcpy(ptr, &location, 4); ptr += 4;
4234 		memcpy(ptr, &count, 4); ptr += 4;
4235 		memcpy(ptr, &transpose, 1); ptr += 1;
4236 	memcpy(ptr, &__size_value, 4); ptr += 4;
4237 	memcpy(ptr, value, __size_value);ptr += __size_value;
4238 
4239 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4240 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4241 
4242 }
4243 
glUniformMatrix3fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)4244 void glUniformMatrix3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
4245 {
4246 	ENCODER_DEBUG_LOG("glUniformMatrix3fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
4247 	AEMU_SCOPED_TRACE("glUniformMatrix3fv encode");
4248 
4249 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4250 	IOStream *stream = ctx->m_stream;
4251 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4252 	bool useChecksum = checksumCalculator->getVersion() > 0;
4253 
4254 	const unsigned int __size_value =  (count * 9 * sizeof(GLfloat));
4255 	 unsigned char *ptr;
4256 	 unsigned char *buf;
4257 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
4258 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4259 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4260 	buf = stream->alloc(totalSize);
4261 	ptr = buf;
4262 	int tmp = OP_glUniformMatrix3fv;memcpy(ptr, &tmp, 4); ptr += 4;
4263 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4264 
4265 		memcpy(ptr, &location, 4); ptr += 4;
4266 		memcpy(ptr, &count, 4); ptr += 4;
4267 		memcpy(ptr, &transpose, 1); ptr += 1;
4268 	memcpy(ptr, &__size_value, 4); ptr += 4;
4269 	memcpy(ptr, value, __size_value);ptr += __size_value;
4270 
4271 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4272 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4273 
4274 }
4275 
glUniformMatrix4fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)4276 void glUniformMatrix4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
4277 {
4278 	ENCODER_DEBUG_LOG("glUniformMatrix4fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
4279 	AEMU_SCOPED_TRACE("glUniformMatrix4fv encode");
4280 
4281 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4282 	IOStream *stream = ctx->m_stream;
4283 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4284 	bool useChecksum = checksumCalculator->getVersion() > 0;
4285 
4286 	const unsigned int __size_value =  (count * 16 * sizeof(GLfloat));
4287 	 unsigned char *ptr;
4288 	 unsigned char *buf;
4289 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
4290 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4291 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4292 	buf = stream->alloc(totalSize);
4293 	ptr = buf;
4294 	int tmp = OP_glUniformMatrix4fv;memcpy(ptr, &tmp, 4); ptr += 4;
4295 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4296 
4297 		memcpy(ptr, &location, 4); ptr += 4;
4298 		memcpy(ptr, &count, 4); ptr += 4;
4299 		memcpy(ptr, &transpose, 1); ptr += 1;
4300 	memcpy(ptr, &__size_value, 4); ptr += 4;
4301 	memcpy(ptr, value, __size_value);ptr += __size_value;
4302 
4303 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4304 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4305 
4306 }
4307 
glUseProgram_enc(void * self,GLuint program)4308 void glUseProgram_enc(void *self , GLuint program)
4309 {
4310 	ENCODER_DEBUG_LOG("glUseProgram(program:%u)", program);
4311 	AEMU_SCOPED_TRACE("glUseProgram encode");
4312 
4313 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4314 	IOStream *stream = ctx->m_stream;
4315 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4316 	bool useChecksum = checksumCalculator->getVersion() > 0;
4317 
4318 	 unsigned char *ptr;
4319 	 unsigned char *buf;
4320 	 const size_t sizeWithoutChecksum = 8 + 4;
4321 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4322 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4323 	buf = stream->alloc(totalSize);
4324 	ptr = buf;
4325 	int tmp = OP_glUseProgram;memcpy(ptr, &tmp, 4); ptr += 4;
4326 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4327 
4328 		memcpy(ptr, &program, 4); ptr += 4;
4329 
4330 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4331 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4332 
4333 }
4334 
glValidateProgram_enc(void * self,GLuint program)4335 void glValidateProgram_enc(void *self , GLuint program)
4336 {
4337 	ENCODER_DEBUG_LOG("glValidateProgram(program:%u)", program);
4338 	AEMU_SCOPED_TRACE("glValidateProgram encode");
4339 
4340 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4341 	IOStream *stream = ctx->m_stream;
4342 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4343 	bool useChecksum = checksumCalculator->getVersion() > 0;
4344 
4345 	 unsigned char *ptr;
4346 	 unsigned char *buf;
4347 	 const size_t sizeWithoutChecksum = 8 + 4;
4348 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4349 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4350 	buf = stream->alloc(totalSize);
4351 	ptr = buf;
4352 	int tmp = OP_glValidateProgram;memcpy(ptr, &tmp, 4); ptr += 4;
4353 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4354 
4355 		memcpy(ptr, &program, 4); ptr += 4;
4356 
4357 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4358 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4359 
4360 }
4361 
glVertexAttrib1f_enc(void * self,GLuint indx,GLfloat x)4362 void glVertexAttrib1f_enc(void *self , GLuint indx, GLfloat x)
4363 {
4364 	ENCODER_DEBUG_LOG("glVertexAttrib1f(indx:%u, x:%f)", indx, x);
4365 	AEMU_SCOPED_TRACE("glVertexAttrib1f encode");
4366 
4367 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4368 	IOStream *stream = ctx->m_stream;
4369 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4370 	bool useChecksum = checksumCalculator->getVersion() > 0;
4371 
4372 	 unsigned char *ptr;
4373 	 unsigned char *buf;
4374 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4375 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4376 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4377 	buf = stream->alloc(totalSize);
4378 	ptr = buf;
4379 	int tmp = OP_glVertexAttrib1f;memcpy(ptr, &tmp, 4); ptr += 4;
4380 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4381 
4382 		memcpy(ptr, &indx, 4); ptr += 4;
4383 		memcpy(ptr, &x, 4); ptr += 4;
4384 
4385 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4386 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4387 
4388 }
4389 
glVertexAttrib1fv_enc(void * self,GLuint indx,const GLfloat * values)4390 void glVertexAttrib1fv_enc(void *self , GLuint indx, const GLfloat* values)
4391 {
4392 	ENCODER_DEBUG_LOG("glVertexAttrib1fv(indx:%u, values:0x%08x)", indx, values);
4393 	AEMU_SCOPED_TRACE("glVertexAttrib1fv encode");
4394 
4395 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4396 	IOStream *stream = ctx->m_stream;
4397 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4398 	bool useChecksum = checksumCalculator->getVersion() > 0;
4399 
4400 	const unsigned int __size_values =  (sizeof(GLfloat));
4401 	 unsigned char *ptr;
4402 	 unsigned char *buf;
4403 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4404 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4405 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4406 	buf = stream->alloc(totalSize);
4407 	ptr = buf;
4408 	int tmp = OP_glVertexAttrib1fv;memcpy(ptr, &tmp, 4); ptr += 4;
4409 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4410 
4411 		memcpy(ptr, &indx, 4); ptr += 4;
4412 	memcpy(ptr, &__size_values, 4); ptr += 4;
4413 	memcpy(ptr, values, __size_values);ptr += __size_values;
4414 
4415 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4416 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4417 
4418 }
4419 
glVertexAttrib2f_enc(void * self,GLuint indx,GLfloat x,GLfloat y)4420 void glVertexAttrib2f_enc(void *self , GLuint indx, GLfloat x, GLfloat y)
4421 {
4422 	ENCODER_DEBUG_LOG("glVertexAttrib2f(indx:%u, x:%f, y:%f)", indx, x, y);
4423 	AEMU_SCOPED_TRACE("glVertexAttrib2f encode");
4424 
4425 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4426 	IOStream *stream = ctx->m_stream;
4427 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4428 	bool useChecksum = checksumCalculator->getVersion() > 0;
4429 
4430 	 unsigned char *ptr;
4431 	 unsigned char *buf;
4432 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
4433 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4434 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4435 	buf = stream->alloc(totalSize);
4436 	ptr = buf;
4437 	int tmp = OP_glVertexAttrib2f;memcpy(ptr, &tmp, 4); ptr += 4;
4438 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4439 
4440 		memcpy(ptr, &indx, 4); ptr += 4;
4441 		memcpy(ptr, &x, 4); ptr += 4;
4442 		memcpy(ptr, &y, 4); ptr += 4;
4443 
4444 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4445 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4446 
4447 }
4448 
glVertexAttrib2fv_enc(void * self,GLuint indx,const GLfloat * values)4449 void glVertexAttrib2fv_enc(void *self , GLuint indx, const GLfloat* values)
4450 {
4451 	ENCODER_DEBUG_LOG("glVertexAttrib2fv(indx:%u, values:0x%08x)", indx, values);
4452 	AEMU_SCOPED_TRACE("glVertexAttrib2fv encode");
4453 
4454 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4455 	IOStream *stream = ctx->m_stream;
4456 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4457 	bool useChecksum = checksumCalculator->getVersion() > 0;
4458 
4459 	const unsigned int __size_values =  (2 * sizeof(GLfloat));
4460 	 unsigned char *ptr;
4461 	 unsigned char *buf;
4462 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4463 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4464 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4465 	buf = stream->alloc(totalSize);
4466 	ptr = buf;
4467 	int tmp = OP_glVertexAttrib2fv;memcpy(ptr, &tmp, 4); ptr += 4;
4468 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4469 
4470 		memcpy(ptr, &indx, 4); ptr += 4;
4471 	memcpy(ptr, &__size_values, 4); ptr += 4;
4472 	memcpy(ptr, values, __size_values);ptr += __size_values;
4473 
4474 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4475 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4476 
4477 }
4478 
glVertexAttrib3f_enc(void * self,GLuint indx,GLfloat x,GLfloat y,GLfloat z)4479 void glVertexAttrib3f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z)
4480 {
4481 	ENCODER_DEBUG_LOG("glVertexAttrib3f(indx:%u, x:%f, y:%f, z:%f)", indx, x, y, z);
4482 	AEMU_SCOPED_TRACE("glVertexAttrib3f encode");
4483 
4484 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4485 	IOStream *stream = ctx->m_stream;
4486 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4487 	bool useChecksum = checksumCalculator->getVersion() > 0;
4488 
4489 	 unsigned char *ptr;
4490 	 unsigned char *buf;
4491 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4492 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4493 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4494 	buf = stream->alloc(totalSize);
4495 	ptr = buf;
4496 	int tmp = OP_glVertexAttrib3f;memcpy(ptr, &tmp, 4); ptr += 4;
4497 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4498 
4499 		memcpy(ptr, &indx, 4); ptr += 4;
4500 		memcpy(ptr, &x, 4); ptr += 4;
4501 		memcpy(ptr, &y, 4); ptr += 4;
4502 		memcpy(ptr, &z, 4); ptr += 4;
4503 
4504 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4505 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4506 
4507 }
4508 
glVertexAttrib3fv_enc(void * self,GLuint indx,const GLfloat * values)4509 void glVertexAttrib3fv_enc(void *self , GLuint indx, const GLfloat* values)
4510 {
4511 	ENCODER_DEBUG_LOG("glVertexAttrib3fv(indx:%u, values:0x%08x)", indx, values);
4512 	AEMU_SCOPED_TRACE("glVertexAttrib3fv encode");
4513 
4514 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4515 	IOStream *stream = ctx->m_stream;
4516 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4517 	bool useChecksum = checksumCalculator->getVersion() > 0;
4518 
4519 	const unsigned int __size_values =  (3 * sizeof(GLfloat));
4520 	 unsigned char *ptr;
4521 	 unsigned char *buf;
4522 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4523 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4524 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4525 	buf = stream->alloc(totalSize);
4526 	ptr = buf;
4527 	int tmp = OP_glVertexAttrib3fv;memcpy(ptr, &tmp, 4); ptr += 4;
4528 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4529 
4530 		memcpy(ptr, &indx, 4); ptr += 4;
4531 	memcpy(ptr, &__size_values, 4); ptr += 4;
4532 	memcpy(ptr, values, __size_values);ptr += __size_values;
4533 
4534 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4535 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4536 
4537 }
4538 
glVertexAttrib4f_enc(void * self,GLuint indx,GLfloat x,GLfloat y,GLfloat z,GLfloat w)4539 void glVertexAttrib4f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
4540 {
4541 	ENCODER_DEBUG_LOG("glVertexAttrib4f(indx:%u, x:%f, y:%f, z:%f, w:%f)", indx, x, y, z, w);
4542 	AEMU_SCOPED_TRACE("glVertexAttrib4f encode");
4543 
4544 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4545 	IOStream *stream = ctx->m_stream;
4546 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4547 	bool useChecksum = checksumCalculator->getVersion() > 0;
4548 
4549 	 unsigned char *ptr;
4550 	 unsigned char *buf;
4551 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4552 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4553 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4554 	buf = stream->alloc(totalSize);
4555 	ptr = buf;
4556 	int tmp = OP_glVertexAttrib4f;memcpy(ptr, &tmp, 4); ptr += 4;
4557 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4558 
4559 		memcpy(ptr, &indx, 4); ptr += 4;
4560 		memcpy(ptr, &x, 4); ptr += 4;
4561 		memcpy(ptr, &y, 4); ptr += 4;
4562 		memcpy(ptr, &z, 4); ptr += 4;
4563 		memcpy(ptr, &w, 4); ptr += 4;
4564 
4565 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4566 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4567 
4568 }
4569 
glVertexAttrib4fv_enc(void * self,GLuint indx,const GLfloat * values)4570 void glVertexAttrib4fv_enc(void *self , GLuint indx, const GLfloat* values)
4571 {
4572 	ENCODER_DEBUG_LOG("glVertexAttrib4fv(indx:%u, values:0x%08x)", indx, values);
4573 	AEMU_SCOPED_TRACE("glVertexAttrib4fv encode");
4574 
4575 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4576 	IOStream *stream = ctx->m_stream;
4577 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4578 	bool useChecksum = checksumCalculator->getVersion() > 0;
4579 
4580 	const unsigned int __size_values =  (4 * sizeof(GLfloat));
4581 	 unsigned char *ptr;
4582 	 unsigned char *buf;
4583 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4584 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4585 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4586 	buf = stream->alloc(totalSize);
4587 	ptr = buf;
4588 	int tmp = OP_glVertexAttrib4fv;memcpy(ptr, &tmp, 4); ptr += 4;
4589 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4590 
4591 		memcpy(ptr, &indx, 4); ptr += 4;
4592 	memcpy(ptr, &__size_values, 4); ptr += 4;
4593 	memcpy(ptr, values, __size_values);ptr += __size_values;
4594 
4595 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4596 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4597 
4598 }
4599 
glViewport_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height)4600 void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
4601 {
4602 	ENCODER_DEBUG_LOG("glViewport(x:%d, y:%d, width:%d, height:%d)", x, y, width, height);
4603 	AEMU_SCOPED_TRACE("glViewport encode");
4604 
4605 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4606 	IOStream *stream = ctx->m_stream;
4607 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4608 	bool useChecksum = checksumCalculator->getVersion() > 0;
4609 
4610 	 unsigned char *ptr;
4611 	 unsigned char *buf;
4612 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4613 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4614 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4615 	buf = stream->alloc(totalSize);
4616 	ptr = buf;
4617 	int tmp = OP_glViewport;memcpy(ptr, &tmp, 4); ptr += 4;
4618 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4619 
4620 		memcpy(ptr, &x, 4); ptr += 4;
4621 		memcpy(ptr, &y, 4); ptr += 4;
4622 		memcpy(ptr, &width, 4); ptr += 4;
4623 		memcpy(ptr, &height, 4); ptr += 4;
4624 
4625 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4626 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4627 
4628 }
4629 
glEGLImageTargetTexture2DOES_enc(void * self,GLenum target,GLeglImageOES image)4630 void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES image)
4631 {
4632 	ENCODER_DEBUG_LOG("glEGLImageTargetTexture2DOES(target:0x%08x, image:%p)", target, image);
4633 	AEMU_SCOPED_TRACE("glEGLImageTargetTexture2DOES encode");
4634 
4635 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4636 	IOStream *stream = ctx->m_stream;
4637 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4638 	bool useChecksum = checksumCalculator->getVersion() > 0;
4639 
4640 	 unsigned char *ptr;
4641 	 unsigned char *buf;
4642 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4643 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4644 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4645 	buf = stream->alloc(totalSize);
4646 	ptr = buf;
4647 	int tmp = OP_glEGLImageTargetTexture2DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4648 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4649 
4650 		memcpy(ptr, &target, 4); ptr += 4;
4651 		memcpy(ptr, &image, 4); ptr += 4;
4652 
4653 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4654 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4655 
4656 }
4657 
glEGLImageTargetRenderbufferStorageOES_enc(void * self,GLenum target,GLeglImageOES image)4658 void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeglImageOES image)
4659 {
4660 	ENCODER_DEBUG_LOG("glEGLImageTargetRenderbufferStorageOES(target:0x%08x, image:%p)", target, image);
4661 	AEMU_SCOPED_TRACE("glEGLImageTargetRenderbufferStorageOES encode");
4662 
4663 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4664 	IOStream *stream = ctx->m_stream;
4665 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4666 	bool useChecksum = checksumCalculator->getVersion() > 0;
4667 
4668 	 unsigned char *ptr;
4669 	 unsigned char *buf;
4670 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4671 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4672 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4673 	buf = stream->alloc(totalSize);
4674 	ptr = buf;
4675 	int tmp = OP_glEGLImageTargetRenderbufferStorageOES;memcpy(ptr, &tmp, 4); ptr += 4;
4676 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4677 
4678 		memcpy(ptr, &target, 4); ptr += 4;
4679 		memcpy(ptr, &image, 4); ptr += 4;
4680 
4681 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4682 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4683 
4684 }
4685 
glUnmapBufferOES_enc(void * self,GLenum target)4686 GLboolean glUnmapBufferOES_enc(void *self , GLenum target)
4687 {
4688 	ENCODER_DEBUG_LOG("glUnmapBufferOES(target:0x%08x)", target);
4689 	AEMU_SCOPED_TRACE("glUnmapBufferOES encode");
4690 
4691 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4692 	IOStream *stream = ctx->m_stream;
4693 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4694 	bool useChecksum = checksumCalculator->getVersion() > 0;
4695 
4696 	 unsigned char *ptr;
4697 	 unsigned char *buf;
4698 	 const size_t sizeWithoutChecksum = 8 + 4;
4699 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4700 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4701 	buf = stream->alloc(totalSize);
4702 	ptr = buf;
4703 	int tmp = OP_glUnmapBufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
4704 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4705 
4706 		memcpy(ptr, &target, 4); ptr += 4;
4707 
4708 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4709 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4710 
4711 
4712 	GLboolean retval;
4713 	stream->readback(&retval, 1);
4714 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
4715 	if (useChecksum) {
4716 		unsigned char *checksumBufPtr = NULL;
4717 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
4718 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
4719 		stream->readback(checksumBufPtr, checksumSize);
4720 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
4721 			ALOGE("glUnmapBufferOES: GL communication error, please report this issue to b.android.com.\n");
4722 			abort();
4723 		}
4724 	}
4725 	return retval;
4726 }
4727 
glTexImage3DOES_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * pixels)4728 void glTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
4729 {
4730 	ENCODER_DEBUG_LOG("glTexImage3DOES(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d, border:%d, format:0x%08x, type:0x%08x, pixels:0x%08x)", target, level, internalformat, width, height, depth, border, format, type, pixels);
4731 	AEMU_SCOPED_TRACE("glTexImage3DOES encode");
4732 
4733 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4734 	IOStream *stream = ctx->m_stream;
4735 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4736 	bool useChecksum = checksumCalculator->getVersion() > 0;
4737 
4738 	const unsigned int __size_pixels = ((pixels != NULL) ?  glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
4739 	 unsigned char *ptr;
4740 	 unsigned char *buf;
4741 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
4742 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4743 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4744 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4745 	ptr = buf;
4746 	int tmp = OP_glTexImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4747 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4748 
4749 		memcpy(ptr, &target, 4); ptr += 4;
4750 		memcpy(ptr, &level, 4); ptr += 4;
4751 		memcpy(ptr, &internalformat, 4); ptr += 4;
4752 		memcpy(ptr, &width, 4); ptr += 4;
4753 		memcpy(ptr, &height, 4); ptr += 4;
4754 		memcpy(ptr, &depth, 4); ptr += 4;
4755 		memcpy(ptr, &border, 4); ptr += 4;
4756 		memcpy(ptr, &format, 4); ptr += 4;
4757 		memcpy(ptr, &type, 4); ptr += 4;
4758 
4759 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4760 	stream->flush();
4761 	stream->writeFully(&__size_pixels,4);
4762 	if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
4763 	if (pixels != NULL) {
4764 		stream->writeFully(pixels, __size_pixels);
4765 		if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
4766 	}
4767 	buf = stream->alloc(checksumSize);
4768 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4769 
4770 }
4771 
glTexSubImage3DOES_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * pixels)4772 void glTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels)
4773 {
4774 	ENCODER_DEBUG_LOG("glTexSubImage3DOES(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, width:%d, height:%d, depth:%d, format:0x%08x, type:0x%08x, pixels:0x%08x)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
4775 	AEMU_SCOPED_TRACE("glTexSubImage3DOES encode");
4776 
4777 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4778 	IOStream *stream = ctx->m_stream;
4779 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4780 	bool useChecksum = checksumCalculator->getVersion() > 0;
4781 
4782 	const unsigned int __size_pixels = ((pixels != NULL) ?  glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
4783 	 unsigned char *ptr;
4784 	 unsigned char *buf;
4785 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
4786 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4787 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4788 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4789 	ptr = buf;
4790 	int tmp = OP_glTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4791 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4792 
4793 		memcpy(ptr, &target, 4); ptr += 4;
4794 		memcpy(ptr, &level, 4); ptr += 4;
4795 		memcpy(ptr, &xoffset, 4); ptr += 4;
4796 		memcpy(ptr, &yoffset, 4); ptr += 4;
4797 		memcpy(ptr, &zoffset, 4); ptr += 4;
4798 		memcpy(ptr, &width, 4); ptr += 4;
4799 		memcpy(ptr, &height, 4); ptr += 4;
4800 		memcpy(ptr, &depth, 4); ptr += 4;
4801 		memcpy(ptr, &format, 4); ptr += 4;
4802 		memcpy(ptr, &type, 4); ptr += 4;
4803 
4804 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4805 	stream->flush();
4806 	stream->writeFully(&__size_pixels,4);
4807 	if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
4808 	if (pixels != NULL) {
4809 		stream->writeFully(pixels, __size_pixels);
4810 		if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
4811 	}
4812 	buf = stream->alloc(checksumSize);
4813 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4814 
4815 }
4816 
glCopyTexSubImage3DOES_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)4817 void glCopyTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
4818 {
4819 	ENCODER_DEBUG_LOG("glCopyTexSubImage3DOES(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, x:%d, y:%d, width:%d, height:%d)", target, level, xoffset, yoffset, zoffset, x, y, width, height);
4820 	AEMU_SCOPED_TRACE("glCopyTexSubImage3DOES encode");
4821 
4822 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4823 	IOStream *stream = ctx->m_stream;
4824 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4825 	bool useChecksum = checksumCalculator->getVersion() > 0;
4826 
4827 	 unsigned char *ptr;
4828 	 unsigned char *buf;
4829 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
4830 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4831 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4832 	buf = stream->alloc(totalSize);
4833 	ptr = buf;
4834 	int tmp = OP_glCopyTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4835 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4836 
4837 		memcpy(ptr, &target, 4); ptr += 4;
4838 		memcpy(ptr, &level, 4); ptr += 4;
4839 		memcpy(ptr, &xoffset, 4); ptr += 4;
4840 		memcpy(ptr, &yoffset, 4); ptr += 4;
4841 		memcpy(ptr, &zoffset, 4); ptr += 4;
4842 		memcpy(ptr, &x, 4); ptr += 4;
4843 		memcpy(ptr, &y, 4); ptr += 4;
4844 		memcpy(ptr, &width, 4); ptr += 4;
4845 		memcpy(ptr, &height, 4); ptr += 4;
4846 
4847 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4848 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4849 
4850 }
4851 
glCompressedTexImage3DOES_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)4852 void glCompressedTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
4853 {
4854 	ENCODER_DEBUG_LOG("glCompressedTexImage3DOES(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d, border:%d, imageSize:%d, data:0x%08x)", target, level, internalformat, width, height, depth, border, imageSize, data);
4855 	AEMU_SCOPED_TRACE("glCompressedTexImage3DOES encode");
4856 
4857 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4858 	IOStream *stream = ctx->m_stream;
4859 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4860 	bool useChecksum = checksumCalculator->getVersion() > 0;
4861 
4862 	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
4863 	 unsigned char *ptr;
4864 	 unsigned char *buf;
4865 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
4866 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4867 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4868 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4869 	ptr = buf;
4870 	int tmp = OP_glCompressedTexImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4871 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4872 
4873 		memcpy(ptr, &target, 4); ptr += 4;
4874 		memcpy(ptr, &level, 4); ptr += 4;
4875 		memcpy(ptr, &internalformat, 4); ptr += 4;
4876 		memcpy(ptr, &width, 4); ptr += 4;
4877 		memcpy(ptr, &height, 4); ptr += 4;
4878 		memcpy(ptr, &depth, 4); ptr += 4;
4879 		memcpy(ptr, &border, 4); ptr += 4;
4880 		memcpy(ptr, &imageSize, 4); ptr += 4;
4881 
4882 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4883 	stream->flush();
4884 	stream->writeFully(&__size_data,4);
4885 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
4886 	if (data != NULL) {
4887 		stream->writeFully(data, __size_data);
4888 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
4889 	}
4890 	buf = stream->alloc(checksumSize);
4891 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4892 
4893 }
4894 
glCompressedTexSubImage3DOES_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)4895 void glCompressedTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
4896 {
4897 	ENCODER_DEBUG_LOG("glCompressedTexSubImage3DOES(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, width:%d, height:%d, depth:%d, format:0x%08x, imageSize:%d, data:0x%08x)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
4898 	AEMU_SCOPED_TRACE("glCompressedTexSubImage3DOES encode");
4899 
4900 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4901 	IOStream *stream = ctx->m_stream;
4902 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4903 	bool useChecksum = checksumCalculator->getVersion() > 0;
4904 
4905 	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
4906 	 unsigned char *ptr;
4907 	 unsigned char *buf;
4908 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
4909 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4910 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4911 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4912 	ptr = buf;
4913 	int tmp = OP_glCompressedTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4914 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4915 
4916 		memcpy(ptr, &target, 4); ptr += 4;
4917 		memcpy(ptr, &level, 4); ptr += 4;
4918 		memcpy(ptr, &xoffset, 4); ptr += 4;
4919 		memcpy(ptr, &yoffset, 4); ptr += 4;
4920 		memcpy(ptr, &zoffset, 4); ptr += 4;
4921 		memcpy(ptr, &width, 4); ptr += 4;
4922 		memcpy(ptr, &height, 4); ptr += 4;
4923 		memcpy(ptr, &depth, 4); ptr += 4;
4924 		memcpy(ptr, &format, 4); ptr += 4;
4925 		memcpy(ptr, &imageSize, 4); ptr += 4;
4926 
4927 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4928 	stream->flush();
4929 	stream->writeFully(&__size_data,4);
4930 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
4931 	if (data != NULL) {
4932 		stream->writeFully(data, __size_data);
4933 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
4934 	}
4935 	buf = stream->alloc(checksumSize);
4936 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4937 
4938 }
4939 
glFramebufferTexture3DOES_enc(void * self,GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level,GLint zoffset)4940 void glFramebufferTexture3DOES_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
4941 {
4942 	ENCODER_DEBUG_LOG("glFramebufferTexture3DOES(target:0x%08x, attachment:0x%08x, textarget:0x%08x, texture:%u, level:%d, zoffset:%d)", target, attachment, textarget, texture, level, zoffset);
4943 	AEMU_SCOPED_TRACE("glFramebufferTexture3DOES encode");
4944 
4945 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4946 	IOStream *stream = ctx->m_stream;
4947 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4948 	bool useChecksum = checksumCalculator->getVersion() > 0;
4949 
4950 	 unsigned char *ptr;
4951 	 unsigned char *buf;
4952 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
4953 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4954 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4955 	buf = stream->alloc(totalSize);
4956 	ptr = buf;
4957 	int tmp = OP_glFramebufferTexture3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4958 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4959 
4960 		memcpy(ptr, &target, 4); ptr += 4;
4961 		memcpy(ptr, &attachment, 4); ptr += 4;
4962 		memcpy(ptr, &textarget, 4); ptr += 4;
4963 		memcpy(ptr, &texture, 4); ptr += 4;
4964 		memcpy(ptr, &level, 4); ptr += 4;
4965 		memcpy(ptr, &zoffset, 4); ptr += 4;
4966 
4967 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4968 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4969 
4970 }
4971 
glBindVertexArrayOES_enc(void * self,GLuint array)4972 void glBindVertexArrayOES_enc(void *self , GLuint array)
4973 {
4974 	ENCODER_DEBUG_LOG("glBindVertexArrayOES(array:%u)", array);
4975 	AEMU_SCOPED_TRACE("glBindVertexArrayOES encode");
4976 
4977 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4978 	IOStream *stream = ctx->m_stream;
4979 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4980 	bool useChecksum = checksumCalculator->getVersion() > 0;
4981 
4982 	 unsigned char *ptr;
4983 	 unsigned char *buf;
4984 	 const size_t sizeWithoutChecksum = 8 + 4;
4985 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4986 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4987 	buf = stream->alloc(totalSize);
4988 	ptr = buf;
4989 	int tmp = OP_glBindVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
4990 	memcpy(ptr, &totalSize, 4);  ptr += 4;
4991 
4992 		memcpy(ptr, &array, 4); ptr += 4;
4993 
4994 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4995 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4996 
4997 }
4998 
glDeleteVertexArraysOES_enc(void * self,GLsizei n,const GLuint * arrays)4999 void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays)
5000 {
5001 	ENCODER_DEBUG_LOG("glDeleteVertexArraysOES(n:%d, arrays:0x%08x)", n, arrays);
5002 	AEMU_SCOPED_TRACE("glDeleteVertexArraysOES encode");
5003 
5004 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5005 	IOStream *stream = ctx->m_stream;
5006 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5007 	bool useChecksum = checksumCalculator->getVersion() > 0;
5008 
5009 	const unsigned int __size_arrays =  (n * sizeof(GLuint));
5010 	 unsigned char *ptr;
5011 	 unsigned char *buf;
5012 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
5013 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5014 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5015 	buf = stream->alloc(totalSize);
5016 	ptr = buf;
5017 	int tmp = OP_glDeleteVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
5018 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5019 
5020 		memcpy(ptr, &n, 4); ptr += 4;
5021 	memcpy(ptr, &__size_arrays, 4); ptr += 4;
5022 	memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
5023 
5024 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5025 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5026 
5027 }
5028 
glGenVertexArraysOES_enc(void * self,GLsizei n,GLuint * arrays)5029 void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays)
5030 {
5031 	ENCODER_DEBUG_LOG("glGenVertexArraysOES(n:%d, arrays:0x%08x)", n, arrays);
5032 	AEMU_SCOPED_TRACE("glGenVertexArraysOES encode");
5033 
5034 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5035 	IOStream *stream = ctx->m_stream;
5036 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5037 	bool useChecksum = checksumCalculator->getVersion() > 0;
5038 
5039 	const unsigned int __size_arrays =  (n * sizeof(GLuint));
5040 	 unsigned char *ptr;
5041 	 unsigned char *buf;
5042 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5043 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5044 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5045 	buf = stream->alloc(totalSize);
5046 	ptr = buf;
5047 	int tmp = OP_glGenVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
5048 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5049 
5050 		memcpy(ptr, &n, 4); ptr += 4;
5051 	memcpy(ptr, &__size_arrays, 4); ptr += 4;
5052 
5053 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5054 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5055 
5056 	stream->readback(arrays, __size_arrays);
5057 	if (useChecksum) checksumCalculator->addBuffer(arrays, __size_arrays);
5058 	if (useChecksum) {
5059 		unsigned char *checksumBufPtr = NULL;
5060 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5061 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5062 		stream->readback(checksumBufPtr, checksumSize);
5063 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5064 			ALOGE("glGenVertexArraysOES: GL communication error, please report this issue to b.android.com.\n");
5065 			abort();
5066 		}
5067 	}
5068 }
5069 
glIsVertexArrayOES_enc(void * self,GLuint array)5070 GLboolean glIsVertexArrayOES_enc(void *self , GLuint array)
5071 {
5072 	ENCODER_DEBUG_LOG("glIsVertexArrayOES(array:%u)", array);
5073 	AEMU_SCOPED_TRACE("glIsVertexArrayOES encode");
5074 
5075 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5076 	IOStream *stream = ctx->m_stream;
5077 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5078 	bool useChecksum = checksumCalculator->getVersion() > 0;
5079 
5080 	 unsigned char *ptr;
5081 	 unsigned char *buf;
5082 	 const size_t sizeWithoutChecksum = 8 + 4;
5083 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5084 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5085 	buf = stream->alloc(totalSize);
5086 	ptr = buf;
5087 	int tmp = OP_glIsVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
5088 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5089 
5090 		memcpy(ptr, &array, 4); ptr += 4;
5091 
5092 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5093 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5094 
5095 
5096 	GLboolean retval;
5097 	stream->readback(&retval, 1);
5098 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
5099 	if (useChecksum) {
5100 		unsigned char *checksumBufPtr = NULL;
5101 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5102 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5103 		stream->readback(checksumBufPtr, checksumSize);
5104 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5105 			ALOGE("glIsVertexArrayOES: GL communication error, please report this issue to b.android.com.\n");
5106 			abort();
5107 		}
5108 	}
5109 	return retval;
5110 }
5111 
glDiscardFramebufferEXT_enc(void * self,GLenum target,GLsizei numAttachments,const GLenum * attachments)5112 void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments)
5113 {
5114 	ENCODER_DEBUG_LOG("glDiscardFramebufferEXT(target:0x%08x, numAttachments:%d, attachments:0x%08x)", target, numAttachments, attachments);
5115 	AEMU_SCOPED_TRACE("glDiscardFramebufferEXT encode");
5116 
5117 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5118 	IOStream *stream = ctx->m_stream;
5119 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5120 	bool useChecksum = checksumCalculator->getVersion() > 0;
5121 
5122 	const unsigned int __size_attachments =  (numAttachments * sizeof(GLenum));
5123 	 unsigned char *ptr;
5124 	 unsigned char *buf;
5125 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 1*4;
5126 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5127 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5128 	buf = stream->alloc(totalSize);
5129 	ptr = buf;
5130 	int tmp = OP_glDiscardFramebufferEXT;memcpy(ptr, &tmp, 4); ptr += 4;
5131 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5132 
5133 		memcpy(ptr, &target, 4); ptr += 4;
5134 		memcpy(ptr, &numAttachments, 4); ptr += 4;
5135 	memcpy(ptr, &__size_attachments, 4); ptr += 4;
5136 	memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
5137 
5138 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5139 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5140 
5141 }
5142 
glVertexAttribPointerData_enc(void * self,GLuint indx,GLint size,GLenum type,GLboolean normalized,GLsizei stride,void * data,GLuint datalen)5143 void glVertexAttribPointerData_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void* data, GLuint datalen)
5144 {
5145 	ENCODER_DEBUG_LOG("glVertexAttribPointerData(indx:%u, size:%d, type:0x%08x, normalized:%d, stride:%d, data:0x%08x, datalen:%u)", indx, size, type, normalized, stride, data, datalen);
5146 	AEMU_SCOPED_TRACE("glVertexAttribPointerData encode");
5147 
5148 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5149 	IOStream *stream = ctx->m_stream;
5150 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5151 	bool useChecksum = checksumCalculator->getVersion() > 0;
5152 
5153 	const unsigned int __size_data =  datalen;
5154 	 unsigned char *ptr;
5155 	 unsigned char *buf;
5156 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + __size_data + 4 + 1*4;
5157 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5158 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5159 	buf = stream->alloc(totalSize);
5160 	ptr = buf;
5161 	int tmp = OP_glVertexAttribPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
5162 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5163 
5164 		memcpy(ptr, &indx, 4); ptr += 4;
5165 		memcpy(ptr, &size, 4); ptr += 4;
5166 		memcpy(ptr, &type, 4); ptr += 4;
5167 		memcpy(ptr, &normalized, 1); ptr += 1;
5168 		memcpy(ptr, &stride, 4); ptr += 4;
5169 	memcpy(ptr, &__size_data, 4); ptr += 4;
5170 	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
5171 		memcpy(ptr, &datalen, 4); ptr += 4;
5172 
5173 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5174 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5175 
5176 }
5177 
glVertexAttribPointerOffset_enc(void * self,GLuint indx,GLint size,GLenum type,GLboolean normalized,GLsizei stride,GLuint offset)5178 void glVertexAttribPointerOffset_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint offset)
5179 {
5180 	ENCODER_DEBUG_LOG("glVertexAttribPointerOffset(indx:%u, size:%d, type:0x%08x, normalized:%d, stride:%d, offset:%u)", indx, size, type, normalized, stride, offset);
5181 	AEMU_SCOPED_TRACE("glVertexAttribPointerOffset encode");
5182 
5183 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5184 	IOStream *stream = ctx->m_stream;
5185 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5186 	bool useChecksum = checksumCalculator->getVersion() > 0;
5187 
5188 	 unsigned char *ptr;
5189 	 unsigned char *buf;
5190 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + 4;
5191 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5192 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5193 	buf = stream->alloc(totalSize);
5194 	ptr = buf;
5195 	int tmp = OP_glVertexAttribPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
5196 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5197 
5198 		memcpy(ptr, &indx, 4); ptr += 4;
5199 		memcpy(ptr, &size, 4); ptr += 4;
5200 		memcpy(ptr, &type, 4); ptr += 4;
5201 		memcpy(ptr, &normalized, 1); ptr += 1;
5202 		memcpy(ptr, &stride, 4); ptr += 4;
5203 		memcpy(ptr, &offset, 4); ptr += 4;
5204 
5205 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5206 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5207 
5208 }
5209 
glDrawElementsOffset_enc(void * self,GLenum mode,GLsizei count,GLenum type,GLuint offset)5210 void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset)
5211 {
5212 	ENCODER_DEBUG_LOG("glDrawElementsOffset(mode:0x%08x, count:%d, type:0x%08x, offset:%u)", mode, count, type, offset);
5213 	AEMU_SCOPED_TRACE("glDrawElementsOffset encode");
5214 
5215 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5216 	IOStream *stream = ctx->m_stream;
5217 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5218 	bool useChecksum = checksumCalculator->getVersion() > 0;
5219 
5220 	 unsigned char *ptr;
5221 	 unsigned char *buf;
5222 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
5223 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5224 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5225 	buf = stream->alloc(totalSize);
5226 	ptr = buf;
5227 	int tmp = OP_glDrawElementsOffset;memcpy(ptr, &tmp, 4); ptr += 4;
5228 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5229 
5230 		memcpy(ptr, &mode, 4); ptr += 4;
5231 		memcpy(ptr, &count, 4); ptr += 4;
5232 		memcpy(ptr, &type, 4); ptr += 4;
5233 		memcpy(ptr, &offset, 4); ptr += 4;
5234 
5235 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5236 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5237 
5238 }
5239 
glDrawElementsData_enc(void * self,GLenum mode,GLsizei count,GLenum type,void * data,GLuint datalen)5240 void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
5241 {
5242 	ENCODER_DEBUG_LOG("glDrawElementsData(mode:0x%08x, count:%d, type:0x%08x, data:0x%08x, datalen:%u)", mode, count, type, data, datalen);
5243 	AEMU_SCOPED_TRACE("glDrawElementsData encode");
5244 
5245 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5246 	IOStream *stream = ctx->m_stream;
5247 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5248 	bool useChecksum = checksumCalculator->getVersion() > 0;
5249 
5250 	const unsigned int __size_data =  datalen;
5251 	 unsigned char *ptr;
5252 	 unsigned char *buf;
5253 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
5254 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5255 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5256 	buf = stream->alloc(totalSize);
5257 	ptr = buf;
5258 	int tmp = OP_glDrawElementsData;memcpy(ptr, &tmp, 4); ptr += 4;
5259 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5260 
5261 		memcpy(ptr, &mode, 4); ptr += 4;
5262 		memcpy(ptr, &count, 4); ptr += 4;
5263 		memcpy(ptr, &type, 4); ptr += 4;
5264 	memcpy(ptr, &__size_data, 4); ptr += 4;
5265 	memcpy(ptr, data, __size_data);ptr += __size_data;
5266 		memcpy(ptr, &datalen, 4); ptr += 4;
5267 
5268 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5269 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5270 
5271 }
5272 
glGetCompressedTextureFormats_enc(void * self,int count,GLint * formats)5273 void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats)
5274 {
5275 	ENCODER_DEBUG_LOG("glGetCompressedTextureFormats(count:%d, formats:0x%08x)", count, formats);
5276 	AEMU_SCOPED_TRACE("glGetCompressedTextureFormats encode");
5277 
5278 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5279 	IOStream *stream = ctx->m_stream;
5280 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5281 	bool useChecksum = checksumCalculator->getVersion() > 0;
5282 
5283 	const unsigned int __size_formats =  (count * sizeof(GLint));
5284 	 unsigned char *ptr;
5285 	 unsigned char *buf;
5286 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5287 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5288 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5289 	buf = stream->alloc(totalSize);
5290 	ptr = buf;
5291 	int tmp = OP_glGetCompressedTextureFormats;memcpy(ptr, &tmp, 4); ptr += 4;
5292 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5293 
5294 		memcpy(ptr, &count, 4); ptr += 4;
5295 	memcpy(ptr, &__size_formats, 4); ptr += 4;
5296 
5297 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5298 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5299 
5300 	stream->readback(formats, __size_formats);
5301 	if (useChecksum) checksumCalculator->addBuffer(formats, __size_formats);
5302 	if (useChecksum) {
5303 		unsigned char *checksumBufPtr = NULL;
5304 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5305 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5306 		stream->readback(checksumBufPtr, checksumSize);
5307 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5308 			ALOGE("glGetCompressedTextureFormats: GL communication error, please report this issue to b.android.com.\n");
5309 			abort();
5310 		}
5311 	}
5312 }
5313 
glShaderString_enc(void * self,GLuint shader,const GLchar * string,GLsizei len)5314 void glShaderString_enc(void *self , GLuint shader, const GLchar* string, GLsizei len)
5315 {
5316 	ENCODER_DEBUG_LOG("glShaderString(shader:%u, string:0x%08x, len:%d)", shader, string, len);
5317 	AEMU_SCOPED_TRACE("glShaderString encode");
5318 
5319 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5320 	IOStream *stream = ctx->m_stream;
5321 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5322 	bool useChecksum = checksumCalculator->getVersion() > 0;
5323 
5324 	const unsigned int __size_string =  len;
5325 	 unsigned char *ptr;
5326 	 unsigned char *buf;
5327 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_string + 4 + 1*4;
5328 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5329 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5330 	buf = stream->alloc(totalSize);
5331 	ptr = buf;
5332 	int tmp = OP_glShaderString;memcpy(ptr, &tmp, 4); ptr += 4;
5333 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5334 
5335 		memcpy(ptr, &shader, 4); ptr += 4;
5336 	memcpy(ptr, &__size_string, 4); ptr += 4;
5337 	memcpy(ptr, string, __size_string);ptr += __size_string;
5338 		memcpy(ptr, &len, 4); ptr += 4;
5339 
5340 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5341 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5342 
5343 }
5344 
glFinishRoundTrip_enc(void * self)5345 int glFinishRoundTrip_enc(void *self )
5346 {
5347 	ENCODER_DEBUG_LOG("glFinishRoundTrip()");
5348 	AEMU_SCOPED_TRACE("glFinishRoundTrip encode");
5349 
5350 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5351 	IOStream *stream = ctx->m_stream;
5352 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5353 	bool useChecksum = checksumCalculator->getVersion() > 0;
5354 
5355 	 unsigned char *ptr;
5356 	 unsigned char *buf;
5357 	 const size_t sizeWithoutChecksum = 8;
5358 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5359 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5360 	buf = stream->alloc(totalSize);
5361 	ptr = buf;
5362 	int tmp = OP_glFinishRoundTrip;memcpy(ptr, &tmp, 4); ptr += 4;
5363 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5364 
5365 
5366 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5367 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5368 
5369 
5370 	int retval;
5371 	stream->readback(&retval, 4);
5372 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
5373 	if (useChecksum) {
5374 		unsigned char *checksumBufPtr = NULL;
5375 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5376 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5377 		stream->readback(checksumBufPtr, checksumSize);
5378 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5379 			ALOGE("glFinishRoundTrip: GL communication error, please report this issue to b.android.com.\n");
5380 			abort();
5381 		}
5382 	}
5383 	return retval;
5384 }
5385 
glGenVertexArrays_enc(void * self,GLsizei n,GLuint * arrays)5386 void glGenVertexArrays_enc(void *self , GLsizei n, GLuint* arrays)
5387 {
5388 	ENCODER_DEBUG_LOG("glGenVertexArrays(n:%d, arrays:0x%08x)", n, arrays);
5389 	AEMU_SCOPED_TRACE("glGenVertexArrays encode");
5390 
5391 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5392 	IOStream *stream = ctx->m_stream;
5393 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5394 	bool useChecksum = checksumCalculator->getVersion() > 0;
5395 
5396 	const unsigned int __size_arrays =  (n * sizeof(GLuint));
5397 	 unsigned char *ptr;
5398 	 unsigned char *buf;
5399 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5400 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5401 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5402 	buf = stream->alloc(totalSize);
5403 	ptr = buf;
5404 	int tmp = OP_glGenVertexArrays;memcpy(ptr, &tmp, 4); ptr += 4;
5405 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5406 
5407 		memcpy(ptr, &n, 4); ptr += 4;
5408 	memcpy(ptr, &__size_arrays, 4); ptr += 4;
5409 
5410 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5411 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5412 
5413 	stream->readback(arrays, __size_arrays);
5414 	if (useChecksum) checksumCalculator->addBuffer(arrays, __size_arrays);
5415 	if (useChecksum) {
5416 		unsigned char *checksumBufPtr = NULL;
5417 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5418 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5419 		stream->readback(checksumBufPtr, checksumSize);
5420 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5421 			ALOGE("glGenVertexArrays: GL communication error, please report this issue to b.android.com.\n");
5422 			abort();
5423 		}
5424 	}
5425 }
5426 
glBindVertexArray_enc(void * self,GLuint array)5427 void glBindVertexArray_enc(void *self , GLuint array)
5428 {
5429 	ENCODER_DEBUG_LOG("glBindVertexArray(array:%u)", array);
5430 	AEMU_SCOPED_TRACE("glBindVertexArray encode");
5431 
5432 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5433 	IOStream *stream = ctx->m_stream;
5434 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5435 	bool useChecksum = checksumCalculator->getVersion() > 0;
5436 
5437 	 unsigned char *ptr;
5438 	 unsigned char *buf;
5439 	 const size_t sizeWithoutChecksum = 8 + 4;
5440 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5441 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5442 	buf = stream->alloc(totalSize);
5443 	ptr = buf;
5444 	int tmp = OP_glBindVertexArray;memcpy(ptr, &tmp, 4); ptr += 4;
5445 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5446 
5447 		memcpy(ptr, &array, 4); ptr += 4;
5448 
5449 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5450 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5451 
5452 }
5453 
glDeleteVertexArrays_enc(void * self,GLsizei n,const GLuint * arrays)5454 void glDeleteVertexArrays_enc(void *self , GLsizei n, const GLuint* arrays)
5455 {
5456 	ENCODER_DEBUG_LOG("glDeleteVertexArrays(n:%d, arrays:0x%08x)", n, arrays);
5457 	AEMU_SCOPED_TRACE("glDeleteVertexArrays encode");
5458 
5459 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5460 	IOStream *stream = ctx->m_stream;
5461 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5462 	bool useChecksum = checksumCalculator->getVersion() > 0;
5463 
5464 	const unsigned int __size_arrays =  (n * sizeof(GLuint));
5465 	 unsigned char *ptr;
5466 	 unsigned char *buf;
5467 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
5468 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5469 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5470 	buf = stream->alloc(totalSize);
5471 	ptr = buf;
5472 	int tmp = OP_glDeleteVertexArrays;memcpy(ptr, &tmp, 4); ptr += 4;
5473 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5474 
5475 		memcpy(ptr, &n, 4); ptr += 4;
5476 	memcpy(ptr, &__size_arrays, 4); ptr += 4;
5477 	memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
5478 
5479 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5480 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5481 
5482 }
5483 
glIsVertexArray_enc(void * self,GLuint array)5484 GLboolean glIsVertexArray_enc(void *self , GLuint array)
5485 {
5486 	ENCODER_DEBUG_LOG("glIsVertexArray(array:%u)", array);
5487 	AEMU_SCOPED_TRACE("glIsVertexArray encode");
5488 
5489 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5490 	IOStream *stream = ctx->m_stream;
5491 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5492 	bool useChecksum = checksumCalculator->getVersion() > 0;
5493 
5494 	 unsigned char *ptr;
5495 	 unsigned char *buf;
5496 	 const size_t sizeWithoutChecksum = 8 + 4;
5497 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5498 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5499 	buf = stream->alloc(totalSize);
5500 	ptr = buf;
5501 	int tmp = OP_glIsVertexArray;memcpy(ptr, &tmp, 4); ptr += 4;
5502 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5503 
5504 		memcpy(ptr, &array, 4); ptr += 4;
5505 
5506 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5507 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5508 
5509 
5510 	GLboolean retval;
5511 	stream->readback(&retval, 1);
5512 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
5513 	if (useChecksum) {
5514 		unsigned char *checksumBufPtr = NULL;
5515 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5516 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5517 		stream->readback(checksumBufPtr, checksumSize);
5518 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5519 			ALOGE("glIsVertexArray: GL communication error, please report this issue to b.android.com.\n");
5520 			abort();
5521 		}
5522 	}
5523 	return retval;
5524 }
5525 
glMapBufferRangeAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * mapped)5526 void glMapBufferRangeAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* mapped)
5527 {
5528 	ENCODER_DEBUG_LOG("glMapBufferRangeAEMU(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, mapped:0x%08x)", target, offset, length, access, mapped);
5529 	AEMU_SCOPED_TRACE("glMapBufferRangeAEMU encode");
5530 
5531 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5532 	IOStream *stream = ctx->m_stream;
5533 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5534 	bool useChecksum = checksumCalculator->getVersion() > 0;
5535 
5536 	const unsigned int __size_mapped = ((mapped != NULL) ?  length : 0);
5537 	 unsigned char *ptr;
5538 	 unsigned char *buf;
5539 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 1*4;
5540 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5541 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5542 	buf = stream->alloc(totalSize);
5543 	ptr = buf;
5544 	int tmp = OP_glMapBufferRangeAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5545 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5546 
5547 		memcpy(ptr, &target, 4); ptr += 4;
5548 		memcpy(ptr, &offset, 4); ptr += 4;
5549 		memcpy(ptr, &length, 4); ptr += 4;
5550 		memcpy(ptr, &access, 4); ptr += 4;
5551 	memcpy(ptr, &__size_mapped, 4); ptr += 4;
5552 
5553 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5554 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5555 
5556 	if (mapped != NULL) {
5557 		stream->readback(mapped, __size_mapped);
5558 		if (useChecksum) checksumCalculator->addBuffer(mapped, __size_mapped);
5559 	}
5560 	if (useChecksum) {
5561 		unsigned char *checksumBufPtr = NULL;
5562 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5563 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5564 		stream->readback(checksumBufPtr, checksumSize);
5565 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5566 			ALOGE("glMapBufferRangeAEMU: GL communication error, please report this issue to b.android.com.\n");
5567 			abort();
5568 		}
5569 	}
5570 }
5571 
glUnmapBufferAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer,GLboolean * out_res)5572 void glUnmapBufferAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer, GLboolean* out_res)
5573 {
5574 	ENCODER_DEBUG_LOG("glUnmapBufferAEMU(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, guest_buffer:0x%08x, out_res:0x%08x)", target, offset, length, access, guest_buffer, out_res);
5575 	AEMU_SCOPED_TRACE("glUnmapBufferAEMU encode");
5576 
5577 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5578 	IOStream *stream = ctx->m_stream;
5579 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5580 	bool useChecksum = checksumCalculator->getVersion() > 0;
5581 
5582 	const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ?  length : 0);
5583 	const unsigned int __size_out_res =  (sizeof(GLboolean));
5584 	 unsigned char *ptr;
5585 	 unsigned char *buf;
5586 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + 0 + 2*4;
5587 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5588 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5589 	buf = stream->alloc(totalSize);
5590 	ptr = buf;
5591 	int tmp = OP_glUnmapBufferAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5592 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5593 
5594 		memcpy(ptr, &target, 4); ptr += 4;
5595 		memcpy(ptr, &offset, 4); ptr += 4;
5596 		memcpy(ptr, &length, 4); ptr += 4;
5597 		memcpy(ptr, &access, 4); ptr += 4;
5598 	memcpy(ptr, &__size_guest_buffer, 4); ptr += 4;
5599 	if (guest_buffer != NULL) memcpy(ptr, guest_buffer, __size_guest_buffer);ptr += __size_guest_buffer;
5600 	memcpy(ptr, &__size_out_res, 4); ptr += 4;
5601 
5602 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5603 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5604 
5605 	stream->readback(out_res, __size_out_res);
5606 	if (useChecksum) checksumCalculator->addBuffer(out_res, __size_out_res);
5607 	if (useChecksum) {
5608 		unsigned char *checksumBufPtr = NULL;
5609 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
5610 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5611 		stream->readback(checksumBufPtr, checksumSize);
5612 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5613 			ALOGE("glUnmapBufferAEMU: GL communication error, please report this issue to b.android.com.\n");
5614 			abort();
5615 		}
5616 	}
5617 }
5618 
glFlushMappedBufferRangeAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer)5619 void glFlushMappedBufferRangeAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer)
5620 {
5621 	ENCODER_DEBUG_LOG("glFlushMappedBufferRangeAEMU(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, guest_buffer:0x%08x)", target, offset, length, access, guest_buffer);
5622 	AEMU_SCOPED_TRACE("glFlushMappedBufferRangeAEMU encode");
5623 
5624 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5625 	IOStream *stream = ctx->m_stream;
5626 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5627 	bool useChecksum = checksumCalculator->getVersion() > 0;
5628 
5629 	const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ?  length : 0);
5630 	 unsigned char *ptr;
5631 	 unsigned char *buf;
5632 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + 1*4;
5633 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5634 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5635 	buf = stream->alloc(totalSize);
5636 	ptr = buf;
5637 	int tmp = OP_glFlushMappedBufferRangeAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5638 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5639 
5640 		memcpy(ptr, &target, 4); ptr += 4;
5641 		memcpy(ptr, &offset, 4); ptr += 4;
5642 		memcpy(ptr, &length, 4); ptr += 4;
5643 		memcpy(ptr, &access, 4); ptr += 4;
5644 	memcpy(ptr, &__size_guest_buffer, 4); ptr += 4;
5645 	if (guest_buffer != NULL) memcpy(ptr, guest_buffer, __size_guest_buffer);ptr += __size_guest_buffer;
5646 
5647 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5648 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5649 
5650 }
5651 
glReadPixelsOffsetAEMU_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLuint offset)5652 void glReadPixelsOffsetAEMU_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLuint offset)
5653 {
5654 	ENCODER_DEBUG_LOG("glReadPixelsOffsetAEMU(x:%d, y:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, offset:%u)", x, y, width, height, format, type, offset);
5655 	AEMU_SCOPED_TRACE("glReadPixelsOffsetAEMU encode");
5656 
5657 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5658 	IOStream *stream = ctx->m_stream;
5659 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5660 	bool useChecksum = checksumCalculator->getVersion() > 0;
5661 
5662 	 unsigned char *ptr;
5663 	 unsigned char *buf;
5664 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5665 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5666 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5667 	buf = stream->alloc(totalSize);
5668 	ptr = buf;
5669 	int tmp = OP_glReadPixelsOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5670 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5671 
5672 		memcpy(ptr, &x, 4); ptr += 4;
5673 		memcpy(ptr, &y, 4); ptr += 4;
5674 		memcpy(ptr, &width, 4); ptr += 4;
5675 		memcpy(ptr, &height, 4); ptr += 4;
5676 		memcpy(ptr, &format, 4); ptr += 4;
5677 		memcpy(ptr, &type, 4); ptr += 4;
5678 		memcpy(ptr, &offset, 4); ptr += 4;
5679 
5680 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5681 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5682 
5683 }
5684 
glCompressedTexImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,GLuint offset)5685 void glCompressedTexImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, GLuint offset)
5686 {
5687 	ENCODER_DEBUG_LOG("glCompressedTexImage2DOffsetAEMU(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, border:%d, imageSize:%d, offset:%u)", target, level, internalformat, width, height, border, imageSize, offset);
5688 	AEMU_SCOPED_TRACE("glCompressedTexImage2DOffsetAEMU encode");
5689 
5690 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5691 	IOStream *stream = ctx->m_stream;
5692 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5693 	bool useChecksum = checksumCalculator->getVersion() > 0;
5694 
5695 	 unsigned char *ptr;
5696 	 unsigned char *buf;
5697 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5698 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5699 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5700 	buf = stream->alloc(totalSize);
5701 	ptr = buf;
5702 	int tmp = OP_glCompressedTexImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5703 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5704 
5705 		memcpy(ptr, &target, 4); ptr += 4;
5706 		memcpy(ptr, &level, 4); ptr += 4;
5707 		memcpy(ptr, &internalformat, 4); ptr += 4;
5708 		memcpy(ptr, &width, 4); ptr += 4;
5709 		memcpy(ptr, &height, 4); ptr += 4;
5710 		memcpy(ptr, &border, 4); ptr += 4;
5711 		memcpy(ptr, &imageSize, 4); ptr += 4;
5712 		memcpy(ptr, &offset, 4); ptr += 4;
5713 
5714 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5715 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5716 
5717 }
5718 
glCompressedTexSubImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,GLuint offset)5719 void glCompressedTexSubImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLuint offset)
5720 {
5721 	ENCODER_DEBUG_LOG("glCompressedTexSubImage2DOffsetAEMU(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, width:%d, height:%d, format:0x%08x, imageSize:%d, offset:%u)", target, level, xoffset, yoffset, width, height, format, imageSize, offset);
5722 	AEMU_SCOPED_TRACE("glCompressedTexSubImage2DOffsetAEMU encode");
5723 
5724 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5725 	IOStream *stream = ctx->m_stream;
5726 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5727 	bool useChecksum = checksumCalculator->getVersion() > 0;
5728 
5729 	 unsigned char *ptr;
5730 	 unsigned char *buf;
5731 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5732 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5733 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5734 	buf = stream->alloc(totalSize);
5735 	ptr = buf;
5736 	int tmp = OP_glCompressedTexSubImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5737 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5738 
5739 		memcpy(ptr, &target, 4); ptr += 4;
5740 		memcpy(ptr, &level, 4); ptr += 4;
5741 		memcpy(ptr, &xoffset, 4); ptr += 4;
5742 		memcpy(ptr, &yoffset, 4); ptr += 4;
5743 		memcpy(ptr, &width, 4); ptr += 4;
5744 		memcpy(ptr, &height, 4); ptr += 4;
5745 		memcpy(ptr, &format, 4); ptr += 4;
5746 		memcpy(ptr, &imageSize, 4); ptr += 4;
5747 		memcpy(ptr, &offset, 4); ptr += 4;
5748 
5749 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5750 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5751 
5752 }
5753 
glTexImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,GLuint offset)5754 void glTexImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLuint offset)
5755 {
5756 	ENCODER_DEBUG_LOG("glTexImage2DOffsetAEMU(target:0x%08x, level:%d, internalformat:%d, width:%d, height:%d, border:%d, format:0x%08x, type:0x%08x, offset:%u)", target, level, internalformat, width, height, border, format, type, offset);
5757 	AEMU_SCOPED_TRACE("glTexImage2DOffsetAEMU encode");
5758 
5759 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5760 	IOStream *stream = ctx->m_stream;
5761 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5762 	bool useChecksum = checksumCalculator->getVersion() > 0;
5763 
5764 	 unsigned char *ptr;
5765 	 unsigned char *buf;
5766 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5767 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5768 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5769 	buf = stream->alloc(totalSize);
5770 	ptr = buf;
5771 	int tmp = OP_glTexImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5772 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5773 
5774 		memcpy(ptr, &target, 4); ptr += 4;
5775 		memcpy(ptr, &level, 4); ptr += 4;
5776 		memcpy(ptr, &internalformat, 4); ptr += 4;
5777 		memcpy(ptr, &width, 4); ptr += 4;
5778 		memcpy(ptr, &height, 4); ptr += 4;
5779 		memcpy(ptr, &border, 4); ptr += 4;
5780 		memcpy(ptr, &format, 4); ptr += 4;
5781 		memcpy(ptr, &type, 4); ptr += 4;
5782 		memcpy(ptr, &offset, 4); ptr += 4;
5783 
5784 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5785 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5786 
5787 }
5788 
glTexSubImage2DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,GLuint offset)5789 void glTexSubImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLuint offset)
5790 {
5791 	ENCODER_DEBUG_LOG("glTexSubImage2DOffsetAEMU(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, offset:%u)", target, level, xoffset, yoffset, width, height, format, type, offset);
5792 	AEMU_SCOPED_TRACE("glTexSubImage2DOffsetAEMU encode");
5793 
5794 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5795 	IOStream *stream = ctx->m_stream;
5796 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5797 	bool useChecksum = checksumCalculator->getVersion() > 0;
5798 
5799 	 unsigned char *ptr;
5800 	 unsigned char *buf;
5801 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5802 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5803 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5804 	buf = stream->alloc(totalSize);
5805 	ptr = buf;
5806 	int tmp = OP_glTexSubImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5807 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5808 
5809 		memcpy(ptr, &target, 4); ptr += 4;
5810 		memcpy(ptr, &level, 4); ptr += 4;
5811 		memcpy(ptr, &xoffset, 4); ptr += 4;
5812 		memcpy(ptr, &yoffset, 4); ptr += 4;
5813 		memcpy(ptr, &width, 4); ptr += 4;
5814 		memcpy(ptr, &height, 4); ptr += 4;
5815 		memcpy(ptr, &format, 4); ptr += 4;
5816 		memcpy(ptr, &type, 4); ptr += 4;
5817 		memcpy(ptr, &offset, 4); ptr += 4;
5818 
5819 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5820 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5821 
5822 }
5823 
glBindBufferRange_enc(void * self,GLenum target,GLuint index,GLuint buffer,GLintptr offset,GLsizeiptr size)5824 void glBindBufferRange_enc(void *self , GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
5825 {
5826 	ENCODER_DEBUG_LOG("glBindBufferRange(target:0x%08x, index:%u, buffer:%u, offset:0x%08lx, size:0x%08lx)", target, index, buffer, offset, size);
5827 	AEMU_SCOPED_TRACE("glBindBufferRange encode");
5828 
5829 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5830 	IOStream *stream = ctx->m_stream;
5831 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5832 	bool useChecksum = checksumCalculator->getVersion() > 0;
5833 
5834 	 unsigned char *ptr;
5835 	 unsigned char *buf;
5836 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
5837 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5838 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5839 	buf = stream->alloc(totalSize);
5840 	ptr = buf;
5841 	int tmp = OP_glBindBufferRange;memcpy(ptr, &tmp, 4); ptr += 4;
5842 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5843 
5844 		memcpy(ptr, &target, 4); ptr += 4;
5845 		memcpy(ptr, &index, 4); ptr += 4;
5846 		memcpy(ptr, &buffer, 4); ptr += 4;
5847 		memcpy(ptr, &offset, 4); ptr += 4;
5848 		memcpy(ptr, &size, 4); ptr += 4;
5849 
5850 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5851 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5852 
5853 }
5854 
glBindBufferBase_enc(void * self,GLenum target,GLuint index,GLuint buffer)5855 void glBindBufferBase_enc(void *self , GLenum target, GLuint index, GLuint buffer)
5856 {
5857 	ENCODER_DEBUG_LOG("glBindBufferBase(target:0x%08x, index:%u, buffer:%u)", target, index, buffer);
5858 	AEMU_SCOPED_TRACE("glBindBufferBase encode");
5859 
5860 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5861 	IOStream *stream = ctx->m_stream;
5862 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5863 	bool useChecksum = checksumCalculator->getVersion() > 0;
5864 
5865 	 unsigned char *ptr;
5866 	 unsigned char *buf;
5867 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
5868 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5869 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5870 	buf = stream->alloc(totalSize);
5871 	ptr = buf;
5872 	int tmp = OP_glBindBufferBase;memcpy(ptr, &tmp, 4); ptr += 4;
5873 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5874 
5875 		memcpy(ptr, &target, 4); ptr += 4;
5876 		memcpy(ptr, &index, 4); ptr += 4;
5877 		memcpy(ptr, &buffer, 4); ptr += 4;
5878 
5879 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5880 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5881 
5882 }
5883 
glCopyBufferSubData_enc(void * self,GLenum readtarget,GLenum writetarget,GLintptr readoffset,GLintptr writeoffset,GLsizeiptr size)5884 void glCopyBufferSubData_enc(void *self , GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size)
5885 {
5886 	ENCODER_DEBUG_LOG("glCopyBufferSubData(readtarget:0x%08x, writetarget:0x%08x, readoffset:0x%08lx, writeoffset:0x%08lx, size:0x%08lx)", readtarget, writetarget, readoffset, writeoffset, size);
5887 	AEMU_SCOPED_TRACE("glCopyBufferSubData encode");
5888 
5889 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5890 	IOStream *stream = ctx->m_stream;
5891 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5892 	bool useChecksum = checksumCalculator->getVersion() > 0;
5893 
5894 	 unsigned char *ptr;
5895 	 unsigned char *buf;
5896 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
5897 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5898 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5899 	buf = stream->alloc(totalSize);
5900 	ptr = buf;
5901 	int tmp = OP_glCopyBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
5902 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5903 
5904 		memcpy(ptr, &readtarget, 4); ptr += 4;
5905 		memcpy(ptr, &writetarget, 4); ptr += 4;
5906 		memcpy(ptr, &readoffset, 4); ptr += 4;
5907 		memcpy(ptr, &writeoffset, 4); ptr += 4;
5908 		memcpy(ptr, &size, 4); ptr += 4;
5909 
5910 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5911 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5912 
5913 	stream->flush();
5914 }
5915 
glClearBufferiv_enc(void * self,GLenum buffer,GLint drawBuffer,const GLint * value)5916 void glClearBufferiv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLint* value)
5917 {
5918 	ENCODER_DEBUG_LOG("glClearBufferiv(buffer:0x%08x, drawBuffer:%d, value:0x%08x)", buffer, drawBuffer, value);
5919 	AEMU_SCOPED_TRACE("glClearBufferiv encode");
5920 
5921 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5922 	IOStream *stream = ctx->m_stream;
5923 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5924 	bool useChecksum = checksumCalculator->getVersion() > 0;
5925 
5926 	const unsigned int __size_value =  (sizeof(GLint) * glesv2_enc::clearBufferNumElts(self, buffer));
5927 	 unsigned char *ptr;
5928 	 unsigned char *buf;
5929 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5930 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5931 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5932 	buf = stream->alloc(totalSize);
5933 	ptr = buf;
5934 	int tmp = OP_glClearBufferiv;memcpy(ptr, &tmp, 4); ptr += 4;
5935 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5936 
5937 		memcpy(ptr, &buffer, 4); ptr += 4;
5938 		memcpy(ptr, &drawBuffer, 4); ptr += 4;
5939 	memcpy(ptr, &__size_value, 4); ptr += 4;
5940 	memcpy(ptr, value, __size_value);ptr += __size_value;
5941 
5942 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5943 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5944 
5945 }
5946 
glClearBufferuiv_enc(void * self,GLenum buffer,GLint drawBuffer,const GLuint * value)5947 void glClearBufferuiv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLuint* value)
5948 {
5949 	ENCODER_DEBUG_LOG("glClearBufferuiv(buffer:0x%08x, drawBuffer:%d, value:0x%08x)", buffer, drawBuffer, value);
5950 	AEMU_SCOPED_TRACE("glClearBufferuiv encode");
5951 
5952 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5953 	IOStream *stream = ctx->m_stream;
5954 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5955 	bool useChecksum = checksumCalculator->getVersion() > 0;
5956 
5957 	const unsigned int __size_value =  (sizeof(GLuint) * glesv2_enc::clearBufferNumElts(self, buffer));
5958 	 unsigned char *ptr;
5959 	 unsigned char *buf;
5960 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5961 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5962 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5963 	buf = stream->alloc(totalSize);
5964 	ptr = buf;
5965 	int tmp = OP_glClearBufferuiv;memcpy(ptr, &tmp, 4); ptr += 4;
5966 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5967 
5968 		memcpy(ptr, &buffer, 4); ptr += 4;
5969 		memcpy(ptr, &drawBuffer, 4); ptr += 4;
5970 	memcpy(ptr, &__size_value, 4); ptr += 4;
5971 	memcpy(ptr, value, __size_value);ptr += __size_value;
5972 
5973 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5974 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5975 
5976 }
5977 
glClearBufferfv_enc(void * self,GLenum buffer,GLint drawBuffer,const GLfloat * value)5978 void glClearBufferfv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLfloat* value)
5979 {
5980 	ENCODER_DEBUG_LOG("glClearBufferfv(buffer:0x%08x, drawBuffer:%d, value:0x%08x)", buffer, drawBuffer, value);
5981 	AEMU_SCOPED_TRACE("glClearBufferfv encode");
5982 
5983 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5984 	IOStream *stream = ctx->m_stream;
5985 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5986 	bool useChecksum = checksumCalculator->getVersion() > 0;
5987 
5988 	const unsigned int __size_value =  (sizeof(GLfloat) * glesv2_enc::clearBufferNumElts(self, buffer));
5989 	 unsigned char *ptr;
5990 	 unsigned char *buf;
5991 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5992 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5993 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5994 	buf = stream->alloc(totalSize);
5995 	ptr = buf;
5996 	int tmp = OP_glClearBufferfv;memcpy(ptr, &tmp, 4); ptr += 4;
5997 	memcpy(ptr, &totalSize, 4);  ptr += 4;
5998 
5999 		memcpy(ptr, &buffer, 4); ptr += 4;
6000 		memcpy(ptr, &drawBuffer, 4); ptr += 4;
6001 	memcpy(ptr, &__size_value, 4); ptr += 4;
6002 	memcpy(ptr, value, __size_value);ptr += __size_value;
6003 
6004 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6005 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6006 
6007 }
6008 
glClearBufferfi_enc(void * self,GLenum buffer,GLint drawBuffer,GLfloat depth,GLint stencil)6009 void glClearBufferfi_enc(void *self , GLenum buffer, GLint drawBuffer, GLfloat depth, GLint stencil)
6010 {
6011 	ENCODER_DEBUG_LOG("glClearBufferfi(buffer:0x%08x, drawBuffer:%d, depth:%f, stencil:%d)", buffer, drawBuffer, depth, stencil);
6012 	AEMU_SCOPED_TRACE("glClearBufferfi encode");
6013 
6014 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6015 	IOStream *stream = ctx->m_stream;
6016 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6017 	bool useChecksum = checksumCalculator->getVersion() > 0;
6018 
6019 	 unsigned char *ptr;
6020 	 unsigned char *buf;
6021 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
6022 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6023 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6024 	buf = stream->alloc(totalSize);
6025 	ptr = buf;
6026 	int tmp = OP_glClearBufferfi;memcpy(ptr, &tmp, 4); ptr += 4;
6027 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6028 
6029 		memcpy(ptr, &buffer, 4); ptr += 4;
6030 		memcpy(ptr, &drawBuffer, 4); ptr += 4;
6031 		memcpy(ptr, &depth, 4); ptr += 4;
6032 		memcpy(ptr, &stencil, 4); ptr += 4;
6033 
6034 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6035 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6036 
6037 }
6038 
glUniformBlockBinding_enc(void * self,GLuint program,GLuint uniformBlockIndex,GLuint uniformBlockBinding)6039 void glUniformBlockBinding_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
6040 {
6041 	ENCODER_DEBUG_LOG("glUniformBlockBinding(program:%u, uniformBlockIndex:%u, uniformBlockBinding:%u)", program, uniformBlockIndex, uniformBlockBinding);
6042 	AEMU_SCOPED_TRACE("glUniformBlockBinding encode");
6043 
6044 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6045 	IOStream *stream = ctx->m_stream;
6046 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6047 	bool useChecksum = checksumCalculator->getVersion() > 0;
6048 
6049 	 unsigned char *ptr;
6050 	 unsigned char *buf;
6051 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
6052 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6053 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6054 	buf = stream->alloc(totalSize);
6055 	ptr = buf;
6056 	int tmp = OP_glUniformBlockBinding;memcpy(ptr, &tmp, 4); ptr += 4;
6057 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6058 
6059 		memcpy(ptr, &program, 4); ptr += 4;
6060 		memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
6061 		memcpy(ptr, &uniformBlockBinding, 4); ptr += 4;
6062 
6063 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6064 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6065 
6066 }
6067 
glGetUniformBlockIndex_enc(void * self,GLuint program,const GLchar * uniformBlockName)6068 GLuint glGetUniformBlockIndex_enc(void *self , GLuint program, const GLchar* uniformBlockName)
6069 {
6070 	ENCODER_DEBUG_LOG("glGetUniformBlockIndex(program:%u, uniformBlockName:0x%08x)", program, uniformBlockName);
6071 	AEMU_SCOPED_TRACE("glGetUniformBlockIndex encode");
6072 
6073 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6074 	IOStream *stream = ctx->m_stream;
6075 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6076 	bool useChecksum = checksumCalculator->getVersion() > 0;
6077 
6078 	const unsigned int __size_uniformBlockName =  (strlen(uniformBlockName) + 1);
6079 	 unsigned char *ptr;
6080 	 unsigned char *buf;
6081 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_uniformBlockName + 1*4;
6082 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6083 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6084 	buf = stream->alloc(totalSize);
6085 	ptr = buf;
6086 	int tmp = OP_glGetUniformBlockIndex;memcpy(ptr, &tmp, 4); ptr += 4;
6087 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6088 
6089 		memcpy(ptr, &program, 4); ptr += 4;
6090 	memcpy(ptr, &__size_uniformBlockName, 4); ptr += 4;
6091 	memcpy(ptr, uniformBlockName, __size_uniformBlockName);ptr += __size_uniformBlockName;
6092 
6093 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6094 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6095 
6096 
6097 	GLuint retval;
6098 	stream->readback(&retval, 4);
6099 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
6100 	if (useChecksum) {
6101 		unsigned char *checksumBufPtr = NULL;
6102 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
6103 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6104 		stream->readback(checksumBufPtr, checksumSize);
6105 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6106 			ALOGE("glGetUniformBlockIndex: GL communication error, please report this issue to b.android.com.\n");
6107 			abort();
6108 		}
6109 	}
6110 	return retval;
6111 }
6112 
glGetUniformIndicesAEMU_enc(void * self,GLuint program,GLsizei uniformCount,const GLchar * packedUniformNames,GLsizei packedLen,GLuint * uniformIndices)6113 void glGetUniformIndicesAEMU_enc(void *self , GLuint program, GLsizei uniformCount, const GLchar* packedUniformNames, GLsizei packedLen, GLuint* uniformIndices)
6114 {
6115 	ENCODER_DEBUG_LOG("glGetUniformIndicesAEMU(program:%u, uniformCount:%d, packedUniformNames:0x%08x, packedLen:%d, uniformIndices:0x%08x)", program, uniformCount, packedUniformNames, packedLen, uniformIndices);
6116 	AEMU_SCOPED_TRACE("glGetUniformIndicesAEMU encode");
6117 
6118 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6119 	IOStream *stream = ctx->m_stream;
6120 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6121 	bool useChecksum = checksumCalculator->getVersion() > 0;
6122 
6123 	const unsigned int __size_packedUniformNames =  packedLen;
6124 	const unsigned int __size_uniformIndices =  (uniformCount * sizeof(GLuint));
6125 	 unsigned char *ptr;
6126 	 unsigned char *buf;
6127 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedUniformNames + 4 + 0 + 2*4;
6128 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6129 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6130 	buf = stream->alloc(totalSize);
6131 	ptr = buf;
6132 	int tmp = OP_glGetUniformIndicesAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6133 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6134 
6135 		memcpy(ptr, &program, 4); ptr += 4;
6136 		memcpy(ptr, &uniformCount, 4); ptr += 4;
6137 	memcpy(ptr, &__size_packedUniformNames, 4); ptr += 4;
6138 	memcpy(ptr, packedUniformNames, __size_packedUniformNames);ptr += __size_packedUniformNames;
6139 		memcpy(ptr, &packedLen, 4); ptr += 4;
6140 	memcpy(ptr, &__size_uniformIndices, 4); ptr += 4;
6141 
6142 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6143 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6144 
6145 	stream->readback(uniformIndices, __size_uniformIndices);
6146 	if (useChecksum) checksumCalculator->addBuffer(uniformIndices, __size_uniformIndices);
6147 	if (useChecksum) {
6148 		unsigned char *checksumBufPtr = NULL;
6149 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
6150 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6151 		stream->readback(checksumBufPtr, checksumSize);
6152 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6153 			ALOGE("glGetUniformIndicesAEMU: GL communication error, please report this issue to b.android.com.\n");
6154 			abort();
6155 		}
6156 	}
6157 }
6158 
glGetActiveUniformBlockiv_enc(void * self,GLuint program,GLuint uniformBlockIndex,GLenum pname,GLint * params)6159 void glGetActiveUniformBlockiv_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params)
6160 {
6161 	ENCODER_DEBUG_LOG("glGetActiveUniformBlockiv(program:%u, uniformBlockIndex:%u, pname:0x%08x, params:0x%08x)", program, uniformBlockIndex, pname, params);
6162 	AEMU_SCOPED_TRACE("glGetActiveUniformBlockiv encode");
6163 
6164 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6165 	IOStream *stream = ctx->m_stream;
6166 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6167 	bool useChecksum = checksumCalculator->getVersion() > 0;
6168 
6169 	const unsigned int __size_params =  (glesv2_enc::glActiveUniformBlockivParamSize(self, program, uniformBlockIndex, pname) * sizeof(GLint));
6170 	 unsigned char *ptr;
6171 	 unsigned char *buf;
6172 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
6173 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6174 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6175 	buf = stream->alloc(totalSize);
6176 	ptr = buf;
6177 	int tmp = OP_glGetActiveUniformBlockiv;memcpy(ptr, &tmp, 4); ptr += 4;
6178 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6179 
6180 		memcpy(ptr, &program, 4); ptr += 4;
6181 		memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
6182 		memcpy(ptr, &pname, 4); ptr += 4;
6183 	memcpy(ptr, &__size_params, 4); ptr += 4;
6184 
6185 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6186 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6187 
6188 	stream->readback(params, __size_params);
6189 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6190 	if (useChecksum) {
6191 		unsigned char *checksumBufPtr = NULL;
6192 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
6193 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6194 		stream->readback(checksumBufPtr, checksumSize);
6195 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6196 			ALOGE("glGetActiveUniformBlockiv: GL communication error, please report this issue to b.android.com.\n");
6197 			abort();
6198 		}
6199 	}
6200 }
6201 
glGetActiveUniformBlockName_enc(void * self,GLuint program,GLuint uniformBlockIndex,GLsizei bufSize,GLsizei * length,GLchar * uniformBlockName)6202 void glGetActiveUniformBlockName_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName)
6203 {
6204 	ENCODER_DEBUG_LOG("glGetActiveUniformBlockName(program:%u, uniformBlockIndex:%u, bufSize:%d, length:0x%08x, uniformBlockName:0x%08x)", program, uniformBlockIndex, bufSize, length, uniformBlockName);
6205 	AEMU_SCOPED_TRACE("glGetActiveUniformBlockName encode");
6206 
6207 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6208 	IOStream *stream = ctx->m_stream;
6209 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6210 	bool useChecksum = checksumCalculator->getVersion() > 0;
6211 
6212 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
6213 	const unsigned int __size_uniformBlockName = ((uniformBlockName != NULL) ?  bufSize : 0);
6214 	 unsigned char *ptr;
6215 	 unsigned char *buf;
6216 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 2*4;
6217 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6218 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6219 	buf = stream->alloc(totalSize);
6220 	ptr = buf;
6221 	int tmp = OP_glGetActiveUniformBlockName;memcpy(ptr, &tmp, 4); ptr += 4;
6222 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6223 
6224 		memcpy(ptr, &program, 4); ptr += 4;
6225 		memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
6226 		memcpy(ptr, &bufSize, 4); ptr += 4;
6227 	memcpy(ptr, &__size_length, 4); ptr += 4;
6228 	memcpy(ptr, &__size_uniformBlockName, 4); ptr += 4;
6229 
6230 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6231 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6232 
6233 	if (length != NULL) {
6234 		stream->readback(length, __size_length);
6235 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
6236 	}
6237 	if (uniformBlockName != NULL) {
6238 		stream->readback(uniformBlockName, __size_uniformBlockName);
6239 		if (useChecksum) checksumCalculator->addBuffer(uniformBlockName, __size_uniformBlockName);
6240 	}
6241 	if (useChecksum) {
6242 		unsigned char *checksumBufPtr = NULL;
6243 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
6244 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6245 		stream->readback(checksumBufPtr, checksumSize);
6246 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6247 			ALOGE("glGetActiveUniformBlockName: GL communication error, please report this issue to b.android.com.\n");
6248 			abort();
6249 		}
6250 	}
6251 }
6252 
glUniform1ui_enc(void * self,GLint location,GLuint v0)6253 void glUniform1ui_enc(void *self , GLint location, GLuint v0)
6254 {
6255 	ENCODER_DEBUG_LOG("glUniform1ui(location:%d, v0:%u)", location, v0);
6256 	AEMU_SCOPED_TRACE("glUniform1ui encode");
6257 
6258 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6259 	IOStream *stream = ctx->m_stream;
6260 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6261 	bool useChecksum = checksumCalculator->getVersion() > 0;
6262 
6263 	 unsigned char *ptr;
6264 	 unsigned char *buf;
6265 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
6266 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6267 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6268 	buf = stream->alloc(totalSize);
6269 	ptr = buf;
6270 	int tmp = OP_glUniform1ui;memcpy(ptr, &tmp, 4); ptr += 4;
6271 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6272 
6273 		memcpy(ptr, &location, 4); ptr += 4;
6274 		memcpy(ptr, &v0, 4); ptr += 4;
6275 
6276 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6277 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6278 
6279 }
6280 
glUniform2ui_enc(void * self,GLint location,GLuint v0,GLuint v1)6281 void glUniform2ui_enc(void *self , GLint location, GLuint v0, GLuint v1)
6282 {
6283 	ENCODER_DEBUG_LOG("glUniform2ui(location:%d, v0:%u, v1:%u)", location, v0, v1);
6284 	AEMU_SCOPED_TRACE("glUniform2ui encode");
6285 
6286 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6287 	IOStream *stream = ctx->m_stream;
6288 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6289 	bool useChecksum = checksumCalculator->getVersion() > 0;
6290 
6291 	 unsigned char *ptr;
6292 	 unsigned char *buf;
6293 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
6294 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6295 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6296 	buf = stream->alloc(totalSize);
6297 	ptr = buf;
6298 	int tmp = OP_glUniform2ui;memcpy(ptr, &tmp, 4); ptr += 4;
6299 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6300 
6301 		memcpy(ptr, &location, 4); ptr += 4;
6302 		memcpy(ptr, &v0, 4); ptr += 4;
6303 		memcpy(ptr, &v1, 4); ptr += 4;
6304 
6305 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6306 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6307 
6308 }
6309 
glUniform3ui_enc(void * self,GLint location,GLuint v0,GLuint v1,GLuint v2)6310 void glUniform3ui_enc(void *self , GLint location, GLuint v0, GLuint v1, GLuint v2)
6311 {
6312 	ENCODER_DEBUG_LOG("glUniform3ui(location:%d, v0:%u, v1:%u, v2:%u)", location, v0, v1, v2);
6313 	AEMU_SCOPED_TRACE("glUniform3ui encode");
6314 
6315 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6316 	IOStream *stream = ctx->m_stream;
6317 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6318 	bool useChecksum = checksumCalculator->getVersion() > 0;
6319 
6320 	 unsigned char *ptr;
6321 	 unsigned char *buf;
6322 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
6323 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6324 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6325 	buf = stream->alloc(totalSize);
6326 	ptr = buf;
6327 	int tmp = OP_glUniform3ui;memcpy(ptr, &tmp, 4); ptr += 4;
6328 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6329 
6330 		memcpy(ptr, &location, 4); ptr += 4;
6331 		memcpy(ptr, &v0, 4); ptr += 4;
6332 		memcpy(ptr, &v1, 4); ptr += 4;
6333 		memcpy(ptr, &v2, 4); ptr += 4;
6334 
6335 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6336 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6337 
6338 }
6339 
glUniform4ui_enc(void * self,GLint location,GLint v0,GLuint v1,GLuint v2,GLuint v3)6340 void glUniform4ui_enc(void *self , GLint location, GLint v0, GLuint v1, GLuint v2, GLuint v3)
6341 {
6342 	ENCODER_DEBUG_LOG("glUniform4ui(location:%d, v0:%d, v1:%u, v2:%u, v3:%u)", location, v0, v1, v2, v3);
6343 	AEMU_SCOPED_TRACE("glUniform4ui encode");
6344 
6345 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6346 	IOStream *stream = ctx->m_stream;
6347 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6348 	bool useChecksum = checksumCalculator->getVersion() > 0;
6349 
6350 	 unsigned char *ptr;
6351 	 unsigned char *buf;
6352 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6353 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6354 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6355 	buf = stream->alloc(totalSize);
6356 	ptr = buf;
6357 	int tmp = OP_glUniform4ui;memcpy(ptr, &tmp, 4); ptr += 4;
6358 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6359 
6360 		memcpy(ptr, &location, 4); ptr += 4;
6361 		memcpy(ptr, &v0, 4); ptr += 4;
6362 		memcpy(ptr, &v1, 4); ptr += 4;
6363 		memcpy(ptr, &v2, 4); ptr += 4;
6364 		memcpy(ptr, &v3, 4); ptr += 4;
6365 
6366 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6367 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6368 
6369 }
6370 
glUniform1uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6371 void glUniform1uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6372 {
6373 	ENCODER_DEBUG_LOG("glUniform1uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6374 	AEMU_SCOPED_TRACE("glUniform1uiv encode");
6375 
6376 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6377 	IOStream *stream = ctx->m_stream;
6378 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6379 	bool useChecksum = checksumCalculator->getVersion() > 0;
6380 
6381 	const unsigned int __size_value =  (count * sizeof(GLuint));
6382 	 unsigned char *ptr;
6383 	 unsigned char *buf;
6384 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6385 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6386 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6387 	buf = stream->alloc(totalSize);
6388 	ptr = buf;
6389 	int tmp = OP_glUniform1uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6390 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6391 
6392 		memcpy(ptr, &location, 4); ptr += 4;
6393 		memcpy(ptr, &count, 4); ptr += 4;
6394 	memcpy(ptr, &__size_value, 4); ptr += 4;
6395 	memcpy(ptr, value, __size_value);ptr += __size_value;
6396 
6397 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6398 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6399 
6400 }
6401 
glUniform2uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6402 void glUniform2uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6403 {
6404 	ENCODER_DEBUG_LOG("glUniform2uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6405 	AEMU_SCOPED_TRACE("glUniform2uiv encode");
6406 
6407 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6408 	IOStream *stream = ctx->m_stream;
6409 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6410 	bool useChecksum = checksumCalculator->getVersion() > 0;
6411 
6412 	const unsigned int __size_value =  (count * 2 * sizeof(GLuint));
6413 	 unsigned char *ptr;
6414 	 unsigned char *buf;
6415 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6416 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6417 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6418 	buf = stream->alloc(totalSize);
6419 	ptr = buf;
6420 	int tmp = OP_glUniform2uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6421 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6422 
6423 		memcpy(ptr, &location, 4); ptr += 4;
6424 		memcpy(ptr, &count, 4); ptr += 4;
6425 	memcpy(ptr, &__size_value, 4); ptr += 4;
6426 	memcpy(ptr, value, __size_value);ptr += __size_value;
6427 
6428 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6429 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6430 
6431 }
6432 
glUniform3uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6433 void glUniform3uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6434 {
6435 	ENCODER_DEBUG_LOG("glUniform3uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6436 	AEMU_SCOPED_TRACE("glUniform3uiv encode");
6437 
6438 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6439 	IOStream *stream = ctx->m_stream;
6440 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6441 	bool useChecksum = checksumCalculator->getVersion() > 0;
6442 
6443 	const unsigned int __size_value =  (count * 3 * sizeof(GLuint));
6444 	 unsigned char *ptr;
6445 	 unsigned char *buf;
6446 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6447 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6448 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6449 	buf = stream->alloc(totalSize);
6450 	ptr = buf;
6451 	int tmp = OP_glUniform3uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6452 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6453 
6454 		memcpy(ptr, &location, 4); ptr += 4;
6455 		memcpy(ptr, &count, 4); ptr += 4;
6456 	memcpy(ptr, &__size_value, 4); ptr += 4;
6457 	memcpy(ptr, value, __size_value);ptr += __size_value;
6458 
6459 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6460 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6461 
6462 }
6463 
glUniform4uiv_enc(void * self,GLint location,GLsizei count,const GLuint * value)6464 void glUniform4uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6465 {
6466 	ENCODER_DEBUG_LOG("glUniform4uiv(location:%d, count:%d, value:0x%08x)", location, count, value);
6467 	AEMU_SCOPED_TRACE("glUniform4uiv encode");
6468 
6469 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6470 	IOStream *stream = ctx->m_stream;
6471 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6472 	bool useChecksum = checksumCalculator->getVersion() > 0;
6473 
6474 	const unsigned int __size_value =  (count * 4 * sizeof(GLuint));
6475 	 unsigned char *ptr;
6476 	 unsigned char *buf;
6477 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6478 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6479 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6480 	buf = stream->alloc(totalSize);
6481 	ptr = buf;
6482 	int tmp = OP_glUniform4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6483 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6484 
6485 		memcpy(ptr, &location, 4); ptr += 4;
6486 		memcpy(ptr, &count, 4); ptr += 4;
6487 	memcpy(ptr, &__size_value, 4); ptr += 4;
6488 	memcpy(ptr, value, __size_value);ptr += __size_value;
6489 
6490 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6491 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6492 
6493 }
6494 
glUniformMatrix2x3fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6495 void glUniformMatrix2x3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6496 {
6497 	ENCODER_DEBUG_LOG("glUniformMatrix2x3fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6498 	AEMU_SCOPED_TRACE("glUniformMatrix2x3fv encode");
6499 
6500 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6501 	IOStream *stream = ctx->m_stream;
6502 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6503 	bool useChecksum = checksumCalculator->getVersion() > 0;
6504 
6505 	const unsigned int __size_value =  (count * 6 * sizeof(GLfloat));
6506 	 unsigned char *ptr;
6507 	 unsigned char *buf;
6508 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6509 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6510 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6511 	buf = stream->alloc(totalSize);
6512 	ptr = buf;
6513 	int tmp = OP_glUniformMatrix2x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
6514 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6515 
6516 		memcpy(ptr, &location, 4); ptr += 4;
6517 		memcpy(ptr, &count, 4); ptr += 4;
6518 		memcpy(ptr, &transpose, 1); ptr += 1;
6519 	memcpy(ptr, &__size_value, 4); ptr += 4;
6520 	memcpy(ptr, value, __size_value);ptr += __size_value;
6521 
6522 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6523 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6524 
6525 }
6526 
glUniformMatrix3x2fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6527 void glUniformMatrix3x2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6528 {
6529 	ENCODER_DEBUG_LOG("glUniformMatrix3x2fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6530 	AEMU_SCOPED_TRACE("glUniformMatrix3x2fv encode");
6531 
6532 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6533 	IOStream *stream = ctx->m_stream;
6534 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6535 	bool useChecksum = checksumCalculator->getVersion() > 0;
6536 
6537 	const unsigned int __size_value =  (count * 6 * sizeof(GLfloat));
6538 	 unsigned char *ptr;
6539 	 unsigned char *buf;
6540 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6541 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6542 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6543 	buf = stream->alloc(totalSize);
6544 	ptr = buf;
6545 	int tmp = OP_glUniformMatrix3x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
6546 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6547 
6548 		memcpy(ptr, &location, 4); ptr += 4;
6549 		memcpy(ptr, &count, 4); ptr += 4;
6550 		memcpy(ptr, &transpose, 1); ptr += 1;
6551 	memcpy(ptr, &__size_value, 4); ptr += 4;
6552 	memcpy(ptr, value, __size_value);ptr += __size_value;
6553 
6554 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6555 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6556 
6557 }
6558 
glUniformMatrix2x4fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6559 void glUniformMatrix2x4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6560 {
6561 	ENCODER_DEBUG_LOG("glUniformMatrix2x4fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6562 	AEMU_SCOPED_TRACE("glUniformMatrix2x4fv encode");
6563 
6564 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6565 	IOStream *stream = ctx->m_stream;
6566 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6567 	bool useChecksum = checksumCalculator->getVersion() > 0;
6568 
6569 	const unsigned int __size_value =  (count * 8 * sizeof(GLfloat));
6570 	 unsigned char *ptr;
6571 	 unsigned char *buf;
6572 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6573 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6574 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6575 	buf = stream->alloc(totalSize);
6576 	ptr = buf;
6577 	int tmp = OP_glUniformMatrix2x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
6578 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6579 
6580 		memcpy(ptr, &location, 4); ptr += 4;
6581 		memcpy(ptr, &count, 4); ptr += 4;
6582 		memcpy(ptr, &transpose, 1); ptr += 1;
6583 	memcpy(ptr, &__size_value, 4); ptr += 4;
6584 	memcpy(ptr, value, __size_value);ptr += __size_value;
6585 
6586 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6587 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6588 
6589 }
6590 
glUniformMatrix4x2fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6591 void glUniformMatrix4x2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6592 {
6593 	ENCODER_DEBUG_LOG("glUniformMatrix4x2fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6594 	AEMU_SCOPED_TRACE("glUniformMatrix4x2fv encode");
6595 
6596 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6597 	IOStream *stream = ctx->m_stream;
6598 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6599 	bool useChecksum = checksumCalculator->getVersion() > 0;
6600 
6601 	const unsigned int __size_value =  (count * 8 * sizeof(GLfloat));
6602 	 unsigned char *ptr;
6603 	 unsigned char *buf;
6604 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6605 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6606 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6607 	buf = stream->alloc(totalSize);
6608 	ptr = buf;
6609 	int tmp = OP_glUniformMatrix4x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
6610 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6611 
6612 		memcpy(ptr, &location, 4); ptr += 4;
6613 		memcpy(ptr, &count, 4); ptr += 4;
6614 		memcpy(ptr, &transpose, 1); ptr += 1;
6615 	memcpy(ptr, &__size_value, 4); ptr += 4;
6616 	memcpy(ptr, value, __size_value);ptr += __size_value;
6617 
6618 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6619 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6620 
6621 }
6622 
glUniformMatrix3x4fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6623 void glUniformMatrix3x4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6624 {
6625 	ENCODER_DEBUG_LOG("glUniformMatrix3x4fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6626 	AEMU_SCOPED_TRACE("glUniformMatrix3x4fv encode");
6627 
6628 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6629 	IOStream *stream = ctx->m_stream;
6630 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6631 	bool useChecksum = checksumCalculator->getVersion() > 0;
6632 
6633 	const unsigned int __size_value =  (count * 12 * sizeof(GLfloat));
6634 	 unsigned char *ptr;
6635 	 unsigned char *buf;
6636 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6637 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6638 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6639 	buf = stream->alloc(totalSize);
6640 	ptr = buf;
6641 	int tmp = OP_glUniformMatrix3x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
6642 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6643 
6644 		memcpy(ptr, &location, 4); ptr += 4;
6645 		memcpy(ptr, &count, 4); ptr += 4;
6646 		memcpy(ptr, &transpose, 1); ptr += 1;
6647 	memcpy(ptr, &__size_value, 4); ptr += 4;
6648 	memcpy(ptr, value, __size_value);ptr += __size_value;
6649 
6650 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6651 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6652 
6653 }
6654 
glUniformMatrix4x3fv_enc(void * self,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)6655 void glUniformMatrix4x3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6656 {
6657 	ENCODER_DEBUG_LOG("glUniformMatrix4x3fv(location:%d, count:%d, transpose:%d, value:0x%08x)", location, count, transpose, value);
6658 	AEMU_SCOPED_TRACE("glUniformMatrix4x3fv encode");
6659 
6660 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6661 	IOStream *stream = ctx->m_stream;
6662 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6663 	bool useChecksum = checksumCalculator->getVersion() > 0;
6664 
6665 	const unsigned int __size_value =  (count * 12 * sizeof(GLfloat));
6666 	 unsigned char *ptr;
6667 	 unsigned char *buf;
6668 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6669 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6670 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6671 	buf = stream->alloc(totalSize);
6672 	ptr = buf;
6673 	int tmp = OP_glUniformMatrix4x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
6674 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6675 
6676 		memcpy(ptr, &location, 4); ptr += 4;
6677 		memcpy(ptr, &count, 4); ptr += 4;
6678 		memcpy(ptr, &transpose, 1); ptr += 1;
6679 	memcpy(ptr, &__size_value, 4); ptr += 4;
6680 	memcpy(ptr, value, __size_value);ptr += __size_value;
6681 
6682 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6683 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6684 
6685 }
6686 
glGetUniformuiv_enc(void * self,GLuint program,GLint location,GLuint * params)6687 void glGetUniformuiv_enc(void *self , GLuint program, GLint location, GLuint* params)
6688 {
6689 	ENCODER_DEBUG_LOG("glGetUniformuiv(program:%u, location:%d, params:0x%08x)", program, location, params);
6690 	AEMU_SCOPED_TRACE("glGetUniformuiv encode");
6691 
6692 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6693 	IOStream *stream = ctx->m_stream;
6694 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6695 	bool useChecksum = checksumCalculator->getVersion() > 0;
6696 
6697 	const unsigned int __size_params =  glSizeof(glesv2_enc::uniformType(self, program, location));
6698 	 unsigned char *ptr;
6699 	 unsigned char *buf;
6700 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
6701 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6702 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6703 	buf = stream->alloc(totalSize);
6704 	ptr = buf;
6705 	int tmp = OP_glGetUniformuiv;memcpy(ptr, &tmp, 4); ptr += 4;
6706 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6707 
6708 		memcpy(ptr, &program, 4); ptr += 4;
6709 		memcpy(ptr, &location, 4); ptr += 4;
6710 	memcpy(ptr, &__size_params, 4); ptr += 4;
6711 
6712 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6713 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6714 
6715 	stream->readback(params, __size_params);
6716 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6717 	if (useChecksum) {
6718 		unsigned char *checksumBufPtr = NULL;
6719 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
6720 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6721 		stream->readback(checksumBufPtr, checksumSize);
6722 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6723 			ALOGE("glGetUniformuiv: GL communication error, please report this issue to b.android.com.\n");
6724 			abort();
6725 		}
6726 	}
6727 }
6728 
glGetActiveUniformsiv_enc(void * self,GLuint program,GLsizei uniformCount,const GLuint * uniformIndices,GLenum pname,GLint * params)6729 void glGetActiveUniformsiv_enc(void *self , GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params)
6730 {
6731 	ENCODER_DEBUG_LOG("glGetActiveUniformsiv(program:%u, uniformCount:%d, uniformIndices:0x%08x, pname:0x%08x, params:0x%08x)", program, uniformCount, uniformIndices, pname, params);
6732 	AEMU_SCOPED_TRACE("glGetActiveUniformsiv encode");
6733 
6734 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6735 	IOStream *stream = ctx->m_stream;
6736 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6737 	bool useChecksum = checksumCalculator->getVersion() > 0;
6738 
6739 	const unsigned int __size_uniformIndices =  (uniformCount * sizeof(GLuint));
6740 	const unsigned int __size_params =  (uniformCount * sizeof(GLint));
6741 	 unsigned char *ptr;
6742 	 unsigned char *buf;
6743 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_uniformIndices + 4 + 0 + 2*4;
6744 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6745 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6746 	buf = stream->alloc(totalSize);
6747 	ptr = buf;
6748 	int tmp = OP_glGetActiveUniformsiv;memcpy(ptr, &tmp, 4); ptr += 4;
6749 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6750 
6751 		memcpy(ptr, &program, 4); ptr += 4;
6752 		memcpy(ptr, &uniformCount, 4); ptr += 4;
6753 	memcpy(ptr, &__size_uniformIndices, 4); ptr += 4;
6754 	memcpy(ptr, uniformIndices, __size_uniformIndices);ptr += __size_uniformIndices;
6755 		memcpy(ptr, &pname, 4); ptr += 4;
6756 	memcpy(ptr, &__size_params, 4); ptr += 4;
6757 
6758 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6759 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6760 
6761 	stream->readback(params, __size_params);
6762 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6763 	if (useChecksum) {
6764 		unsigned char *checksumBufPtr = NULL;
6765 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
6766 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6767 		stream->readback(checksumBufPtr, checksumSize);
6768 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6769 			ALOGE("glGetActiveUniformsiv: GL communication error, please report this issue to b.android.com.\n");
6770 			abort();
6771 		}
6772 	}
6773 }
6774 
glVertexAttribI4i_enc(void * self,GLuint index,GLint v0,GLint v1,GLint v2,GLint v3)6775 void glVertexAttribI4i_enc(void *self , GLuint index, GLint v0, GLint v1, GLint v2, GLint v3)
6776 {
6777 	ENCODER_DEBUG_LOG("glVertexAttribI4i(index:%u, v0:%d, v1:%d, v2:%d, v3:%d)", index, v0, v1, v2, v3);
6778 	AEMU_SCOPED_TRACE("glVertexAttribI4i encode");
6779 
6780 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6781 	IOStream *stream = ctx->m_stream;
6782 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6783 	bool useChecksum = checksumCalculator->getVersion() > 0;
6784 
6785 	 unsigned char *ptr;
6786 	 unsigned char *buf;
6787 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6788 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6789 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6790 	buf = stream->alloc(totalSize);
6791 	ptr = buf;
6792 	int tmp = OP_glVertexAttribI4i;memcpy(ptr, &tmp, 4); ptr += 4;
6793 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6794 
6795 		memcpy(ptr, &index, 4); ptr += 4;
6796 		memcpy(ptr, &v0, 4); ptr += 4;
6797 		memcpy(ptr, &v1, 4); ptr += 4;
6798 		memcpy(ptr, &v2, 4); ptr += 4;
6799 		memcpy(ptr, &v3, 4); ptr += 4;
6800 
6801 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6802 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6803 
6804 }
6805 
glVertexAttribI4ui_enc(void * self,GLuint index,GLuint v0,GLuint v1,GLuint v2,GLuint v3)6806 void glVertexAttribI4ui_enc(void *self , GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
6807 {
6808 	ENCODER_DEBUG_LOG("glVertexAttribI4ui(index:%u, v0:%u, v1:%u, v2:%u, v3:%u)", index, v0, v1, v2, v3);
6809 	AEMU_SCOPED_TRACE("glVertexAttribI4ui encode");
6810 
6811 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6812 	IOStream *stream = ctx->m_stream;
6813 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6814 	bool useChecksum = checksumCalculator->getVersion() > 0;
6815 
6816 	 unsigned char *ptr;
6817 	 unsigned char *buf;
6818 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6819 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6820 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6821 	buf = stream->alloc(totalSize);
6822 	ptr = buf;
6823 	int tmp = OP_glVertexAttribI4ui;memcpy(ptr, &tmp, 4); ptr += 4;
6824 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6825 
6826 		memcpy(ptr, &index, 4); ptr += 4;
6827 		memcpy(ptr, &v0, 4); ptr += 4;
6828 		memcpy(ptr, &v1, 4); ptr += 4;
6829 		memcpy(ptr, &v2, 4); ptr += 4;
6830 		memcpy(ptr, &v3, 4); ptr += 4;
6831 
6832 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6833 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6834 
6835 }
6836 
glVertexAttribI4iv_enc(void * self,GLuint index,const GLint * v)6837 void glVertexAttribI4iv_enc(void *self , GLuint index, const GLint* v)
6838 {
6839 	ENCODER_DEBUG_LOG("glVertexAttribI4iv(index:%u, v:0x%08x)", index, v);
6840 	AEMU_SCOPED_TRACE("glVertexAttribI4iv encode");
6841 
6842 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6843 	IOStream *stream = ctx->m_stream;
6844 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6845 	bool useChecksum = checksumCalculator->getVersion() > 0;
6846 
6847 	const unsigned int __size_v =  (4 * sizeof(GLint));
6848 	 unsigned char *ptr;
6849 	 unsigned char *buf;
6850 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_v + 1*4;
6851 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6852 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6853 	buf = stream->alloc(totalSize);
6854 	ptr = buf;
6855 	int tmp = OP_glVertexAttribI4iv;memcpy(ptr, &tmp, 4); ptr += 4;
6856 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6857 
6858 		memcpy(ptr, &index, 4); ptr += 4;
6859 	memcpy(ptr, &__size_v, 4); ptr += 4;
6860 	memcpy(ptr, v, __size_v);ptr += __size_v;
6861 
6862 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6863 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6864 
6865 }
6866 
glVertexAttribI4uiv_enc(void * self,GLuint index,const GLuint * v)6867 void glVertexAttribI4uiv_enc(void *self , GLuint index, const GLuint* v)
6868 {
6869 	ENCODER_DEBUG_LOG("glVertexAttribI4uiv(index:%u, v:0x%08x)", index, v);
6870 	AEMU_SCOPED_TRACE("glVertexAttribI4uiv encode");
6871 
6872 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6873 	IOStream *stream = ctx->m_stream;
6874 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6875 	bool useChecksum = checksumCalculator->getVersion() > 0;
6876 
6877 	const unsigned int __size_v =  (4 * sizeof(GLuint));
6878 	 unsigned char *ptr;
6879 	 unsigned char *buf;
6880 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_v + 1*4;
6881 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6882 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6883 	buf = stream->alloc(totalSize);
6884 	ptr = buf;
6885 	int tmp = OP_glVertexAttribI4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6886 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6887 
6888 		memcpy(ptr, &index, 4); ptr += 4;
6889 	memcpy(ptr, &__size_v, 4); ptr += 4;
6890 	memcpy(ptr, v, __size_v);ptr += __size_v;
6891 
6892 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6893 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6894 
6895 }
6896 
glVertexAttribIPointerOffsetAEMU_enc(void * self,GLuint index,GLint size,GLenum type,GLsizei stride,GLuint offset)6897 void glVertexAttribIPointerOffsetAEMU_enc(void *self , GLuint index, GLint size, GLenum type, GLsizei stride, GLuint offset)
6898 {
6899 	ENCODER_DEBUG_LOG("glVertexAttribIPointerOffsetAEMU(index:%u, size:%d, type:0x%08x, stride:%d, offset:%u)", index, size, type, stride, offset);
6900 	AEMU_SCOPED_TRACE("glVertexAttribIPointerOffsetAEMU encode");
6901 
6902 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6903 	IOStream *stream = ctx->m_stream;
6904 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6905 	bool useChecksum = checksumCalculator->getVersion() > 0;
6906 
6907 	 unsigned char *ptr;
6908 	 unsigned char *buf;
6909 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6910 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6911 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6912 	buf = stream->alloc(totalSize);
6913 	ptr = buf;
6914 	int tmp = OP_glVertexAttribIPointerOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6915 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6916 
6917 		memcpy(ptr, &index, 4); ptr += 4;
6918 		memcpy(ptr, &size, 4); ptr += 4;
6919 		memcpy(ptr, &type, 4); ptr += 4;
6920 		memcpy(ptr, &stride, 4); ptr += 4;
6921 		memcpy(ptr, &offset, 4); ptr += 4;
6922 
6923 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6924 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6925 
6926 }
6927 
glVertexAttribIPointerDataAEMU_enc(void * self,GLuint index,GLint size,GLenum type,GLsizei stride,void * data,GLuint datalen)6928 void glVertexAttribIPointerDataAEMU_enc(void *self , GLuint index, GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
6929 {
6930 	ENCODER_DEBUG_LOG("glVertexAttribIPointerDataAEMU(index:%u, size:%d, type:0x%08x, stride:%d, data:0x%08x, datalen:%u)", index, size, type, stride, data, datalen);
6931 	AEMU_SCOPED_TRACE("glVertexAttribIPointerDataAEMU encode");
6932 
6933 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6934 	IOStream *stream = ctx->m_stream;
6935 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6936 	bool useChecksum = checksumCalculator->getVersion() > 0;
6937 
6938 	const unsigned int __size_data =  datalen;
6939 	 unsigned char *ptr;
6940 	 unsigned char *buf;
6941 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_data + 4 + 1*4;
6942 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6943 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6944 	buf = stream->alloc(totalSize);
6945 	ptr = buf;
6946 	int tmp = OP_glVertexAttribIPointerDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6947 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6948 
6949 		memcpy(ptr, &index, 4); ptr += 4;
6950 		memcpy(ptr, &size, 4); ptr += 4;
6951 		memcpy(ptr, &type, 4); ptr += 4;
6952 		memcpy(ptr, &stride, 4); ptr += 4;
6953 	memcpy(ptr, &__size_data, 4); ptr += 4;
6954 	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
6955 		memcpy(ptr, &datalen, 4); ptr += 4;
6956 
6957 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6958 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6959 
6960 }
6961 
glGetVertexAttribIiv_enc(void * self,GLuint index,GLenum pname,GLint * params)6962 void glGetVertexAttribIiv_enc(void *self , GLuint index, GLenum pname, GLint* params)
6963 {
6964 	ENCODER_DEBUG_LOG("glGetVertexAttribIiv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
6965 	AEMU_SCOPED_TRACE("glGetVertexAttribIiv encode");
6966 
6967 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6968 	IOStream *stream = ctx->m_stream;
6969 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6970 	bool useChecksum = checksumCalculator->getVersion() > 0;
6971 
6972 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
6973 	 unsigned char *ptr;
6974 	 unsigned char *buf;
6975 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
6976 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6977 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6978 	buf = stream->alloc(totalSize);
6979 	ptr = buf;
6980 	int tmp = OP_glGetVertexAttribIiv;memcpy(ptr, &tmp, 4); ptr += 4;
6981 	memcpy(ptr, &totalSize, 4);  ptr += 4;
6982 
6983 		memcpy(ptr, &index, 4); ptr += 4;
6984 		memcpy(ptr, &pname, 4); ptr += 4;
6985 	memcpy(ptr, &__size_params, 4); ptr += 4;
6986 
6987 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6988 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6989 
6990 	stream->readback(params, __size_params);
6991 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6992 	if (useChecksum) {
6993 		unsigned char *checksumBufPtr = NULL;
6994 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
6995 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6996 		stream->readback(checksumBufPtr, checksumSize);
6997 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6998 			ALOGE("glGetVertexAttribIiv: GL communication error, please report this issue to b.android.com.\n");
6999 			abort();
7000 		}
7001 	}
7002 }
7003 
glGetVertexAttribIuiv_enc(void * self,GLuint index,GLenum pname,GLuint * params)7004 void glGetVertexAttribIuiv_enc(void *self , GLuint index, GLenum pname, GLuint* params)
7005 {
7006 	ENCODER_DEBUG_LOG("glGetVertexAttribIuiv(index:%u, pname:0x%08x, params:0x%08x)", index, pname, params);
7007 	AEMU_SCOPED_TRACE("glGetVertexAttribIuiv encode");
7008 
7009 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7010 	IOStream *stream = ctx->m_stream;
7011 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7012 	bool useChecksum = checksumCalculator->getVersion() > 0;
7013 
7014 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLuint));
7015 	 unsigned char *ptr;
7016 	 unsigned char *buf;
7017 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
7018 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7019 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7020 	buf = stream->alloc(totalSize);
7021 	ptr = buf;
7022 	int tmp = OP_glGetVertexAttribIuiv;memcpy(ptr, &tmp, 4); ptr += 4;
7023 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7024 
7025 		memcpy(ptr, &index, 4); ptr += 4;
7026 		memcpy(ptr, &pname, 4); ptr += 4;
7027 	memcpy(ptr, &__size_params, 4); ptr += 4;
7028 
7029 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7030 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7031 
7032 	stream->readback(params, __size_params);
7033 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
7034 	if (useChecksum) {
7035 		unsigned char *checksumBufPtr = NULL;
7036 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
7037 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7038 		stream->readback(checksumBufPtr, checksumSize);
7039 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7040 			ALOGE("glGetVertexAttribIuiv: GL communication error, please report this issue to b.android.com.\n");
7041 			abort();
7042 		}
7043 	}
7044 }
7045 
glVertexAttribDivisor_enc(void * self,GLuint index,GLuint divisor)7046 void glVertexAttribDivisor_enc(void *self , GLuint index, GLuint divisor)
7047 {
7048 	ENCODER_DEBUG_LOG("glVertexAttribDivisor(index:%u, divisor:%u)", index, divisor);
7049 	AEMU_SCOPED_TRACE("glVertexAttribDivisor encode");
7050 
7051 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7052 	IOStream *stream = ctx->m_stream;
7053 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7054 	bool useChecksum = checksumCalculator->getVersion() > 0;
7055 
7056 	 unsigned char *ptr;
7057 	 unsigned char *buf;
7058 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7059 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7060 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7061 	buf = stream->alloc(totalSize);
7062 	ptr = buf;
7063 	int tmp = OP_glVertexAttribDivisor;memcpy(ptr, &tmp, 4); ptr += 4;
7064 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7065 
7066 		memcpy(ptr, &index, 4); ptr += 4;
7067 		memcpy(ptr, &divisor, 4); ptr += 4;
7068 
7069 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7070 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7071 
7072 }
7073 
glDrawArraysInstanced_enc(void * self,GLenum mode,GLint first,GLsizei count,GLsizei primcount)7074 void glDrawArraysInstanced_enc(void *self , GLenum mode, GLint first, GLsizei count, GLsizei primcount)
7075 {
7076 	ENCODER_DEBUG_LOG("glDrawArraysInstanced(mode:0x%08x, first:%d, count:%d, primcount:%d)", mode, first, count, primcount);
7077 	AEMU_SCOPED_TRACE("glDrawArraysInstanced encode");
7078 
7079 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7080 	IOStream *stream = ctx->m_stream;
7081 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7082 	bool useChecksum = checksumCalculator->getVersion() > 0;
7083 
7084 	 unsigned char *ptr;
7085 	 unsigned char *buf;
7086 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
7087 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7088 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7089 	buf = stream->alloc(totalSize);
7090 	ptr = buf;
7091 	int tmp = OP_glDrawArraysInstanced;memcpy(ptr, &tmp, 4); ptr += 4;
7092 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7093 
7094 		memcpy(ptr, &mode, 4); ptr += 4;
7095 		memcpy(ptr, &first, 4); ptr += 4;
7096 		memcpy(ptr, &count, 4); ptr += 4;
7097 		memcpy(ptr, &primcount, 4); ptr += 4;
7098 
7099 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7100 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7101 
7102 }
7103 
glDrawElementsInstancedDataAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei primcount,GLsizei datalen)7104 void glDrawElementsInstancedDataAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLsizei datalen)
7105 {
7106 	ENCODER_DEBUG_LOG("glDrawElementsInstancedDataAEMU(mode:0x%08x, count:%d, type:0x%08x, indices:0x%08x, primcount:%d, datalen:%d)", mode, count, type, indices, primcount, datalen);
7107 	AEMU_SCOPED_TRACE("glDrawElementsInstancedDataAEMU encode");
7108 
7109 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7110 	IOStream *stream = ctx->m_stream;
7111 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7112 	bool useChecksum = checksumCalculator->getVersion() > 0;
7113 
7114 	const unsigned int __size_indices =  datalen;
7115 	 unsigned char *ptr;
7116 	 unsigned char *buf;
7117 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_indices + 4 + 4 + 1*4;
7118 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7119 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7120 	buf = stream->alloc(totalSize);
7121 	ptr = buf;
7122 	int tmp = OP_glDrawElementsInstancedDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7123 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7124 
7125 		memcpy(ptr, &mode, 4); ptr += 4;
7126 		memcpy(ptr, &count, 4); ptr += 4;
7127 		memcpy(ptr, &type, 4); ptr += 4;
7128 	memcpy(ptr, &__size_indices, 4); ptr += 4;
7129 	memcpy(ptr, indices, __size_indices);ptr += __size_indices;
7130 		memcpy(ptr, &primcount, 4); ptr += 4;
7131 		memcpy(ptr, &datalen, 4); ptr += 4;
7132 
7133 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7134 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7135 
7136 }
7137 
glDrawElementsInstancedOffsetAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,GLuint offset,GLsizei primcount)7138 void glDrawElementsInstancedOffsetAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset, GLsizei primcount)
7139 {
7140 	ENCODER_DEBUG_LOG("glDrawElementsInstancedOffsetAEMU(mode:0x%08x, count:%d, type:0x%08x, offset:%u, primcount:%d)", mode, count, type, offset, primcount);
7141 	AEMU_SCOPED_TRACE("glDrawElementsInstancedOffsetAEMU encode");
7142 
7143 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7144 	IOStream *stream = ctx->m_stream;
7145 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7146 	bool useChecksum = checksumCalculator->getVersion() > 0;
7147 
7148 	 unsigned char *ptr;
7149 	 unsigned char *buf;
7150 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7151 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7152 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7153 	buf = stream->alloc(totalSize);
7154 	ptr = buf;
7155 	int tmp = OP_glDrawElementsInstancedOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7156 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7157 
7158 		memcpy(ptr, &mode, 4); ptr += 4;
7159 		memcpy(ptr, &count, 4); ptr += 4;
7160 		memcpy(ptr, &type, 4); ptr += 4;
7161 		memcpy(ptr, &offset, 4); ptr += 4;
7162 		memcpy(ptr, &primcount, 4); ptr += 4;
7163 
7164 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7165 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7166 
7167 }
7168 
glDrawRangeElementsDataAEMU_enc(void * self,GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices,GLsizei datalen)7169 void glDrawRangeElementsDataAEMU_enc(void *self , GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices, GLsizei datalen)
7170 {
7171 	ENCODER_DEBUG_LOG("glDrawRangeElementsDataAEMU(mode:0x%08x, start:%u, end:%u, count:%d, type:0x%08x, indices:0x%08x, datalen:%d)", mode, start, end, count, type, indices, datalen);
7172 	AEMU_SCOPED_TRACE("glDrawRangeElementsDataAEMU encode");
7173 
7174 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7175 	IOStream *stream = ctx->m_stream;
7176 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7177 	bool useChecksum = checksumCalculator->getVersion() > 0;
7178 
7179 	const unsigned int __size_indices =  datalen;
7180 	 unsigned char *ptr;
7181 	 unsigned char *buf;
7182 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + __size_indices + 4 + 1*4;
7183 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7184 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7185 	buf = stream->alloc(totalSize);
7186 	ptr = buf;
7187 	int tmp = OP_glDrawRangeElementsDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7188 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7189 
7190 		memcpy(ptr, &mode, 4); ptr += 4;
7191 		memcpy(ptr, &start, 4); ptr += 4;
7192 		memcpy(ptr, &end, 4); ptr += 4;
7193 		memcpy(ptr, &count, 4); ptr += 4;
7194 		memcpy(ptr, &type, 4); ptr += 4;
7195 	memcpy(ptr, &__size_indices, 4); ptr += 4;
7196 	memcpy(ptr, indices, __size_indices);ptr += __size_indices;
7197 		memcpy(ptr, &datalen, 4); ptr += 4;
7198 
7199 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7200 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7201 
7202 }
7203 
glDrawRangeElementsOffsetAEMU_enc(void * self,GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,GLuint offset)7204 void glDrawRangeElementsOffsetAEMU_enc(void *self , GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLuint offset)
7205 {
7206 	ENCODER_DEBUG_LOG("glDrawRangeElementsOffsetAEMU(mode:0x%08x, start:%u, end:%u, count:%d, type:0x%08x, offset:%u)", mode, start, end, count, type, offset);
7207 	AEMU_SCOPED_TRACE("glDrawRangeElementsOffsetAEMU encode");
7208 
7209 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7210 	IOStream *stream = ctx->m_stream;
7211 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7212 	bool useChecksum = checksumCalculator->getVersion() > 0;
7213 
7214 	 unsigned char *ptr;
7215 	 unsigned char *buf;
7216 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
7217 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7218 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7219 	buf = stream->alloc(totalSize);
7220 	ptr = buf;
7221 	int tmp = OP_glDrawRangeElementsOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7222 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7223 
7224 		memcpy(ptr, &mode, 4); ptr += 4;
7225 		memcpy(ptr, &start, 4); ptr += 4;
7226 		memcpy(ptr, &end, 4); ptr += 4;
7227 		memcpy(ptr, &count, 4); ptr += 4;
7228 		memcpy(ptr, &type, 4); ptr += 4;
7229 		memcpy(ptr, &offset, 4); ptr += 4;
7230 
7231 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7232 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7233 
7234 }
7235 
glFenceSyncAEMU_enc(void * self,GLenum condition,GLbitfield flags)7236 uint64_t glFenceSyncAEMU_enc(void *self , GLenum condition, GLbitfield flags)
7237 {
7238 	ENCODER_DEBUG_LOG("glFenceSyncAEMU(condition:0x%08x, flags:0x%08x)", condition, flags);
7239 	AEMU_SCOPED_TRACE("glFenceSyncAEMU encode");
7240 
7241 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7242 	IOStream *stream = ctx->m_stream;
7243 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7244 	bool useChecksum = checksumCalculator->getVersion() > 0;
7245 
7246 	 unsigned char *ptr;
7247 	 unsigned char *buf;
7248 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7249 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7250 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7251 	buf = stream->alloc(totalSize);
7252 	ptr = buf;
7253 	int tmp = OP_glFenceSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7254 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7255 
7256 		memcpy(ptr, &condition, 4); ptr += 4;
7257 		memcpy(ptr, &flags, 4); ptr += 4;
7258 
7259 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7260 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7261 
7262 
7263 	uint64_t retval;
7264 	stream->readback(&retval, 8);
7265 	if (useChecksum) checksumCalculator->addBuffer(&retval, 8);
7266 	if (useChecksum) {
7267 		unsigned char *checksumBufPtr = NULL;
7268 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
7269 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7270 		stream->readback(checksumBufPtr, checksumSize);
7271 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7272 			ALOGE("glFenceSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
7273 			abort();
7274 		}
7275 	}
7276 	return retval;
7277 }
7278 
glClientWaitSyncAEMU_enc(void * self,uint64_t wait_on,GLbitfield flags,GLuint64 timeout)7279 GLenum glClientWaitSyncAEMU_enc(void *self , uint64_t wait_on, GLbitfield flags, GLuint64 timeout)
7280 {
7281 	ENCODER_DEBUG_LOG("glClientWaitSyncAEMU(wait_on:0x%016lx, flags:0x%08x, timeout:0x%016lx)", wait_on, flags, timeout);
7282 	AEMU_SCOPED_TRACE("glClientWaitSyncAEMU encode");
7283 
7284 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7285 	IOStream *stream = ctx->m_stream;
7286 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7287 	bool useChecksum = checksumCalculator->getVersion() > 0;
7288 
7289 	 unsigned char *ptr;
7290 	 unsigned char *buf;
7291 	 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 8;
7292 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7293 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7294 	buf = stream->alloc(totalSize);
7295 	ptr = buf;
7296 	int tmp = OP_glClientWaitSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7297 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7298 
7299 		memcpy(ptr, &wait_on, 8); ptr += 8;
7300 		memcpy(ptr, &flags, 4); ptr += 4;
7301 		memcpy(ptr, &timeout, 8); ptr += 8;
7302 
7303 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7304 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7305 
7306 
7307 	GLenum retval;
7308 	stream->readback(&retval, 4);
7309 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
7310 	if (useChecksum) {
7311 		unsigned char *checksumBufPtr = NULL;
7312 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
7313 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7314 		stream->readback(checksumBufPtr, checksumSize);
7315 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7316 			ALOGE("glClientWaitSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
7317 			abort();
7318 		}
7319 	}
7320 	return retval;
7321 }
7322 
glWaitSyncAEMU_enc(void * self,uint64_t wait_on,GLbitfield flags,GLuint64 timeout)7323 void glWaitSyncAEMU_enc(void *self , uint64_t wait_on, GLbitfield flags, GLuint64 timeout)
7324 {
7325 	ENCODER_DEBUG_LOG("glWaitSyncAEMU(wait_on:0x%016lx, flags:0x%08x, timeout:0x%016lx)", wait_on, flags, timeout);
7326 	AEMU_SCOPED_TRACE("glWaitSyncAEMU encode");
7327 
7328 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7329 	IOStream *stream = ctx->m_stream;
7330 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7331 	bool useChecksum = checksumCalculator->getVersion() > 0;
7332 
7333 	 unsigned char *ptr;
7334 	 unsigned char *buf;
7335 	 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 8;
7336 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7337 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7338 	buf = stream->alloc(totalSize);
7339 	ptr = buf;
7340 	int tmp = OP_glWaitSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7341 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7342 
7343 		memcpy(ptr, &wait_on, 8); ptr += 8;
7344 		memcpy(ptr, &flags, 4); ptr += 4;
7345 		memcpy(ptr, &timeout, 8); ptr += 8;
7346 
7347 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7348 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7349 
7350 }
7351 
glDeleteSyncAEMU_enc(void * self,uint64_t to_delete)7352 void glDeleteSyncAEMU_enc(void *self , uint64_t to_delete)
7353 {
7354 	ENCODER_DEBUG_LOG("glDeleteSyncAEMU(to_delete:0x%016lx)", to_delete);
7355 	AEMU_SCOPED_TRACE("glDeleteSyncAEMU encode");
7356 
7357 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7358 	IOStream *stream = ctx->m_stream;
7359 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7360 	bool useChecksum = checksumCalculator->getVersion() > 0;
7361 
7362 	 unsigned char *ptr;
7363 	 unsigned char *buf;
7364 	 const size_t sizeWithoutChecksum = 8 + 8;
7365 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7366 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7367 	buf = stream->alloc(totalSize);
7368 	ptr = buf;
7369 	int tmp = OP_glDeleteSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7370 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7371 
7372 		memcpy(ptr, &to_delete, 8); ptr += 8;
7373 
7374 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7375 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7376 
7377 }
7378 
glIsSyncAEMU_enc(void * self,uint64_t sync)7379 GLboolean glIsSyncAEMU_enc(void *self , uint64_t sync)
7380 {
7381 	ENCODER_DEBUG_LOG("glIsSyncAEMU(sync:0x%016lx)", sync);
7382 	AEMU_SCOPED_TRACE("glIsSyncAEMU encode");
7383 
7384 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7385 	IOStream *stream = ctx->m_stream;
7386 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7387 	bool useChecksum = checksumCalculator->getVersion() > 0;
7388 
7389 	 unsigned char *ptr;
7390 	 unsigned char *buf;
7391 	 const size_t sizeWithoutChecksum = 8 + 8;
7392 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7393 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7394 	buf = stream->alloc(totalSize);
7395 	ptr = buf;
7396 	int tmp = OP_glIsSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7397 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7398 
7399 		memcpy(ptr, &sync, 8); ptr += 8;
7400 
7401 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7402 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7403 
7404 
7405 	GLboolean retval;
7406 	stream->readback(&retval, 1);
7407 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
7408 	if (useChecksum) {
7409 		unsigned char *checksumBufPtr = NULL;
7410 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
7411 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7412 		stream->readback(checksumBufPtr, checksumSize);
7413 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7414 			ALOGE("glIsSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
7415 			abort();
7416 		}
7417 	}
7418 	return retval;
7419 }
7420 
glGetSyncivAEMU_enc(void * self,uint64_t sync,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * values)7421 void glGetSyncivAEMU_enc(void *self , uint64_t sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values)
7422 {
7423 	ENCODER_DEBUG_LOG("glGetSyncivAEMU(sync:0x%016lx, pname:0x%08x, bufSize:%d, length:0x%08x, values:0x%08x)", sync, pname, bufSize, length, values);
7424 	AEMU_SCOPED_TRACE("glGetSyncivAEMU encode");
7425 
7426 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7427 	IOStream *stream = ctx->m_stream;
7428 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7429 	bool useChecksum = checksumCalculator->getVersion() > 0;
7430 
7431 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
7432 	const unsigned int __size_values =  (bufSize * sizeof(GLint));
7433 	 unsigned char *ptr;
7434 	 unsigned char *buf;
7435 	 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 4 + 0 + 0 + 2*4;
7436 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7437 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7438 	buf = stream->alloc(totalSize);
7439 	ptr = buf;
7440 	int tmp = OP_glGetSyncivAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7441 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7442 
7443 		memcpy(ptr, &sync, 8); ptr += 8;
7444 		memcpy(ptr, &pname, 4); ptr += 4;
7445 		memcpy(ptr, &bufSize, 4); ptr += 4;
7446 	memcpy(ptr, &__size_length, 4); ptr += 4;
7447 	memcpy(ptr, &__size_values, 4); ptr += 4;
7448 
7449 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7450 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7451 
7452 	if (length != NULL) {
7453 		stream->readback(length, __size_length);
7454 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
7455 	}
7456 	stream->readback(values, __size_values);
7457 	if (useChecksum) checksumCalculator->addBuffer(values, __size_values);
7458 	if (useChecksum) {
7459 		unsigned char *checksumBufPtr = NULL;
7460 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
7461 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7462 		stream->readback(checksumBufPtr, checksumSize);
7463 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7464 			ALOGE("glGetSyncivAEMU: GL communication error, please report this issue to b.android.com.\n");
7465 			abort();
7466 		}
7467 	}
7468 }
7469 
glDrawBuffers_enc(void * self,GLsizei n,const GLenum * bufs)7470 void glDrawBuffers_enc(void *self , GLsizei n, const GLenum* bufs)
7471 {
7472 	ENCODER_DEBUG_LOG("glDrawBuffers(n:%d, bufs:0x%08x)", n, bufs);
7473 	AEMU_SCOPED_TRACE("glDrawBuffers encode");
7474 
7475 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7476 	IOStream *stream = ctx->m_stream;
7477 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7478 	bool useChecksum = checksumCalculator->getVersion() > 0;
7479 
7480 	const unsigned int __size_bufs =  (n * sizeof(GLenum));
7481 	 unsigned char *ptr;
7482 	 unsigned char *buf;
7483 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_bufs + 1*4;
7484 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7485 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7486 	buf = stream->alloc(totalSize);
7487 	ptr = buf;
7488 	int tmp = OP_glDrawBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
7489 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7490 
7491 		memcpy(ptr, &n, 4); ptr += 4;
7492 	memcpy(ptr, &__size_bufs, 4); ptr += 4;
7493 	memcpy(ptr, bufs, __size_bufs);ptr += __size_bufs;
7494 
7495 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7496 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7497 
7498 }
7499 
glReadBuffer_enc(void * self,GLenum src)7500 void glReadBuffer_enc(void *self , GLenum src)
7501 {
7502 	ENCODER_DEBUG_LOG("glReadBuffer(src:0x%08x)", src);
7503 	AEMU_SCOPED_TRACE("glReadBuffer encode");
7504 
7505 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7506 	IOStream *stream = ctx->m_stream;
7507 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7508 	bool useChecksum = checksumCalculator->getVersion() > 0;
7509 
7510 	 unsigned char *ptr;
7511 	 unsigned char *buf;
7512 	 const size_t sizeWithoutChecksum = 8 + 4;
7513 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7514 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7515 	buf = stream->alloc(totalSize);
7516 	ptr = buf;
7517 	int tmp = OP_glReadBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7518 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7519 
7520 		memcpy(ptr, &src, 4); ptr += 4;
7521 
7522 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7523 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7524 
7525 }
7526 
glBlitFramebuffer_enc(void * self,GLint srcX0,GLint srcY0,GLint srcX1,GLint srcY1,GLint dstX0,GLint dstY0,GLint dstX1,GLint dstY1,GLbitfield mask,GLenum filter)7527 void glBlitFramebuffer_enc(void *self , GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
7528 {
7529 	ENCODER_DEBUG_LOG("glBlitFramebuffer(srcX0:%d, srcY0:%d, srcX1:%d, srcY1:%d, dstX0:%d, dstY0:%d, dstX1:%d, dstY1:%d, mask:0x%08x, filter:0x%08x)", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
7530 	AEMU_SCOPED_TRACE("glBlitFramebuffer encode");
7531 
7532 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7533 	IOStream *stream = ctx->m_stream;
7534 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7535 	bool useChecksum = checksumCalculator->getVersion() > 0;
7536 
7537 	 unsigned char *ptr;
7538 	 unsigned char *buf;
7539 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
7540 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7541 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7542 	buf = stream->alloc(totalSize);
7543 	ptr = buf;
7544 	int tmp = OP_glBlitFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7545 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7546 
7547 		memcpy(ptr, &srcX0, 4); ptr += 4;
7548 		memcpy(ptr, &srcY0, 4); ptr += 4;
7549 		memcpy(ptr, &srcX1, 4); ptr += 4;
7550 		memcpy(ptr, &srcY1, 4); ptr += 4;
7551 		memcpy(ptr, &dstX0, 4); ptr += 4;
7552 		memcpy(ptr, &dstY0, 4); ptr += 4;
7553 		memcpy(ptr, &dstX1, 4); ptr += 4;
7554 		memcpy(ptr, &dstY1, 4); ptr += 4;
7555 		memcpy(ptr, &mask, 4); ptr += 4;
7556 		memcpy(ptr, &filter, 4); ptr += 4;
7557 
7558 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7559 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7560 
7561 }
7562 
glInvalidateFramebuffer_enc(void * self,GLenum target,GLsizei numAttachments,const GLenum * attachments)7563 void glInvalidateFramebuffer_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments)
7564 {
7565 	ENCODER_DEBUG_LOG("glInvalidateFramebuffer(target:0x%08x, numAttachments:%d, attachments:0x%08x)", target, numAttachments, attachments);
7566 	AEMU_SCOPED_TRACE("glInvalidateFramebuffer encode");
7567 
7568 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7569 	IOStream *stream = ctx->m_stream;
7570 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7571 	bool useChecksum = checksumCalculator->getVersion() > 0;
7572 
7573 	const unsigned int __size_attachments =  (numAttachments * sizeof(GLenum));
7574 	 unsigned char *ptr;
7575 	 unsigned char *buf;
7576 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 1*4;
7577 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7578 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7579 	buf = stream->alloc(totalSize);
7580 	ptr = buf;
7581 	int tmp = OP_glInvalidateFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7582 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7583 
7584 		memcpy(ptr, &target, 4); ptr += 4;
7585 		memcpy(ptr, &numAttachments, 4); ptr += 4;
7586 	memcpy(ptr, &__size_attachments, 4); ptr += 4;
7587 	memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
7588 
7589 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7590 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7591 
7592 }
7593 
glInvalidateSubFramebuffer_enc(void * self,GLenum target,GLsizei numAttachments,const GLenum * attachments,GLint x,GLint y,GLsizei width,GLsizei height)7594 void glInvalidateSubFramebuffer_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height)
7595 {
7596 	ENCODER_DEBUG_LOG("glInvalidateSubFramebuffer(target:0x%08x, numAttachments:%d, attachments:0x%08x, x:%d, y:%d, width:%d, height:%d)", target, numAttachments, attachments, x, y, width, height);
7597 	AEMU_SCOPED_TRACE("glInvalidateSubFramebuffer encode");
7598 
7599 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7600 	IOStream *stream = ctx->m_stream;
7601 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7602 	bool useChecksum = checksumCalculator->getVersion() > 0;
7603 
7604 	const unsigned int __size_attachments =  (numAttachments * sizeof(GLenum));
7605 	 unsigned char *ptr;
7606 	 unsigned char *buf;
7607 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 4 + 4 + 4 + 4 + 1*4;
7608 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7609 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7610 	buf = stream->alloc(totalSize);
7611 	ptr = buf;
7612 	int tmp = OP_glInvalidateSubFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7613 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7614 
7615 		memcpy(ptr, &target, 4); ptr += 4;
7616 		memcpy(ptr, &numAttachments, 4); ptr += 4;
7617 	memcpy(ptr, &__size_attachments, 4); ptr += 4;
7618 	memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
7619 		memcpy(ptr, &x, 4); ptr += 4;
7620 		memcpy(ptr, &y, 4); ptr += 4;
7621 		memcpy(ptr, &width, 4); ptr += 4;
7622 		memcpy(ptr, &height, 4); ptr += 4;
7623 
7624 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7625 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7626 
7627 }
7628 
glFramebufferTextureLayer_enc(void * self,GLenum target,GLenum attachment,GLuint texture,GLint level,GLint layer)7629 void glFramebufferTextureLayer_enc(void *self , GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
7630 {
7631 	ENCODER_DEBUG_LOG("glFramebufferTextureLayer(target:0x%08x, attachment:0x%08x, texture:%u, level:%d, layer:%d)", target, attachment, texture, level, layer);
7632 	AEMU_SCOPED_TRACE("glFramebufferTextureLayer encode");
7633 
7634 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7635 	IOStream *stream = ctx->m_stream;
7636 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7637 	bool useChecksum = checksumCalculator->getVersion() > 0;
7638 
7639 	 unsigned char *ptr;
7640 	 unsigned char *buf;
7641 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7642 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7643 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7644 	buf = stream->alloc(totalSize);
7645 	ptr = buf;
7646 	int tmp = OP_glFramebufferTextureLayer;memcpy(ptr, &tmp, 4); ptr += 4;
7647 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7648 
7649 		memcpy(ptr, &target, 4); ptr += 4;
7650 		memcpy(ptr, &attachment, 4); ptr += 4;
7651 		memcpy(ptr, &texture, 4); ptr += 4;
7652 		memcpy(ptr, &level, 4); ptr += 4;
7653 		memcpy(ptr, &layer, 4); ptr += 4;
7654 
7655 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7656 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7657 
7658 }
7659 
glRenderbufferStorageMultisample_enc(void * self,GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height)7660 void glRenderbufferStorageMultisample_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
7661 {
7662 	ENCODER_DEBUG_LOG("glRenderbufferStorageMultisample(target:0x%08x, samples:%d, internalformat:0x%08x, width:%d, height:%d)", target, samples, internalformat, width, height);
7663 	AEMU_SCOPED_TRACE("glRenderbufferStorageMultisample encode");
7664 
7665 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7666 	IOStream *stream = ctx->m_stream;
7667 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7668 	bool useChecksum = checksumCalculator->getVersion() > 0;
7669 
7670 	 unsigned char *ptr;
7671 	 unsigned char *buf;
7672 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7673 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7674 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7675 	buf = stream->alloc(totalSize);
7676 	ptr = buf;
7677 	int tmp = OP_glRenderbufferStorageMultisample;memcpy(ptr, &tmp, 4); ptr += 4;
7678 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7679 
7680 		memcpy(ptr, &target, 4); ptr += 4;
7681 		memcpy(ptr, &samples, 4); ptr += 4;
7682 		memcpy(ptr, &internalformat, 4); ptr += 4;
7683 		memcpy(ptr, &width, 4); ptr += 4;
7684 		memcpy(ptr, &height, 4); ptr += 4;
7685 
7686 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7687 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7688 
7689 }
7690 
glTexStorage2D_enc(void * self,GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height)7691 void glTexStorage2D_enc(void *self , GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
7692 {
7693 	ENCODER_DEBUG_LOG("glTexStorage2D(target:0x%08x, levels:%d, internalformat:0x%08x, width:%d, height:%d)", target, levels, internalformat, width, height);
7694 	AEMU_SCOPED_TRACE("glTexStorage2D encode");
7695 
7696 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7697 	IOStream *stream = ctx->m_stream;
7698 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7699 	bool useChecksum = checksumCalculator->getVersion() > 0;
7700 
7701 	 unsigned char *ptr;
7702 	 unsigned char *buf;
7703 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7704 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7705 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7706 	buf = stream->alloc(totalSize);
7707 	ptr = buf;
7708 	int tmp = OP_glTexStorage2D;memcpy(ptr, &tmp, 4); ptr += 4;
7709 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7710 
7711 		memcpy(ptr, &target, 4); ptr += 4;
7712 		memcpy(ptr, &levels, 4); ptr += 4;
7713 		memcpy(ptr, &internalformat, 4); ptr += 4;
7714 		memcpy(ptr, &width, 4); ptr += 4;
7715 		memcpy(ptr, &height, 4); ptr += 4;
7716 
7717 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7718 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7719 
7720 }
7721 
glGetInternalformativ_enc(void * self,GLenum target,GLenum internalformat,GLenum pname,GLsizei bufSize,GLint * params)7722 void glGetInternalformativ_enc(void *self , GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params)
7723 {
7724 	ENCODER_DEBUG_LOG("glGetInternalformativ(target:0x%08x, internalformat:0x%08x, pname:0x%08x, bufSize:%d, params:0x%08x)", target, internalformat, pname, bufSize, params);
7725 	AEMU_SCOPED_TRACE("glGetInternalformativ encode");
7726 
7727 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7728 	IOStream *stream = ctx->m_stream;
7729 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7730 	bool useChecksum = checksumCalculator->getVersion() > 0;
7731 
7732 	const unsigned int __size_params =  (sizeof(GLint) * bufSize);
7733 	 unsigned char *ptr;
7734 	 unsigned char *buf;
7735 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 1*4;
7736 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7737 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7738 	buf = stream->alloc(totalSize);
7739 	ptr = buf;
7740 	int tmp = OP_glGetInternalformativ;memcpy(ptr, &tmp, 4); ptr += 4;
7741 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7742 
7743 		memcpy(ptr, &target, 4); ptr += 4;
7744 		memcpy(ptr, &internalformat, 4); ptr += 4;
7745 		memcpy(ptr, &pname, 4); ptr += 4;
7746 		memcpy(ptr, &bufSize, 4); ptr += 4;
7747 	memcpy(ptr, &__size_params, 4); ptr += 4;
7748 
7749 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7750 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7751 
7752 	stream->readback(params, __size_params);
7753 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
7754 	if (useChecksum) {
7755 		unsigned char *checksumBufPtr = NULL;
7756 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
7757 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7758 		stream->readback(checksumBufPtr, checksumSize);
7759 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7760 			ALOGE("glGetInternalformativ: GL communication error, please report this issue to b.android.com.\n");
7761 			abort();
7762 		}
7763 	}
7764 }
7765 
glBeginTransformFeedback_enc(void * self,GLenum primitiveMode)7766 void glBeginTransformFeedback_enc(void *self , GLenum primitiveMode)
7767 {
7768 	ENCODER_DEBUG_LOG("glBeginTransformFeedback(primitiveMode:0x%08x)", primitiveMode);
7769 	AEMU_SCOPED_TRACE("glBeginTransformFeedback encode");
7770 
7771 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7772 	IOStream *stream = ctx->m_stream;
7773 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7774 	bool useChecksum = checksumCalculator->getVersion() > 0;
7775 
7776 	 unsigned char *ptr;
7777 	 unsigned char *buf;
7778 	 const size_t sizeWithoutChecksum = 8 + 4;
7779 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7780 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7781 	buf = stream->alloc(totalSize);
7782 	ptr = buf;
7783 	int tmp = OP_glBeginTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7784 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7785 
7786 		memcpy(ptr, &primitiveMode, 4); ptr += 4;
7787 
7788 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7789 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7790 
7791 }
7792 
glEndTransformFeedback_enc(void * self)7793 void glEndTransformFeedback_enc(void *self )
7794 {
7795 	ENCODER_DEBUG_LOG("glEndTransformFeedback()");
7796 	AEMU_SCOPED_TRACE("glEndTransformFeedback encode");
7797 
7798 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7799 	IOStream *stream = ctx->m_stream;
7800 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7801 	bool useChecksum = checksumCalculator->getVersion() > 0;
7802 
7803 	 unsigned char *ptr;
7804 	 unsigned char *buf;
7805 	 const size_t sizeWithoutChecksum = 8;
7806 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7807 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7808 	buf = stream->alloc(totalSize);
7809 	ptr = buf;
7810 	int tmp = OP_glEndTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7811 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7812 
7813 
7814 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7815 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7816 
7817 }
7818 
glGenTransformFeedbacks_enc(void * self,GLsizei n,GLuint * ids)7819 void glGenTransformFeedbacks_enc(void *self , GLsizei n, GLuint* ids)
7820 {
7821 	ENCODER_DEBUG_LOG("glGenTransformFeedbacks(n:%d, ids:0x%08x)", n, ids);
7822 	AEMU_SCOPED_TRACE("glGenTransformFeedbacks encode");
7823 
7824 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7825 	IOStream *stream = ctx->m_stream;
7826 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7827 	bool useChecksum = checksumCalculator->getVersion() > 0;
7828 
7829 	const unsigned int __size_ids =  (n * sizeof(GLuint));
7830 	 unsigned char *ptr;
7831 	 unsigned char *buf;
7832 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
7833 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7834 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7835 	buf = stream->alloc(totalSize);
7836 	ptr = buf;
7837 	int tmp = OP_glGenTransformFeedbacks;memcpy(ptr, &tmp, 4); ptr += 4;
7838 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7839 
7840 		memcpy(ptr, &n, 4); ptr += 4;
7841 	memcpy(ptr, &__size_ids, 4); ptr += 4;
7842 
7843 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7844 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7845 
7846 	stream->readback(ids, __size_ids);
7847 	if (useChecksum) checksumCalculator->addBuffer(ids, __size_ids);
7848 	if (useChecksum) {
7849 		unsigned char *checksumBufPtr = NULL;
7850 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
7851 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7852 		stream->readback(checksumBufPtr, checksumSize);
7853 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7854 			ALOGE("glGenTransformFeedbacks: GL communication error, please report this issue to b.android.com.\n");
7855 			abort();
7856 		}
7857 	}
7858 }
7859 
glDeleteTransformFeedbacks_enc(void * self,GLsizei n,const GLuint * ids)7860 void glDeleteTransformFeedbacks_enc(void *self , GLsizei n, const GLuint* ids)
7861 {
7862 	ENCODER_DEBUG_LOG("glDeleteTransformFeedbacks(n:%d, ids:0x%08x)", n, ids);
7863 	AEMU_SCOPED_TRACE("glDeleteTransformFeedbacks encode");
7864 
7865 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7866 	IOStream *stream = ctx->m_stream;
7867 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7868 	bool useChecksum = checksumCalculator->getVersion() > 0;
7869 
7870 	const unsigned int __size_ids =  (n * sizeof(GLuint));
7871 	 unsigned char *ptr;
7872 	 unsigned char *buf;
7873 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_ids + 1*4;
7874 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7875 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7876 	buf = stream->alloc(totalSize);
7877 	ptr = buf;
7878 	int tmp = OP_glDeleteTransformFeedbacks;memcpy(ptr, &tmp, 4); ptr += 4;
7879 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7880 
7881 		memcpy(ptr, &n, 4); ptr += 4;
7882 	memcpy(ptr, &__size_ids, 4); ptr += 4;
7883 	memcpy(ptr, ids, __size_ids);ptr += __size_ids;
7884 
7885 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7886 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7887 
7888 }
7889 
glBindTransformFeedback_enc(void * self,GLenum target,GLuint id)7890 void glBindTransformFeedback_enc(void *self , GLenum target, GLuint id)
7891 {
7892 	ENCODER_DEBUG_LOG("glBindTransformFeedback(target:0x%08x, id:%u)", target, id);
7893 	AEMU_SCOPED_TRACE("glBindTransformFeedback encode");
7894 
7895 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7896 	IOStream *stream = ctx->m_stream;
7897 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7898 	bool useChecksum = checksumCalculator->getVersion() > 0;
7899 
7900 	 unsigned char *ptr;
7901 	 unsigned char *buf;
7902 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7903 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7904 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7905 	buf = stream->alloc(totalSize);
7906 	ptr = buf;
7907 	int tmp = OP_glBindTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7908 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7909 
7910 		memcpy(ptr, &target, 4); ptr += 4;
7911 		memcpy(ptr, &id, 4); ptr += 4;
7912 
7913 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7914 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7915 
7916 }
7917 
glPauseTransformFeedback_enc(void * self)7918 void glPauseTransformFeedback_enc(void *self )
7919 {
7920 	ENCODER_DEBUG_LOG("glPauseTransformFeedback()");
7921 	AEMU_SCOPED_TRACE("glPauseTransformFeedback encode");
7922 
7923 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7924 	IOStream *stream = ctx->m_stream;
7925 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7926 	bool useChecksum = checksumCalculator->getVersion() > 0;
7927 
7928 	 unsigned char *ptr;
7929 	 unsigned char *buf;
7930 	 const size_t sizeWithoutChecksum = 8;
7931 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7932 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7933 	buf = stream->alloc(totalSize);
7934 	ptr = buf;
7935 	int tmp = OP_glPauseTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7936 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7937 
7938 
7939 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7940 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7941 
7942 }
7943 
glResumeTransformFeedback_enc(void * self)7944 void glResumeTransformFeedback_enc(void *self )
7945 {
7946 	ENCODER_DEBUG_LOG("glResumeTransformFeedback()");
7947 	AEMU_SCOPED_TRACE("glResumeTransformFeedback encode");
7948 
7949 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7950 	IOStream *stream = ctx->m_stream;
7951 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7952 	bool useChecksum = checksumCalculator->getVersion() > 0;
7953 
7954 	 unsigned char *ptr;
7955 	 unsigned char *buf;
7956 	 const size_t sizeWithoutChecksum = 8;
7957 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7958 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7959 	buf = stream->alloc(totalSize);
7960 	ptr = buf;
7961 	int tmp = OP_glResumeTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7962 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7963 
7964 
7965 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7966 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7967 
7968 }
7969 
glIsTransformFeedback_enc(void * self,GLuint id)7970 GLboolean glIsTransformFeedback_enc(void *self , GLuint id)
7971 {
7972 	ENCODER_DEBUG_LOG("glIsTransformFeedback(id:%u)", id);
7973 	AEMU_SCOPED_TRACE("glIsTransformFeedback encode");
7974 
7975 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7976 	IOStream *stream = ctx->m_stream;
7977 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7978 	bool useChecksum = checksumCalculator->getVersion() > 0;
7979 
7980 	 unsigned char *ptr;
7981 	 unsigned char *buf;
7982 	 const size_t sizeWithoutChecksum = 8 + 4;
7983 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7984 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7985 	buf = stream->alloc(totalSize);
7986 	ptr = buf;
7987 	int tmp = OP_glIsTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7988 	memcpy(ptr, &totalSize, 4);  ptr += 4;
7989 
7990 		memcpy(ptr, &id, 4); ptr += 4;
7991 
7992 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7993 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7994 
7995 
7996 	GLboolean retval;
7997 	stream->readback(&retval, 1);
7998 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
7999 	if (useChecksum) {
8000 		unsigned char *checksumBufPtr = NULL;
8001 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8002 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8003 		stream->readback(checksumBufPtr, checksumSize);
8004 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8005 			ALOGE("glIsTransformFeedback: GL communication error, please report this issue to b.android.com.\n");
8006 			abort();
8007 		}
8008 	}
8009 	return retval;
8010 }
8011 
glTransformFeedbackVaryingsAEMU_enc(void * self,GLuint program,GLsizei count,const char * packedVaryings,GLuint packedVaryingsLen,GLenum bufferMode)8012 void glTransformFeedbackVaryingsAEMU_enc(void *self , GLuint program, GLsizei count, const char* packedVaryings, GLuint packedVaryingsLen, GLenum bufferMode)
8013 {
8014 	ENCODER_DEBUG_LOG("glTransformFeedbackVaryingsAEMU(program:%u, count:%d, packedVaryings:0x%08x, packedVaryingsLen:%u, bufferMode:0x%08x)", program, count, packedVaryings, packedVaryingsLen, bufferMode);
8015 	AEMU_SCOPED_TRACE("glTransformFeedbackVaryingsAEMU encode");
8016 
8017 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8018 	IOStream *stream = ctx->m_stream;
8019 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8020 	bool useChecksum = checksumCalculator->getVersion() > 0;
8021 
8022 	const unsigned int __size_packedVaryings =  packedVaryingsLen;
8023 	 unsigned char *ptr;
8024 	 unsigned char *buf;
8025 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedVaryings + 4 + 4 + 1*4;
8026 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8027 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8028 	buf = stream->alloc(totalSize);
8029 	ptr = buf;
8030 	int tmp = OP_glTransformFeedbackVaryingsAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
8031 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8032 
8033 		memcpy(ptr, &program, 4); ptr += 4;
8034 		memcpy(ptr, &count, 4); ptr += 4;
8035 	memcpy(ptr, &__size_packedVaryings, 4); ptr += 4;
8036 	memcpy(ptr, packedVaryings, __size_packedVaryings);ptr += __size_packedVaryings;
8037 		memcpy(ptr, &packedVaryingsLen, 4); ptr += 4;
8038 		memcpy(ptr, &bufferMode, 4); ptr += 4;
8039 
8040 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8041 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8042 
8043 }
8044 
glGetTransformFeedbackVarying_enc(void * self,GLuint program,GLuint index,GLsizei bufSize,GLsizei * length,GLsizei * size,GLenum * type,char * name)8045 void glGetTransformFeedbackVarying_enc(void *self , GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, char* name)
8046 {
8047 	ENCODER_DEBUG_LOG("glGetTransformFeedbackVarying(program:%u, index:%u, bufSize:%d, length:0x%08x, size:0x%08x, type:0x%08x, name:0x%08x)", program, index, bufSize, length, size, type, name);
8048 	AEMU_SCOPED_TRACE("glGetTransformFeedbackVarying encode");
8049 
8050 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8051 	IOStream *stream = ctx->m_stream;
8052 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8053 	bool useChecksum = checksumCalculator->getVersion() > 0;
8054 
8055 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
8056 	const unsigned int __size_size =  (sizeof(GLsizei));
8057 	const unsigned int __size_type = ((type != NULL) ?  (sizeof(GLenum)) : 0);
8058 	const unsigned int __size_name = ((name != NULL) ?  bufSize : 0);
8059 	 unsigned char *ptr;
8060 	 unsigned char *buf;
8061 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
8062 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8063 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8064 	buf = stream->alloc(totalSize);
8065 	ptr = buf;
8066 	int tmp = OP_glGetTransformFeedbackVarying;memcpy(ptr, &tmp, 4); ptr += 4;
8067 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8068 
8069 		memcpy(ptr, &program, 4); ptr += 4;
8070 		memcpy(ptr, &index, 4); ptr += 4;
8071 		memcpy(ptr, &bufSize, 4); ptr += 4;
8072 	memcpy(ptr, &__size_length, 4); ptr += 4;
8073 	memcpy(ptr, &__size_size, 4); ptr += 4;
8074 	memcpy(ptr, &__size_type, 4); ptr += 4;
8075 	memcpy(ptr, &__size_name, 4); ptr += 4;
8076 
8077 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8078 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8079 
8080 	if (length != NULL) {
8081 		stream->readback(length, __size_length);
8082 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
8083 	}
8084 	stream->readback(size, __size_size);
8085 	if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
8086 	if (type != NULL) {
8087 		stream->readback(type, __size_type);
8088 		if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
8089 	}
8090 	if (name != NULL) {
8091 		stream->readback(name, __size_name);
8092 		if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
8093 	}
8094 	if (useChecksum) {
8095 		unsigned char *checksumBufPtr = NULL;
8096 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8097 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8098 		stream->readback(checksumBufPtr, checksumSize);
8099 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8100 			ALOGE("glGetTransformFeedbackVarying: GL communication error, please report this issue to b.android.com.\n");
8101 			abort();
8102 		}
8103 	}
8104 }
8105 
glGenSamplers_enc(void * self,GLsizei n,GLuint * samplers)8106 void glGenSamplers_enc(void *self , GLsizei n, GLuint* samplers)
8107 {
8108 	ENCODER_DEBUG_LOG("glGenSamplers(n:%d, samplers:0x%08x)", n, samplers);
8109 	AEMU_SCOPED_TRACE("glGenSamplers encode");
8110 
8111 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8112 	IOStream *stream = ctx->m_stream;
8113 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8114 	bool useChecksum = checksumCalculator->getVersion() > 0;
8115 
8116 	const unsigned int __size_samplers =  (n * sizeof(GLuint));
8117 	 unsigned char *ptr;
8118 	 unsigned char *buf;
8119 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
8120 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8121 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8122 	buf = stream->alloc(totalSize);
8123 	ptr = buf;
8124 	int tmp = OP_glGenSamplers;memcpy(ptr, &tmp, 4); ptr += 4;
8125 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8126 
8127 		memcpy(ptr, &n, 4); ptr += 4;
8128 	memcpy(ptr, &__size_samplers, 4); ptr += 4;
8129 
8130 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8131 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8132 
8133 	stream->readback(samplers, __size_samplers);
8134 	if (useChecksum) checksumCalculator->addBuffer(samplers, __size_samplers);
8135 	if (useChecksum) {
8136 		unsigned char *checksumBufPtr = NULL;
8137 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8138 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8139 		stream->readback(checksumBufPtr, checksumSize);
8140 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8141 			ALOGE("glGenSamplers: GL communication error, please report this issue to b.android.com.\n");
8142 			abort();
8143 		}
8144 	}
8145 }
8146 
glDeleteSamplers_enc(void * self,GLsizei n,const GLuint * samplers)8147 void glDeleteSamplers_enc(void *self , GLsizei n, const GLuint* samplers)
8148 {
8149 	ENCODER_DEBUG_LOG("glDeleteSamplers(n:%d, samplers:0x%08x)", n, samplers);
8150 	AEMU_SCOPED_TRACE("glDeleteSamplers encode");
8151 
8152 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8153 	IOStream *stream = ctx->m_stream;
8154 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8155 	bool useChecksum = checksumCalculator->getVersion() > 0;
8156 
8157 	const unsigned int __size_samplers =  (n * sizeof(GLuint));
8158 	 unsigned char *ptr;
8159 	 unsigned char *buf;
8160 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_samplers + 1*4;
8161 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8162 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8163 	buf = stream->alloc(totalSize);
8164 	ptr = buf;
8165 	int tmp = OP_glDeleteSamplers;memcpy(ptr, &tmp, 4); ptr += 4;
8166 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8167 
8168 		memcpy(ptr, &n, 4); ptr += 4;
8169 	memcpy(ptr, &__size_samplers, 4); ptr += 4;
8170 	memcpy(ptr, samplers, __size_samplers);ptr += __size_samplers;
8171 
8172 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8173 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8174 
8175 }
8176 
glBindSampler_enc(void * self,GLuint unit,GLuint sampler)8177 void glBindSampler_enc(void *self , GLuint unit, GLuint sampler)
8178 {
8179 	ENCODER_DEBUG_LOG("glBindSampler(unit:%u, sampler:%u)", unit, sampler);
8180 	AEMU_SCOPED_TRACE("glBindSampler encode");
8181 
8182 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8183 	IOStream *stream = ctx->m_stream;
8184 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8185 	bool useChecksum = checksumCalculator->getVersion() > 0;
8186 
8187 	 unsigned char *ptr;
8188 	 unsigned char *buf;
8189 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
8190 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8191 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8192 	buf = stream->alloc(totalSize);
8193 	ptr = buf;
8194 	int tmp = OP_glBindSampler;memcpy(ptr, &tmp, 4); ptr += 4;
8195 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8196 
8197 		memcpy(ptr, &unit, 4); ptr += 4;
8198 		memcpy(ptr, &sampler, 4); ptr += 4;
8199 
8200 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8201 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8202 
8203 }
8204 
glSamplerParameterf_enc(void * self,GLuint sampler,GLenum pname,GLfloat param)8205 void glSamplerParameterf_enc(void *self , GLuint sampler, GLenum pname, GLfloat param)
8206 {
8207 	ENCODER_DEBUG_LOG("glSamplerParameterf(sampler:%u, pname:0x%08x, param:%f)", sampler, pname, param);
8208 	AEMU_SCOPED_TRACE("glSamplerParameterf encode");
8209 
8210 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8211 	IOStream *stream = ctx->m_stream;
8212 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8213 	bool useChecksum = checksumCalculator->getVersion() > 0;
8214 
8215 	 unsigned char *ptr;
8216 	 unsigned char *buf;
8217 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
8218 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8219 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8220 	buf = stream->alloc(totalSize);
8221 	ptr = buf;
8222 	int tmp = OP_glSamplerParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
8223 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8224 
8225 		memcpy(ptr, &sampler, 4); ptr += 4;
8226 		memcpy(ptr, &pname, 4); ptr += 4;
8227 		memcpy(ptr, &param, 4); ptr += 4;
8228 
8229 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8230 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8231 
8232 }
8233 
glSamplerParameteri_enc(void * self,GLuint sampler,GLenum pname,GLint param)8234 void glSamplerParameteri_enc(void *self , GLuint sampler, GLenum pname, GLint param)
8235 {
8236 	ENCODER_DEBUG_LOG("glSamplerParameteri(sampler:%u, pname:0x%08x, param:%d)", sampler, pname, param);
8237 	AEMU_SCOPED_TRACE("glSamplerParameteri encode");
8238 
8239 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8240 	IOStream *stream = ctx->m_stream;
8241 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8242 	bool useChecksum = checksumCalculator->getVersion() > 0;
8243 
8244 	 unsigned char *ptr;
8245 	 unsigned char *buf;
8246 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
8247 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8248 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8249 	buf = stream->alloc(totalSize);
8250 	ptr = buf;
8251 	int tmp = OP_glSamplerParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
8252 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8253 
8254 		memcpy(ptr, &sampler, 4); ptr += 4;
8255 		memcpy(ptr, &pname, 4); ptr += 4;
8256 		memcpy(ptr, &param, 4); ptr += 4;
8257 
8258 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8259 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8260 
8261 }
8262 
glSamplerParameterfv_enc(void * self,GLuint sampler,GLenum pname,const GLfloat * params)8263 void glSamplerParameterfv_enc(void *self , GLuint sampler, GLenum pname, const GLfloat* params)
8264 {
8265 	ENCODER_DEBUG_LOG("glSamplerParameterfv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8266 	AEMU_SCOPED_TRACE("glSamplerParameterfv encode");
8267 
8268 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8269 	IOStream *stream = ctx->m_stream;
8270 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8271 	bool useChecksum = checksumCalculator->getVersion() > 0;
8272 
8273 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
8274 	 unsigned char *ptr;
8275 	 unsigned char *buf;
8276 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
8277 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8278 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8279 	buf = stream->alloc(totalSize);
8280 	ptr = buf;
8281 	int tmp = OP_glSamplerParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
8282 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8283 
8284 		memcpy(ptr, &sampler, 4); ptr += 4;
8285 		memcpy(ptr, &pname, 4); ptr += 4;
8286 	memcpy(ptr, &__size_params, 4); ptr += 4;
8287 	memcpy(ptr, params, __size_params);ptr += __size_params;
8288 
8289 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8290 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8291 
8292 }
8293 
glSamplerParameteriv_enc(void * self,GLuint sampler,GLenum pname,const GLint * params)8294 void glSamplerParameteriv_enc(void *self , GLuint sampler, GLenum pname, const GLint* params)
8295 {
8296 	ENCODER_DEBUG_LOG("glSamplerParameteriv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8297 	AEMU_SCOPED_TRACE("glSamplerParameteriv encode");
8298 
8299 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8300 	IOStream *stream = ctx->m_stream;
8301 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8302 	bool useChecksum = checksumCalculator->getVersion() > 0;
8303 
8304 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
8305 	 unsigned char *ptr;
8306 	 unsigned char *buf;
8307 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
8308 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8309 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8310 	buf = stream->alloc(totalSize);
8311 	ptr = buf;
8312 	int tmp = OP_glSamplerParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
8313 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8314 
8315 		memcpy(ptr, &sampler, 4); ptr += 4;
8316 		memcpy(ptr, &pname, 4); ptr += 4;
8317 	memcpy(ptr, &__size_params, 4); ptr += 4;
8318 	memcpy(ptr, params, __size_params);ptr += __size_params;
8319 
8320 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8321 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8322 
8323 }
8324 
glGetSamplerParameterfv_enc(void * self,GLuint sampler,GLenum pname,GLfloat * params)8325 void glGetSamplerParameterfv_enc(void *self , GLuint sampler, GLenum pname, GLfloat* params)
8326 {
8327 	ENCODER_DEBUG_LOG("glGetSamplerParameterfv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8328 	AEMU_SCOPED_TRACE("glGetSamplerParameterfv encode");
8329 
8330 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8331 	IOStream *stream = ctx->m_stream;
8332 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8333 	bool useChecksum = checksumCalculator->getVersion() > 0;
8334 
8335 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
8336 	 unsigned char *ptr;
8337 	 unsigned char *buf;
8338 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8339 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8340 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8341 	buf = stream->alloc(totalSize);
8342 	ptr = buf;
8343 	int tmp = OP_glGetSamplerParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
8344 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8345 
8346 		memcpy(ptr, &sampler, 4); ptr += 4;
8347 		memcpy(ptr, &pname, 4); ptr += 4;
8348 	memcpy(ptr, &__size_params, 4); ptr += 4;
8349 
8350 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8351 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8352 
8353 	stream->readback(params, __size_params);
8354 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8355 	if (useChecksum) {
8356 		unsigned char *checksumBufPtr = NULL;
8357 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8358 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8359 		stream->readback(checksumBufPtr, checksumSize);
8360 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8361 			ALOGE("glGetSamplerParameterfv: GL communication error, please report this issue to b.android.com.\n");
8362 			abort();
8363 		}
8364 	}
8365 }
8366 
glGetSamplerParameteriv_enc(void * self,GLuint sampler,GLenum pname,GLint * params)8367 void glGetSamplerParameteriv_enc(void *self , GLuint sampler, GLenum pname, GLint* params)
8368 {
8369 	ENCODER_DEBUG_LOG("glGetSamplerParameteriv(sampler:%u, pname:0x%08x, params:0x%08x)", sampler, pname, params);
8370 	AEMU_SCOPED_TRACE("glGetSamplerParameteriv encode");
8371 
8372 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8373 	IOStream *stream = ctx->m_stream;
8374 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8375 	bool useChecksum = checksumCalculator->getVersion() > 0;
8376 
8377 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
8378 	 unsigned char *ptr;
8379 	 unsigned char *buf;
8380 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8381 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8382 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8383 	buf = stream->alloc(totalSize);
8384 	ptr = buf;
8385 	int tmp = OP_glGetSamplerParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
8386 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8387 
8388 		memcpy(ptr, &sampler, 4); ptr += 4;
8389 		memcpy(ptr, &pname, 4); ptr += 4;
8390 	memcpy(ptr, &__size_params, 4); ptr += 4;
8391 
8392 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8393 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8394 
8395 	stream->readback(params, __size_params);
8396 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8397 	if (useChecksum) {
8398 		unsigned char *checksumBufPtr = NULL;
8399 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8400 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8401 		stream->readback(checksumBufPtr, checksumSize);
8402 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8403 			ALOGE("glGetSamplerParameteriv: GL communication error, please report this issue to b.android.com.\n");
8404 			abort();
8405 		}
8406 	}
8407 }
8408 
glIsSampler_enc(void * self,GLuint sampler)8409 GLboolean glIsSampler_enc(void *self , GLuint sampler)
8410 {
8411 	ENCODER_DEBUG_LOG("glIsSampler(sampler:%u)", sampler);
8412 	AEMU_SCOPED_TRACE("glIsSampler encode");
8413 
8414 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8415 	IOStream *stream = ctx->m_stream;
8416 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8417 	bool useChecksum = checksumCalculator->getVersion() > 0;
8418 
8419 	 unsigned char *ptr;
8420 	 unsigned char *buf;
8421 	 const size_t sizeWithoutChecksum = 8 + 4;
8422 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8423 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8424 	buf = stream->alloc(totalSize);
8425 	ptr = buf;
8426 	int tmp = OP_glIsSampler;memcpy(ptr, &tmp, 4); ptr += 4;
8427 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8428 
8429 		memcpy(ptr, &sampler, 4); ptr += 4;
8430 
8431 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8432 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8433 
8434 
8435 	GLboolean retval;
8436 	stream->readback(&retval, 1);
8437 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
8438 	if (useChecksum) {
8439 		unsigned char *checksumBufPtr = NULL;
8440 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8441 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8442 		stream->readback(checksumBufPtr, checksumSize);
8443 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8444 			ALOGE("glIsSampler: GL communication error, please report this issue to b.android.com.\n");
8445 			abort();
8446 		}
8447 	}
8448 	return retval;
8449 }
8450 
glGenQueries_enc(void * self,GLsizei n,GLuint * queries)8451 void glGenQueries_enc(void *self , GLsizei n, GLuint* queries)
8452 {
8453 	ENCODER_DEBUG_LOG("glGenQueries(n:%d, queries:0x%08x)", n, queries);
8454 	AEMU_SCOPED_TRACE("glGenQueries encode");
8455 
8456 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8457 	IOStream *stream = ctx->m_stream;
8458 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8459 	bool useChecksum = checksumCalculator->getVersion() > 0;
8460 
8461 	const unsigned int __size_queries =  (n * sizeof(GLuint));
8462 	 unsigned char *ptr;
8463 	 unsigned char *buf;
8464 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
8465 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8466 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8467 	buf = stream->alloc(totalSize);
8468 	ptr = buf;
8469 	int tmp = OP_glGenQueries;memcpy(ptr, &tmp, 4); ptr += 4;
8470 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8471 
8472 		memcpy(ptr, &n, 4); ptr += 4;
8473 	memcpy(ptr, &__size_queries, 4); ptr += 4;
8474 
8475 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8476 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8477 
8478 	stream->readback(queries, __size_queries);
8479 	if (useChecksum) checksumCalculator->addBuffer(queries, __size_queries);
8480 	if (useChecksum) {
8481 		unsigned char *checksumBufPtr = NULL;
8482 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8483 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8484 		stream->readback(checksumBufPtr, checksumSize);
8485 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8486 			ALOGE("glGenQueries: GL communication error, please report this issue to b.android.com.\n");
8487 			abort();
8488 		}
8489 	}
8490 }
8491 
glDeleteQueries_enc(void * self,GLsizei n,const GLuint * queries)8492 void glDeleteQueries_enc(void *self , GLsizei n, const GLuint* queries)
8493 {
8494 	ENCODER_DEBUG_LOG("glDeleteQueries(n:%d, queries:0x%08x)", n, queries);
8495 	AEMU_SCOPED_TRACE("glDeleteQueries encode");
8496 
8497 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8498 	IOStream *stream = ctx->m_stream;
8499 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8500 	bool useChecksum = checksumCalculator->getVersion() > 0;
8501 
8502 	const unsigned int __size_queries =  (n * sizeof(GLuint));
8503 	 unsigned char *ptr;
8504 	 unsigned char *buf;
8505 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_queries + 1*4;
8506 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8507 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8508 	buf = stream->alloc(totalSize);
8509 	ptr = buf;
8510 	int tmp = OP_glDeleteQueries;memcpy(ptr, &tmp, 4); ptr += 4;
8511 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8512 
8513 		memcpy(ptr, &n, 4); ptr += 4;
8514 	memcpy(ptr, &__size_queries, 4); ptr += 4;
8515 	memcpy(ptr, queries, __size_queries);ptr += __size_queries;
8516 
8517 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8518 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8519 
8520 }
8521 
glBeginQuery_enc(void * self,GLenum target,GLuint query)8522 void glBeginQuery_enc(void *self , GLenum target, GLuint query)
8523 {
8524 	ENCODER_DEBUG_LOG("glBeginQuery(target:0x%08x, query:%u)", target, query);
8525 	AEMU_SCOPED_TRACE("glBeginQuery encode");
8526 
8527 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8528 	IOStream *stream = ctx->m_stream;
8529 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8530 	bool useChecksum = checksumCalculator->getVersion() > 0;
8531 
8532 	 unsigned char *ptr;
8533 	 unsigned char *buf;
8534 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
8535 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8536 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8537 	buf = stream->alloc(totalSize);
8538 	ptr = buf;
8539 	int tmp = OP_glBeginQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8540 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8541 
8542 		memcpy(ptr, &target, 4); ptr += 4;
8543 		memcpy(ptr, &query, 4); ptr += 4;
8544 
8545 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8546 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8547 
8548 }
8549 
glEndQuery_enc(void * self,GLenum target)8550 void glEndQuery_enc(void *self , GLenum target)
8551 {
8552 	ENCODER_DEBUG_LOG("glEndQuery(target:0x%08x)", target);
8553 	AEMU_SCOPED_TRACE("glEndQuery encode");
8554 
8555 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8556 	IOStream *stream = ctx->m_stream;
8557 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8558 	bool useChecksum = checksumCalculator->getVersion() > 0;
8559 
8560 	 unsigned char *ptr;
8561 	 unsigned char *buf;
8562 	 const size_t sizeWithoutChecksum = 8 + 4;
8563 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8564 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8565 	buf = stream->alloc(totalSize);
8566 	ptr = buf;
8567 	int tmp = OP_glEndQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8568 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8569 
8570 		memcpy(ptr, &target, 4); ptr += 4;
8571 
8572 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8573 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8574 
8575 }
8576 
glGetQueryiv_enc(void * self,GLenum target,GLenum pname,GLint * params)8577 void glGetQueryiv_enc(void *self , GLenum target, GLenum pname, GLint* params)
8578 {
8579 	ENCODER_DEBUG_LOG("glGetQueryiv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
8580 	AEMU_SCOPED_TRACE("glGetQueryiv encode");
8581 
8582 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8583 	IOStream *stream = ctx->m_stream;
8584 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8585 	bool useChecksum = checksumCalculator->getVersion() > 0;
8586 
8587 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
8588 	 unsigned char *ptr;
8589 	 unsigned char *buf;
8590 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8591 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8592 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8593 	buf = stream->alloc(totalSize);
8594 	ptr = buf;
8595 	int tmp = OP_glGetQueryiv;memcpy(ptr, &tmp, 4); ptr += 4;
8596 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8597 
8598 		memcpy(ptr, &target, 4); ptr += 4;
8599 		memcpy(ptr, &pname, 4); ptr += 4;
8600 	memcpy(ptr, &__size_params, 4); ptr += 4;
8601 
8602 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8603 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8604 
8605 	stream->readback(params, __size_params);
8606 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8607 	if (useChecksum) {
8608 		unsigned char *checksumBufPtr = NULL;
8609 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8610 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8611 		stream->readback(checksumBufPtr, checksumSize);
8612 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8613 			ALOGE("glGetQueryiv: GL communication error, please report this issue to b.android.com.\n");
8614 			abort();
8615 		}
8616 	}
8617 }
8618 
glGetQueryObjectuiv_enc(void * self,GLuint query,GLenum pname,GLuint * params)8619 void glGetQueryObjectuiv_enc(void *self , GLuint query, GLenum pname, GLuint* params)
8620 {
8621 	ENCODER_DEBUG_LOG("glGetQueryObjectuiv(query:%u, pname:0x%08x, params:0x%08x)", query, pname, params);
8622 	AEMU_SCOPED_TRACE("glGetQueryObjectuiv encode");
8623 
8624 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8625 	IOStream *stream = ctx->m_stream;
8626 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8627 	bool useChecksum = checksumCalculator->getVersion() > 0;
8628 
8629 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLuint));
8630 	 unsigned char *ptr;
8631 	 unsigned char *buf;
8632 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8633 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8634 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8635 	buf = stream->alloc(totalSize);
8636 	ptr = buf;
8637 	int tmp = OP_glGetQueryObjectuiv;memcpy(ptr, &tmp, 4); ptr += 4;
8638 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8639 
8640 		memcpy(ptr, &query, 4); ptr += 4;
8641 		memcpy(ptr, &pname, 4); ptr += 4;
8642 	memcpy(ptr, &__size_params, 4); ptr += 4;
8643 
8644 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8645 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8646 
8647 	stream->readback(params, __size_params);
8648 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8649 	if (useChecksum) {
8650 		unsigned char *checksumBufPtr = NULL;
8651 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8652 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8653 		stream->readback(checksumBufPtr, checksumSize);
8654 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8655 			ALOGE("glGetQueryObjectuiv: GL communication error, please report this issue to b.android.com.\n");
8656 			abort();
8657 		}
8658 	}
8659 }
8660 
glIsQuery_enc(void * self,GLuint query)8661 GLboolean glIsQuery_enc(void *self , GLuint query)
8662 {
8663 	ENCODER_DEBUG_LOG("glIsQuery(query:%u)", query);
8664 	AEMU_SCOPED_TRACE("glIsQuery encode");
8665 
8666 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8667 	IOStream *stream = ctx->m_stream;
8668 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8669 	bool useChecksum = checksumCalculator->getVersion() > 0;
8670 
8671 	 unsigned char *ptr;
8672 	 unsigned char *buf;
8673 	 const size_t sizeWithoutChecksum = 8 + 4;
8674 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8675 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8676 	buf = stream->alloc(totalSize);
8677 	ptr = buf;
8678 	int tmp = OP_glIsQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8679 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8680 
8681 		memcpy(ptr, &query, 4); ptr += 4;
8682 
8683 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8684 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8685 
8686 
8687 	GLboolean retval;
8688 	stream->readback(&retval, 1);
8689 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
8690 	if (useChecksum) {
8691 		unsigned char *checksumBufPtr = NULL;
8692 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8693 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8694 		stream->readback(checksumBufPtr, checksumSize);
8695 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8696 			ALOGE("glIsQuery: GL communication error, please report this issue to b.android.com.\n");
8697 			abort();
8698 		}
8699 	}
8700 	return retval;
8701 }
8702 
glProgramParameteri_enc(void * self,GLuint program,GLenum pname,GLint value)8703 void glProgramParameteri_enc(void *self , GLuint program, GLenum pname, GLint value)
8704 {
8705 	ENCODER_DEBUG_LOG("glProgramParameteri(program:%u, pname:0x%08x, value:%d)", program, pname, value);
8706 	AEMU_SCOPED_TRACE("glProgramParameteri encode");
8707 
8708 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8709 	IOStream *stream = ctx->m_stream;
8710 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8711 	bool useChecksum = checksumCalculator->getVersion() > 0;
8712 
8713 	 unsigned char *ptr;
8714 	 unsigned char *buf;
8715 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
8716 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8717 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8718 	buf = stream->alloc(totalSize);
8719 	ptr = buf;
8720 	int tmp = OP_glProgramParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
8721 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8722 
8723 		memcpy(ptr, &program, 4); ptr += 4;
8724 		memcpy(ptr, &pname, 4); ptr += 4;
8725 		memcpy(ptr, &value, 4); ptr += 4;
8726 
8727 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8728 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8729 
8730 }
8731 
glProgramBinary_enc(void * self,GLuint program,GLenum binaryFormat,const void * binary,GLsizei length)8732 void glProgramBinary_enc(void *self , GLuint program, GLenum binaryFormat, const void* binary, GLsizei length)
8733 {
8734 	ENCODER_DEBUG_LOG("glProgramBinary(program:%u, binaryFormat:0x%08x, binary:0x%08x, length:%d)", program, binaryFormat, binary, length);
8735 	AEMU_SCOPED_TRACE("glProgramBinary encode");
8736 
8737 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8738 	IOStream *stream = ctx->m_stream;
8739 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8740 	bool useChecksum = checksumCalculator->getVersion() > 0;
8741 
8742 	const unsigned int __size_binary =  length;
8743 	 unsigned char *ptr;
8744 	 unsigned char *buf;
8745 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_binary + 4 + 1*4;
8746 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8747 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8748 	buf = stream->alloc(totalSize);
8749 	ptr = buf;
8750 	int tmp = OP_glProgramBinary;memcpy(ptr, &tmp, 4); ptr += 4;
8751 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8752 
8753 		memcpy(ptr, &program, 4); ptr += 4;
8754 		memcpy(ptr, &binaryFormat, 4); ptr += 4;
8755 	memcpy(ptr, &__size_binary, 4); ptr += 4;
8756 	memcpy(ptr, binary, __size_binary);ptr += __size_binary;
8757 		memcpy(ptr, &length, 4); ptr += 4;
8758 
8759 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8760 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8761 
8762 }
8763 
glGetProgramBinary_enc(void * self,GLuint program,GLsizei bufSize,GLsizei * length,GLenum * binaryFormat,void * binary)8764 void glGetProgramBinary_enc(void *self , GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void* binary)
8765 {
8766 	ENCODER_DEBUG_LOG("glGetProgramBinary(program:%u, bufSize:%d, length:0x%08x, binaryFormat:0x%08x, binary:0x%08x)", program, bufSize, length, binaryFormat, binary);
8767 	AEMU_SCOPED_TRACE("glGetProgramBinary encode");
8768 
8769 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8770 	IOStream *stream = ctx->m_stream;
8771 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8772 	bool useChecksum = checksumCalculator->getVersion() > 0;
8773 
8774 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
8775 	const unsigned int __size_binaryFormat =  (sizeof(GLenum));
8776 	const unsigned int __size_binary =  bufSize;
8777 	 unsigned char *ptr;
8778 	 unsigned char *buf;
8779 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 0 + 3*4;
8780 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8781 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8782 	buf = stream->alloc(totalSize);
8783 	ptr = buf;
8784 	int tmp = OP_glGetProgramBinary;memcpy(ptr, &tmp, 4); ptr += 4;
8785 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8786 
8787 		memcpy(ptr, &program, 4); ptr += 4;
8788 		memcpy(ptr, &bufSize, 4); ptr += 4;
8789 	memcpy(ptr, &__size_length, 4); ptr += 4;
8790 	memcpy(ptr, &__size_binaryFormat, 4); ptr += 4;
8791 	memcpy(ptr, &__size_binary, 4); ptr += 4;
8792 
8793 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8794 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8795 
8796 	if (length != NULL) {
8797 		stream->readback(length, __size_length);
8798 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
8799 	}
8800 	stream->readback(binaryFormat, __size_binaryFormat);
8801 	if (useChecksum) checksumCalculator->addBuffer(binaryFormat, __size_binaryFormat);
8802 	stream->readback(binary, __size_binary);
8803 	if (useChecksum) checksumCalculator->addBuffer(binary, __size_binary);
8804 	if (useChecksum) {
8805 		unsigned char *checksumBufPtr = NULL;
8806 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8807 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8808 		stream->readback(checksumBufPtr, checksumSize);
8809 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8810 			ALOGE("glGetProgramBinary: GL communication error, please report this issue to b.android.com.\n");
8811 			abort();
8812 		}
8813 	}
8814 }
8815 
glGetFragDataLocation_enc(void * self,GLuint program,const char * name)8816 GLint glGetFragDataLocation_enc(void *self , GLuint program, const char* name)
8817 {
8818 	ENCODER_DEBUG_LOG("glGetFragDataLocation(program:%u, name:0x%08x)", program, name);
8819 	AEMU_SCOPED_TRACE("glGetFragDataLocation encode");
8820 
8821 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8822 	IOStream *stream = ctx->m_stream;
8823 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8824 	bool useChecksum = checksumCalculator->getVersion() > 0;
8825 
8826 	const unsigned int __size_name =  (strlen(name) + 1);
8827 	 unsigned char *ptr;
8828 	 unsigned char *buf;
8829 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
8830 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8831 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8832 	buf = stream->alloc(totalSize);
8833 	ptr = buf;
8834 	int tmp = OP_glGetFragDataLocation;memcpy(ptr, &tmp, 4); ptr += 4;
8835 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8836 
8837 		memcpy(ptr, &program, 4); ptr += 4;
8838 	memcpy(ptr, &__size_name, 4); ptr += 4;
8839 	memcpy(ptr, name, __size_name);ptr += __size_name;
8840 
8841 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8842 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8843 
8844 
8845 	GLint retval;
8846 	stream->readback(&retval, 4);
8847 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
8848 	if (useChecksum) {
8849 		unsigned char *checksumBufPtr = NULL;
8850 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8851 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8852 		stream->readback(checksumBufPtr, checksumSize);
8853 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8854 			ALOGE("glGetFragDataLocation: GL communication error, please report this issue to b.android.com.\n");
8855 			abort();
8856 		}
8857 	}
8858 	return retval;
8859 }
8860 
glGetInteger64v_enc(void * self,GLenum pname,GLint64 * data)8861 void glGetInteger64v_enc(void *self , GLenum pname, GLint64* data)
8862 {
8863 	ENCODER_DEBUG_LOG("glGetInteger64v(pname:0x%08x, data:%p)", pname, data);
8864 	AEMU_SCOPED_TRACE("glGetInteger64v encode");
8865 
8866 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8867 	IOStream *stream = ctx->m_stream;
8868 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8869 	bool useChecksum = checksumCalculator->getVersion() > 0;
8870 
8871 	const unsigned int __size_data =  (glUtilsParamSize(pname) * sizeof(GLint64));
8872 	 unsigned char *ptr;
8873 	 unsigned char *buf;
8874 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
8875 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8876 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8877 	buf = stream->alloc(totalSize);
8878 	ptr = buf;
8879 	int tmp = OP_glGetInteger64v;memcpy(ptr, &tmp, 4); ptr += 4;
8880 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8881 
8882 		memcpy(ptr, &pname, 4); ptr += 4;
8883 	memcpy(ptr, &__size_data, 4); ptr += 4;
8884 
8885 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8886 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8887 
8888 	stream->readback(data, __size_data);
8889 	if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8890 	if (useChecksum) {
8891 		unsigned char *checksumBufPtr = NULL;
8892 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8893 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8894 		stream->readback(checksumBufPtr, checksumSize);
8895 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8896 			ALOGE("glGetInteger64v: GL communication error, please report this issue to b.android.com.\n");
8897 			abort();
8898 		}
8899 	}
8900 }
8901 
glGetIntegeri_v_enc(void * self,GLenum target,GLuint index,GLint * data)8902 void glGetIntegeri_v_enc(void *self , GLenum target, GLuint index, GLint* data)
8903 {
8904 	ENCODER_DEBUG_LOG("glGetIntegeri_v(target:0x%08x, index:%u, data:0x%08x)", target, index, data);
8905 	AEMU_SCOPED_TRACE("glGetIntegeri_v encode");
8906 
8907 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8908 	IOStream *stream = ctx->m_stream;
8909 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8910 	bool useChecksum = checksumCalculator->getVersion() > 0;
8911 
8912 	const unsigned int __size_data =  (sizeof(GLint));
8913 	 unsigned char *ptr;
8914 	 unsigned char *buf;
8915 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8916 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8917 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8918 	buf = stream->alloc(totalSize);
8919 	ptr = buf;
8920 	int tmp = OP_glGetIntegeri_v;memcpy(ptr, &tmp, 4); ptr += 4;
8921 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8922 
8923 		memcpy(ptr, &target, 4); ptr += 4;
8924 		memcpy(ptr, &index, 4); ptr += 4;
8925 	memcpy(ptr, &__size_data, 4); ptr += 4;
8926 
8927 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8928 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8929 
8930 	stream->readback(data, __size_data);
8931 	if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8932 	if (useChecksum) {
8933 		unsigned char *checksumBufPtr = NULL;
8934 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8935 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8936 		stream->readback(checksumBufPtr, checksumSize);
8937 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8938 			ALOGE("glGetIntegeri_v: GL communication error, please report this issue to b.android.com.\n");
8939 			abort();
8940 		}
8941 	}
8942 }
8943 
glGetInteger64i_v_enc(void * self,GLenum target,GLuint index,GLint64 * data)8944 void glGetInteger64i_v_enc(void *self , GLenum target, GLuint index, GLint64* data)
8945 {
8946 	ENCODER_DEBUG_LOG("glGetInteger64i_v(target:0x%08x, index:%u, data:%p)", target, index, data);
8947 	AEMU_SCOPED_TRACE("glGetInteger64i_v encode");
8948 
8949 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8950 	IOStream *stream = ctx->m_stream;
8951 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8952 	bool useChecksum = checksumCalculator->getVersion() > 0;
8953 
8954 	const unsigned int __size_data =  (sizeof(GLint64));
8955 	 unsigned char *ptr;
8956 	 unsigned char *buf;
8957 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8958 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8959 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8960 	buf = stream->alloc(totalSize);
8961 	ptr = buf;
8962 	int tmp = OP_glGetInteger64i_v;memcpy(ptr, &tmp, 4); ptr += 4;
8963 	memcpy(ptr, &totalSize, 4);  ptr += 4;
8964 
8965 		memcpy(ptr, &target, 4); ptr += 4;
8966 		memcpy(ptr, &index, 4); ptr += 4;
8967 	memcpy(ptr, &__size_data, 4); ptr += 4;
8968 
8969 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8970 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8971 
8972 	stream->readback(data, __size_data);
8973 	if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8974 	if (useChecksum) {
8975 		unsigned char *checksumBufPtr = NULL;
8976 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
8977 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8978 		stream->readback(checksumBufPtr, checksumSize);
8979 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8980 			ALOGE("glGetInteger64i_v: GL communication error, please report this issue to b.android.com.\n");
8981 			abort();
8982 		}
8983 	}
8984 }
8985 
glTexImage3D_enc(void * self,GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)8986 void glTexImage3D_enc(void *self , GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* data)
8987 {
8988 	ENCODER_DEBUG_LOG("glTexImage3D(target:0x%08x, level:%d, internalFormat:%d, width:%d, height:%d, depth:%d, border:%d, format:0x%08x, type:0x%08x, data:0x%08x)", target, level, internalFormat, width, height, depth, border, format, type, data);
8989 	AEMU_SCOPED_TRACE("glTexImage3D encode");
8990 
8991 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8992 	IOStream *stream = ctx->m_stream;
8993 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8994 	bool useChecksum = checksumCalculator->getVersion() > 0;
8995 
8996 	const unsigned int __size_data = ((data != NULL) ?  glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
8997 	 unsigned char *ptr;
8998 	 unsigned char *buf;
8999 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
9000 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9001 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9002 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9003 	ptr = buf;
9004 	int tmp = OP_glTexImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9005 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9006 
9007 		memcpy(ptr, &target, 4); ptr += 4;
9008 		memcpy(ptr, &level, 4); ptr += 4;
9009 		memcpy(ptr, &internalFormat, 4); ptr += 4;
9010 		memcpy(ptr, &width, 4); ptr += 4;
9011 		memcpy(ptr, &height, 4); ptr += 4;
9012 		memcpy(ptr, &depth, 4); ptr += 4;
9013 		memcpy(ptr, &border, 4); ptr += 4;
9014 		memcpy(ptr, &format, 4); ptr += 4;
9015 		memcpy(ptr, &type, 4); ptr += 4;
9016 
9017 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9018 	stream->flush();
9019 	stream->writeFully(&__size_data,4);
9020 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9021 	if (data != NULL) {
9022 		 stream->uploadPixels(self, width, height, depth, format, type, data);
9023 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9024 	}
9025 	buf = stream->alloc(checksumSize);
9026 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9027 
9028 }
9029 
glTexImage3DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,GLuint offset)9030 void glTexImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLuint offset)
9031 {
9032 	ENCODER_DEBUG_LOG("glTexImage3DOffsetAEMU(target:0x%08x, level:%d, internalFormat:%d, width:%d, height:%d, depth:%d, border:%d, format:0x%08x, type:0x%08x, offset:%u)", target, level, internalFormat, width, height, depth, border, format, type, offset);
9033 	AEMU_SCOPED_TRACE("glTexImage3DOffsetAEMU encode");
9034 
9035 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9036 	IOStream *stream = ctx->m_stream;
9037 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9038 	bool useChecksum = checksumCalculator->getVersion() > 0;
9039 
9040 	 unsigned char *ptr;
9041 	 unsigned char *buf;
9042 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9043 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9044 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9045 	buf = stream->alloc(totalSize);
9046 	ptr = buf;
9047 	int tmp = OP_glTexImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9048 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9049 
9050 		memcpy(ptr, &target, 4); ptr += 4;
9051 		memcpy(ptr, &level, 4); ptr += 4;
9052 		memcpy(ptr, &internalFormat, 4); ptr += 4;
9053 		memcpy(ptr, &width, 4); ptr += 4;
9054 		memcpy(ptr, &height, 4); ptr += 4;
9055 		memcpy(ptr, &depth, 4); ptr += 4;
9056 		memcpy(ptr, &border, 4); ptr += 4;
9057 		memcpy(ptr, &format, 4); ptr += 4;
9058 		memcpy(ptr, &type, 4); ptr += 4;
9059 		memcpy(ptr, &offset, 4); ptr += 4;
9060 
9061 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9062 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9063 
9064 }
9065 
glTexStorage3D_enc(void * self,GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth)9066 void glTexStorage3D_enc(void *self , GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
9067 {
9068 	ENCODER_DEBUG_LOG("glTexStorage3D(target:0x%08x, levels:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d)", target, levels, internalformat, width, height, depth);
9069 	AEMU_SCOPED_TRACE("glTexStorage3D encode");
9070 
9071 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9072 	IOStream *stream = ctx->m_stream;
9073 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9074 	bool useChecksum = checksumCalculator->getVersion() > 0;
9075 
9076 	 unsigned char *ptr;
9077 	 unsigned char *buf;
9078 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
9079 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9080 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9081 	buf = stream->alloc(totalSize);
9082 	ptr = buf;
9083 	int tmp = OP_glTexStorage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9084 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9085 
9086 		memcpy(ptr, &target, 4); ptr += 4;
9087 		memcpy(ptr, &levels, 4); ptr += 4;
9088 		memcpy(ptr, &internalformat, 4); ptr += 4;
9089 		memcpy(ptr, &width, 4); ptr += 4;
9090 		memcpy(ptr, &height, 4); ptr += 4;
9091 		memcpy(ptr, &depth, 4); ptr += 4;
9092 
9093 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9094 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9095 
9096 }
9097 
glTexSubImage3D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)9098 void glTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* data)
9099 {
9100 	ENCODER_DEBUG_LOG("glTexSubImage3D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, width:%d, height:%d, depth:%d, format:0x%08x, type:0x%08x, data:0x%08x)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
9101 	AEMU_SCOPED_TRACE("glTexSubImage3D encode");
9102 
9103 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9104 	IOStream *stream = ctx->m_stream;
9105 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9106 	bool useChecksum = checksumCalculator->getVersion() > 0;
9107 
9108 	const unsigned int __size_data = ((data != NULL) ?  glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
9109 	 unsigned char *ptr;
9110 	 unsigned char *buf;
9111 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
9112 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9113 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9114 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9115 	ptr = buf;
9116 	int tmp = OP_glTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9117 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9118 
9119 		memcpy(ptr, &target, 4); ptr += 4;
9120 		memcpy(ptr, &level, 4); ptr += 4;
9121 		memcpy(ptr, &xoffset, 4); ptr += 4;
9122 		memcpy(ptr, &yoffset, 4); ptr += 4;
9123 		memcpy(ptr, &zoffset, 4); ptr += 4;
9124 		memcpy(ptr, &width, 4); ptr += 4;
9125 		memcpy(ptr, &height, 4); ptr += 4;
9126 		memcpy(ptr, &depth, 4); ptr += 4;
9127 		memcpy(ptr, &format, 4); ptr += 4;
9128 		memcpy(ptr, &type, 4); ptr += 4;
9129 
9130 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9131 	stream->flush();
9132 	stream->writeFully(&__size_data,4);
9133 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9134 	if (data != NULL) {
9135 		 stream->uploadPixels(self, width, height, depth, format, type, data);
9136 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9137 	}
9138 	buf = stream->alloc(checksumSize);
9139 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9140 
9141 }
9142 
glTexSubImage3DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,GLuint offset)9143 void glTexSubImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLuint offset)
9144 {
9145 	ENCODER_DEBUG_LOG("glTexSubImage3DOffsetAEMU(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, width:%d, height:%d, depth:%d, format:0x%08x, type:0x%08x, offset:%u)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, offset);
9146 	AEMU_SCOPED_TRACE("glTexSubImage3DOffsetAEMU encode");
9147 
9148 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9149 	IOStream *stream = ctx->m_stream;
9150 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9151 	bool useChecksum = checksumCalculator->getVersion() > 0;
9152 
9153 	 unsigned char *ptr;
9154 	 unsigned char *buf;
9155 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9156 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9157 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9158 	buf = stream->alloc(totalSize);
9159 	ptr = buf;
9160 	int tmp = OP_glTexSubImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9161 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9162 
9163 		memcpy(ptr, &target, 4); ptr += 4;
9164 		memcpy(ptr, &level, 4); ptr += 4;
9165 		memcpy(ptr, &xoffset, 4); ptr += 4;
9166 		memcpy(ptr, &yoffset, 4); ptr += 4;
9167 		memcpy(ptr, &zoffset, 4); ptr += 4;
9168 		memcpy(ptr, &width, 4); ptr += 4;
9169 		memcpy(ptr, &height, 4); ptr += 4;
9170 		memcpy(ptr, &depth, 4); ptr += 4;
9171 		memcpy(ptr, &format, 4); ptr += 4;
9172 		memcpy(ptr, &type, 4); ptr += 4;
9173 		memcpy(ptr, &offset, 4); ptr += 4;
9174 
9175 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9176 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9177 
9178 }
9179 
glCompressedTexImage3D_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)9180 void glCompressedTexImage3D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
9181 {
9182 	ENCODER_DEBUG_LOG("glCompressedTexImage3D(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d, border:%d, imageSize:%d, data:0x%08x)", target, level, internalformat, width, height, depth, border, imageSize, data);
9183 	AEMU_SCOPED_TRACE("glCompressedTexImage3D encode");
9184 
9185 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9186 	IOStream *stream = ctx->m_stream;
9187 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9188 	bool useChecksum = checksumCalculator->getVersion() > 0;
9189 
9190 	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
9191 	 unsigned char *ptr;
9192 	 unsigned char *buf;
9193 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
9194 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9195 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9196 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9197 	ptr = buf;
9198 	int tmp = OP_glCompressedTexImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9199 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9200 
9201 		memcpy(ptr, &target, 4); ptr += 4;
9202 		memcpy(ptr, &level, 4); ptr += 4;
9203 		memcpy(ptr, &internalformat, 4); ptr += 4;
9204 		memcpy(ptr, &width, 4); ptr += 4;
9205 		memcpy(ptr, &height, 4); ptr += 4;
9206 		memcpy(ptr, &depth, 4); ptr += 4;
9207 		memcpy(ptr, &border, 4); ptr += 4;
9208 		memcpy(ptr, &imageSize, 4); ptr += 4;
9209 
9210 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9211 	stream->flush();
9212 	stream->writeFully(&__size_data,4);
9213 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9214 	if (data != NULL) {
9215 		stream->writeFully(data, __size_data);
9216 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9217 	}
9218 	buf = stream->alloc(checksumSize);
9219 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9220 
9221 }
9222 
glCompressedTexImage3DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,GLuint offset)9223 void glCompressedTexImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLuint offset)
9224 {
9225 	ENCODER_DEBUG_LOG("glCompressedTexImage3DOffsetAEMU(target:0x%08x, level:%d, internalformat:0x%08x, width:%d, height:%d, depth:%d, border:%d, imageSize:%d, offset:%u)", target, level, internalformat, width, height, depth, border, imageSize, offset);
9226 	AEMU_SCOPED_TRACE("glCompressedTexImage3DOffsetAEMU encode");
9227 
9228 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9229 	IOStream *stream = ctx->m_stream;
9230 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9231 	bool useChecksum = checksumCalculator->getVersion() > 0;
9232 
9233 	 unsigned char *ptr;
9234 	 unsigned char *buf;
9235 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9236 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9237 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9238 	buf = stream->alloc(totalSize);
9239 	ptr = buf;
9240 	int tmp = OP_glCompressedTexImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9241 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9242 
9243 		memcpy(ptr, &target, 4); ptr += 4;
9244 		memcpy(ptr, &level, 4); ptr += 4;
9245 		memcpy(ptr, &internalformat, 4); ptr += 4;
9246 		memcpy(ptr, &width, 4); ptr += 4;
9247 		memcpy(ptr, &height, 4); ptr += 4;
9248 		memcpy(ptr, &depth, 4); ptr += 4;
9249 		memcpy(ptr, &border, 4); ptr += 4;
9250 		memcpy(ptr, &imageSize, 4); ptr += 4;
9251 		memcpy(ptr, &offset, 4); ptr += 4;
9252 
9253 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9254 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9255 
9256 }
9257 
glCompressedTexSubImage3D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)9258 void glCompressedTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
9259 {
9260 	ENCODER_DEBUG_LOG("glCompressedTexSubImage3D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, width:%d, height:%d, depth:%d, format:0x%08x, imageSize:%d, data:0x%08x)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
9261 	AEMU_SCOPED_TRACE("glCompressedTexSubImage3D encode");
9262 
9263 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9264 	IOStream *stream = ctx->m_stream;
9265 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9266 	bool useChecksum = checksumCalculator->getVersion() > 0;
9267 
9268 	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
9269 	 unsigned char *ptr;
9270 	 unsigned char *buf;
9271 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
9272 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9273 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9274 	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
9275 	ptr = buf;
9276 	int tmp = OP_glCompressedTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9277 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9278 
9279 		memcpy(ptr, &target, 4); ptr += 4;
9280 		memcpy(ptr, &level, 4); ptr += 4;
9281 		memcpy(ptr, &xoffset, 4); ptr += 4;
9282 		memcpy(ptr, &yoffset, 4); ptr += 4;
9283 		memcpy(ptr, &zoffset, 4); ptr += 4;
9284 		memcpy(ptr, &width, 4); ptr += 4;
9285 		memcpy(ptr, &height, 4); ptr += 4;
9286 		memcpy(ptr, &depth, 4); ptr += 4;
9287 		memcpy(ptr, &format, 4); ptr += 4;
9288 		memcpy(ptr, &imageSize, 4); ptr += 4;
9289 
9290 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9291 	stream->flush();
9292 	stream->writeFully(&__size_data,4);
9293 	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
9294 	if (data != NULL) {
9295 		stream->writeFully(data, __size_data);
9296 		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9297 	}
9298 	buf = stream->alloc(checksumSize);
9299 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
9300 
9301 }
9302 
glCompressedTexSubImage3DOffsetAEMU_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,GLuint data)9303 void glCompressedTexSubImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLuint data)
9304 {
9305 	ENCODER_DEBUG_LOG("glCompressedTexSubImage3DOffsetAEMU(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, width:%d, height:%d, depth:%d, format:0x%08x, imageSize:%d, data:%u)", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
9306 	AEMU_SCOPED_TRACE("glCompressedTexSubImage3DOffsetAEMU encode");
9307 
9308 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9309 	IOStream *stream = ctx->m_stream;
9310 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9311 	bool useChecksum = checksumCalculator->getVersion() > 0;
9312 
9313 	 unsigned char *ptr;
9314 	 unsigned char *buf;
9315 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9316 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9317 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9318 	buf = stream->alloc(totalSize);
9319 	ptr = buf;
9320 	int tmp = OP_glCompressedTexSubImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9321 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9322 
9323 		memcpy(ptr, &target, 4); ptr += 4;
9324 		memcpy(ptr, &level, 4); ptr += 4;
9325 		memcpy(ptr, &xoffset, 4); ptr += 4;
9326 		memcpy(ptr, &yoffset, 4); ptr += 4;
9327 		memcpy(ptr, &zoffset, 4); ptr += 4;
9328 		memcpy(ptr, &width, 4); ptr += 4;
9329 		memcpy(ptr, &height, 4); ptr += 4;
9330 		memcpy(ptr, &depth, 4); ptr += 4;
9331 		memcpy(ptr, &format, 4); ptr += 4;
9332 		memcpy(ptr, &imageSize, 4); ptr += 4;
9333 		memcpy(ptr, &data, 4); ptr += 4;
9334 
9335 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9336 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9337 
9338 }
9339 
glCopyTexSubImage3D_enc(void * self,GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)9340 void glCopyTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
9341 {
9342 	ENCODER_DEBUG_LOG("glCopyTexSubImage3D(target:0x%08x, level:%d, xoffset:%d, yoffset:%d, zoffset:%d, x:%d, y:%d, width:%d, height:%d)", target, level, xoffset, yoffset, zoffset, x, y, width, height);
9343 	AEMU_SCOPED_TRACE("glCopyTexSubImage3D encode");
9344 
9345 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9346 	IOStream *stream = ctx->m_stream;
9347 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9348 	bool useChecksum = checksumCalculator->getVersion() > 0;
9349 
9350 	 unsigned char *ptr;
9351 	 unsigned char *buf;
9352 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
9353 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9354 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9355 	buf = stream->alloc(totalSize);
9356 	ptr = buf;
9357 	int tmp = OP_glCopyTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
9358 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9359 
9360 		memcpy(ptr, &target, 4); ptr += 4;
9361 		memcpy(ptr, &level, 4); ptr += 4;
9362 		memcpy(ptr, &xoffset, 4); ptr += 4;
9363 		memcpy(ptr, &yoffset, 4); ptr += 4;
9364 		memcpy(ptr, &zoffset, 4); ptr += 4;
9365 		memcpy(ptr, &x, 4); ptr += 4;
9366 		memcpy(ptr, &y, 4); ptr += 4;
9367 		memcpy(ptr, &width, 4); ptr += 4;
9368 		memcpy(ptr, &height, 4); ptr += 4;
9369 
9370 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9371 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9372 
9373 }
9374 
glGetBooleani_v_enc(void * self,GLenum target,GLuint index,GLboolean * data)9375 void glGetBooleani_v_enc(void *self , GLenum target, GLuint index, GLboolean* data)
9376 {
9377 	ENCODER_DEBUG_LOG("glGetBooleani_v(target:0x%08x, index:%u, data:0x%08x)", target, index, data);
9378 	AEMU_SCOPED_TRACE("glGetBooleani_v encode");
9379 
9380 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9381 	IOStream *stream = ctx->m_stream;
9382 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9383 	bool useChecksum = checksumCalculator->getVersion() > 0;
9384 
9385 	const unsigned int __size_data =  (sizeof(GLboolean));
9386 	 unsigned char *ptr;
9387 	 unsigned char *buf;
9388 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
9389 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9390 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9391 	buf = stream->alloc(totalSize);
9392 	ptr = buf;
9393 	int tmp = OP_glGetBooleani_v;memcpy(ptr, &tmp, 4); ptr += 4;
9394 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9395 
9396 		memcpy(ptr, &target, 4); ptr += 4;
9397 		memcpy(ptr, &index, 4); ptr += 4;
9398 	memcpy(ptr, &__size_data, 4); ptr += 4;
9399 
9400 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9401 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9402 
9403 	stream->readback(data, __size_data);
9404 	if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
9405 	if (useChecksum) {
9406 		unsigned char *checksumBufPtr = NULL;
9407 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
9408 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9409 		stream->readback(checksumBufPtr, checksumSize);
9410 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9411 			ALOGE("glGetBooleani_v: GL communication error, please report this issue to b.android.com.\n");
9412 			abort();
9413 		}
9414 	}
9415 }
9416 
glMemoryBarrier_enc(void * self,GLbitfield barriers)9417 void glMemoryBarrier_enc(void *self , GLbitfield barriers)
9418 {
9419 	ENCODER_DEBUG_LOG("glMemoryBarrier(barriers:0x%08x)", barriers);
9420 	AEMU_SCOPED_TRACE("glMemoryBarrier encode");
9421 
9422 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9423 	IOStream *stream = ctx->m_stream;
9424 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9425 	bool useChecksum = checksumCalculator->getVersion() > 0;
9426 
9427 	 unsigned char *ptr;
9428 	 unsigned char *buf;
9429 	 const size_t sizeWithoutChecksum = 8 + 4;
9430 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9431 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9432 	buf = stream->alloc(totalSize);
9433 	ptr = buf;
9434 	int tmp = OP_glMemoryBarrier;memcpy(ptr, &tmp, 4); ptr += 4;
9435 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9436 
9437 		memcpy(ptr, &barriers, 4); ptr += 4;
9438 
9439 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9440 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9441 
9442 }
9443 
glMemoryBarrierByRegion_enc(void * self,GLbitfield barriers)9444 void glMemoryBarrierByRegion_enc(void *self , GLbitfield barriers)
9445 {
9446 	ENCODER_DEBUG_LOG("glMemoryBarrierByRegion(barriers:0x%08x)", barriers);
9447 	AEMU_SCOPED_TRACE("glMemoryBarrierByRegion encode");
9448 
9449 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9450 	IOStream *stream = ctx->m_stream;
9451 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9452 	bool useChecksum = checksumCalculator->getVersion() > 0;
9453 
9454 	 unsigned char *ptr;
9455 	 unsigned char *buf;
9456 	 const size_t sizeWithoutChecksum = 8 + 4;
9457 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9458 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9459 	buf = stream->alloc(totalSize);
9460 	ptr = buf;
9461 	int tmp = OP_glMemoryBarrierByRegion;memcpy(ptr, &tmp, 4); ptr += 4;
9462 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9463 
9464 		memcpy(ptr, &barriers, 4); ptr += 4;
9465 
9466 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9467 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9468 
9469 }
9470 
glGenProgramPipelines_enc(void * self,GLsizei n,GLuint * pipelines)9471 void glGenProgramPipelines_enc(void *self , GLsizei n, GLuint* pipelines)
9472 {
9473 	ENCODER_DEBUG_LOG("glGenProgramPipelines(n:%d, pipelines:0x%08x)", n, pipelines);
9474 	AEMU_SCOPED_TRACE("glGenProgramPipelines encode");
9475 
9476 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9477 	IOStream *stream = ctx->m_stream;
9478 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9479 	bool useChecksum = checksumCalculator->getVersion() > 0;
9480 
9481 	const unsigned int __size_pipelines =  (n * sizeof(GLuint));
9482 	 unsigned char *ptr;
9483 	 unsigned char *buf;
9484 	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
9485 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9486 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9487 	buf = stream->alloc(totalSize);
9488 	ptr = buf;
9489 	int tmp = OP_glGenProgramPipelines;memcpy(ptr, &tmp, 4); ptr += 4;
9490 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9491 
9492 		memcpy(ptr, &n, 4); ptr += 4;
9493 	memcpy(ptr, &__size_pipelines, 4); ptr += 4;
9494 
9495 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9496 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9497 
9498 	stream->readback(pipelines, __size_pipelines);
9499 	if (useChecksum) checksumCalculator->addBuffer(pipelines, __size_pipelines);
9500 	if (useChecksum) {
9501 		unsigned char *checksumBufPtr = NULL;
9502 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
9503 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9504 		stream->readback(checksumBufPtr, checksumSize);
9505 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9506 			ALOGE("glGenProgramPipelines: GL communication error, please report this issue to b.android.com.\n");
9507 			abort();
9508 		}
9509 	}
9510 }
9511 
glDeleteProgramPipelines_enc(void * self,GLsizei n,const GLuint * pipelines)9512 void glDeleteProgramPipelines_enc(void *self , GLsizei n, const GLuint* pipelines)
9513 {
9514 	ENCODER_DEBUG_LOG("glDeleteProgramPipelines(n:%d, pipelines:0x%08x)", n, pipelines);
9515 	AEMU_SCOPED_TRACE("glDeleteProgramPipelines encode");
9516 
9517 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9518 	IOStream *stream = ctx->m_stream;
9519 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9520 	bool useChecksum = checksumCalculator->getVersion() > 0;
9521 
9522 	const unsigned int __size_pipelines =  (n * sizeof(GLuint));
9523 	 unsigned char *ptr;
9524 	 unsigned char *buf;
9525 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_pipelines + 1*4;
9526 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9527 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9528 	buf = stream->alloc(totalSize);
9529 	ptr = buf;
9530 	int tmp = OP_glDeleteProgramPipelines;memcpy(ptr, &tmp, 4); ptr += 4;
9531 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9532 
9533 		memcpy(ptr, &n, 4); ptr += 4;
9534 	memcpy(ptr, &__size_pipelines, 4); ptr += 4;
9535 	memcpy(ptr, pipelines, __size_pipelines);ptr += __size_pipelines;
9536 
9537 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9538 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9539 
9540 }
9541 
glBindProgramPipeline_enc(void * self,GLuint pipeline)9542 void glBindProgramPipeline_enc(void *self , GLuint pipeline)
9543 {
9544 	ENCODER_DEBUG_LOG("glBindProgramPipeline(pipeline:%u)", pipeline);
9545 	AEMU_SCOPED_TRACE("glBindProgramPipeline encode");
9546 
9547 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9548 	IOStream *stream = ctx->m_stream;
9549 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9550 	bool useChecksum = checksumCalculator->getVersion() > 0;
9551 
9552 	 unsigned char *ptr;
9553 	 unsigned char *buf;
9554 	 const size_t sizeWithoutChecksum = 8 + 4;
9555 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9556 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9557 	buf = stream->alloc(totalSize);
9558 	ptr = buf;
9559 	int tmp = OP_glBindProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
9560 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9561 
9562 		memcpy(ptr, &pipeline, 4); ptr += 4;
9563 
9564 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9565 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9566 
9567 }
9568 
glGetProgramPipelineiv_enc(void * self,GLuint pipeline,GLenum pname,GLint * params)9569 void glGetProgramPipelineiv_enc(void *self , GLuint pipeline, GLenum pname, GLint* params)
9570 {
9571 	ENCODER_DEBUG_LOG("glGetProgramPipelineiv(pipeline:%u, pname:0x%08x, params:0x%08x)", pipeline, pname, params);
9572 	AEMU_SCOPED_TRACE("glGetProgramPipelineiv encode");
9573 
9574 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9575 	IOStream *stream = ctx->m_stream;
9576 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9577 	bool useChecksum = checksumCalculator->getVersion() > 0;
9578 
9579 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
9580 	 unsigned char *ptr;
9581 	 unsigned char *buf;
9582 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
9583 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9584 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9585 	buf = stream->alloc(totalSize);
9586 	ptr = buf;
9587 	int tmp = OP_glGetProgramPipelineiv;memcpy(ptr, &tmp, 4); ptr += 4;
9588 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9589 
9590 		memcpy(ptr, &pipeline, 4); ptr += 4;
9591 		memcpy(ptr, &pname, 4); ptr += 4;
9592 	memcpy(ptr, &__size_params, 4); ptr += 4;
9593 
9594 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9595 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9596 
9597 	stream->readback(params, __size_params);
9598 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
9599 	if (useChecksum) {
9600 		unsigned char *checksumBufPtr = NULL;
9601 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
9602 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9603 		stream->readback(checksumBufPtr, checksumSize);
9604 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9605 			ALOGE("glGetProgramPipelineiv: GL communication error, please report this issue to b.android.com.\n");
9606 			abort();
9607 		}
9608 	}
9609 }
9610 
glGetProgramPipelineInfoLog_enc(void * self,GLuint pipeline,GLsizei bufSize,GLsizei * length,GLchar * infoLog)9611 void glGetProgramPipelineInfoLog_enc(void *self , GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog)
9612 {
9613 	ENCODER_DEBUG_LOG("glGetProgramPipelineInfoLog(pipeline:%u, bufSize:%d, length:0x%08x, infoLog:0x%08x)", pipeline, bufSize, length, infoLog);
9614 	AEMU_SCOPED_TRACE("glGetProgramPipelineInfoLog encode");
9615 
9616 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9617 	IOStream *stream = ctx->m_stream;
9618 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9619 	bool useChecksum = checksumCalculator->getVersion() > 0;
9620 
9621 	const unsigned int __size_length = ((length != NULL) ?  sizeof(GLsizei) : 0);
9622 	const unsigned int __size_infoLog =  bufSize;
9623 	 unsigned char *ptr;
9624 	 unsigned char *buf;
9625 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
9626 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9627 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9628 	buf = stream->alloc(totalSize);
9629 	ptr = buf;
9630 	int tmp = OP_glGetProgramPipelineInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
9631 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9632 
9633 		memcpy(ptr, &pipeline, 4); ptr += 4;
9634 		memcpy(ptr, &bufSize, 4); ptr += 4;
9635 	memcpy(ptr, &__size_length, 4); ptr += 4;
9636 	memcpy(ptr, &__size_infoLog, 4); ptr += 4;
9637 
9638 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9639 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9640 
9641 	if (length != NULL) {
9642 		stream->readback(length, __size_length);
9643 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
9644 	}
9645 	stream->readback(infoLog, __size_infoLog);
9646 	if (useChecksum) checksumCalculator->addBuffer(infoLog, __size_infoLog);
9647 	if (useChecksum) {
9648 		unsigned char *checksumBufPtr = NULL;
9649 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
9650 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9651 		stream->readback(checksumBufPtr, checksumSize);
9652 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9653 			ALOGE("glGetProgramPipelineInfoLog: GL communication error, please report this issue to b.android.com.\n");
9654 			abort();
9655 		}
9656 	}
9657 }
9658 
glValidateProgramPipeline_enc(void * self,GLuint pipeline)9659 void glValidateProgramPipeline_enc(void *self , GLuint pipeline)
9660 {
9661 	ENCODER_DEBUG_LOG("glValidateProgramPipeline(pipeline:%u)", pipeline);
9662 	AEMU_SCOPED_TRACE("glValidateProgramPipeline encode");
9663 
9664 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9665 	IOStream *stream = ctx->m_stream;
9666 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9667 	bool useChecksum = checksumCalculator->getVersion() > 0;
9668 
9669 	 unsigned char *ptr;
9670 	 unsigned char *buf;
9671 	 const size_t sizeWithoutChecksum = 8 + 4;
9672 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9673 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9674 	buf = stream->alloc(totalSize);
9675 	ptr = buf;
9676 	int tmp = OP_glValidateProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
9677 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9678 
9679 		memcpy(ptr, &pipeline, 4); ptr += 4;
9680 
9681 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9682 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9683 
9684 }
9685 
glIsProgramPipeline_enc(void * self,GLuint pipeline)9686 GLboolean glIsProgramPipeline_enc(void *self , GLuint pipeline)
9687 {
9688 	ENCODER_DEBUG_LOG("glIsProgramPipeline(pipeline:%u)", pipeline);
9689 	AEMU_SCOPED_TRACE("glIsProgramPipeline encode");
9690 
9691 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9692 	IOStream *stream = ctx->m_stream;
9693 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9694 	bool useChecksum = checksumCalculator->getVersion() > 0;
9695 
9696 	 unsigned char *ptr;
9697 	 unsigned char *buf;
9698 	 const size_t sizeWithoutChecksum = 8 + 4;
9699 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9700 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9701 	buf = stream->alloc(totalSize);
9702 	ptr = buf;
9703 	int tmp = OP_glIsProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
9704 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9705 
9706 		memcpy(ptr, &pipeline, 4); ptr += 4;
9707 
9708 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9709 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9710 
9711 
9712 	GLboolean retval;
9713 	stream->readback(&retval, 1);
9714 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
9715 	if (useChecksum) {
9716 		unsigned char *checksumBufPtr = NULL;
9717 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
9718 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9719 		stream->readback(checksumBufPtr, checksumSize);
9720 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9721 			ALOGE("glIsProgramPipeline: GL communication error, please report this issue to b.android.com.\n");
9722 			abort();
9723 		}
9724 	}
9725 	return retval;
9726 }
9727 
glUseProgramStages_enc(void * self,GLuint pipeline,GLbitfield stages,GLuint program)9728 void glUseProgramStages_enc(void *self , GLuint pipeline, GLbitfield stages, GLuint program)
9729 {
9730 	ENCODER_DEBUG_LOG("glUseProgramStages(pipeline:%u, stages:0x%08x, program:%u)", pipeline, stages, program);
9731 	AEMU_SCOPED_TRACE("glUseProgramStages encode");
9732 
9733 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9734 	IOStream *stream = ctx->m_stream;
9735 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9736 	bool useChecksum = checksumCalculator->getVersion() > 0;
9737 
9738 	 unsigned char *ptr;
9739 	 unsigned char *buf;
9740 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9741 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9742 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9743 	buf = stream->alloc(totalSize);
9744 	ptr = buf;
9745 	int tmp = OP_glUseProgramStages;memcpy(ptr, &tmp, 4); ptr += 4;
9746 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9747 
9748 		memcpy(ptr, &pipeline, 4); ptr += 4;
9749 		memcpy(ptr, &stages, 4); ptr += 4;
9750 		memcpy(ptr, &program, 4); ptr += 4;
9751 
9752 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9753 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9754 
9755 }
9756 
glActiveShaderProgram_enc(void * self,GLuint pipeline,GLuint program)9757 void glActiveShaderProgram_enc(void *self , GLuint pipeline, GLuint program)
9758 {
9759 	ENCODER_DEBUG_LOG("glActiveShaderProgram(pipeline:%u, program:%u)", pipeline, program);
9760 	AEMU_SCOPED_TRACE("glActiveShaderProgram encode");
9761 
9762 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9763 	IOStream *stream = ctx->m_stream;
9764 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9765 	bool useChecksum = checksumCalculator->getVersion() > 0;
9766 
9767 	 unsigned char *ptr;
9768 	 unsigned char *buf;
9769 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
9770 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9771 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9772 	buf = stream->alloc(totalSize);
9773 	ptr = buf;
9774 	int tmp = OP_glActiveShaderProgram;memcpy(ptr, &tmp, 4); ptr += 4;
9775 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9776 
9777 		memcpy(ptr, &pipeline, 4); ptr += 4;
9778 		memcpy(ptr, &program, 4); ptr += 4;
9779 
9780 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9781 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9782 
9783 }
9784 
glCreateShaderProgramvAEMU_enc(void * self,GLenum type,GLsizei count,const char * packedStrings,GLuint packedLen)9785 GLuint glCreateShaderProgramvAEMU_enc(void *self , GLenum type, GLsizei count, const char* packedStrings, GLuint packedLen)
9786 {
9787 	ENCODER_DEBUG_LOG("glCreateShaderProgramvAEMU(type:0x%08x, count:%d, packedStrings:0x%08x, packedLen:%u)", type, count, packedStrings, packedLen);
9788 	AEMU_SCOPED_TRACE("glCreateShaderProgramvAEMU encode");
9789 
9790 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9791 	IOStream *stream = ctx->m_stream;
9792 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9793 	bool useChecksum = checksumCalculator->getVersion() > 0;
9794 
9795 	const unsigned int __size_packedStrings =  packedLen;
9796 	 unsigned char *ptr;
9797 	 unsigned char *buf;
9798 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedStrings + 4 + 1*4;
9799 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9800 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9801 	buf = stream->alloc(totalSize);
9802 	ptr = buf;
9803 	int tmp = OP_glCreateShaderProgramvAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9804 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9805 
9806 		memcpy(ptr, &type, 4); ptr += 4;
9807 		memcpy(ptr, &count, 4); ptr += 4;
9808 	memcpy(ptr, &__size_packedStrings, 4); ptr += 4;
9809 	memcpy(ptr, packedStrings, __size_packedStrings);ptr += __size_packedStrings;
9810 		memcpy(ptr, &packedLen, 4); ptr += 4;
9811 
9812 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9813 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9814 
9815 
9816 	GLuint retval;
9817 	stream->readback(&retval, 4);
9818 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
9819 	if (useChecksum) {
9820 		unsigned char *checksumBufPtr = NULL;
9821 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
9822 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9823 		stream->readback(checksumBufPtr, checksumSize);
9824 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9825 			ALOGE("glCreateShaderProgramvAEMU: GL communication error, please report this issue to b.android.com.\n");
9826 			abort();
9827 		}
9828 	}
9829 	return retval;
9830 }
9831 
glProgramUniform1f_enc(void * self,GLuint program,GLint location,GLfloat v0)9832 void glProgramUniform1f_enc(void *self , GLuint program, GLint location, GLfloat v0)
9833 {
9834 	ENCODER_DEBUG_LOG("glProgramUniform1f(program:%u, location:%d, v0:%f)", program, location, v0);
9835 	AEMU_SCOPED_TRACE("glProgramUniform1f encode");
9836 
9837 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9838 	IOStream *stream = ctx->m_stream;
9839 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9840 	bool useChecksum = checksumCalculator->getVersion() > 0;
9841 
9842 	 unsigned char *ptr;
9843 	 unsigned char *buf;
9844 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9845 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9846 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9847 	buf = stream->alloc(totalSize);
9848 	ptr = buf;
9849 	int tmp = OP_glProgramUniform1f;memcpy(ptr, &tmp, 4); ptr += 4;
9850 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9851 
9852 		memcpy(ptr, &program, 4); ptr += 4;
9853 		memcpy(ptr, &location, 4); ptr += 4;
9854 		memcpy(ptr, &v0, 4); ptr += 4;
9855 
9856 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9857 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9858 
9859 }
9860 
glProgramUniform2f_enc(void * self,GLuint program,GLint location,GLfloat v0,GLfloat v1)9861 void glProgramUniform2f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1)
9862 {
9863 	ENCODER_DEBUG_LOG("glProgramUniform2f(program:%u, location:%d, v0:%f, v1:%f)", program, location, v0, v1);
9864 	AEMU_SCOPED_TRACE("glProgramUniform2f encode");
9865 
9866 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9867 	IOStream *stream = ctx->m_stream;
9868 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9869 	bool useChecksum = checksumCalculator->getVersion() > 0;
9870 
9871 	 unsigned char *ptr;
9872 	 unsigned char *buf;
9873 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
9874 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9875 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9876 	buf = stream->alloc(totalSize);
9877 	ptr = buf;
9878 	int tmp = OP_glProgramUniform2f;memcpy(ptr, &tmp, 4); ptr += 4;
9879 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9880 
9881 		memcpy(ptr, &program, 4); ptr += 4;
9882 		memcpy(ptr, &location, 4); ptr += 4;
9883 		memcpy(ptr, &v0, 4); ptr += 4;
9884 		memcpy(ptr, &v1, 4); ptr += 4;
9885 
9886 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9887 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9888 
9889 }
9890 
glProgramUniform3f_enc(void * self,GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2)9891 void glProgramUniform3f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
9892 {
9893 	ENCODER_DEBUG_LOG("glProgramUniform3f(program:%u, location:%d, v0:%f, v1:%f, v2:%f)", program, location, v0, v1, v2);
9894 	AEMU_SCOPED_TRACE("glProgramUniform3f encode");
9895 
9896 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9897 	IOStream *stream = ctx->m_stream;
9898 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9899 	bool useChecksum = checksumCalculator->getVersion() > 0;
9900 
9901 	 unsigned char *ptr;
9902 	 unsigned char *buf;
9903 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
9904 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9905 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9906 	buf = stream->alloc(totalSize);
9907 	ptr = buf;
9908 	int tmp = OP_glProgramUniform3f;memcpy(ptr, &tmp, 4); ptr += 4;
9909 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9910 
9911 		memcpy(ptr, &program, 4); ptr += 4;
9912 		memcpy(ptr, &location, 4); ptr += 4;
9913 		memcpy(ptr, &v0, 4); ptr += 4;
9914 		memcpy(ptr, &v1, 4); ptr += 4;
9915 		memcpy(ptr, &v2, 4); ptr += 4;
9916 
9917 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9918 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9919 
9920 }
9921 
glProgramUniform4f_enc(void * self,GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)9922 void glProgramUniform4f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
9923 {
9924 	ENCODER_DEBUG_LOG("glProgramUniform4f(program:%u, location:%d, v0:%f, v1:%f, v2:%f, v3:%f)", program, location, v0, v1, v2, v3);
9925 	AEMU_SCOPED_TRACE("glProgramUniform4f encode");
9926 
9927 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9928 	IOStream *stream = ctx->m_stream;
9929 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9930 	bool useChecksum = checksumCalculator->getVersion() > 0;
9931 
9932 	 unsigned char *ptr;
9933 	 unsigned char *buf;
9934 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
9935 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9936 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9937 	buf = stream->alloc(totalSize);
9938 	ptr = buf;
9939 	int tmp = OP_glProgramUniform4f;memcpy(ptr, &tmp, 4); ptr += 4;
9940 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9941 
9942 		memcpy(ptr, &program, 4); ptr += 4;
9943 		memcpy(ptr, &location, 4); ptr += 4;
9944 		memcpy(ptr, &v0, 4); ptr += 4;
9945 		memcpy(ptr, &v1, 4); ptr += 4;
9946 		memcpy(ptr, &v2, 4); ptr += 4;
9947 		memcpy(ptr, &v3, 4); ptr += 4;
9948 
9949 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9950 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9951 
9952 }
9953 
glProgramUniform1i_enc(void * self,GLuint program,GLint location,GLint v0)9954 void glProgramUniform1i_enc(void *self , GLuint program, GLint location, GLint v0)
9955 {
9956 	ENCODER_DEBUG_LOG("glProgramUniform1i(program:%u, location:%d, v0:%d)", program, location, v0);
9957 	AEMU_SCOPED_TRACE("glProgramUniform1i encode");
9958 
9959 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9960 	IOStream *stream = ctx->m_stream;
9961 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9962 	bool useChecksum = checksumCalculator->getVersion() > 0;
9963 
9964 	 unsigned char *ptr;
9965 	 unsigned char *buf;
9966 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9967 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9968 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9969 	buf = stream->alloc(totalSize);
9970 	ptr = buf;
9971 	int tmp = OP_glProgramUniform1i;memcpy(ptr, &tmp, 4); ptr += 4;
9972 	memcpy(ptr, &totalSize, 4);  ptr += 4;
9973 
9974 		memcpy(ptr, &program, 4); ptr += 4;
9975 		memcpy(ptr, &location, 4); ptr += 4;
9976 		memcpy(ptr, &v0, 4); ptr += 4;
9977 
9978 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9979 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9980 
9981 }
9982 
glProgramUniform2i_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1)9983 void glProgramUniform2i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1)
9984 {
9985 	ENCODER_DEBUG_LOG("glProgramUniform2i(program:%u, location:%d, v0:%d, v1:%d)", program, location, v0, v1);
9986 	AEMU_SCOPED_TRACE("glProgramUniform2i encode");
9987 
9988 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9989 	IOStream *stream = ctx->m_stream;
9990 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9991 	bool useChecksum = checksumCalculator->getVersion() > 0;
9992 
9993 	 unsigned char *ptr;
9994 	 unsigned char *buf;
9995 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
9996 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9997 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9998 	buf = stream->alloc(totalSize);
9999 	ptr = buf;
10000 	int tmp = OP_glProgramUniform2i;memcpy(ptr, &tmp, 4); ptr += 4;
10001 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10002 
10003 		memcpy(ptr, &program, 4); ptr += 4;
10004 		memcpy(ptr, &location, 4); ptr += 4;
10005 		memcpy(ptr, &v0, 4); ptr += 4;
10006 		memcpy(ptr, &v1, 4); ptr += 4;
10007 
10008 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10009 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10010 
10011 }
10012 
glProgramUniform3i_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLint v2)10013 void glProgramUniform3i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
10014 {
10015 	ENCODER_DEBUG_LOG("glProgramUniform3i(program:%u, location:%d, v0:%d, v1:%d, v2:%d)", program, location, v0, v1, v2);
10016 	AEMU_SCOPED_TRACE("glProgramUniform3i encode");
10017 
10018 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10019 	IOStream *stream = ctx->m_stream;
10020 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10021 	bool useChecksum = checksumCalculator->getVersion() > 0;
10022 
10023 	 unsigned char *ptr;
10024 	 unsigned char *buf;
10025 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
10026 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10027 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10028 	buf = stream->alloc(totalSize);
10029 	ptr = buf;
10030 	int tmp = OP_glProgramUniform3i;memcpy(ptr, &tmp, 4); ptr += 4;
10031 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10032 
10033 		memcpy(ptr, &program, 4); ptr += 4;
10034 		memcpy(ptr, &location, 4); ptr += 4;
10035 		memcpy(ptr, &v0, 4); ptr += 4;
10036 		memcpy(ptr, &v1, 4); ptr += 4;
10037 		memcpy(ptr, &v2, 4); ptr += 4;
10038 
10039 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10040 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10041 
10042 }
10043 
glProgramUniform4i_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLint v2,GLint v3)10044 void glProgramUniform4i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
10045 {
10046 	ENCODER_DEBUG_LOG("glProgramUniform4i(program:%u, location:%d, v0:%d, v1:%d, v2:%d, v3:%d)", program, location, v0, v1, v2, v3);
10047 	AEMU_SCOPED_TRACE("glProgramUniform4i encode");
10048 
10049 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10050 	IOStream *stream = ctx->m_stream;
10051 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10052 	bool useChecksum = checksumCalculator->getVersion() > 0;
10053 
10054 	 unsigned char *ptr;
10055 	 unsigned char *buf;
10056 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
10057 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10058 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10059 	buf = stream->alloc(totalSize);
10060 	ptr = buf;
10061 	int tmp = OP_glProgramUniform4i;memcpy(ptr, &tmp, 4); ptr += 4;
10062 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10063 
10064 		memcpy(ptr, &program, 4); ptr += 4;
10065 		memcpy(ptr, &location, 4); ptr += 4;
10066 		memcpy(ptr, &v0, 4); ptr += 4;
10067 		memcpy(ptr, &v1, 4); ptr += 4;
10068 		memcpy(ptr, &v2, 4); ptr += 4;
10069 		memcpy(ptr, &v3, 4); ptr += 4;
10070 
10071 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10072 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10073 
10074 }
10075 
glProgramUniform1ui_enc(void * self,GLuint program,GLint location,GLuint v0)10076 void glProgramUniform1ui_enc(void *self , GLuint program, GLint location, GLuint v0)
10077 {
10078 	ENCODER_DEBUG_LOG("glProgramUniform1ui(program:%u, location:%d, v0:%u)", program, location, v0);
10079 	AEMU_SCOPED_TRACE("glProgramUniform1ui encode");
10080 
10081 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10082 	IOStream *stream = ctx->m_stream;
10083 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10084 	bool useChecksum = checksumCalculator->getVersion() > 0;
10085 
10086 	 unsigned char *ptr;
10087 	 unsigned char *buf;
10088 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
10089 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10090 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10091 	buf = stream->alloc(totalSize);
10092 	ptr = buf;
10093 	int tmp = OP_glProgramUniform1ui;memcpy(ptr, &tmp, 4); ptr += 4;
10094 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10095 
10096 		memcpy(ptr, &program, 4); ptr += 4;
10097 		memcpy(ptr, &location, 4); ptr += 4;
10098 		memcpy(ptr, &v0, 4); ptr += 4;
10099 
10100 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10101 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10102 
10103 }
10104 
glProgramUniform2ui_enc(void * self,GLuint program,GLint location,GLint v0,GLuint v1)10105 void glProgramUniform2ui_enc(void *self , GLuint program, GLint location, GLint v0, GLuint v1)
10106 {
10107 	ENCODER_DEBUG_LOG("glProgramUniform2ui(program:%u, location:%d, v0:%d, v1:%u)", program, location, v0, v1);
10108 	AEMU_SCOPED_TRACE("glProgramUniform2ui encode");
10109 
10110 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10111 	IOStream *stream = ctx->m_stream;
10112 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10113 	bool useChecksum = checksumCalculator->getVersion() > 0;
10114 
10115 	 unsigned char *ptr;
10116 	 unsigned char *buf;
10117 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
10118 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10119 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10120 	buf = stream->alloc(totalSize);
10121 	ptr = buf;
10122 	int tmp = OP_glProgramUniform2ui;memcpy(ptr, &tmp, 4); ptr += 4;
10123 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10124 
10125 		memcpy(ptr, &program, 4); ptr += 4;
10126 		memcpy(ptr, &location, 4); ptr += 4;
10127 		memcpy(ptr, &v0, 4); ptr += 4;
10128 		memcpy(ptr, &v1, 4); ptr += 4;
10129 
10130 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10131 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10132 
10133 }
10134 
glProgramUniform3ui_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLuint v2)10135 void glProgramUniform3ui_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLuint v2)
10136 {
10137 	ENCODER_DEBUG_LOG("glProgramUniform3ui(program:%u, location:%d, v0:%d, v1:%d, v2:%u)", program, location, v0, v1, v2);
10138 	AEMU_SCOPED_TRACE("glProgramUniform3ui encode");
10139 
10140 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10141 	IOStream *stream = ctx->m_stream;
10142 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10143 	bool useChecksum = checksumCalculator->getVersion() > 0;
10144 
10145 	 unsigned char *ptr;
10146 	 unsigned char *buf;
10147 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
10148 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10149 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10150 	buf = stream->alloc(totalSize);
10151 	ptr = buf;
10152 	int tmp = OP_glProgramUniform3ui;memcpy(ptr, &tmp, 4); ptr += 4;
10153 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10154 
10155 		memcpy(ptr, &program, 4); ptr += 4;
10156 		memcpy(ptr, &location, 4); ptr += 4;
10157 		memcpy(ptr, &v0, 4); ptr += 4;
10158 		memcpy(ptr, &v1, 4); ptr += 4;
10159 		memcpy(ptr, &v2, 4); ptr += 4;
10160 
10161 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10162 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10163 
10164 }
10165 
glProgramUniform4ui_enc(void * self,GLuint program,GLint location,GLint v0,GLint v1,GLint v2,GLuint v3)10166 void glProgramUniform4ui_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLuint v3)
10167 {
10168 	ENCODER_DEBUG_LOG("glProgramUniform4ui(program:%u, location:%d, v0:%d, v1:%d, v2:%d, v3:%u)", program, location, v0, v1, v2, v3);
10169 	AEMU_SCOPED_TRACE("glProgramUniform4ui encode");
10170 
10171 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10172 	IOStream *stream = ctx->m_stream;
10173 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10174 	bool useChecksum = checksumCalculator->getVersion() > 0;
10175 
10176 	 unsigned char *ptr;
10177 	 unsigned char *buf;
10178 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
10179 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10180 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10181 	buf = stream->alloc(totalSize);
10182 	ptr = buf;
10183 	int tmp = OP_glProgramUniform4ui;memcpy(ptr, &tmp, 4); ptr += 4;
10184 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10185 
10186 		memcpy(ptr, &program, 4); ptr += 4;
10187 		memcpy(ptr, &location, 4); ptr += 4;
10188 		memcpy(ptr, &v0, 4); ptr += 4;
10189 		memcpy(ptr, &v1, 4); ptr += 4;
10190 		memcpy(ptr, &v2, 4); ptr += 4;
10191 		memcpy(ptr, &v3, 4); ptr += 4;
10192 
10193 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10194 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10195 
10196 }
10197 
glProgramUniform1fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10198 void glProgramUniform1fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10199 {
10200 	ENCODER_DEBUG_LOG("glProgramUniform1fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10201 	AEMU_SCOPED_TRACE("glProgramUniform1fv encode");
10202 
10203 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10204 	IOStream *stream = ctx->m_stream;
10205 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10206 	bool useChecksum = checksumCalculator->getVersion() > 0;
10207 
10208 	const unsigned int __size_value =  (count * sizeof(GLfloat));
10209 	 unsigned char *ptr;
10210 	 unsigned char *buf;
10211 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10212 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10213 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10214 	buf = stream->alloc(totalSize);
10215 	ptr = buf;
10216 	int tmp = OP_glProgramUniform1fv;memcpy(ptr, &tmp, 4); ptr += 4;
10217 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10218 
10219 		memcpy(ptr, &program, 4); ptr += 4;
10220 		memcpy(ptr, &location, 4); ptr += 4;
10221 		memcpy(ptr, &count, 4); ptr += 4;
10222 	memcpy(ptr, &__size_value, 4); ptr += 4;
10223 	memcpy(ptr, value, __size_value);ptr += __size_value;
10224 
10225 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10226 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10227 
10228 }
10229 
glProgramUniform2fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10230 void glProgramUniform2fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10231 {
10232 	ENCODER_DEBUG_LOG("glProgramUniform2fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10233 	AEMU_SCOPED_TRACE("glProgramUniform2fv encode");
10234 
10235 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10236 	IOStream *stream = ctx->m_stream;
10237 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10238 	bool useChecksum = checksumCalculator->getVersion() > 0;
10239 
10240 	const unsigned int __size_value =  (count * 2 * sizeof(GLfloat));
10241 	 unsigned char *ptr;
10242 	 unsigned char *buf;
10243 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10244 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10245 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10246 	buf = stream->alloc(totalSize);
10247 	ptr = buf;
10248 	int tmp = OP_glProgramUniform2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10249 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10250 
10251 		memcpy(ptr, &program, 4); ptr += 4;
10252 		memcpy(ptr, &location, 4); ptr += 4;
10253 		memcpy(ptr, &count, 4); ptr += 4;
10254 	memcpy(ptr, &__size_value, 4); ptr += 4;
10255 	memcpy(ptr, value, __size_value);ptr += __size_value;
10256 
10257 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10258 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10259 
10260 }
10261 
glProgramUniform3fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10262 void glProgramUniform3fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10263 {
10264 	ENCODER_DEBUG_LOG("glProgramUniform3fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10265 	AEMU_SCOPED_TRACE("glProgramUniform3fv encode");
10266 
10267 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10268 	IOStream *stream = ctx->m_stream;
10269 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10270 	bool useChecksum = checksumCalculator->getVersion() > 0;
10271 
10272 	const unsigned int __size_value =  (count * 3 * sizeof(GLfloat));
10273 	 unsigned char *ptr;
10274 	 unsigned char *buf;
10275 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10276 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10277 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10278 	buf = stream->alloc(totalSize);
10279 	ptr = buf;
10280 	int tmp = OP_glProgramUniform3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10281 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10282 
10283 		memcpy(ptr, &program, 4); ptr += 4;
10284 		memcpy(ptr, &location, 4); ptr += 4;
10285 		memcpy(ptr, &count, 4); ptr += 4;
10286 	memcpy(ptr, &__size_value, 4); ptr += 4;
10287 	memcpy(ptr, value, __size_value);ptr += __size_value;
10288 
10289 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10290 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10291 
10292 }
10293 
glProgramUniform4fv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLfloat * value)10294 void glProgramUniform4fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
10295 {
10296 	ENCODER_DEBUG_LOG("glProgramUniform4fv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10297 	AEMU_SCOPED_TRACE("glProgramUniform4fv encode");
10298 
10299 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10300 	IOStream *stream = ctx->m_stream;
10301 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10302 	bool useChecksum = checksumCalculator->getVersion() > 0;
10303 
10304 	const unsigned int __size_value =  (count * 4 * sizeof(GLfloat));
10305 	 unsigned char *ptr;
10306 	 unsigned char *buf;
10307 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10308 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10309 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10310 	buf = stream->alloc(totalSize);
10311 	ptr = buf;
10312 	int tmp = OP_glProgramUniform4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10313 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10314 
10315 		memcpy(ptr, &program, 4); ptr += 4;
10316 		memcpy(ptr, &location, 4); ptr += 4;
10317 		memcpy(ptr, &count, 4); ptr += 4;
10318 	memcpy(ptr, &__size_value, 4); ptr += 4;
10319 	memcpy(ptr, value, __size_value);ptr += __size_value;
10320 
10321 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10322 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10323 
10324 }
10325 
glProgramUniform1iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10326 void glProgramUniform1iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10327 {
10328 	ENCODER_DEBUG_LOG("glProgramUniform1iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10329 	AEMU_SCOPED_TRACE("glProgramUniform1iv encode");
10330 
10331 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10332 	IOStream *stream = ctx->m_stream;
10333 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10334 	bool useChecksum = checksumCalculator->getVersion() > 0;
10335 
10336 	const unsigned int __size_value =  (count * sizeof(GLint));
10337 	 unsigned char *ptr;
10338 	 unsigned char *buf;
10339 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10340 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10341 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10342 	buf = stream->alloc(totalSize);
10343 	ptr = buf;
10344 	int tmp = OP_glProgramUniform1iv;memcpy(ptr, &tmp, 4); ptr += 4;
10345 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10346 
10347 		memcpy(ptr, &program, 4); ptr += 4;
10348 		memcpy(ptr, &location, 4); ptr += 4;
10349 		memcpy(ptr, &count, 4); ptr += 4;
10350 	memcpy(ptr, &__size_value, 4); ptr += 4;
10351 	memcpy(ptr, value, __size_value);ptr += __size_value;
10352 
10353 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10354 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10355 
10356 }
10357 
glProgramUniform2iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10358 void glProgramUniform2iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10359 {
10360 	ENCODER_DEBUG_LOG("glProgramUniform2iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10361 	AEMU_SCOPED_TRACE("glProgramUniform2iv encode");
10362 
10363 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10364 	IOStream *stream = ctx->m_stream;
10365 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10366 	bool useChecksum = checksumCalculator->getVersion() > 0;
10367 
10368 	const unsigned int __size_value =  (count * 2 * sizeof(GLint));
10369 	 unsigned char *ptr;
10370 	 unsigned char *buf;
10371 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10372 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10373 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10374 	buf = stream->alloc(totalSize);
10375 	ptr = buf;
10376 	int tmp = OP_glProgramUniform2iv;memcpy(ptr, &tmp, 4); ptr += 4;
10377 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10378 
10379 		memcpy(ptr, &program, 4); ptr += 4;
10380 		memcpy(ptr, &location, 4); ptr += 4;
10381 		memcpy(ptr, &count, 4); ptr += 4;
10382 	memcpy(ptr, &__size_value, 4); ptr += 4;
10383 	memcpy(ptr, value, __size_value);ptr += __size_value;
10384 
10385 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10386 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10387 
10388 }
10389 
glProgramUniform3iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10390 void glProgramUniform3iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10391 {
10392 	ENCODER_DEBUG_LOG("glProgramUniform3iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10393 	AEMU_SCOPED_TRACE("glProgramUniform3iv encode");
10394 
10395 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10396 	IOStream *stream = ctx->m_stream;
10397 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10398 	bool useChecksum = checksumCalculator->getVersion() > 0;
10399 
10400 	const unsigned int __size_value =  (count * 3 * sizeof(GLint));
10401 	 unsigned char *ptr;
10402 	 unsigned char *buf;
10403 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10404 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10405 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10406 	buf = stream->alloc(totalSize);
10407 	ptr = buf;
10408 	int tmp = OP_glProgramUniform3iv;memcpy(ptr, &tmp, 4); ptr += 4;
10409 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10410 
10411 		memcpy(ptr, &program, 4); ptr += 4;
10412 		memcpy(ptr, &location, 4); ptr += 4;
10413 		memcpy(ptr, &count, 4); ptr += 4;
10414 	memcpy(ptr, &__size_value, 4); ptr += 4;
10415 	memcpy(ptr, value, __size_value);ptr += __size_value;
10416 
10417 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10418 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10419 
10420 }
10421 
glProgramUniform4iv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLint * value)10422 void glProgramUniform4iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
10423 {
10424 	ENCODER_DEBUG_LOG("glProgramUniform4iv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10425 	AEMU_SCOPED_TRACE("glProgramUniform4iv encode");
10426 
10427 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10428 	IOStream *stream = ctx->m_stream;
10429 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10430 	bool useChecksum = checksumCalculator->getVersion() > 0;
10431 
10432 	const unsigned int __size_value =  (count * 4 * sizeof(GLint));
10433 	 unsigned char *ptr;
10434 	 unsigned char *buf;
10435 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10436 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10437 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10438 	buf = stream->alloc(totalSize);
10439 	ptr = buf;
10440 	int tmp = OP_glProgramUniform4iv;memcpy(ptr, &tmp, 4); ptr += 4;
10441 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10442 
10443 		memcpy(ptr, &program, 4); ptr += 4;
10444 		memcpy(ptr, &location, 4); ptr += 4;
10445 		memcpy(ptr, &count, 4); ptr += 4;
10446 	memcpy(ptr, &__size_value, 4); ptr += 4;
10447 	memcpy(ptr, value, __size_value);ptr += __size_value;
10448 
10449 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10450 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10451 
10452 }
10453 
glProgramUniform1uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10454 void glProgramUniform1uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10455 {
10456 	ENCODER_DEBUG_LOG("glProgramUniform1uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10457 	AEMU_SCOPED_TRACE("glProgramUniform1uiv encode");
10458 
10459 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10460 	IOStream *stream = ctx->m_stream;
10461 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10462 	bool useChecksum = checksumCalculator->getVersion() > 0;
10463 
10464 	const unsigned int __size_value =  (count * sizeof(GLuint));
10465 	 unsigned char *ptr;
10466 	 unsigned char *buf;
10467 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10468 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10469 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10470 	buf = stream->alloc(totalSize);
10471 	ptr = buf;
10472 	int tmp = OP_glProgramUniform1uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10473 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10474 
10475 		memcpy(ptr, &program, 4); ptr += 4;
10476 		memcpy(ptr, &location, 4); ptr += 4;
10477 		memcpy(ptr, &count, 4); ptr += 4;
10478 	memcpy(ptr, &__size_value, 4); ptr += 4;
10479 	memcpy(ptr, value, __size_value);ptr += __size_value;
10480 
10481 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10482 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10483 
10484 }
10485 
glProgramUniform2uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10486 void glProgramUniform2uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10487 {
10488 	ENCODER_DEBUG_LOG("glProgramUniform2uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10489 	AEMU_SCOPED_TRACE("glProgramUniform2uiv encode");
10490 
10491 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10492 	IOStream *stream = ctx->m_stream;
10493 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10494 	bool useChecksum = checksumCalculator->getVersion() > 0;
10495 
10496 	const unsigned int __size_value =  (count * 2 * sizeof(GLuint));
10497 	 unsigned char *ptr;
10498 	 unsigned char *buf;
10499 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10500 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10501 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10502 	buf = stream->alloc(totalSize);
10503 	ptr = buf;
10504 	int tmp = OP_glProgramUniform2uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10505 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10506 
10507 		memcpy(ptr, &program, 4); ptr += 4;
10508 		memcpy(ptr, &location, 4); ptr += 4;
10509 		memcpy(ptr, &count, 4); ptr += 4;
10510 	memcpy(ptr, &__size_value, 4); ptr += 4;
10511 	memcpy(ptr, value, __size_value);ptr += __size_value;
10512 
10513 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10514 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10515 
10516 }
10517 
glProgramUniform3uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10518 void glProgramUniform3uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10519 {
10520 	ENCODER_DEBUG_LOG("glProgramUniform3uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10521 	AEMU_SCOPED_TRACE("glProgramUniform3uiv encode");
10522 
10523 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10524 	IOStream *stream = ctx->m_stream;
10525 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10526 	bool useChecksum = checksumCalculator->getVersion() > 0;
10527 
10528 	const unsigned int __size_value =  (count * 3 * sizeof(GLuint));
10529 	 unsigned char *ptr;
10530 	 unsigned char *buf;
10531 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10532 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10533 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10534 	buf = stream->alloc(totalSize);
10535 	ptr = buf;
10536 	int tmp = OP_glProgramUniform3uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10537 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10538 
10539 		memcpy(ptr, &program, 4); ptr += 4;
10540 		memcpy(ptr, &location, 4); ptr += 4;
10541 		memcpy(ptr, &count, 4); ptr += 4;
10542 	memcpy(ptr, &__size_value, 4); ptr += 4;
10543 	memcpy(ptr, value, __size_value);ptr += __size_value;
10544 
10545 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10546 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10547 
10548 }
10549 
glProgramUniform4uiv_enc(void * self,GLuint program,GLint location,GLsizei count,const GLuint * value)10550 void glProgramUniform4uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
10551 {
10552 	ENCODER_DEBUG_LOG("glProgramUniform4uiv(program:%u, location:%d, count:%d, value:0x%08x)", program, location, count, value);
10553 	AEMU_SCOPED_TRACE("glProgramUniform4uiv encode");
10554 
10555 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10556 	IOStream *stream = ctx->m_stream;
10557 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10558 	bool useChecksum = checksumCalculator->getVersion() > 0;
10559 
10560 	const unsigned int __size_value =  (count * 4 * sizeof(GLuint));
10561 	 unsigned char *ptr;
10562 	 unsigned char *buf;
10563 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
10564 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10565 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10566 	buf = stream->alloc(totalSize);
10567 	ptr = buf;
10568 	int tmp = OP_glProgramUniform4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
10569 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10570 
10571 		memcpy(ptr, &program, 4); ptr += 4;
10572 		memcpy(ptr, &location, 4); ptr += 4;
10573 		memcpy(ptr, &count, 4); ptr += 4;
10574 	memcpy(ptr, &__size_value, 4); ptr += 4;
10575 	memcpy(ptr, value, __size_value);ptr += __size_value;
10576 
10577 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10578 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10579 
10580 }
10581 
glProgramUniformMatrix2fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10582 void glProgramUniformMatrix2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10583 {
10584 	ENCODER_DEBUG_LOG("glProgramUniformMatrix2fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10585 	AEMU_SCOPED_TRACE("glProgramUniformMatrix2fv encode");
10586 
10587 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10588 	IOStream *stream = ctx->m_stream;
10589 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10590 	bool useChecksum = checksumCalculator->getVersion() > 0;
10591 
10592 	const unsigned int __size_value =  (count * 4 * sizeof(GLfloat));
10593 	 unsigned char *ptr;
10594 	 unsigned char *buf;
10595 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10596 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10597 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10598 	buf = stream->alloc(totalSize);
10599 	ptr = buf;
10600 	int tmp = OP_glProgramUniformMatrix2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10601 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10602 
10603 		memcpy(ptr, &program, 4); ptr += 4;
10604 		memcpy(ptr, &location, 4); ptr += 4;
10605 		memcpy(ptr, &count, 4); ptr += 4;
10606 		memcpy(ptr, &transpose, 1); ptr += 1;
10607 	memcpy(ptr, &__size_value, 4); ptr += 4;
10608 	memcpy(ptr, value, __size_value);ptr += __size_value;
10609 
10610 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10611 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10612 
10613 }
10614 
glProgramUniformMatrix3fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10615 void glProgramUniformMatrix3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10616 {
10617 	ENCODER_DEBUG_LOG("glProgramUniformMatrix3fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10618 	AEMU_SCOPED_TRACE("glProgramUniformMatrix3fv encode");
10619 
10620 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10621 	IOStream *stream = ctx->m_stream;
10622 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10623 	bool useChecksum = checksumCalculator->getVersion() > 0;
10624 
10625 	const unsigned int __size_value =  (count * 9 * sizeof(GLfloat));
10626 	 unsigned char *ptr;
10627 	 unsigned char *buf;
10628 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10629 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10630 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10631 	buf = stream->alloc(totalSize);
10632 	ptr = buf;
10633 	int tmp = OP_glProgramUniformMatrix3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10634 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10635 
10636 		memcpy(ptr, &program, 4); ptr += 4;
10637 		memcpy(ptr, &location, 4); ptr += 4;
10638 		memcpy(ptr, &count, 4); ptr += 4;
10639 		memcpy(ptr, &transpose, 1); ptr += 1;
10640 	memcpy(ptr, &__size_value, 4); ptr += 4;
10641 	memcpy(ptr, value, __size_value);ptr += __size_value;
10642 
10643 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10644 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10645 
10646 }
10647 
glProgramUniformMatrix4fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10648 void glProgramUniformMatrix4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10649 {
10650 	ENCODER_DEBUG_LOG("glProgramUniformMatrix4fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10651 	AEMU_SCOPED_TRACE("glProgramUniformMatrix4fv encode");
10652 
10653 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10654 	IOStream *stream = ctx->m_stream;
10655 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10656 	bool useChecksum = checksumCalculator->getVersion() > 0;
10657 
10658 	const unsigned int __size_value =  (count * 16 * sizeof(GLfloat));
10659 	 unsigned char *ptr;
10660 	 unsigned char *buf;
10661 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10662 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10663 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10664 	buf = stream->alloc(totalSize);
10665 	ptr = buf;
10666 	int tmp = OP_glProgramUniformMatrix4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10667 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10668 
10669 		memcpy(ptr, &program, 4); ptr += 4;
10670 		memcpy(ptr, &location, 4); ptr += 4;
10671 		memcpy(ptr, &count, 4); ptr += 4;
10672 		memcpy(ptr, &transpose, 1); ptr += 1;
10673 	memcpy(ptr, &__size_value, 4); ptr += 4;
10674 	memcpy(ptr, value, __size_value);ptr += __size_value;
10675 
10676 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10677 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10678 
10679 }
10680 
glProgramUniformMatrix2x3fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10681 void glProgramUniformMatrix2x3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10682 {
10683 	ENCODER_DEBUG_LOG("glProgramUniformMatrix2x3fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10684 	AEMU_SCOPED_TRACE("glProgramUniformMatrix2x3fv encode");
10685 
10686 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10687 	IOStream *stream = ctx->m_stream;
10688 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10689 	bool useChecksum = checksumCalculator->getVersion() > 0;
10690 
10691 	const unsigned int __size_value =  (count * 6 * sizeof(GLfloat));
10692 	 unsigned char *ptr;
10693 	 unsigned char *buf;
10694 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10695 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10696 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10697 	buf = stream->alloc(totalSize);
10698 	ptr = buf;
10699 	int tmp = OP_glProgramUniformMatrix2x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10700 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10701 
10702 		memcpy(ptr, &program, 4); ptr += 4;
10703 		memcpy(ptr, &location, 4); ptr += 4;
10704 		memcpy(ptr, &count, 4); ptr += 4;
10705 		memcpy(ptr, &transpose, 1); ptr += 1;
10706 	memcpy(ptr, &__size_value, 4); ptr += 4;
10707 	memcpy(ptr, value, __size_value);ptr += __size_value;
10708 
10709 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10710 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10711 
10712 }
10713 
glProgramUniformMatrix3x2fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10714 void glProgramUniformMatrix3x2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10715 {
10716 	ENCODER_DEBUG_LOG("glProgramUniformMatrix3x2fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10717 	AEMU_SCOPED_TRACE("glProgramUniformMatrix3x2fv encode");
10718 
10719 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10720 	IOStream *stream = ctx->m_stream;
10721 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10722 	bool useChecksum = checksumCalculator->getVersion() > 0;
10723 
10724 	const unsigned int __size_value =  (count * 6 * sizeof(GLfloat));
10725 	 unsigned char *ptr;
10726 	 unsigned char *buf;
10727 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10728 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10729 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10730 	buf = stream->alloc(totalSize);
10731 	ptr = buf;
10732 	int tmp = OP_glProgramUniformMatrix3x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10733 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10734 
10735 		memcpy(ptr, &program, 4); ptr += 4;
10736 		memcpy(ptr, &location, 4); ptr += 4;
10737 		memcpy(ptr, &count, 4); ptr += 4;
10738 		memcpy(ptr, &transpose, 1); ptr += 1;
10739 	memcpy(ptr, &__size_value, 4); ptr += 4;
10740 	memcpy(ptr, value, __size_value);ptr += __size_value;
10741 
10742 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10743 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10744 
10745 }
10746 
glProgramUniformMatrix2x4fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10747 void glProgramUniformMatrix2x4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10748 {
10749 	ENCODER_DEBUG_LOG("glProgramUniformMatrix2x4fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10750 	AEMU_SCOPED_TRACE("glProgramUniformMatrix2x4fv encode");
10751 
10752 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10753 	IOStream *stream = ctx->m_stream;
10754 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10755 	bool useChecksum = checksumCalculator->getVersion() > 0;
10756 
10757 	const unsigned int __size_value =  (count * 8 * sizeof(GLfloat));
10758 	 unsigned char *ptr;
10759 	 unsigned char *buf;
10760 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10761 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10762 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10763 	buf = stream->alloc(totalSize);
10764 	ptr = buf;
10765 	int tmp = OP_glProgramUniformMatrix2x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10766 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10767 
10768 		memcpy(ptr, &program, 4); ptr += 4;
10769 		memcpy(ptr, &location, 4); ptr += 4;
10770 		memcpy(ptr, &count, 4); ptr += 4;
10771 		memcpy(ptr, &transpose, 1); ptr += 1;
10772 	memcpy(ptr, &__size_value, 4); ptr += 4;
10773 	memcpy(ptr, value, __size_value);ptr += __size_value;
10774 
10775 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10776 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10777 
10778 }
10779 
glProgramUniformMatrix4x2fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10780 void glProgramUniformMatrix4x2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10781 {
10782 	ENCODER_DEBUG_LOG("glProgramUniformMatrix4x2fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10783 	AEMU_SCOPED_TRACE("glProgramUniformMatrix4x2fv encode");
10784 
10785 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10786 	IOStream *stream = ctx->m_stream;
10787 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10788 	bool useChecksum = checksumCalculator->getVersion() > 0;
10789 
10790 	const unsigned int __size_value =  (count * 8 * sizeof(GLfloat));
10791 	 unsigned char *ptr;
10792 	 unsigned char *buf;
10793 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10794 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10795 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10796 	buf = stream->alloc(totalSize);
10797 	ptr = buf;
10798 	int tmp = OP_glProgramUniformMatrix4x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10799 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10800 
10801 		memcpy(ptr, &program, 4); ptr += 4;
10802 		memcpy(ptr, &location, 4); ptr += 4;
10803 		memcpy(ptr, &count, 4); ptr += 4;
10804 		memcpy(ptr, &transpose, 1); ptr += 1;
10805 	memcpy(ptr, &__size_value, 4); ptr += 4;
10806 	memcpy(ptr, value, __size_value);ptr += __size_value;
10807 
10808 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10809 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10810 
10811 }
10812 
glProgramUniformMatrix3x4fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10813 void glProgramUniformMatrix3x4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10814 {
10815 	ENCODER_DEBUG_LOG("glProgramUniformMatrix3x4fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10816 	AEMU_SCOPED_TRACE("glProgramUniformMatrix3x4fv encode");
10817 
10818 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10819 	IOStream *stream = ctx->m_stream;
10820 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10821 	bool useChecksum = checksumCalculator->getVersion() > 0;
10822 
10823 	const unsigned int __size_value =  (count * 12 * sizeof(GLfloat));
10824 	 unsigned char *ptr;
10825 	 unsigned char *buf;
10826 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10827 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10828 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10829 	buf = stream->alloc(totalSize);
10830 	ptr = buf;
10831 	int tmp = OP_glProgramUniformMatrix3x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10832 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10833 
10834 		memcpy(ptr, &program, 4); ptr += 4;
10835 		memcpy(ptr, &location, 4); ptr += 4;
10836 		memcpy(ptr, &count, 4); ptr += 4;
10837 		memcpy(ptr, &transpose, 1); ptr += 1;
10838 	memcpy(ptr, &__size_value, 4); ptr += 4;
10839 	memcpy(ptr, value, __size_value);ptr += __size_value;
10840 
10841 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10842 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10843 
10844 }
10845 
glProgramUniformMatrix4x3fv_enc(void * self,GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)10846 void glProgramUniformMatrix4x3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10847 {
10848 	ENCODER_DEBUG_LOG("glProgramUniformMatrix4x3fv(program:%u, location:%d, count:%d, transpose:%d, value:0x%08x)", program, location, count, transpose, value);
10849 	AEMU_SCOPED_TRACE("glProgramUniformMatrix4x3fv encode");
10850 
10851 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10852 	IOStream *stream = ctx->m_stream;
10853 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10854 	bool useChecksum = checksumCalculator->getVersion() > 0;
10855 
10856 	const unsigned int __size_value =  (count * 12 * sizeof(GLfloat));
10857 	 unsigned char *ptr;
10858 	 unsigned char *buf;
10859 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10860 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10861 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10862 	buf = stream->alloc(totalSize);
10863 	ptr = buf;
10864 	int tmp = OP_glProgramUniformMatrix4x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10865 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10866 
10867 		memcpy(ptr, &program, 4); ptr += 4;
10868 		memcpy(ptr, &location, 4); ptr += 4;
10869 		memcpy(ptr, &count, 4); ptr += 4;
10870 		memcpy(ptr, &transpose, 1); ptr += 1;
10871 	memcpy(ptr, &__size_value, 4); ptr += 4;
10872 	memcpy(ptr, value, __size_value);ptr += __size_value;
10873 
10874 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10875 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10876 
10877 }
10878 
glGetProgramInterfaceiv_enc(void * self,GLuint program,GLenum programInterface,GLenum pname,GLint * params)10879 void glGetProgramInterfaceiv_enc(void *self , GLuint program, GLenum programInterface, GLenum pname, GLint* params)
10880 {
10881 	ENCODER_DEBUG_LOG("glGetProgramInterfaceiv(program:%u, programInterface:0x%08x, pname:0x%08x, params:0x%08x)", program, programInterface, pname, params);
10882 	AEMU_SCOPED_TRACE("glGetProgramInterfaceiv encode");
10883 
10884 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10885 	IOStream *stream = ctx->m_stream;
10886 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10887 	bool useChecksum = checksumCalculator->getVersion() > 0;
10888 
10889 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
10890 	 unsigned char *ptr;
10891 	 unsigned char *buf;
10892 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
10893 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10894 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10895 	buf = stream->alloc(totalSize);
10896 	ptr = buf;
10897 	int tmp = OP_glGetProgramInterfaceiv;memcpy(ptr, &tmp, 4); ptr += 4;
10898 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10899 
10900 		memcpy(ptr, &program, 4); ptr += 4;
10901 		memcpy(ptr, &programInterface, 4); ptr += 4;
10902 		memcpy(ptr, &pname, 4); ptr += 4;
10903 	memcpy(ptr, &__size_params, 4); ptr += 4;
10904 
10905 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10906 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10907 
10908 	stream->readback(params, __size_params);
10909 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
10910 	if (useChecksum) {
10911 		unsigned char *checksumBufPtr = NULL;
10912 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
10913 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10914 		stream->readback(checksumBufPtr, checksumSize);
10915 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10916 			ALOGE("glGetProgramInterfaceiv: GL communication error, please report this issue to b.android.com.\n");
10917 			abort();
10918 		}
10919 	}
10920 }
10921 
glGetProgramResourceiv_enc(void * self,GLuint program,GLenum programInterface,GLuint index,GLsizei propCount,const GLenum * props,GLsizei bufSize,GLsizei * length,GLint * params)10922 void glGetProgramResourceiv_enc(void *self , GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei* length, GLint* params)
10923 {
10924 	ENCODER_DEBUG_LOG("glGetProgramResourceiv(program:%u, programInterface:0x%08x, index:%u, propCount:%d, props:0x%08x, bufSize:%d, length:0x%08x, params:0x%08x)", program, programInterface, index, propCount, props, bufSize, length, params);
10925 	AEMU_SCOPED_TRACE("glGetProgramResourceiv encode");
10926 
10927 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10928 	IOStream *stream = ctx->m_stream;
10929 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10930 	bool useChecksum = checksumCalculator->getVersion() > 0;
10931 
10932 	const unsigned int __size_props =  (propCount * sizeof(GLenum));
10933 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
10934 	const unsigned int __size_params =  (bufSize * sizeof(GLint));
10935 	 unsigned char *ptr;
10936 	 unsigned char *buf;
10937 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_props + 4 + 0 + 0 + 3*4;
10938 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10939 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10940 	buf = stream->alloc(totalSize);
10941 	ptr = buf;
10942 	int tmp = OP_glGetProgramResourceiv;memcpy(ptr, &tmp, 4); ptr += 4;
10943 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10944 
10945 		memcpy(ptr, &program, 4); ptr += 4;
10946 		memcpy(ptr, &programInterface, 4); ptr += 4;
10947 		memcpy(ptr, &index, 4); ptr += 4;
10948 		memcpy(ptr, &propCount, 4); ptr += 4;
10949 	memcpy(ptr, &__size_props, 4); ptr += 4;
10950 	memcpy(ptr, props, __size_props);ptr += __size_props;
10951 		memcpy(ptr, &bufSize, 4); ptr += 4;
10952 	memcpy(ptr, &__size_length, 4); ptr += 4;
10953 	memcpy(ptr, &__size_params, 4); ptr += 4;
10954 
10955 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10956 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10957 
10958 	if (length != NULL) {
10959 		stream->readback(length, __size_length);
10960 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
10961 	}
10962 	stream->readback(params, __size_params);
10963 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
10964 	if (useChecksum) {
10965 		unsigned char *checksumBufPtr = NULL;
10966 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
10967 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10968 		stream->readback(checksumBufPtr, checksumSize);
10969 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10970 			ALOGE("glGetProgramResourceiv: GL communication error, please report this issue to b.android.com.\n");
10971 			abort();
10972 		}
10973 	}
10974 }
10975 
glGetProgramResourceIndex_enc(void * self,GLuint program,GLenum programInterface,const char * name)10976 GLuint glGetProgramResourceIndex_enc(void *self , GLuint program, GLenum programInterface, const char* name)
10977 {
10978 	ENCODER_DEBUG_LOG("glGetProgramResourceIndex(program:%u, programInterface:0x%08x, name:0x%08x)", program, programInterface, name);
10979 	AEMU_SCOPED_TRACE("glGetProgramResourceIndex encode");
10980 
10981 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10982 	IOStream *stream = ctx->m_stream;
10983 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10984 	bool useChecksum = checksumCalculator->getVersion() > 0;
10985 
10986 	const unsigned int __size_name =  (strlen(name) + 1);
10987 	 unsigned char *ptr;
10988 	 unsigned char *buf;
10989 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
10990 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10991 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10992 	buf = stream->alloc(totalSize);
10993 	ptr = buf;
10994 	int tmp = OP_glGetProgramResourceIndex;memcpy(ptr, &tmp, 4); ptr += 4;
10995 	memcpy(ptr, &totalSize, 4);  ptr += 4;
10996 
10997 		memcpy(ptr, &program, 4); ptr += 4;
10998 		memcpy(ptr, &programInterface, 4); ptr += 4;
10999 	memcpy(ptr, &__size_name, 4); ptr += 4;
11000 	memcpy(ptr, name, __size_name);ptr += __size_name;
11001 
11002 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11003 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11004 
11005 
11006 	GLuint retval;
11007 	stream->readback(&retval, 4);
11008 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
11009 	if (useChecksum) {
11010 		unsigned char *checksumBufPtr = NULL;
11011 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11012 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11013 		stream->readback(checksumBufPtr, checksumSize);
11014 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11015 			ALOGE("glGetProgramResourceIndex: GL communication error, please report this issue to b.android.com.\n");
11016 			abort();
11017 		}
11018 	}
11019 	return retval;
11020 }
11021 
glGetProgramResourceLocation_enc(void * self,GLuint program,GLenum programInterface,const char * name)11022 GLint glGetProgramResourceLocation_enc(void *self , GLuint program, GLenum programInterface, const char* name)
11023 {
11024 	ENCODER_DEBUG_LOG("glGetProgramResourceLocation(program:%u, programInterface:0x%08x, name:0x%08x)", program, programInterface, name);
11025 	AEMU_SCOPED_TRACE("glGetProgramResourceLocation encode");
11026 
11027 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11028 	IOStream *stream = ctx->m_stream;
11029 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11030 	bool useChecksum = checksumCalculator->getVersion() > 0;
11031 
11032 	const unsigned int __size_name =  (strlen(name) + 1);
11033 	 unsigned char *ptr;
11034 	 unsigned char *buf;
11035 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
11036 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11037 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11038 	buf = stream->alloc(totalSize);
11039 	ptr = buf;
11040 	int tmp = OP_glGetProgramResourceLocation;memcpy(ptr, &tmp, 4); ptr += 4;
11041 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11042 
11043 		memcpy(ptr, &program, 4); ptr += 4;
11044 		memcpy(ptr, &programInterface, 4); ptr += 4;
11045 	memcpy(ptr, &__size_name, 4); ptr += 4;
11046 	memcpy(ptr, name, __size_name);ptr += __size_name;
11047 
11048 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11049 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11050 
11051 
11052 	GLint retval;
11053 	stream->readback(&retval, 4);
11054 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
11055 	if (useChecksum) {
11056 		unsigned char *checksumBufPtr = NULL;
11057 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11058 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11059 		stream->readback(checksumBufPtr, checksumSize);
11060 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11061 			ALOGE("glGetProgramResourceLocation: GL communication error, please report this issue to b.android.com.\n");
11062 			abort();
11063 		}
11064 	}
11065 	return retval;
11066 }
11067 
glGetProgramResourceName_enc(void * self,GLuint program,GLenum programInterface,GLuint index,GLsizei bufSize,GLsizei * length,char * name)11068 void glGetProgramResourceName_enc(void *self , GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, char* name)
11069 {
11070 	ENCODER_DEBUG_LOG("glGetProgramResourceName(program:%u, programInterface:0x%08x, index:%u, bufSize:%d, length:0x%08x, name:0x%08x)", program, programInterface, index, bufSize, length, name);
11071 	AEMU_SCOPED_TRACE("glGetProgramResourceName encode");
11072 
11073 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11074 	IOStream *stream = ctx->m_stream;
11075 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11076 	bool useChecksum = checksumCalculator->getVersion() > 0;
11077 
11078 	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
11079 	const unsigned int __size_name =  bufSize;
11080 	 unsigned char *ptr;
11081 	 unsigned char *buf;
11082 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 0 + 2*4;
11083 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11084 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11085 	buf = stream->alloc(totalSize);
11086 	ptr = buf;
11087 	int tmp = OP_glGetProgramResourceName;memcpy(ptr, &tmp, 4); ptr += 4;
11088 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11089 
11090 		memcpy(ptr, &program, 4); ptr += 4;
11091 		memcpy(ptr, &programInterface, 4); ptr += 4;
11092 		memcpy(ptr, &index, 4); ptr += 4;
11093 		memcpy(ptr, &bufSize, 4); ptr += 4;
11094 	memcpy(ptr, &__size_length, 4); ptr += 4;
11095 	memcpy(ptr, &__size_name, 4); ptr += 4;
11096 
11097 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11098 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11099 
11100 	if (length != NULL) {
11101 		stream->readback(length, __size_length);
11102 		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
11103 	}
11104 	stream->readback(name, __size_name);
11105 	if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
11106 	if (useChecksum) {
11107 		unsigned char *checksumBufPtr = NULL;
11108 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11109 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11110 		stream->readback(checksumBufPtr, checksumSize);
11111 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11112 			ALOGE("glGetProgramResourceName: GL communication error, please report this issue to b.android.com.\n");
11113 			abort();
11114 		}
11115 	}
11116 }
11117 
glBindImageTexture_enc(void * self,GLuint unit,GLuint texture,GLint level,GLboolean layered,GLint layer,GLenum access,GLenum format)11118 void glBindImageTexture_enc(void *self , GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
11119 {
11120 	ENCODER_DEBUG_LOG("glBindImageTexture(unit:%u, texture:%u, level:%d, layered:%d, layer:%d, access:0x%08x, format:0x%08x)", unit, texture, level, layered, layer, access, format);
11121 	AEMU_SCOPED_TRACE("glBindImageTexture encode");
11122 
11123 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11124 	IOStream *stream = ctx->m_stream;
11125 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11126 	bool useChecksum = checksumCalculator->getVersion() > 0;
11127 
11128 	 unsigned char *ptr;
11129 	 unsigned char *buf;
11130 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + 4 + 4;
11131 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11132 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11133 	buf = stream->alloc(totalSize);
11134 	ptr = buf;
11135 	int tmp = OP_glBindImageTexture;memcpy(ptr, &tmp, 4); ptr += 4;
11136 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11137 
11138 		memcpy(ptr, &unit, 4); ptr += 4;
11139 		memcpy(ptr, &texture, 4); ptr += 4;
11140 		memcpy(ptr, &level, 4); ptr += 4;
11141 		memcpy(ptr, &layered, 1); ptr += 1;
11142 		memcpy(ptr, &layer, 4); ptr += 4;
11143 		memcpy(ptr, &access, 4); ptr += 4;
11144 		memcpy(ptr, &format, 4); ptr += 4;
11145 
11146 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11147 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11148 
11149 }
11150 
glDispatchCompute_enc(void * self,GLuint num_groups_x,GLuint num_groups_y,GLuint num_groups_z)11151 void glDispatchCompute_enc(void *self , GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
11152 {
11153 	ENCODER_DEBUG_LOG("glDispatchCompute(num_groups_x:%u, num_groups_y:%u, num_groups_z:%u)", num_groups_x, num_groups_y, num_groups_z);
11154 	AEMU_SCOPED_TRACE("glDispatchCompute encode");
11155 
11156 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11157 	IOStream *stream = ctx->m_stream;
11158 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11159 	bool useChecksum = checksumCalculator->getVersion() > 0;
11160 
11161 	 unsigned char *ptr;
11162 	 unsigned char *buf;
11163 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
11164 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11165 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11166 	buf = stream->alloc(totalSize);
11167 	ptr = buf;
11168 	int tmp = OP_glDispatchCompute;memcpy(ptr, &tmp, 4); ptr += 4;
11169 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11170 
11171 		memcpy(ptr, &num_groups_x, 4); ptr += 4;
11172 		memcpy(ptr, &num_groups_y, 4); ptr += 4;
11173 		memcpy(ptr, &num_groups_z, 4); ptr += 4;
11174 
11175 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11176 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11177 
11178 }
11179 
glDispatchComputeIndirect_enc(void * self,GLintptr indirect)11180 void glDispatchComputeIndirect_enc(void *self , GLintptr indirect)
11181 {
11182 	ENCODER_DEBUG_LOG("glDispatchComputeIndirect(indirect:0x%08lx)", indirect);
11183 	AEMU_SCOPED_TRACE("glDispatchComputeIndirect encode");
11184 
11185 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11186 	IOStream *stream = ctx->m_stream;
11187 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11188 	bool useChecksum = checksumCalculator->getVersion() > 0;
11189 
11190 	 unsigned char *ptr;
11191 	 unsigned char *buf;
11192 	 const size_t sizeWithoutChecksum = 8 + 4;
11193 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11194 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11195 	buf = stream->alloc(totalSize);
11196 	ptr = buf;
11197 	int tmp = OP_glDispatchComputeIndirect;memcpy(ptr, &tmp, 4); ptr += 4;
11198 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11199 
11200 		memcpy(ptr, &indirect, 4); ptr += 4;
11201 
11202 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11203 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11204 
11205 }
11206 
glBindVertexBuffer_enc(void * self,GLuint bindingindex,GLuint buffer,GLintptr offset,GLintptr stride)11207 void glBindVertexBuffer_enc(void *self , GLuint bindingindex, GLuint buffer, GLintptr offset, GLintptr stride)
11208 {
11209 	ENCODER_DEBUG_LOG("glBindVertexBuffer(bindingindex:%u, buffer:%u, offset:0x%08lx, stride:0x%08lx)", bindingindex, buffer, offset, stride);
11210 	AEMU_SCOPED_TRACE("glBindVertexBuffer encode");
11211 
11212 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11213 	IOStream *stream = ctx->m_stream;
11214 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11215 	bool useChecksum = checksumCalculator->getVersion() > 0;
11216 
11217 	 unsigned char *ptr;
11218 	 unsigned char *buf;
11219 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
11220 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11221 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11222 	buf = stream->alloc(totalSize);
11223 	ptr = buf;
11224 	int tmp = OP_glBindVertexBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
11225 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11226 
11227 		memcpy(ptr, &bindingindex, 4); ptr += 4;
11228 		memcpy(ptr, &buffer, 4); ptr += 4;
11229 		memcpy(ptr, &offset, 4); ptr += 4;
11230 		memcpy(ptr, &stride, 4); ptr += 4;
11231 
11232 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11233 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11234 
11235 }
11236 
glVertexAttribBinding_enc(void * self,GLuint attribindex,GLuint bindingindex)11237 void glVertexAttribBinding_enc(void *self , GLuint attribindex, GLuint bindingindex)
11238 {
11239 	ENCODER_DEBUG_LOG("glVertexAttribBinding(attribindex:%u, bindingindex:%u)", attribindex, bindingindex);
11240 	AEMU_SCOPED_TRACE("glVertexAttribBinding encode");
11241 
11242 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11243 	IOStream *stream = ctx->m_stream;
11244 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11245 	bool useChecksum = checksumCalculator->getVersion() > 0;
11246 
11247 	 unsigned char *ptr;
11248 	 unsigned char *buf;
11249 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11250 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11251 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11252 	buf = stream->alloc(totalSize);
11253 	ptr = buf;
11254 	int tmp = OP_glVertexAttribBinding;memcpy(ptr, &tmp, 4); ptr += 4;
11255 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11256 
11257 		memcpy(ptr, &attribindex, 4); ptr += 4;
11258 		memcpy(ptr, &bindingindex, 4); ptr += 4;
11259 
11260 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11261 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11262 
11263 }
11264 
glVertexAttribFormat_enc(void * self,GLuint attribindex,GLint size,GLenum type,GLboolean normalized,GLuint relativeoffset)11265 void glVertexAttribFormat_enc(void *self , GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
11266 {
11267 	ENCODER_DEBUG_LOG("glVertexAttribFormat(attribindex:%u, size:%d, type:0x%08x, normalized:%d, relativeoffset:%u)", attribindex, size, type, normalized, relativeoffset);
11268 	AEMU_SCOPED_TRACE("glVertexAttribFormat encode");
11269 
11270 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11271 	IOStream *stream = ctx->m_stream;
11272 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11273 	bool useChecksum = checksumCalculator->getVersion() > 0;
11274 
11275 	 unsigned char *ptr;
11276 	 unsigned char *buf;
11277 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4;
11278 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11279 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11280 	buf = stream->alloc(totalSize);
11281 	ptr = buf;
11282 	int tmp = OP_glVertexAttribFormat;memcpy(ptr, &tmp, 4); ptr += 4;
11283 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11284 
11285 		memcpy(ptr, &attribindex, 4); ptr += 4;
11286 		memcpy(ptr, &size, 4); ptr += 4;
11287 		memcpy(ptr, &type, 4); ptr += 4;
11288 		memcpy(ptr, &normalized, 1); ptr += 1;
11289 		memcpy(ptr, &relativeoffset, 4); ptr += 4;
11290 
11291 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11292 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11293 
11294 }
11295 
glVertexAttribIFormat_enc(void * self,GLuint attribindex,GLint size,GLenum type,GLuint relativeoffset)11296 void glVertexAttribIFormat_enc(void *self , GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
11297 {
11298 	ENCODER_DEBUG_LOG("glVertexAttribIFormat(attribindex:%u, size:%d, type:0x%08x, relativeoffset:%u)", attribindex, size, type, relativeoffset);
11299 	AEMU_SCOPED_TRACE("glVertexAttribIFormat encode");
11300 
11301 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11302 	IOStream *stream = ctx->m_stream;
11303 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11304 	bool useChecksum = checksumCalculator->getVersion() > 0;
11305 
11306 	 unsigned char *ptr;
11307 	 unsigned char *buf;
11308 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
11309 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11310 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11311 	buf = stream->alloc(totalSize);
11312 	ptr = buf;
11313 	int tmp = OP_glVertexAttribIFormat;memcpy(ptr, &tmp, 4); ptr += 4;
11314 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11315 
11316 		memcpy(ptr, &attribindex, 4); ptr += 4;
11317 		memcpy(ptr, &size, 4); ptr += 4;
11318 		memcpy(ptr, &type, 4); ptr += 4;
11319 		memcpy(ptr, &relativeoffset, 4); ptr += 4;
11320 
11321 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11322 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11323 
11324 }
11325 
glVertexBindingDivisor_enc(void * self,GLuint bindingindex,GLuint divisor)11326 void glVertexBindingDivisor_enc(void *self , GLuint bindingindex, GLuint divisor)
11327 {
11328 	ENCODER_DEBUG_LOG("glVertexBindingDivisor(bindingindex:%u, divisor:%u)", bindingindex, divisor);
11329 	AEMU_SCOPED_TRACE("glVertexBindingDivisor encode");
11330 
11331 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11332 	IOStream *stream = ctx->m_stream;
11333 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11334 	bool useChecksum = checksumCalculator->getVersion() > 0;
11335 
11336 	 unsigned char *ptr;
11337 	 unsigned char *buf;
11338 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11339 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11340 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11341 	buf = stream->alloc(totalSize);
11342 	ptr = buf;
11343 	int tmp = OP_glVertexBindingDivisor;memcpy(ptr, &tmp, 4); ptr += 4;
11344 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11345 
11346 		memcpy(ptr, &bindingindex, 4); ptr += 4;
11347 		memcpy(ptr, &divisor, 4); ptr += 4;
11348 
11349 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11350 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11351 
11352 }
11353 
glDrawArraysIndirectDataAEMU_enc(void * self,GLenum mode,const void * indirect,GLuint datalen)11354 void glDrawArraysIndirectDataAEMU_enc(void *self , GLenum mode, const void* indirect, GLuint datalen)
11355 {
11356 	ENCODER_DEBUG_LOG("glDrawArraysIndirectDataAEMU(mode:0x%08x, indirect:0x%08x, datalen:%u)", mode, indirect, datalen);
11357 	AEMU_SCOPED_TRACE("glDrawArraysIndirectDataAEMU encode");
11358 
11359 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11360 	IOStream *stream = ctx->m_stream;
11361 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11362 	bool useChecksum = checksumCalculator->getVersion() > 0;
11363 
11364 	const unsigned int __size_indirect =  datalen;
11365 	 unsigned char *ptr;
11366 	 unsigned char *buf;
11367 	 const size_t sizeWithoutChecksum = 8 + 4 + __size_indirect + 4 + 1*4;
11368 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11369 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11370 	buf = stream->alloc(totalSize);
11371 	ptr = buf;
11372 	int tmp = OP_glDrawArraysIndirectDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11373 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11374 
11375 		memcpy(ptr, &mode, 4); ptr += 4;
11376 	memcpy(ptr, &__size_indirect, 4); ptr += 4;
11377 	memcpy(ptr, indirect, __size_indirect);ptr += __size_indirect;
11378 		memcpy(ptr, &datalen, 4); ptr += 4;
11379 
11380 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11381 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11382 
11383 }
11384 
glDrawArraysIndirectOffsetAEMU_enc(void * self,GLenum mode,GLuint offset)11385 void glDrawArraysIndirectOffsetAEMU_enc(void *self , GLenum mode, GLuint offset)
11386 {
11387 	ENCODER_DEBUG_LOG("glDrawArraysIndirectOffsetAEMU(mode:0x%08x, offset:%u)", mode, offset);
11388 	AEMU_SCOPED_TRACE("glDrawArraysIndirectOffsetAEMU encode");
11389 
11390 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11391 	IOStream *stream = ctx->m_stream;
11392 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11393 	bool useChecksum = checksumCalculator->getVersion() > 0;
11394 
11395 	 unsigned char *ptr;
11396 	 unsigned char *buf;
11397 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11398 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11399 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11400 	buf = stream->alloc(totalSize);
11401 	ptr = buf;
11402 	int tmp = OP_glDrawArraysIndirectOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11403 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11404 
11405 		memcpy(ptr, &mode, 4); ptr += 4;
11406 		memcpy(ptr, &offset, 4); ptr += 4;
11407 
11408 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11409 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11410 
11411 }
11412 
glDrawElementsIndirectDataAEMU_enc(void * self,GLenum mode,GLenum type,const void * indirect,GLuint datalen)11413 void glDrawElementsIndirectDataAEMU_enc(void *self , GLenum mode, GLenum type, const void* indirect, GLuint datalen)
11414 {
11415 	ENCODER_DEBUG_LOG("glDrawElementsIndirectDataAEMU(mode:0x%08x, type:0x%08x, indirect:0x%08x, datalen:%u)", mode, type, indirect, datalen);
11416 	AEMU_SCOPED_TRACE("glDrawElementsIndirectDataAEMU encode");
11417 
11418 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11419 	IOStream *stream = ctx->m_stream;
11420 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11421 	bool useChecksum = checksumCalculator->getVersion() > 0;
11422 
11423 	const unsigned int __size_indirect =  datalen;
11424 	 unsigned char *ptr;
11425 	 unsigned char *buf;
11426 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_indirect + 4 + 1*4;
11427 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11428 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11429 	buf = stream->alloc(totalSize);
11430 	ptr = buf;
11431 	int tmp = OP_glDrawElementsIndirectDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11432 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11433 
11434 		memcpy(ptr, &mode, 4); ptr += 4;
11435 		memcpy(ptr, &type, 4); ptr += 4;
11436 	memcpy(ptr, &__size_indirect, 4); ptr += 4;
11437 	memcpy(ptr, indirect, __size_indirect);ptr += __size_indirect;
11438 		memcpy(ptr, &datalen, 4); ptr += 4;
11439 
11440 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11441 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11442 
11443 }
11444 
glDrawElementsIndirectOffsetAEMU_enc(void * self,GLenum mode,GLenum type,GLuint offset)11445 void glDrawElementsIndirectOffsetAEMU_enc(void *self , GLenum mode, GLenum type, GLuint offset)
11446 {
11447 	ENCODER_DEBUG_LOG("glDrawElementsIndirectOffsetAEMU(mode:0x%08x, type:0x%08x, offset:%u)", mode, type, offset);
11448 	AEMU_SCOPED_TRACE("glDrawElementsIndirectOffsetAEMU encode");
11449 
11450 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11451 	IOStream *stream = ctx->m_stream;
11452 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11453 	bool useChecksum = checksumCalculator->getVersion() > 0;
11454 
11455 	 unsigned char *ptr;
11456 	 unsigned char *buf;
11457 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
11458 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11459 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11460 	buf = stream->alloc(totalSize);
11461 	ptr = buf;
11462 	int tmp = OP_glDrawElementsIndirectOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
11463 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11464 
11465 		memcpy(ptr, &mode, 4); ptr += 4;
11466 		memcpy(ptr, &type, 4); ptr += 4;
11467 		memcpy(ptr, &offset, 4); ptr += 4;
11468 
11469 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11470 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11471 
11472 }
11473 
glTexStorage2DMultisample_enc(void * self,GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height,GLboolean fixedsamplelocations)11474 void glTexStorage2DMultisample_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
11475 {
11476 	ENCODER_DEBUG_LOG("glTexStorage2DMultisample(target:0x%08x, samples:%d, internalformat:0x%08x, width:%d, height:%d, fixedsamplelocations:%d)", target, samples, internalformat, width, height, fixedsamplelocations);
11477 	AEMU_SCOPED_TRACE("glTexStorage2DMultisample encode");
11478 
11479 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11480 	IOStream *stream = ctx->m_stream;
11481 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11482 	bool useChecksum = checksumCalculator->getVersion() > 0;
11483 
11484 	 unsigned char *ptr;
11485 	 unsigned char *buf;
11486 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 1;
11487 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11488 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11489 	buf = stream->alloc(totalSize);
11490 	ptr = buf;
11491 	int tmp = OP_glTexStorage2DMultisample;memcpy(ptr, &tmp, 4); ptr += 4;
11492 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11493 
11494 		memcpy(ptr, &target, 4); ptr += 4;
11495 		memcpy(ptr, &samples, 4); ptr += 4;
11496 		memcpy(ptr, &internalformat, 4); ptr += 4;
11497 		memcpy(ptr, &width, 4); ptr += 4;
11498 		memcpy(ptr, &height, 4); ptr += 4;
11499 		memcpy(ptr, &fixedsamplelocations, 1); ptr += 1;
11500 
11501 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11502 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11503 
11504 }
11505 
glSampleMaski_enc(void * self,GLuint maskNumber,GLbitfield mask)11506 void glSampleMaski_enc(void *self , GLuint maskNumber, GLbitfield mask)
11507 {
11508 	ENCODER_DEBUG_LOG("glSampleMaski(maskNumber:%u, mask:0x%08x)", maskNumber, mask);
11509 	AEMU_SCOPED_TRACE("glSampleMaski encode");
11510 
11511 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11512 	IOStream *stream = ctx->m_stream;
11513 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11514 	bool useChecksum = checksumCalculator->getVersion() > 0;
11515 
11516 	 unsigned char *ptr;
11517 	 unsigned char *buf;
11518 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
11519 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11520 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11521 	buf = stream->alloc(totalSize);
11522 	ptr = buf;
11523 	int tmp = OP_glSampleMaski;memcpy(ptr, &tmp, 4); ptr += 4;
11524 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11525 
11526 		memcpy(ptr, &maskNumber, 4); ptr += 4;
11527 		memcpy(ptr, &mask, 4); ptr += 4;
11528 
11529 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11530 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11531 
11532 }
11533 
glGetMultisamplefv_enc(void * self,GLenum pname,GLuint index,GLfloat * val)11534 void glGetMultisamplefv_enc(void *self , GLenum pname, GLuint index, GLfloat* val)
11535 {
11536 	ENCODER_DEBUG_LOG("glGetMultisamplefv(pname:0x%08x, index:%u, val:0x%08x)", pname, index, val);
11537 	AEMU_SCOPED_TRACE("glGetMultisamplefv encode");
11538 
11539 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11540 	IOStream *stream = ctx->m_stream;
11541 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11542 	bool useChecksum = checksumCalculator->getVersion() > 0;
11543 
11544 	const unsigned int __size_val =  (glUtilsParamSize(pname) * sizeof(GLfloat));
11545 	 unsigned char *ptr;
11546 	 unsigned char *buf;
11547 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
11548 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11549 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11550 	buf = stream->alloc(totalSize);
11551 	ptr = buf;
11552 	int tmp = OP_glGetMultisamplefv;memcpy(ptr, &tmp, 4); ptr += 4;
11553 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11554 
11555 		memcpy(ptr, &pname, 4); ptr += 4;
11556 		memcpy(ptr, &index, 4); ptr += 4;
11557 	memcpy(ptr, &__size_val, 4); ptr += 4;
11558 
11559 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11560 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11561 
11562 	stream->readback(val, __size_val);
11563 	if (useChecksum) checksumCalculator->addBuffer(val, __size_val);
11564 	if (useChecksum) {
11565 		unsigned char *checksumBufPtr = NULL;
11566 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11567 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11568 		stream->readback(checksumBufPtr, checksumSize);
11569 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11570 			ALOGE("glGetMultisamplefv: GL communication error, please report this issue to b.android.com.\n");
11571 			abort();
11572 		}
11573 	}
11574 }
11575 
glFramebufferParameteri_enc(void * self,GLenum target,GLenum pname,GLint param)11576 void glFramebufferParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
11577 {
11578 	ENCODER_DEBUG_LOG("glFramebufferParameteri(target:0x%08x, pname:0x%08x, param:%d)", target, pname, param);
11579 	AEMU_SCOPED_TRACE("glFramebufferParameteri encode");
11580 
11581 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11582 	IOStream *stream = ctx->m_stream;
11583 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11584 	bool useChecksum = checksumCalculator->getVersion() > 0;
11585 
11586 	 unsigned char *ptr;
11587 	 unsigned char *buf;
11588 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
11589 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11590 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11591 	buf = stream->alloc(totalSize);
11592 	ptr = buf;
11593 	int tmp = OP_glFramebufferParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
11594 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11595 
11596 		memcpy(ptr, &target, 4); ptr += 4;
11597 		memcpy(ptr, &pname, 4); ptr += 4;
11598 		memcpy(ptr, &param, 4); ptr += 4;
11599 
11600 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11601 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11602 
11603 }
11604 
glGetFramebufferParameteriv_enc(void * self,GLenum target,GLenum pname,GLint * params)11605 void glGetFramebufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
11606 {
11607 	ENCODER_DEBUG_LOG("glGetFramebufferParameteriv(target:0x%08x, pname:0x%08x, params:0x%08x)", target, pname, params);
11608 	AEMU_SCOPED_TRACE("glGetFramebufferParameteriv encode");
11609 
11610 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11611 	IOStream *stream = ctx->m_stream;
11612 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11613 	bool useChecksum = checksumCalculator->getVersion() > 0;
11614 
11615 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
11616 	 unsigned char *ptr;
11617 	 unsigned char *buf;
11618 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
11619 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11620 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11621 	buf = stream->alloc(totalSize);
11622 	ptr = buf;
11623 	int tmp = OP_glGetFramebufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
11624 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11625 
11626 		memcpy(ptr, &target, 4); ptr += 4;
11627 		memcpy(ptr, &pname, 4); ptr += 4;
11628 	memcpy(ptr, &__size_params, 4); ptr += 4;
11629 
11630 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11631 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11632 
11633 	stream->readback(params, __size_params);
11634 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
11635 	if (useChecksum) {
11636 		unsigned char *checksumBufPtr = NULL;
11637 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11638 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11639 		stream->readback(checksumBufPtr, checksumSize);
11640 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11641 			ALOGE("glGetFramebufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
11642 			abort();
11643 		}
11644 	}
11645 }
11646 
glGetTexLevelParameterfv_enc(void * self,GLenum target,GLint level,GLenum pname,GLfloat * params)11647 void glGetTexLevelParameterfv_enc(void *self , GLenum target, GLint level, GLenum pname, GLfloat* params)
11648 {
11649 	ENCODER_DEBUG_LOG("glGetTexLevelParameterfv(target:0x%08x, level:%d, pname:0x%08x, params:0x%08x)", target, level, pname, params);
11650 	AEMU_SCOPED_TRACE("glGetTexLevelParameterfv encode");
11651 
11652 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11653 	IOStream *stream = ctx->m_stream;
11654 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11655 	bool useChecksum = checksumCalculator->getVersion() > 0;
11656 
11657 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
11658 	 unsigned char *ptr;
11659 	 unsigned char *buf;
11660 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
11661 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11662 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11663 	buf = stream->alloc(totalSize);
11664 	ptr = buf;
11665 	int tmp = OP_glGetTexLevelParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
11666 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11667 
11668 		memcpy(ptr, &target, 4); ptr += 4;
11669 		memcpy(ptr, &level, 4); ptr += 4;
11670 		memcpy(ptr, &pname, 4); ptr += 4;
11671 	memcpy(ptr, &__size_params, 4); ptr += 4;
11672 
11673 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11674 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11675 
11676 	stream->readback(params, __size_params);
11677 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
11678 	if (useChecksum) {
11679 		unsigned char *checksumBufPtr = NULL;
11680 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11681 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11682 		stream->readback(checksumBufPtr, checksumSize);
11683 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11684 			ALOGE("glGetTexLevelParameterfv: GL communication error, please report this issue to b.android.com.\n");
11685 			abort();
11686 		}
11687 	}
11688 }
11689 
glGetTexLevelParameteriv_enc(void * self,GLenum target,GLint level,GLenum pname,GLint * params)11690 void glGetTexLevelParameteriv_enc(void *self , GLenum target, GLint level, GLenum pname, GLint* params)
11691 {
11692 	ENCODER_DEBUG_LOG("glGetTexLevelParameteriv(target:0x%08x, level:%d, pname:0x%08x, params:0x%08x)", target, level, pname, params);
11693 	AEMU_SCOPED_TRACE("glGetTexLevelParameteriv encode");
11694 
11695 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11696 	IOStream *stream = ctx->m_stream;
11697 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11698 	bool useChecksum = checksumCalculator->getVersion() > 0;
11699 
11700 	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
11701 	 unsigned char *ptr;
11702 	 unsigned char *buf;
11703 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
11704 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11705 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11706 	buf = stream->alloc(totalSize);
11707 	ptr = buf;
11708 	int tmp = OP_glGetTexLevelParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
11709 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11710 
11711 		memcpy(ptr, &target, 4); ptr += 4;
11712 		memcpy(ptr, &level, 4); ptr += 4;
11713 		memcpy(ptr, &pname, 4); ptr += 4;
11714 	memcpy(ptr, &__size_params, 4); ptr += 4;
11715 
11716 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11717 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11718 
11719 	stream->readback(params, __size_params);
11720 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
11721 	if (useChecksum) {
11722 		unsigned char *checksumBufPtr = NULL;
11723 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11724 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11725 		stream->readback(checksumBufPtr, checksumSize);
11726 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11727 			ALOGE("glGetTexLevelParameteriv: GL communication error, please report this issue to b.android.com.\n");
11728 			abort();
11729 		}
11730 	}
11731 }
11732 
glMapBufferRangeDMA_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr)11733 void glMapBufferRangeDMA_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr)
11734 {
11735 	ENCODER_DEBUG_LOG("glMapBufferRangeDMA(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, paddr:0x%016lx)", target, offset, length, access, paddr);
11736 	AEMU_SCOPED_TRACE("glMapBufferRangeDMA encode");
11737 
11738 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11739 	IOStream *stream = ctx->m_stream;
11740 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11741 	bool useChecksum = checksumCalculator->getVersion() > 0;
11742 
11743 	 unsigned char *ptr;
11744 	 unsigned char *buf;
11745 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8;
11746 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11747 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11748 	buf = stream->alloc(totalSize);
11749 	ptr = buf;
11750 	int tmp = OP_glMapBufferRangeDMA;memcpy(ptr, &tmp, 4); ptr += 4;
11751 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11752 
11753 		memcpy(ptr, &target, 4); ptr += 4;
11754 		memcpy(ptr, &offset, 4); ptr += 4;
11755 		memcpy(ptr, &length, 4); ptr += 4;
11756 		memcpy(ptr, &access, 4); ptr += 4;
11757 		memcpy(ptr, &paddr, 8); ptr += 8;
11758 
11759 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11760 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11761 
11762 }
11763 
glUnmapBufferDMA_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr,GLboolean * out_res)11764 void glUnmapBufferDMA_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr, GLboolean* out_res)
11765 {
11766 	ENCODER_DEBUG_LOG("glUnmapBufferDMA(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, paddr:0x%016lx, out_res:0x%08x)", target, offset, length, access, paddr, out_res);
11767 	AEMU_SCOPED_TRACE("glUnmapBufferDMA encode");
11768 
11769 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11770 	IOStream *stream = ctx->m_stream;
11771 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11772 	bool useChecksum = checksumCalculator->getVersion() > 0;
11773 
11774 	const unsigned int __size_out_res =  (sizeof(GLboolean));
11775 	 unsigned char *ptr;
11776 	 unsigned char *buf;
11777 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8 + 0 + 1*4;
11778 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11779 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11780 	buf = stream->alloc(totalSize);
11781 	ptr = buf;
11782 	int tmp = OP_glUnmapBufferDMA;memcpy(ptr, &tmp, 4); ptr += 4;
11783 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11784 
11785 		memcpy(ptr, &target, 4); ptr += 4;
11786 		memcpy(ptr, &offset, 4); ptr += 4;
11787 		memcpy(ptr, &length, 4); ptr += 4;
11788 		memcpy(ptr, &access, 4); ptr += 4;
11789 		memcpy(ptr, &paddr, 8); ptr += 8;
11790 	memcpy(ptr, &__size_out_res, 4); ptr += 4;
11791 
11792 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11793 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11794 
11795 	stream->readback(out_res, __size_out_res);
11796 	if (useChecksum) checksumCalculator->addBuffer(out_res, __size_out_res);
11797 	if (useChecksum) {
11798 		unsigned char *checksumBufPtr = NULL;
11799 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11800 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11801 		stream->readback(checksumBufPtr, checksumSize);
11802 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11803 			ALOGE("glUnmapBufferDMA: GL communication error, please report this issue to b.android.com.\n");
11804 			abort();
11805 		}
11806 	}
11807 }
11808 
glMapBufferRangeDirect_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr)11809 uint64_t glMapBufferRangeDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr)
11810 {
11811 	ENCODER_DEBUG_LOG("glMapBufferRangeDirect(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, paddr:0x%016lx)", target, offset, length, access, paddr);
11812 	AEMU_SCOPED_TRACE("glMapBufferRangeDirect encode");
11813 
11814 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11815 	IOStream *stream = ctx->m_stream;
11816 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11817 	bool useChecksum = checksumCalculator->getVersion() > 0;
11818 
11819 	 unsigned char *ptr;
11820 	 unsigned char *buf;
11821 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8;
11822 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11823 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11824 	buf = stream->alloc(totalSize);
11825 	ptr = buf;
11826 	int tmp = OP_glMapBufferRangeDirect;memcpy(ptr, &tmp, 4); ptr += 4;
11827 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11828 
11829 		memcpy(ptr, &target, 4); ptr += 4;
11830 		memcpy(ptr, &offset, 4); ptr += 4;
11831 		memcpy(ptr, &length, 4); ptr += 4;
11832 		memcpy(ptr, &access, 4); ptr += 4;
11833 		memcpy(ptr, &paddr, 8); ptr += 8;
11834 
11835 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11836 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11837 
11838 
11839 	uint64_t retval;
11840 	stream->readback(&retval, 8);
11841 	if (useChecksum) checksumCalculator->addBuffer(&retval, 8);
11842 	if (useChecksum) {
11843 		unsigned char *checksumBufPtr = NULL;
11844 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11845 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11846 		stream->readback(checksumBufPtr, checksumSize);
11847 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11848 			ALOGE("glMapBufferRangeDirect: GL communication error, please report this issue to b.android.com.\n");
11849 			abort();
11850 		}
11851 	}
11852 	return retval;
11853 }
11854 
glUnmapBufferDirect_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,uint64_t paddr,uint64_t guest_ptr,GLboolean * out_res)11855 void glUnmapBufferDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr, uint64_t guest_ptr, GLboolean* out_res)
11856 {
11857 	ENCODER_DEBUG_LOG("glUnmapBufferDirect(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, paddr:0x%016lx, guest_ptr:0x%016lx, out_res:0x%08x)", target, offset, length, access, paddr, guest_ptr, out_res);
11858 	AEMU_SCOPED_TRACE("glUnmapBufferDirect encode");
11859 
11860 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11861 	IOStream *stream = ctx->m_stream;
11862 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11863 	bool useChecksum = checksumCalculator->getVersion() > 0;
11864 
11865 	const unsigned int __size_out_res =  (sizeof(GLboolean));
11866 	 unsigned char *ptr;
11867 	 unsigned char *buf;
11868 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 8 + 8 + 0 + 1*4;
11869 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11870 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11871 	buf = stream->alloc(totalSize);
11872 	ptr = buf;
11873 	int tmp = OP_glUnmapBufferDirect;memcpy(ptr, &tmp, 4); ptr += 4;
11874 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11875 
11876 		memcpy(ptr, &target, 4); ptr += 4;
11877 		memcpy(ptr, &offset, 4); ptr += 4;
11878 		memcpy(ptr, &length, 4); ptr += 4;
11879 		memcpy(ptr, &access, 4); ptr += 4;
11880 		memcpy(ptr, &paddr, 8); ptr += 8;
11881 		memcpy(ptr, &guest_ptr, 8); ptr += 8;
11882 	memcpy(ptr, &__size_out_res, 4); ptr += 4;
11883 
11884 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11885 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11886 
11887 	stream->readback(out_res, __size_out_res);
11888 	if (useChecksum) checksumCalculator->addBuffer(out_res, __size_out_res);
11889 	if (useChecksum) {
11890 		unsigned char *checksumBufPtr = NULL;
11891 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11892 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11893 		stream->readback(checksumBufPtr, checksumSize);
11894 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11895 			ALOGE("glUnmapBufferDirect: GL communication error, please report this issue to b.android.com.\n");
11896 			abort();
11897 		}
11898 	}
11899 }
11900 
glFlushMappedBufferRangeDirect_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access)11901 void glFlushMappedBufferRangeDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
11902 {
11903 	ENCODER_DEBUG_LOG("glFlushMappedBufferRangeDirect(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x)", target, offset, length, access);
11904 	AEMU_SCOPED_TRACE("glFlushMappedBufferRangeDirect encode");
11905 
11906 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11907 	IOStream *stream = ctx->m_stream;
11908 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11909 	bool useChecksum = checksumCalculator->getVersion() > 0;
11910 
11911 	 unsigned char *ptr;
11912 	 unsigned char *buf;
11913 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
11914 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11915 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11916 	buf = stream->alloc(totalSize);
11917 	ptr = buf;
11918 	int tmp = OP_glFlushMappedBufferRangeDirect;memcpy(ptr, &tmp, 4); ptr += 4;
11919 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11920 
11921 		memcpy(ptr, &target, 4); ptr += 4;
11922 		memcpy(ptr, &offset, 4); ptr += 4;
11923 		memcpy(ptr, &length, 4); ptr += 4;
11924 		memcpy(ptr, &access, 4); ptr += 4;
11925 
11926 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11927 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11928 
11929 }
11930 
glGetGraphicsResetStatusEXT_enc(void * self)11931 GLenum glGetGraphicsResetStatusEXT_enc(void *self )
11932 {
11933 	ENCODER_DEBUG_LOG("glGetGraphicsResetStatusEXT()");
11934 	AEMU_SCOPED_TRACE("glGetGraphicsResetStatusEXT encode");
11935 
11936 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11937 	IOStream *stream = ctx->m_stream;
11938 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11939 	bool useChecksum = checksumCalculator->getVersion() > 0;
11940 
11941 	 unsigned char *ptr;
11942 	 unsigned char *buf;
11943 	 const size_t sizeWithoutChecksum = 8;
11944 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11945 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11946 	buf = stream->alloc(totalSize);
11947 	ptr = buf;
11948 	int tmp = OP_glGetGraphicsResetStatusEXT;memcpy(ptr, &tmp, 4); ptr += 4;
11949 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11950 
11951 
11952 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11953 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11954 
11955 
11956 	GLenum retval;
11957 	stream->readback(&retval, 4);
11958 	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
11959 	if (useChecksum) {
11960 		unsigned char *checksumBufPtr = NULL;
11961 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
11962 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11963 		stream->readback(checksumBufPtr, checksumSize);
11964 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11965 			ALOGE("glGetGraphicsResetStatusEXT: GL communication error, please report this issue to b.android.com.\n");
11966 			abort();
11967 		}
11968 	}
11969 	return retval;
11970 }
11971 
glReadnPixelsEXT_enc(void * self,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,GLvoid * data)11972 void glReadnPixelsEXT_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid* data)
11973 {
11974 	ENCODER_DEBUG_LOG("glReadnPixelsEXT(x:%d, y:%d, width:%d, height:%d, format:0x%08x, type:0x%08x, bufSize:%d, data:0x%08x)", x, y, width, height, format, type, bufSize, data);
11975 	AEMU_SCOPED_TRACE("glReadnPixelsEXT encode");
11976 
11977 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11978 	IOStream *stream = ctx->m_stream;
11979 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11980 	bool useChecksum = checksumCalculator->getVersion() > 0;
11981 
11982 	const unsigned int __size_data =  bufSize;
11983 	 unsigned char *ptr;
11984 	 unsigned char *buf;
11985 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 0 + 1*4;
11986 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11987 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11988 	buf = stream->alloc(totalSize);
11989 	ptr = buf;
11990 	int tmp = OP_glReadnPixelsEXT;memcpy(ptr, &tmp, 4); ptr += 4;
11991 	memcpy(ptr, &totalSize, 4);  ptr += 4;
11992 
11993 		memcpy(ptr, &x, 4); ptr += 4;
11994 		memcpy(ptr, &y, 4); ptr += 4;
11995 		memcpy(ptr, &width, 4); ptr += 4;
11996 		memcpy(ptr, &height, 4); ptr += 4;
11997 		memcpy(ptr, &format, 4); ptr += 4;
11998 		memcpy(ptr, &type, 4); ptr += 4;
11999 		memcpy(ptr, &bufSize, 4); ptr += 4;
12000 	memcpy(ptr, &__size_data, 4); ptr += 4;
12001 
12002 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12003 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12004 
12005 	stream->readback(data, __size_data);
12006 	if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
12007 	if (useChecksum) {
12008 		unsigned char *checksumBufPtr = NULL;
12009 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
12010 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12011 		stream->readback(checksumBufPtr, checksumSize);
12012 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12013 			ALOGE("glReadnPixelsEXT: GL communication error, please report this issue to b.android.com.\n");
12014 			abort();
12015 		}
12016 	}
12017 }
12018 
glGetnUniformfvEXT_enc(void * self,GLuint program,GLint location,GLsizei bufSize,GLfloat * params)12019 void glGetnUniformfvEXT_enc(void *self , GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
12020 {
12021 	ENCODER_DEBUG_LOG("glGetnUniformfvEXT(program:%u, location:%d, bufSize:%d, params:0x%08x)", program, location, bufSize, params);
12022 	AEMU_SCOPED_TRACE("glGetnUniformfvEXT encode");
12023 
12024 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12025 	IOStream *stream = ctx->m_stream;
12026 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12027 	bool useChecksum = checksumCalculator->getVersion() > 0;
12028 
12029 	const unsigned int __size_params =  bufSize;
12030 	 unsigned char *ptr;
12031 	 unsigned char *buf;
12032 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
12033 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12034 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12035 	buf = stream->alloc(totalSize);
12036 	ptr = buf;
12037 	int tmp = OP_glGetnUniformfvEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12038 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12039 
12040 		memcpy(ptr, &program, 4); ptr += 4;
12041 		memcpy(ptr, &location, 4); ptr += 4;
12042 		memcpy(ptr, &bufSize, 4); ptr += 4;
12043 	memcpy(ptr, &__size_params, 4); ptr += 4;
12044 
12045 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12046 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12047 
12048 	stream->readback(params, __size_params);
12049 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
12050 	if (useChecksum) {
12051 		unsigned char *checksumBufPtr = NULL;
12052 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
12053 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12054 		stream->readback(checksumBufPtr, checksumSize);
12055 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12056 			ALOGE("glGetnUniformfvEXT: GL communication error, please report this issue to b.android.com.\n");
12057 			abort();
12058 		}
12059 	}
12060 }
12061 
glGetnUniformivEXT_enc(void * self,GLuint program,GLint location,GLsizei bufSize,GLint * params)12062 void glGetnUniformivEXT_enc(void *self , GLuint program, GLint location, GLsizei bufSize, GLint* params)
12063 {
12064 	ENCODER_DEBUG_LOG("glGetnUniformivEXT(program:%u, location:%d, bufSize:%d, params:0x%08x)", program, location, bufSize, params);
12065 	AEMU_SCOPED_TRACE("glGetnUniformivEXT encode");
12066 
12067 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12068 	IOStream *stream = ctx->m_stream;
12069 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12070 	bool useChecksum = checksumCalculator->getVersion() > 0;
12071 
12072 	const unsigned int __size_params =  bufSize;
12073 	 unsigned char *ptr;
12074 	 unsigned char *buf;
12075 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
12076 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12077 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12078 	buf = stream->alloc(totalSize);
12079 	ptr = buf;
12080 	int tmp = OP_glGetnUniformivEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12081 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12082 
12083 		memcpy(ptr, &program, 4); ptr += 4;
12084 		memcpy(ptr, &location, 4); ptr += 4;
12085 		memcpy(ptr, &bufSize, 4); ptr += 4;
12086 	memcpy(ptr, &__size_params, 4); ptr += 4;
12087 
12088 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12089 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12090 
12091 	stream->readback(params, __size_params);
12092 	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
12093 	if (useChecksum) {
12094 		unsigned char *checksumBufPtr = NULL;
12095 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
12096 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12097 		stream->readback(checksumBufPtr, checksumSize);
12098 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12099 			ALOGE("glGetnUniformivEXT: GL communication error, please report this issue to b.android.com.\n");
12100 			abort();
12101 		}
12102 	}
12103 }
12104 
glDrawArraysNullAEMU_enc(void * self,GLenum mode,GLint first,GLsizei count)12105 void glDrawArraysNullAEMU_enc(void *self , GLenum mode, GLint first, GLsizei count)
12106 {
12107 	ENCODER_DEBUG_LOG("glDrawArraysNullAEMU(mode:0x%08x, first:%d, count:%d)", mode, first, count);
12108 	AEMU_SCOPED_TRACE("glDrawArraysNullAEMU encode");
12109 
12110 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12111 	IOStream *stream = ctx->m_stream;
12112 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12113 	bool useChecksum = checksumCalculator->getVersion() > 0;
12114 
12115 	 unsigned char *ptr;
12116 	 unsigned char *buf;
12117 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
12118 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12119 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12120 	buf = stream->alloc(totalSize);
12121 	ptr = buf;
12122 	int tmp = OP_glDrawArraysNullAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12123 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12124 
12125 		memcpy(ptr, &mode, 4); ptr += 4;
12126 		memcpy(ptr, &first, 4); ptr += 4;
12127 		memcpy(ptr, &count, 4); ptr += 4;
12128 
12129 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12130 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12131 
12132 }
12133 
glDrawElementsOffsetNullAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,GLuint offset)12134 void glDrawElementsOffsetNullAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset)
12135 {
12136 	ENCODER_DEBUG_LOG("glDrawElementsOffsetNullAEMU(mode:0x%08x, count:%d, type:0x%08x, offset:%u)", mode, count, type, offset);
12137 	AEMU_SCOPED_TRACE("glDrawElementsOffsetNullAEMU encode");
12138 
12139 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12140 	IOStream *stream = ctx->m_stream;
12141 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12142 	bool useChecksum = checksumCalculator->getVersion() > 0;
12143 
12144 	 unsigned char *ptr;
12145 	 unsigned char *buf;
12146 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
12147 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12148 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12149 	buf = stream->alloc(totalSize);
12150 	ptr = buf;
12151 	int tmp = OP_glDrawElementsOffsetNullAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12152 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12153 
12154 		memcpy(ptr, &mode, 4); ptr += 4;
12155 		memcpy(ptr, &count, 4); ptr += 4;
12156 		memcpy(ptr, &type, 4); ptr += 4;
12157 		memcpy(ptr, &offset, 4); ptr += 4;
12158 
12159 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12160 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12161 
12162 }
12163 
glDrawElementsDataNullAEMU_enc(void * self,GLenum mode,GLsizei count,GLenum type,void * data,GLuint datalen)12164 void glDrawElementsDataNullAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
12165 {
12166 	ENCODER_DEBUG_LOG("glDrawElementsDataNullAEMU(mode:0x%08x, count:%d, type:0x%08x, data:0x%08x, datalen:%u)", mode, count, type, data, datalen);
12167 	AEMU_SCOPED_TRACE("glDrawElementsDataNullAEMU encode");
12168 
12169 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12170 	IOStream *stream = ctx->m_stream;
12171 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12172 	bool useChecksum = checksumCalculator->getVersion() > 0;
12173 
12174 	const unsigned int __size_data =  datalen;
12175 	 unsigned char *ptr;
12176 	 unsigned char *buf;
12177 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
12178 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12179 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12180 	buf = stream->alloc(totalSize);
12181 	ptr = buf;
12182 	int tmp = OP_glDrawElementsDataNullAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12183 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12184 
12185 		memcpy(ptr, &mode, 4); ptr += 4;
12186 		memcpy(ptr, &count, 4); ptr += 4;
12187 		memcpy(ptr, &type, 4); ptr += 4;
12188 	memcpy(ptr, &__size_data, 4); ptr += 4;
12189 	memcpy(ptr, data, __size_data);ptr += __size_data;
12190 		memcpy(ptr, &datalen, 4); ptr += 4;
12191 
12192 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12193 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12194 
12195 }
12196 
glUnmapBufferAsyncAEMU_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer,GLboolean * out_res)12197 void glUnmapBufferAsyncAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer, GLboolean* out_res)
12198 {
12199 	ENCODER_DEBUG_LOG("glUnmapBufferAsyncAEMU(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, guest_buffer:0x%08x, out_res:0x%08x)", target, offset, length, access, guest_buffer, out_res);
12200 	AEMU_SCOPED_TRACE("glUnmapBufferAsyncAEMU encode");
12201 
12202 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12203 	IOStream *stream = ctx->m_stream;
12204 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12205 	bool useChecksum = checksumCalculator->getVersion() > 0;
12206 
12207 	const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ?  length : 0);
12208 	const unsigned int __size_out_res =  (sizeof(GLboolean));
12209 	 unsigned char *ptr;
12210 	 unsigned char *buf;
12211 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + __size_out_res + 2*4;
12212 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12213 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12214 	buf = stream->alloc(8 + 4 + 4 + 4 + 4);
12215 	ptr = buf;
12216 	int tmp = OP_glUnmapBufferAsyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12217 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12218 
12219 		memcpy(ptr, &target, 4); ptr += 4;
12220 		memcpy(ptr, &offset, 4); ptr += 4;
12221 		memcpy(ptr, &length, 4); ptr += 4;
12222 		memcpy(ptr, &access, 4); ptr += 4;
12223 
12224 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12225 	stream->flush();
12226 	stream->writeFully(&__size_guest_buffer,4);
12227 	if (useChecksum) checksumCalculator->addBuffer(&__size_guest_buffer,4);
12228 	if (guest_buffer != NULL) {
12229 		stream->writeFully(guest_buffer, __size_guest_buffer);
12230 		if (useChecksum) checksumCalculator->addBuffer(guest_buffer, __size_guest_buffer);
12231 	}
12232 	buf = stream->alloc(__size_out_res + 1*4);
12233 	ptr = buf;
12234 	memcpy(ptr, &__size_out_res, 4); ptr += 4;
12235 	memcpy(ptr, out_res, __size_out_res);ptr += __size_out_res;
12236 
12237 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12238 	buf = stream->alloc(checksumSize);
12239 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
12240 
12241 }
12242 
glFlushMappedBufferRangeAEMU2_enc(void * self,GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access,void * guest_buffer)12243 void glFlushMappedBufferRangeAEMU2_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer)
12244 {
12245 	ENCODER_DEBUG_LOG("glFlushMappedBufferRangeAEMU2(target:0x%08x, offset:0x%08lx, length:0x%08lx, access:0x%08x, guest_buffer:0x%08x)", target, offset, length, access, guest_buffer);
12246 	AEMU_SCOPED_TRACE("glFlushMappedBufferRangeAEMU2 encode");
12247 
12248 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12249 	IOStream *stream = ctx->m_stream;
12250 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12251 	bool useChecksum = checksumCalculator->getVersion() > 0;
12252 
12253 	const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ?  length : 0);
12254 	 unsigned char *ptr;
12255 	 unsigned char *buf;
12256 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + 1*4;
12257 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12258 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12259 	buf = stream->alloc(8 + 4 + 4 + 4 + 4);
12260 	ptr = buf;
12261 	int tmp = OP_glFlushMappedBufferRangeAEMU2;memcpy(ptr, &tmp, 4); ptr += 4;
12262 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12263 
12264 		memcpy(ptr, &target, 4); ptr += 4;
12265 		memcpy(ptr, &offset, 4); ptr += 4;
12266 		memcpy(ptr, &length, 4); ptr += 4;
12267 		memcpy(ptr, &access, 4); ptr += 4;
12268 
12269 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12270 	stream->flush();
12271 	stream->writeFully(&__size_guest_buffer,4);
12272 	if (useChecksum) checksumCalculator->addBuffer(&__size_guest_buffer,4);
12273 	if (guest_buffer != NULL) {
12274 		stream->writeFully(guest_buffer, __size_guest_buffer);
12275 		if (useChecksum) checksumCalculator->addBuffer(guest_buffer, __size_guest_buffer);
12276 	}
12277 	buf = stream->alloc(checksumSize);
12278 	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
12279 
12280 }
12281 
glBufferDataSyncAEMU_enc(void * self,GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)12282 GLboolean glBufferDataSyncAEMU_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
12283 {
12284 	ENCODER_DEBUG_LOG("glBufferDataSyncAEMU(target:0x%08x, size:0x%08lx, data:0x%08x, usage:0x%08x)", target, size, data, usage);
12285 	AEMU_SCOPED_TRACE("glBufferDataSyncAEMU encode");
12286 
12287 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12288 	IOStream *stream = ctx->m_stream;
12289 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12290 	bool useChecksum = checksumCalculator->getVersion() > 0;
12291 
12292 	const unsigned int __size_data = ((data != NULL) ?  size : 0);
12293 	 unsigned char *ptr;
12294 	 unsigned char *buf;
12295 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
12296 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12297 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12298 	buf = stream->alloc(totalSize);
12299 	ptr = buf;
12300 	int tmp = OP_glBufferDataSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
12301 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12302 
12303 		memcpy(ptr, &target, 4); ptr += 4;
12304 		memcpy(ptr, &size, 4); ptr += 4;
12305 	memcpy(ptr, &__size_data, 4); ptr += 4;
12306 	if (data != NULL) memcpy(ptr, data, __size_data);ptr += __size_data;
12307 		memcpy(ptr, &usage, 4); ptr += 4;
12308 
12309 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12310 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12311 
12312 
12313 	GLboolean retval;
12314 	stream->readback(&retval, 1);
12315 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
12316 	if (useChecksum) {
12317 		unsigned char *checksumBufPtr = NULL;
12318 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
12319 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12320 		stream->readback(checksumBufPtr, checksumSize);
12321 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12322 			ALOGE("glBufferDataSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
12323 			abort();
12324 		}
12325 	}
12326 	return retval;
12327 }
12328 
glTexBufferOES_enc(void * self,GLenum target,GLenum internalFormat,GLuint buffer)12329 void glTexBufferOES_enc(void *self , GLenum target, GLenum internalFormat, GLuint buffer)
12330 {
12331 	ENCODER_DEBUG_LOG("glTexBufferOES(target:0x%08x, internalFormat:0x%08x, buffer:%u)", target, internalFormat, buffer);
12332 	AEMU_SCOPED_TRACE("glTexBufferOES encode");
12333 
12334 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12335 	IOStream *stream = ctx->m_stream;
12336 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12337 	bool useChecksum = checksumCalculator->getVersion() > 0;
12338 
12339 	 unsigned char *ptr;
12340 	 unsigned char *buf;
12341 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
12342 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12343 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12344 	buf = stream->alloc(totalSize);
12345 	ptr = buf;
12346 	int tmp = OP_glTexBufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
12347 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12348 
12349 		memcpy(ptr, &target, 4); ptr += 4;
12350 		memcpy(ptr, &internalFormat, 4); ptr += 4;
12351 		memcpy(ptr, &buffer, 4); ptr += 4;
12352 
12353 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12354 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12355 
12356 }
12357 
glTexBufferRangeOES_enc(void * self,GLenum target,GLenum internalFormat,GLuint buffer,GLintptr offset,GLsizeiptr size)12358 void glTexBufferRangeOES_enc(void *self , GLenum target, GLenum internalFormat, GLuint buffer, GLintptr offset, GLsizeiptr size)
12359 {
12360 	ENCODER_DEBUG_LOG("glTexBufferRangeOES(target:0x%08x, internalFormat:0x%08x, buffer:%u, offset:0x%08lx, size:0x%08lx)", target, internalFormat, buffer, offset, size);
12361 	AEMU_SCOPED_TRACE("glTexBufferRangeOES encode");
12362 
12363 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12364 	IOStream *stream = ctx->m_stream;
12365 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12366 	bool useChecksum = checksumCalculator->getVersion() > 0;
12367 
12368 	 unsigned char *ptr;
12369 	 unsigned char *buf;
12370 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
12371 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12372 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12373 	buf = stream->alloc(totalSize);
12374 	ptr = buf;
12375 	int tmp = OP_glTexBufferRangeOES;memcpy(ptr, &tmp, 4); ptr += 4;
12376 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12377 
12378 		memcpy(ptr, &target, 4); ptr += 4;
12379 		memcpy(ptr, &internalFormat, 4); ptr += 4;
12380 		memcpy(ptr, &buffer, 4); ptr += 4;
12381 		memcpy(ptr, &offset, 4); ptr += 4;
12382 		memcpy(ptr, &size, 4); ptr += 4;
12383 
12384 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12385 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12386 
12387 }
12388 
glTexBufferEXT_enc(void * self,GLenum target,GLenum internalFormat,GLuint buffer)12389 void glTexBufferEXT_enc(void *self , GLenum target, GLenum internalFormat, GLuint buffer)
12390 {
12391 	ENCODER_DEBUG_LOG("glTexBufferEXT(target:0x%08x, internalFormat:0x%08x, buffer:%u)", target, internalFormat, buffer);
12392 	AEMU_SCOPED_TRACE("glTexBufferEXT encode");
12393 
12394 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12395 	IOStream *stream = ctx->m_stream;
12396 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12397 	bool useChecksum = checksumCalculator->getVersion() > 0;
12398 
12399 	 unsigned char *ptr;
12400 	 unsigned char *buf;
12401 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
12402 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12403 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12404 	buf = stream->alloc(totalSize);
12405 	ptr = buf;
12406 	int tmp = OP_glTexBufferEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12407 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12408 
12409 		memcpy(ptr, &target, 4); ptr += 4;
12410 		memcpy(ptr, &internalFormat, 4); ptr += 4;
12411 		memcpy(ptr, &buffer, 4); ptr += 4;
12412 
12413 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12414 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12415 
12416 }
12417 
glTexBufferRangeEXT_enc(void * self,GLenum target,GLenum internalFormat,GLuint buffer,GLintptr offset,GLsizeiptr size)12418 void glTexBufferRangeEXT_enc(void *self , GLenum target, GLenum internalFormat, GLuint buffer, GLintptr offset, GLsizeiptr size)
12419 {
12420 	ENCODER_DEBUG_LOG("glTexBufferRangeEXT(target:0x%08x, internalFormat:0x%08x, buffer:%u, offset:0x%08lx, size:0x%08lx)", target, internalFormat, buffer, offset, size);
12421 	AEMU_SCOPED_TRACE("glTexBufferRangeEXT encode");
12422 
12423 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12424 	IOStream *stream = ctx->m_stream;
12425 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12426 	bool useChecksum = checksumCalculator->getVersion() > 0;
12427 
12428 	 unsigned char *ptr;
12429 	 unsigned char *buf;
12430 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
12431 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12432 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12433 	buf = stream->alloc(totalSize);
12434 	ptr = buf;
12435 	int tmp = OP_glTexBufferRangeEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12436 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12437 
12438 		memcpy(ptr, &target, 4); ptr += 4;
12439 		memcpy(ptr, &internalFormat, 4); ptr += 4;
12440 		memcpy(ptr, &buffer, 4); ptr += 4;
12441 		memcpy(ptr, &offset, 4); ptr += 4;
12442 		memcpy(ptr, &size, 4); ptr += 4;
12443 
12444 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12445 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12446 
12447 }
12448 
glEnableiEXT_enc(void * self,GLenum cap,GLuint index)12449 void glEnableiEXT_enc(void *self , GLenum cap, GLuint index)
12450 {
12451 	ENCODER_DEBUG_LOG("glEnableiEXT(cap:0x%08x, index:%u)", cap, index);
12452 	AEMU_SCOPED_TRACE("glEnableiEXT encode");
12453 
12454 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12455 	IOStream *stream = ctx->m_stream;
12456 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12457 	bool useChecksum = checksumCalculator->getVersion() > 0;
12458 
12459 	 unsigned char *ptr;
12460 	 unsigned char *buf;
12461 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
12462 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12463 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12464 	buf = stream->alloc(totalSize);
12465 	ptr = buf;
12466 	int tmp = OP_glEnableiEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12467 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12468 
12469 		memcpy(ptr, &cap, 4); ptr += 4;
12470 		memcpy(ptr, &index, 4); ptr += 4;
12471 
12472 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12473 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12474 
12475 }
12476 
glDisableiEXT_enc(void * self,GLenum cap,GLuint index)12477 void glDisableiEXT_enc(void *self , GLenum cap, GLuint index)
12478 {
12479 	ENCODER_DEBUG_LOG("glDisableiEXT(cap:0x%08x, index:%u)", cap, index);
12480 	AEMU_SCOPED_TRACE("glDisableiEXT encode");
12481 
12482 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12483 	IOStream *stream = ctx->m_stream;
12484 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12485 	bool useChecksum = checksumCalculator->getVersion() > 0;
12486 
12487 	 unsigned char *ptr;
12488 	 unsigned char *buf;
12489 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
12490 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12491 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12492 	buf = stream->alloc(totalSize);
12493 	ptr = buf;
12494 	int tmp = OP_glDisableiEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12495 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12496 
12497 		memcpy(ptr, &cap, 4); ptr += 4;
12498 		memcpy(ptr, &index, 4); ptr += 4;
12499 
12500 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12501 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12502 
12503 }
12504 
glBlendEquationiEXT_enc(void * self,GLuint index,GLenum mode)12505 void glBlendEquationiEXT_enc(void *self , GLuint index, GLenum mode)
12506 {
12507 	ENCODER_DEBUG_LOG("glBlendEquationiEXT(index:%u, mode:0x%08x)", index, mode);
12508 	AEMU_SCOPED_TRACE("glBlendEquationiEXT encode");
12509 
12510 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12511 	IOStream *stream = ctx->m_stream;
12512 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12513 	bool useChecksum = checksumCalculator->getVersion() > 0;
12514 
12515 	 unsigned char *ptr;
12516 	 unsigned char *buf;
12517 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
12518 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12519 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12520 	buf = stream->alloc(totalSize);
12521 	ptr = buf;
12522 	int tmp = OP_glBlendEquationiEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12523 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12524 
12525 		memcpy(ptr, &index, 4); ptr += 4;
12526 		memcpy(ptr, &mode, 4); ptr += 4;
12527 
12528 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12529 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12530 
12531 }
12532 
glBlendEquationSeparateiEXT_enc(void * self,GLuint index,GLenum modeRGB,GLenum modeAlpha)12533 void glBlendEquationSeparateiEXT_enc(void *self , GLuint index, GLenum modeRGB, GLenum modeAlpha)
12534 {
12535 	ENCODER_DEBUG_LOG("glBlendEquationSeparateiEXT(index:%u, modeRGB:0x%08x, modeAlpha:0x%08x)", index, modeRGB, modeAlpha);
12536 	AEMU_SCOPED_TRACE("glBlendEquationSeparateiEXT encode");
12537 
12538 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12539 	IOStream *stream = ctx->m_stream;
12540 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12541 	bool useChecksum = checksumCalculator->getVersion() > 0;
12542 
12543 	 unsigned char *ptr;
12544 	 unsigned char *buf;
12545 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
12546 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12547 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12548 	buf = stream->alloc(totalSize);
12549 	ptr = buf;
12550 	int tmp = OP_glBlendEquationSeparateiEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12551 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12552 
12553 		memcpy(ptr, &index, 4); ptr += 4;
12554 		memcpy(ptr, &modeRGB, 4); ptr += 4;
12555 		memcpy(ptr, &modeAlpha, 4); ptr += 4;
12556 
12557 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12558 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12559 
12560 }
12561 
glBlendFunciEXT_enc(void * self,GLuint index,GLenum sfactor,GLenum dfactor)12562 void glBlendFunciEXT_enc(void *self , GLuint index, GLenum sfactor, GLenum dfactor)
12563 {
12564 	ENCODER_DEBUG_LOG("glBlendFunciEXT(index:%u, sfactor:0x%08x, dfactor:0x%08x)", index, sfactor, dfactor);
12565 	AEMU_SCOPED_TRACE("glBlendFunciEXT encode");
12566 
12567 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12568 	IOStream *stream = ctx->m_stream;
12569 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12570 	bool useChecksum = checksumCalculator->getVersion() > 0;
12571 
12572 	 unsigned char *ptr;
12573 	 unsigned char *buf;
12574 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
12575 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12576 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12577 	buf = stream->alloc(totalSize);
12578 	ptr = buf;
12579 	int tmp = OP_glBlendFunciEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12580 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12581 
12582 		memcpy(ptr, &index, 4); ptr += 4;
12583 		memcpy(ptr, &sfactor, 4); ptr += 4;
12584 		memcpy(ptr, &dfactor, 4); ptr += 4;
12585 
12586 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12587 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12588 
12589 }
12590 
glBlendFuncSeparateiEXT_enc(void * self,GLuint index,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)12591 void glBlendFuncSeparateiEXT_enc(void *self , GLuint index, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
12592 {
12593 	ENCODER_DEBUG_LOG("glBlendFuncSeparateiEXT(index:%u, srcRGB:0x%08x, dstRGB:0x%08x, srcAlpha:0x%08x, dstAlpha:0x%08x)", index, srcRGB, dstRGB, srcAlpha, dstAlpha);
12594 	AEMU_SCOPED_TRACE("glBlendFuncSeparateiEXT encode");
12595 
12596 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12597 	IOStream *stream = ctx->m_stream;
12598 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12599 	bool useChecksum = checksumCalculator->getVersion() > 0;
12600 
12601 	 unsigned char *ptr;
12602 	 unsigned char *buf;
12603 	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
12604 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12605 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12606 	buf = stream->alloc(totalSize);
12607 	ptr = buf;
12608 	int tmp = OP_glBlendFuncSeparateiEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12609 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12610 
12611 		memcpy(ptr, &index, 4); ptr += 4;
12612 		memcpy(ptr, &srcRGB, 4); ptr += 4;
12613 		memcpy(ptr, &dstRGB, 4); ptr += 4;
12614 		memcpy(ptr, &srcAlpha, 4); ptr += 4;
12615 		memcpy(ptr, &dstAlpha, 4); ptr += 4;
12616 
12617 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12618 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12619 
12620 }
12621 
glColorMaskiEXT_enc(void * self,GLuint index,GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)12622 void glColorMaskiEXT_enc(void *self , GLuint index, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
12623 {
12624 	ENCODER_DEBUG_LOG("glColorMaskiEXT(index:%u, red:%d, green:%d, blue:%d, alpha:%d)", index, red, green, blue, alpha);
12625 	AEMU_SCOPED_TRACE("glColorMaskiEXT encode");
12626 
12627 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12628 	IOStream *stream = ctx->m_stream;
12629 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12630 	bool useChecksum = checksumCalculator->getVersion() > 0;
12631 
12632 	 unsigned char *ptr;
12633 	 unsigned char *buf;
12634 	 const size_t sizeWithoutChecksum = 8 + 4 + 1 + 1 + 1 + 1;
12635 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12636 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12637 	buf = stream->alloc(totalSize);
12638 	ptr = buf;
12639 	int tmp = OP_glColorMaskiEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12640 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12641 
12642 		memcpy(ptr, &index, 4); ptr += 4;
12643 		memcpy(ptr, &red, 1); ptr += 1;
12644 		memcpy(ptr, &green, 1); ptr += 1;
12645 		memcpy(ptr, &blue, 1); ptr += 1;
12646 		memcpy(ptr, &alpha, 1); ptr += 1;
12647 
12648 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12649 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12650 
12651 }
12652 
glIsEnablediEXT_enc(void * self,GLenum cap,GLuint index)12653 GLboolean glIsEnablediEXT_enc(void *self , GLenum cap, GLuint index)
12654 {
12655 	ENCODER_DEBUG_LOG("glIsEnablediEXT(cap:0x%08x, index:%u)", cap, index);
12656 	AEMU_SCOPED_TRACE("glIsEnablediEXT encode");
12657 
12658 	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
12659 	IOStream *stream = ctx->m_stream;
12660 	gfxstream::guest::ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
12661 	bool useChecksum = checksumCalculator->getVersion() > 0;
12662 
12663 	 unsigned char *ptr;
12664 	 unsigned char *buf;
12665 	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
12666 	 const size_t checksumSize = checksumCalculator->checksumByteSize();
12667 	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
12668 	buf = stream->alloc(totalSize);
12669 	ptr = buf;
12670 	int tmp = OP_glIsEnablediEXT;memcpy(ptr, &tmp, 4); ptr += 4;
12671 	memcpy(ptr, &totalSize, 4);  ptr += 4;
12672 
12673 		memcpy(ptr, &cap, 4); ptr += 4;
12674 		memcpy(ptr, &index, 4); ptr += 4;
12675 
12676 	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
12677 	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
12678 
12679 
12680 	GLboolean retval;
12681 	stream->readback(&retval, 1);
12682 	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
12683 	if (useChecksum) {
12684 		unsigned char *checksumBufPtr = NULL;
12685 		unsigned char checksumBuf[gfxstream::guest::ChecksumCalculator::kMaxChecksumSize];
12686 		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
12687 		stream->readback(checksumBufPtr, checksumSize);
12688 		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
12689 			ALOGE("glIsEnablediEXT: GL communication error, please report this issue to b.android.com.\n");
12690 			abort();
12691 		}
12692 	}
12693 	return retval;
12694 }
12695 
12696 }  // namespace
12697 
gl2_encoder_context_t(IOStream * stream,ChecksumCalculator * checksumCalculator)12698 gl2_encoder_context_t::gl2_encoder_context_t(IOStream *stream, ChecksumCalculator *checksumCalculator)
12699 {
12700 	m_stream = stream;
12701 	m_checksumCalculator = checksumCalculator;
12702 
12703 	this->glActiveTexture = &glActiveTexture_enc;
12704 	this->glAttachShader = &glAttachShader_enc;
12705 	this->glBindAttribLocation = &glBindAttribLocation_enc;
12706 	this->glBindBuffer = &glBindBuffer_enc;
12707 	this->glBindFramebuffer = &glBindFramebuffer_enc;
12708 	this->glBindRenderbuffer = &glBindRenderbuffer_enc;
12709 	this->glBindTexture = &glBindTexture_enc;
12710 	this->glBlendColor = &glBlendColor_enc;
12711 	this->glBlendEquation = &glBlendEquation_enc;
12712 	this->glBlendEquationSeparate = &glBlendEquationSeparate_enc;
12713 	this->glBlendFunc = &glBlendFunc_enc;
12714 	this->glBlendFuncSeparate = &glBlendFuncSeparate_enc;
12715 	this->glBufferData = &glBufferData_enc;
12716 	this->glBufferSubData = &glBufferSubData_enc;
12717 	this->glCheckFramebufferStatus = &glCheckFramebufferStatus_enc;
12718 	this->glClear = &glClear_enc;
12719 	this->glClearColor = &glClearColor_enc;
12720 	this->glClearDepthf = &glClearDepthf_enc;
12721 	this->glClearStencil = &glClearStencil_enc;
12722 	this->glColorMask = &glColorMask_enc;
12723 	this->glCompileShader = &glCompileShader_enc;
12724 	this->glCompressedTexImage2D = &glCompressedTexImage2D_enc;
12725 	this->glCompressedTexSubImage2D = &glCompressedTexSubImage2D_enc;
12726 	this->glCopyTexImage2D = &glCopyTexImage2D_enc;
12727 	this->glCopyTexSubImage2D = &glCopyTexSubImage2D_enc;
12728 	this->glCreateProgram = &glCreateProgram_enc;
12729 	this->glCreateShader = &glCreateShader_enc;
12730 	this->glCullFace = &glCullFace_enc;
12731 	this->glDeleteBuffers = &glDeleteBuffers_enc;
12732 	this->glDeleteFramebuffers = &glDeleteFramebuffers_enc;
12733 	this->glDeleteProgram = &glDeleteProgram_enc;
12734 	this->glDeleteRenderbuffers = &glDeleteRenderbuffers_enc;
12735 	this->glDeleteShader = &glDeleteShader_enc;
12736 	this->glDeleteTextures = &glDeleteTextures_enc;
12737 	this->glDepthFunc = &glDepthFunc_enc;
12738 	this->glDepthMask = &glDepthMask_enc;
12739 	this->glDepthRangef = &glDepthRangef_enc;
12740 	this->glDetachShader = &glDetachShader_enc;
12741 	this->glDisable = &glDisable_enc;
12742 	this->glDisableVertexAttribArray = &glDisableVertexAttribArray_enc;
12743 	this->glDrawArrays = &glDrawArrays_enc;
12744 	this->glDrawElements = (glDrawElements_client_proc_t) &enc_unsupported;
12745 	this->glEnable = &glEnable_enc;
12746 	this->glEnableVertexAttribArray = &glEnableVertexAttribArray_enc;
12747 	this->glFinish = &glFinish_enc;
12748 	this->glFlush = &glFlush_enc;
12749 	this->glFramebufferRenderbuffer = &glFramebufferRenderbuffer_enc;
12750 	this->glFramebufferTexture2D = &glFramebufferTexture2D_enc;
12751 	this->glFrontFace = &glFrontFace_enc;
12752 	this->glGenBuffers = &glGenBuffers_enc;
12753 	this->glGenerateMipmap = &glGenerateMipmap_enc;
12754 	this->glGenFramebuffers = &glGenFramebuffers_enc;
12755 	this->glGenRenderbuffers = &glGenRenderbuffers_enc;
12756 	this->glGenTextures = &glGenTextures_enc;
12757 	this->glGetActiveAttrib = &glGetActiveAttrib_enc;
12758 	this->glGetActiveUniform = &glGetActiveUniform_enc;
12759 	this->glGetAttachedShaders = &glGetAttachedShaders_enc;
12760 	this->glGetAttribLocation = &glGetAttribLocation_enc;
12761 	this->glGetBooleanv = &glGetBooleanv_enc;
12762 	this->glGetBufferParameteriv = &glGetBufferParameteriv_enc;
12763 	this->glGetError = &glGetError_enc;
12764 	this->glGetFloatv = &glGetFloatv_enc;
12765 	this->glGetFramebufferAttachmentParameteriv = &glGetFramebufferAttachmentParameteriv_enc;
12766 	this->glGetIntegerv = &glGetIntegerv_enc;
12767 	this->glGetProgramiv = &glGetProgramiv_enc;
12768 	this->glGetProgramInfoLog = &glGetProgramInfoLog_enc;
12769 	this->glGetRenderbufferParameteriv = &glGetRenderbufferParameteriv_enc;
12770 	this->glGetShaderiv = &glGetShaderiv_enc;
12771 	this->glGetShaderInfoLog = &glGetShaderInfoLog_enc;
12772 	this->glGetShaderPrecisionFormat = &glGetShaderPrecisionFormat_enc;
12773 	this->glGetShaderSource = &glGetShaderSource_enc;
12774 	this->glGetString = (glGetString_client_proc_t) &enc_unsupported;
12775 	this->glGetTexParameterfv = &glGetTexParameterfv_enc;
12776 	this->glGetTexParameteriv = &glGetTexParameteriv_enc;
12777 	this->glGetUniformfv = &glGetUniformfv_enc;
12778 	this->glGetUniformiv = &glGetUniformiv_enc;
12779 	this->glGetUniformLocation = &glGetUniformLocation_enc;
12780 	this->glGetVertexAttribfv = &glGetVertexAttribfv_enc;
12781 	this->glGetVertexAttribiv = &glGetVertexAttribiv_enc;
12782 	this->glGetVertexAttribPointerv = (glGetVertexAttribPointerv_client_proc_t) &enc_unsupported;
12783 	this->glHint = &glHint_enc;
12784 	this->glIsBuffer = &glIsBuffer_enc;
12785 	this->glIsEnabled = &glIsEnabled_enc;
12786 	this->glIsFramebuffer = &glIsFramebuffer_enc;
12787 	this->glIsProgram = &glIsProgram_enc;
12788 	this->glIsRenderbuffer = &glIsRenderbuffer_enc;
12789 	this->glIsShader = &glIsShader_enc;
12790 	this->glIsTexture = &glIsTexture_enc;
12791 	this->glLineWidth = &glLineWidth_enc;
12792 	this->glLinkProgram = &glLinkProgram_enc;
12793 	this->glPixelStorei = &glPixelStorei_enc;
12794 	this->glPolygonOffset = &glPolygonOffset_enc;
12795 	this->glReadPixels = &glReadPixels_enc;
12796 	this->glReleaseShaderCompiler = &glReleaseShaderCompiler_enc;
12797 	this->glRenderbufferStorage = &glRenderbufferStorage_enc;
12798 	this->glSampleCoverage = &glSampleCoverage_enc;
12799 	this->glScissor = &glScissor_enc;
12800 	this->glShaderBinary = (glShaderBinary_client_proc_t) &enc_unsupported;
12801 	this->glShaderSource = (glShaderSource_client_proc_t) &enc_unsupported;
12802 	this->glStencilFunc = &glStencilFunc_enc;
12803 	this->glStencilFuncSeparate = &glStencilFuncSeparate_enc;
12804 	this->glStencilMask = &glStencilMask_enc;
12805 	this->glStencilMaskSeparate = &glStencilMaskSeparate_enc;
12806 	this->glStencilOp = &glStencilOp_enc;
12807 	this->glStencilOpSeparate = &glStencilOpSeparate_enc;
12808 	this->glTexImage2D = &glTexImage2D_enc;
12809 	this->glTexParameterf = &glTexParameterf_enc;
12810 	this->glTexParameterfv = &glTexParameterfv_enc;
12811 	this->glTexParameteri = &glTexParameteri_enc;
12812 	this->glTexParameteriv = &glTexParameteriv_enc;
12813 	this->glTexSubImage2D = &glTexSubImage2D_enc;
12814 	this->glUniform1f = &glUniform1f_enc;
12815 	this->glUniform1fv = &glUniform1fv_enc;
12816 	this->glUniform1i = &glUniform1i_enc;
12817 	this->glUniform1iv = &glUniform1iv_enc;
12818 	this->glUniform2f = &glUniform2f_enc;
12819 	this->glUniform2fv = &glUniform2fv_enc;
12820 	this->glUniform2i = &glUniform2i_enc;
12821 	this->glUniform2iv = &glUniform2iv_enc;
12822 	this->glUniform3f = &glUniform3f_enc;
12823 	this->glUniform3fv = &glUniform3fv_enc;
12824 	this->glUniform3i = &glUniform3i_enc;
12825 	this->glUniform3iv = &glUniform3iv_enc;
12826 	this->glUniform4f = &glUniform4f_enc;
12827 	this->glUniform4fv = &glUniform4fv_enc;
12828 	this->glUniform4i = &glUniform4i_enc;
12829 	this->glUniform4iv = &glUniform4iv_enc;
12830 	this->glUniformMatrix2fv = &glUniformMatrix2fv_enc;
12831 	this->glUniformMatrix3fv = &glUniformMatrix3fv_enc;
12832 	this->glUniformMatrix4fv = &glUniformMatrix4fv_enc;
12833 	this->glUseProgram = &glUseProgram_enc;
12834 	this->glValidateProgram = &glValidateProgram_enc;
12835 	this->glVertexAttrib1f = &glVertexAttrib1f_enc;
12836 	this->glVertexAttrib1fv = &glVertexAttrib1fv_enc;
12837 	this->glVertexAttrib2f = &glVertexAttrib2f_enc;
12838 	this->glVertexAttrib2fv = &glVertexAttrib2fv_enc;
12839 	this->glVertexAttrib3f = &glVertexAttrib3f_enc;
12840 	this->glVertexAttrib3fv = &glVertexAttrib3fv_enc;
12841 	this->glVertexAttrib4f = &glVertexAttrib4f_enc;
12842 	this->glVertexAttrib4fv = &glVertexAttrib4fv_enc;
12843 	this->glVertexAttribPointer = (glVertexAttribPointer_client_proc_t) &enc_unsupported;
12844 	this->glViewport = &glViewport_enc;
12845 	this->glEGLImageTargetTexture2DOES = &glEGLImageTargetTexture2DOES_enc;
12846 	this->glEGLImageTargetRenderbufferStorageOES = &glEGLImageTargetRenderbufferStorageOES_enc;
12847 	this->glGetProgramBinaryOES = (glGetProgramBinaryOES_client_proc_t) &enc_unsupported;
12848 	this->glProgramBinaryOES = (glProgramBinaryOES_client_proc_t) &enc_unsupported;
12849 	this->glMapBufferOES = (glMapBufferOES_client_proc_t) &enc_unsupported;
12850 	this->glUnmapBufferOES = &glUnmapBufferOES_enc;
12851 	this->glTexImage3DOES = &glTexImage3DOES_enc;
12852 	this->glTexSubImage3DOES = &glTexSubImage3DOES_enc;
12853 	this->glCopyTexSubImage3DOES = &glCopyTexSubImage3DOES_enc;
12854 	this->glCompressedTexImage3DOES = &glCompressedTexImage3DOES_enc;
12855 	this->glCompressedTexSubImage3DOES = &glCompressedTexSubImage3DOES_enc;
12856 	this->glFramebufferTexture3DOES = &glFramebufferTexture3DOES_enc;
12857 	this->glBindVertexArrayOES = &glBindVertexArrayOES_enc;
12858 	this->glDeleteVertexArraysOES = &glDeleteVertexArraysOES_enc;
12859 	this->glGenVertexArraysOES = &glGenVertexArraysOES_enc;
12860 	this->glIsVertexArrayOES = &glIsVertexArrayOES_enc;
12861 	this->glDiscardFramebufferEXT = &glDiscardFramebufferEXT_enc;
12862 	this->glMultiDrawArraysEXT = (glMultiDrawArraysEXT_client_proc_t) &enc_unsupported;
12863 	this->glMultiDrawElementsEXT = (glMultiDrawElementsEXT_client_proc_t) &enc_unsupported;
12864 	this->glGetPerfMonitorGroupsAMD = (glGetPerfMonitorGroupsAMD_client_proc_t) &enc_unsupported;
12865 	this->glGetPerfMonitorCountersAMD = (glGetPerfMonitorCountersAMD_client_proc_t) &enc_unsupported;
12866 	this->glGetPerfMonitorGroupStringAMD = (glGetPerfMonitorGroupStringAMD_client_proc_t) &enc_unsupported;
12867 	this->glGetPerfMonitorCounterStringAMD = (glGetPerfMonitorCounterStringAMD_client_proc_t) &enc_unsupported;
12868 	this->glGetPerfMonitorCounterInfoAMD = (glGetPerfMonitorCounterInfoAMD_client_proc_t) &enc_unsupported;
12869 	this->glGenPerfMonitorsAMD = (glGenPerfMonitorsAMD_client_proc_t) &enc_unsupported;
12870 	this->glDeletePerfMonitorsAMD = (glDeletePerfMonitorsAMD_client_proc_t) &enc_unsupported;
12871 	this->glSelectPerfMonitorCountersAMD = (glSelectPerfMonitorCountersAMD_client_proc_t) &enc_unsupported;
12872 	this->glBeginPerfMonitorAMD = (glBeginPerfMonitorAMD_client_proc_t) &enc_unsupported;
12873 	this->glEndPerfMonitorAMD = (glEndPerfMonitorAMD_client_proc_t) &enc_unsupported;
12874 	this->glGetPerfMonitorCounterDataAMD = (glGetPerfMonitorCounterDataAMD_client_proc_t) &enc_unsupported;
12875 	this->glRenderbufferStorageMultisampleIMG = (glRenderbufferStorageMultisampleIMG_client_proc_t) &enc_unsupported;
12876 	this->glFramebufferTexture2DMultisampleIMG = (glFramebufferTexture2DMultisampleIMG_client_proc_t) &enc_unsupported;
12877 	this->glDeleteFencesNV = (glDeleteFencesNV_client_proc_t) &enc_unsupported;
12878 	this->glGenFencesNV = (glGenFencesNV_client_proc_t) &enc_unsupported;
12879 	this->glIsFenceNV = (glIsFenceNV_client_proc_t) &enc_unsupported;
12880 	this->glTestFenceNV = (glTestFenceNV_client_proc_t) &enc_unsupported;
12881 	this->glGetFenceivNV = (glGetFenceivNV_client_proc_t) &enc_unsupported;
12882 	this->glFinishFenceNV = (glFinishFenceNV_client_proc_t) &enc_unsupported;
12883 	this->glSetFenceNV = (glSetFenceNV_client_proc_t) &enc_unsupported;
12884 	this->glCoverageMaskNV = (glCoverageMaskNV_client_proc_t) &enc_unsupported;
12885 	this->glCoverageOperationNV = (glCoverageOperationNV_client_proc_t) &enc_unsupported;
12886 	this->glGetDriverControlsQCOM = (glGetDriverControlsQCOM_client_proc_t) &enc_unsupported;
12887 	this->glGetDriverControlStringQCOM = (glGetDriverControlStringQCOM_client_proc_t) &enc_unsupported;
12888 	this->glEnableDriverControlQCOM = (glEnableDriverControlQCOM_client_proc_t) &enc_unsupported;
12889 	this->glDisableDriverControlQCOM = (glDisableDriverControlQCOM_client_proc_t) &enc_unsupported;
12890 	this->glExtGetTexturesQCOM = (glExtGetTexturesQCOM_client_proc_t) &enc_unsupported;
12891 	this->glExtGetBuffersQCOM = (glExtGetBuffersQCOM_client_proc_t) &enc_unsupported;
12892 	this->glExtGetRenderbuffersQCOM = (glExtGetRenderbuffersQCOM_client_proc_t) &enc_unsupported;
12893 	this->glExtGetFramebuffersQCOM = (glExtGetFramebuffersQCOM_client_proc_t) &enc_unsupported;
12894 	this->glExtGetTexLevelParameterivQCOM = (glExtGetTexLevelParameterivQCOM_client_proc_t) &enc_unsupported;
12895 	this->glExtTexObjectStateOverrideiQCOM = (glExtTexObjectStateOverrideiQCOM_client_proc_t) &enc_unsupported;
12896 	this->glExtGetTexSubImageQCOM = (glExtGetTexSubImageQCOM_client_proc_t) &enc_unsupported;
12897 	this->glExtGetBufferPointervQCOM = (glExtGetBufferPointervQCOM_client_proc_t) &enc_unsupported;
12898 	this->glExtGetShadersQCOM = (glExtGetShadersQCOM_client_proc_t) &enc_unsupported;
12899 	this->glExtGetProgramsQCOM = (glExtGetProgramsQCOM_client_proc_t) &enc_unsupported;
12900 	this->glExtIsProgramBinaryQCOM = (glExtIsProgramBinaryQCOM_client_proc_t) &enc_unsupported;
12901 	this->glExtGetProgramBinarySourceQCOM = (glExtGetProgramBinarySourceQCOM_client_proc_t) &enc_unsupported;
12902 	this->glStartTilingQCOM = (glStartTilingQCOM_client_proc_t) &enc_unsupported;
12903 	this->glEndTilingQCOM = (glEndTilingQCOM_client_proc_t) &enc_unsupported;
12904 	this->glVertexAttribPointerData = &glVertexAttribPointerData_enc;
12905 	this->glVertexAttribPointerOffset = &glVertexAttribPointerOffset_enc;
12906 	this->glDrawElementsOffset = &glDrawElementsOffset_enc;
12907 	this->glDrawElementsData = &glDrawElementsData_enc;
12908 	this->glGetCompressedTextureFormats = &glGetCompressedTextureFormats_enc;
12909 	this->glShaderString = &glShaderString_enc;
12910 	this->glFinishRoundTrip = &glFinishRoundTrip_enc;
12911 	this->glGenVertexArrays = &glGenVertexArrays_enc;
12912 	this->glBindVertexArray = &glBindVertexArray_enc;
12913 	this->glDeleteVertexArrays = &glDeleteVertexArrays_enc;
12914 	this->glIsVertexArray = &glIsVertexArray_enc;
12915 	this->glMapBufferRange = (glMapBufferRange_client_proc_t) &enc_unsupported;
12916 	this->glUnmapBuffer = (glUnmapBuffer_client_proc_t) &enc_unsupported;
12917 	this->glFlushMappedBufferRange = (glFlushMappedBufferRange_client_proc_t) &enc_unsupported;
12918 	this->glMapBufferRangeAEMU = &glMapBufferRangeAEMU_enc;
12919 	this->glUnmapBufferAEMU = &glUnmapBufferAEMU_enc;
12920 	this->glFlushMappedBufferRangeAEMU = &glFlushMappedBufferRangeAEMU_enc;
12921 	this->glReadPixelsOffsetAEMU = &glReadPixelsOffsetAEMU_enc;
12922 	this->glCompressedTexImage2DOffsetAEMU = &glCompressedTexImage2DOffsetAEMU_enc;
12923 	this->glCompressedTexSubImage2DOffsetAEMU = &glCompressedTexSubImage2DOffsetAEMU_enc;
12924 	this->glTexImage2DOffsetAEMU = &glTexImage2DOffsetAEMU_enc;
12925 	this->glTexSubImage2DOffsetAEMU = &glTexSubImage2DOffsetAEMU_enc;
12926 	this->glBindBufferRange = &glBindBufferRange_enc;
12927 	this->glBindBufferBase = &glBindBufferBase_enc;
12928 	this->glCopyBufferSubData = &glCopyBufferSubData_enc;
12929 	this->glClearBufferiv = &glClearBufferiv_enc;
12930 	this->glClearBufferuiv = &glClearBufferuiv_enc;
12931 	this->glClearBufferfv = &glClearBufferfv_enc;
12932 	this->glClearBufferfi = &glClearBufferfi_enc;
12933 	this->glGetBufferParameteri64v = (glGetBufferParameteri64v_client_proc_t) &enc_unsupported;
12934 	this->glGetBufferPointerv = (glGetBufferPointerv_client_proc_t) &enc_unsupported;
12935 	this->glUniformBlockBinding = &glUniformBlockBinding_enc;
12936 	this->glGetUniformBlockIndex = &glGetUniformBlockIndex_enc;
12937 	this->glGetUniformIndices = (glGetUniformIndices_client_proc_t) &enc_unsupported;
12938 	this->glGetUniformIndicesAEMU = &glGetUniformIndicesAEMU_enc;
12939 	this->glGetActiveUniformBlockiv = &glGetActiveUniformBlockiv_enc;
12940 	this->glGetActiveUniformBlockName = &glGetActiveUniformBlockName_enc;
12941 	this->glUniform1ui = &glUniform1ui_enc;
12942 	this->glUniform2ui = &glUniform2ui_enc;
12943 	this->glUniform3ui = &glUniform3ui_enc;
12944 	this->glUniform4ui = &glUniform4ui_enc;
12945 	this->glUniform1uiv = &glUniform1uiv_enc;
12946 	this->glUniform2uiv = &glUniform2uiv_enc;
12947 	this->glUniform3uiv = &glUniform3uiv_enc;
12948 	this->glUniform4uiv = &glUniform4uiv_enc;
12949 	this->glUniformMatrix2x3fv = &glUniformMatrix2x3fv_enc;
12950 	this->glUniformMatrix3x2fv = &glUniformMatrix3x2fv_enc;
12951 	this->glUniformMatrix2x4fv = &glUniformMatrix2x4fv_enc;
12952 	this->glUniformMatrix4x2fv = &glUniformMatrix4x2fv_enc;
12953 	this->glUniformMatrix3x4fv = &glUniformMatrix3x4fv_enc;
12954 	this->glUniformMatrix4x3fv = &glUniformMatrix4x3fv_enc;
12955 	this->glGetUniformuiv = &glGetUniformuiv_enc;
12956 	this->glGetActiveUniformsiv = &glGetActiveUniformsiv_enc;
12957 	this->glVertexAttribI4i = &glVertexAttribI4i_enc;
12958 	this->glVertexAttribI4ui = &glVertexAttribI4ui_enc;
12959 	this->glVertexAttribI4iv = &glVertexAttribI4iv_enc;
12960 	this->glVertexAttribI4uiv = &glVertexAttribI4uiv_enc;
12961 	this->glVertexAttribIPointer = (glVertexAttribIPointer_client_proc_t) &enc_unsupported;
12962 	this->glVertexAttribIPointerOffsetAEMU = &glVertexAttribIPointerOffsetAEMU_enc;
12963 	this->glVertexAttribIPointerDataAEMU = &glVertexAttribIPointerDataAEMU_enc;
12964 	this->glGetVertexAttribIiv = &glGetVertexAttribIiv_enc;
12965 	this->glGetVertexAttribIuiv = &glGetVertexAttribIuiv_enc;
12966 	this->glVertexAttribDivisor = &glVertexAttribDivisor_enc;
12967 	this->glDrawArraysInstanced = &glDrawArraysInstanced_enc;
12968 	this->glDrawElementsInstanced = (glDrawElementsInstanced_client_proc_t) &enc_unsupported;
12969 	this->glDrawElementsInstancedDataAEMU = &glDrawElementsInstancedDataAEMU_enc;
12970 	this->glDrawElementsInstancedOffsetAEMU = &glDrawElementsInstancedOffsetAEMU_enc;
12971 	this->glDrawRangeElements = (glDrawRangeElements_client_proc_t) &enc_unsupported;
12972 	this->glDrawRangeElementsDataAEMU = &glDrawRangeElementsDataAEMU_enc;
12973 	this->glDrawRangeElementsOffsetAEMU = &glDrawRangeElementsOffsetAEMU_enc;
12974 	this->glFenceSync = (glFenceSync_client_proc_t) &enc_unsupported;
12975 	this->glClientWaitSync = (glClientWaitSync_client_proc_t) &enc_unsupported;
12976 	this->glWaitSync = (glWaitSync_client_proc_t) &enc_unsupported;
12977 	this->glDeleteSync = (glDeleteSync_client_proc_t) &enc_unsupported;
12978 	this->glIsSync = (glIsSync_client_proc_t) &enc_unsupported;
12979 	this->glGetSynciv = (glGetSynciv_client_proc_t) &enc_unsupported;
12980 	this->glFenceSyncAEMU = &glFenceSyncAEMU_enc;
12981 	this->glClientWaitSyncAEMU = &glClientWaitSyncAEMU_enc;
12982 	this->glWaitSyncAEMU = &glWaitSyncAEMU_enc;
12983 	this->glDeleteSyncAEMU = &glDeleteSyncAEMU_enc;
12984 	this->glIsSyncAEMU = &glIsSyncAEMU_enc;
12985 	this->glGetSyncivAEMU = &glGetSyncivAEMU_enc;
12986 	this->glDrawBuffers = &glDrawBuffers_enc;
12987 	this->glReadBuffer = &glReadBuffer_enc;
12988 	this->glBlitFramebuffer = &glBlitFramebuffer_enc;
12989 	this->glInvalidateFramebuffer = &glInvalidateFramebuffer_enc;
12990 	this->glInvalidateSubFramebuffer = &glInvalidateSubFramebuffer_enc;
12991 	this->glFramebufferTextureLayer = &glFramebufferTextureLayer_enc;
12992 	this->glRenderbufferStorageMultisample = &glRenderbufferStorageMultisample_enc;
12993 	this->glTexStorage2D = &glTexStorage2D_enc;
12994 	this->glGetInternalformativ = &glGetInternalformativ_enc;
12995 	this->glBeginTransformFeedback = &glBeginTransformFeedback_enc;
12996 	this->glEndTransformFeedback = &glEndTransformFeedback_enc;
12997 	this->glGenTransformFeedbacks = &glGenTransformFeedbacks_enc;
12998 	this->glDeleteTransformFeedbacks = &glDeleteTransformFeedbacks_enc;
12999 	this->glBindTransformFeedback = &glBindTransformFeedback_enc;
13000 	this->glPauseTransformFeedback = &glPauseTransformFeedback_enc;
13001 	this->glResumeTransformFeedback = &glResumeTransformFeedback_enc;
13002 	this->glIsTransformFeedback = &glIsTransformFeedback_enc;
13003 	this->glTransformFeedbackVaryings = (glTransformFeedbackVaryings_client_proc_t) &enc_unsupported;
13004 	this->glTransformFeedbackVaryingsAEMU = &glTransformFeedbackVaryingsAEMU_enc;
13005 	this->glGetTransformFeedbackVarying = &glGetTransformFeedbackVarying_enc;
13006 	this->glGenSamplers = &glGenSamplers_enc;
13007 	this->glDeleteSamplers = &glDeleteSamplers_enc;
13008 	this->glBindSampler = &glBindSampler_enc;
13009 	this->glSamplerParameterf = &glSamplerParameterf_enc;
13010 	this->glSamplerParameteri = &glSamplerParameteri_enc;
13011 	this->glSamplerParameterfv = &glSamplerParameterfv_enc;
13012 	this->glSamplerParameteriv = &glSamplerParameteriv_enc;
13013 	this->glGetSamplerParameterfv = &glGetSamplerParameterfv_enc;
13014 	this->glGetSamplerParameteriv = &glGetSamplerParameteriv_enc;
13015 	this->glIsSampler = &glIsSampler_enc;
13016 	this->glGenQueries = &glGenQueries_enc;
13017 	this->glDeleteQueries = &glDeleteQueries_enc;
13018 	this->glBeginQuery = &glBeginQuery_enc;
13019 	this->glEndQuery = &glEndQuery_enc;
13020 	this->glGetQueryiv = &glGetQueryiv_enc;
13021 	this->glGetQueryObjectuiv = &glGetQueryObjectuiv_enc;
13022 	this->glIsQuery = &glIsQuery_enc;
13023 	this->glProgramParameteri = &glProgramParameteri_enc;
13024 	this->glProgramBinary = &glProgramBinary_enc;
13025 	this->glGetProgramBinary = &glGetProgramBinary_enc;
13026 	this->glGetFragDataLocation = &glGetFragDataLocation_enc;
13027 	this->glGetInteger64v = &glGetInteger64v_enc;
13028 	this->glGetIntegeri_v = &glGetIntegeri_v_enc;
13029 	this->glGetInteger64i_v = &glGetInteger64i_v_enc;
13030 	this->glTexImage3D = &glTexImage3D_enc;
13031 	this->glTexImage3DOffsetAEMU = &glTexImage3DOffsetAEMU_enc;
13032 	this->glTexStorage3D = &glTexStorage3D_enc;
13033 	this->glTexSubImage3D = &glTexSubImage3D_enc;
13034 	this->glTexSubImage3DOffsetAEMU = &glTexSubImage3DOffsetAEMU_enc;
13035 	this->glCompressedTexImage3D = &glCompressedTexImage3D_enc;
13036 	this->glCompressedTexImage3DOffsetAEMU = &glCompressedTexImage3DOffsetAEMU_enc;
13037 	this->glCompressedTexSubImage3D = &glCompressedTexSubImage3D_enc;
13038 	this->glCompressedTexSubImage3DOffsetAEMU = &glCompressedTexSubImage3DOffsetAEMU_enc;
13039 	this->glCopyTexSubImage3D = &glCopyTexSubImage3D_enc;
13040 	this->glGetStringi = (glGetStringi_client_proc_t) &enc_unsupported;
13041 	this->glGetBooleani_v = &glGetBooleani_v_enc;
13042 	this->glMemoryBarrier = &glMemoryBarrier_enc;
13043 	this->glMemoryBarrierByRegion = &glMemoryBarrierByRegion_enc;
13044 	this->glGenProgramPipelines = &glGenProgramPipelines_enc;
13045 	this->glDeleteProgramPipelines = &glDeleteProgramPipelines_enc;
13046 	this->glBindProgramPipeline = &glBindProgramPipeline_enc;
13047 	this->glGetProgramPipelineiv = &glGetProgramPipelineiv_enc;
13048 	this->glGetProgramPipelineInfoLog = &glGetProgramPipelineInfoLog_enc;
13049 	this->glValidateProgramPipeline = &glValidateProgramPipeline_enc;
13050 	this->glIsProgramPipeline = &glIsProgramPipeline_enc;
13051 	this->glUseProgramStages = &glUseProgramStages_enc;
13052 	this->glActiveShaderProgram = &glActiveShaderProgram_enc;
13053 	this->glCreateShaderProgramv = (glCreateShaderProgramv_client_proc_t) &enc_unsupported;
13054 	this->glCreateShaderProgramvAEMU = &glCreateShaderProgramvAEMU_enc;
13055 	this->glProgramUniform1f = &glProgramUniform1f_enc;
13056 	this->glProgramUniform2f = &glProgramUniform2f_enc;
13057 	this->glProgramUniform3f = &glProgramUniform3f_enc;
13058 	this->glProgramUniform4f = &glProgramUniform4f_enc;
13059 	this->glProgramUniform1i = &glProgramUniform1i_enc;
13060 	this->glProgramUniform2i = &glProgramUniform2i_enc;
13061 	this->glProgramUniform3i = &glProgramUniform3i_enc;
13062 	this->glProgramUniform4i = &glProgramUniform4i_enc;
13063 	this->glProgramUniform1ui = &glProgramUniform1ui_enc;
13064 	this->glProgramUniform2ui = &glProgramUniform2ui_enc;
13065 	this->glProgramUniform3ui = &glProgramUniform3ui_enc;
13066 	this->glProgramUniform4ui = &glProgramUniform4ui_enc;
13067 	this->glProgramUniform1fv = &glProgramUniform1fv_enc;
13068 	this->glProgramUniform2fv = &glProgramUniform2fv_enc;
13069 	this->glProgramUniform3fv = &glProgramUniform3fv_enc;
13070 	this->glProgramUniform4fv = &glProgramUniform4fv_enc;
13071 	this->glProgramUniform1iv = &glProgramUniform1iv_enc;
13072 	this->glProgramUniform2iv = &glProgramUniform2iv_enc;
13073 	this->glProgramUniform3iv = &glProgramUniform3iv_enc;
13074 	this->glProgramUniform4iv = &glProgramUniform4iv_enc;
13075 	this->glProgramUniform1uiv = &glProgramUniform1uiv_enc;
13076 	this->glProgramUniform2uiv = &glProgramUniform2uiv_enc;
13077 	this->glProgramUniform3uiv = &glProgramUniform3uiv_enc;
13078 	this->glProgramUniform4uiv = &glProgramUniform4uiv_enc;
13079 	this->glProgramUniformMatrix2fv = &glProgramUniformMatrix2fv_enc;
13080 	this->glProgramUniformMatrix3fv = &glProgramUniformMatrix3fv_enc;
13081 	this->glProgramUniformMatrix4fv = &glProgramUniformMatrix4fv_enc;
13082 	this->glProgramUniformMatrix2x3fv = &glProgramUniformMatrix2x3fv_enc;
13083 	this->glProgramUniformMatrix3x2fv = &glProgramUniformMatrix3x2fv_enc;
13084 	this->glProgramUniformMatrix2x4fv = &glProgramUniformMatrix2x4fv_enc;
13085 	this->glProgramUniformMatrix4x2fv = &glProgramUniformMatrix4x2fv_enc;
13086 	this->glProgramUniformMatrix3x4fv = &glProgramUniformMatrix3x4fv_enc;
13087 	this->glProgramUniformMatrix4x3fv = &glProgramUniformMatrix4x3fv_enc;
13088 	this->glGetProgramInterfaceiv = &glGetProgramInterfaceiv_enc;
13089 	this->glGetProgramResourceiv = &glGetProgramResourceiv_enc;
13090 	this->glGetProgramResourceIndex = &glGetProgramResourceIndex_enc;
13091 	this->glGetProgramResourceLocation = &glGetProgramResourceLocation_enc;
13092 	this->glGetProgramResourceName = &glGetProgramResourceName_enc;
13093 	this->glBindImageTexture = &glBindImageTexture_enc;
13094 	this->glDispatchCompute = &glDispatchCompute_enc;
13095 	this->glDispatchComputeIndirect = &glDispatchComputeIndirect_enc;
13096 	this->glBindVertexBuffer = &glBindVertexBuffer_enc;
13097 	this->glVertexAttribBinding = &glVertexAttribBinding_enc;
13098 	this->glVertexAttribFormat = &glVertexAttribFormat_enc;
13099 	this->glVertexAttribIFormat = &glVertexAttribIFormat_enc;
13100 	this->glVertexBindingDivisor = &glVertexBindingDivisor_enc;
13101 	this->glDrawArraysIndirect = (glDrawArraysIndirect_client_proc_t) &enc_unsupported;
13102 	this->glDrawArraysIndirectDataAEMU = &glDrawArraysIndirectDataAEMU_enc;
13103 	this->glDrawArraysIndirectOffsetAEMU = &glDrawArraysIndirectOffsetAEMU_enc;
13104 	this->glDrawElementsIndirect = (glDrawElementsIndirect_client_proc_t) &enc_unsupported;
13105 	this->glDrawElementsIndirectDataAEMU = &glDrawElementsIndirectDataAEMU_enc;
13106 	this->glDrawElementsIndirectOffsetAEMU = &glDrawElementsIndirectOffsetAEMU_enc;
13107 	this->glTexStorage2DMultisample = &glTexStorage2DMultisample_enc;
13108 	this->glSampleMaski = &glSampleMaski_enc;
13109 	this->glGetMultisamplefv = &glGetMultisamplefv_enc;
13110 	this->glFramebufferParameteri = &glFramebufferParameteri_enc;
13111 	this->glGetFramebufferParameteriv = &glGetFramebufferParameteriv_enc;
13112 	this->glGetTexLevelParameterfv = &glGetTexLevelParameterfv_enc;
13113 	this->glGetTexLevelParameteriv = &glGetTexLevelParameteriv_enc;
13114 	this->glMapBufferRangeDMA = &glMapBufferRangeDMA_enc;
13115 	this->glUnmapBufferDMA = &glUnmapBufferDMA_enc;
13116 	this->glMapBufferRangeDirect = &glMapBufferRangeDirect_enc;
13117 	this->glUnmapBufferDirect = &glUnmapBufferDirect_enc;
13118 	this->glFlushMappedBufferRangeDirect = &glFlushMappedBufferRangeDirect_enc;
13119 	this->glGetGraphicsResetStatusEXT = &glGetGraphicsResetStatusEXT_enc;
13120 	this->glReadnPixelsEXT = &glReadnPixelsEXT_enc;
13121 	this->glGetnUniformfvEXT = &glGetnUniformfvEXT_enc;
13122 	this->glGetnUniformivEXT = &glGetnUniformivEXT_enc;
13123 	this->glDrawArraysNullAEMU = &glDrawArraysNullAEMU_enc;
13124 	this->glDrawElementsNullAEMU = (glDrawElementsNullAEMU_client_proc_t) &enc_unsupported;
13125 	this->glDrawElementsOffsetNullAEMU = &glDrawElementsOffsetNullAEMU_enc;
13126 	this->glDrawElementsDataNullAEMU = &glDrawElementsDataNullAEMU_enc;
13127 	this->glUnmapBufferAsyncAEMU = &glUnmapBufferAsyncAEMU_enc;
13128 	this->glFlushMappedBufferRangeAEMU2 = &glFlushMappedBufferRangeAEMU2_enc;
13129 	this->glBufferDataSyncAEMU = &glBufferDataSyncAEMU_enc;
13130 	this->glTexBufferOES = &glTexBufferOES_enc;
13131 	this->glTexBufferRangeOES = &glTexBufferRangeOES_enc;
13132 	this->glTexBufferEXT = &glTexBufferEXT_enc;
13133 	this->glTexBufferRangeEXT = &glTexBufferRangeEXT_enc;
13134 	this->glEnableiEXT = &glEnableiEXT_enc;
13135 	this->glDisableiEXT = &glDisableiEXT_enc;
13136 	this->glBlendEquationiEXT = &glBlendEquationiEXT_enc;
13137 	this->glBlendEquationSeparateiEXT = &glBlendEquationSeparateiEXT_enc;
13138 	this->glBlendFunciEXT = &glBlendFunciEXT_enc;
13139 	this->glBlendFuncSeparateiEXT = &glBlendFuncSeparateiEXT_enc;
13140 	this->glColorMaskiEXT = &glColorMaskiEXT_enc;
13141 	this->glIsEnablediEXT = &glIsEnablediEXT_enc;
13142 }
13143 
13144