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 <stdio.h>
12
13namespace {
14
15void enc_unsupported()
16{
17	ALOGE("Function is unsupported\n");
18}
19
20void glActiveTexture_enc(void *self , GLenum texture)
21{
22
23	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
24	IOStream *stream = ctx->m_stream;
25	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
26	bool useChecksum = checksumCalculator->getVersion() > 0;
27
28	 unsigned char *ptr;
29	 unsigned char *buf;
30	 const size_t sizeWithoutChecksum = 8 + 4;
31	 const size_t checksumSize = checksumCalculator->checksumByteSize();
32	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
33	buf = stream->alloc(totalSize);
34	ptr = buf;
35	int tmp = OP_glActiveTexture;memcpy(ptr, &tmp, 4); ptr += 4;
36	memcpy(ptr, &totalSize, 4);  ptr += 4;
37
38		memcpy(ptr, &texture, 4); ptr += 4;
39
40	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
41	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
42
43}
44
45void glAttachShader_enc(void *self , GLuint program, GLuint shader)
46{
47
48	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
49	IOStream *stream = ctx->m_stream;
50	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
51	bool useChecksum = checksumCalculator->getVersion() > 0;
52
53	 unsigned char *ptr;
54	 unsigned char *buf;
55	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
56	 const size_t checksumSize = checksumCalculator->checksumByteSize();
57	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
58	buf = stream->alloc(totalSize);
59	ptr = buf;
60	int tmp = OP_glAttachShader;memcpy(ptr, &tmp, 4); ptr += 4;
61	memcpy(ptr, &totalSize, 4);  ptr += 4;
62
63		memcpy(ptr, &program, 4); ptr += 4;
64		memcpy(ptr, &shader, 4); ptr += 4;
65
66	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
67	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
68
69}
70
71void glBindAttribLocation_enc(void *self , GLuint program, GLuint index, const GLchar* name)
72{
73
74	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
75	IOStream *stream = ctx->m_stream;
76	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
77	bool useChecksum = checksumCalculator->getVersion() > 0;
78
79	const unsigned int __size_name =  (strlen(name) + 1);
80	 unsigned char *ptr;
81	 unsigned char *buf;
82	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
83	 const size_t checksumSize = checksumCalculator->checksumByteSize();
84	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
85	buf = stream->alloc(totalSize);
86	ptr = buf;
87	int tmp = OP_glBindAttribLocation;memcpy(ptr, &tmp, 4); ptr += 4;
88	memcpy(ptr, &totalSize, 4);  ptr += 4;
89
90		memcpy(ptr, &program, 4); ptr += 4;
91		memcpy(ptr, &index, 4); ptr += 4;
92	*(unsigned int *)(ptr) = __size_name; ptr += 4;
93	memcpy(ptr, name, __size_name);ptr += __size_name;
94
95	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
96	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
97
98}
99
100void glBindBuffer_enc(void *self , GLenum target, GLuint buffer)
101{
102
103	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
104	IOStream *stream = ctx->m_stream;
105	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
106	bool useChecksum = checksumCalculator->getVersion() > 0;
107
108	 unsigned char *ptr;
109	 unsigned char *buf;
110	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
111	 const size_t checksumSize = checksumCalculator->checksumByteSize();
112	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
113	buf = stream->alloc(totalSize);
114	ptr = buf;
115	int tmp = OP_glBindBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
116	memcpy(ptr, &totalSize, 4);  ptr += 4;
117
118		memcpy(ptr, &target, 4); ptr += 4;
119		memcpy(ptr, &buffer, 4); ptr += 4;
120
121	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
122	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
123
124}
125
126void glBindFramebuffer_enc(void *self , GLenum target, GLuint framebuffer)
127{
128
129	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
130	IOStream *stream = ctx->m_stream;
131	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
132	bool useChecksum = checksumCalculator->getVersion() > 0;
133
134	 unsigned char *ptr;
135	 unsigned char *buf;
136	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
137	 const size_t checksumSize = checksumCalculator->checksumByteSize();
138	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
139	buf = stream->alloc(totalSize);
140	ptr = buf;
141	int tmp = OP_glBindFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
142	memcpy(ptr, &totalSize, 4);  ptr += 4;
143
144		memcpy(ptr, &target, 4); ptr += 4;
145		memcpy(ptr, &framebuffer, 4); ptr += 4;
146
147	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
148	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
149
150}
151
152void glBindRenderbuffer_enc(void *self , GLenum target, GLuint renderbuffer)
153{
154
155	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
156	IOStream *stream = ctx->m_stream;
157	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
158	bool useChecksum = checksumCalculator->getVersion() > 0;
159
160	 unsigned char *ptr;
161	 unsigned char *buf;
162	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
163	 const size_t checksumSize = checksumCalculator->checksumByteSize();
164	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
165	buf = stream->alloc(totalSize);
166	ptr = buf;
167	int tmp = OP_glBindRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
168	memcpy(ptr, &totalSize, 4);  ptr += 4;
169
170		memcpy(ptr, &target, 4); ptr += 4;
171		memcpy(ptr, &renderbuffer, 4); ptr += 4;
172
173	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
174	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
175
176}
177
178void glBindTexture_enc(void *self , GLenum target, GLuint texture)
179{
180
181	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
182	IOStream *stream = ctx->m_stream;
183	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
184	bool useChecksum = checksumCalculator->getVersion() > 0;
185
186	 unsigned char *ptr;
187	 unsigned char *buf;
188	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
189	 const size_t checksumSize = checksumCalculator->checksumByteSize();
190	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
191	buf = stream->alloc(totalSize);
192	ptr = buf;
193	int tmp = OP_glBindTexture;memcpy(ptr, &tmp, 4); ptr += 4;
194	memcpy(ptr, &totalSize, 4);  ptr += 4;
195
196		memcpy(ptr, &target, 4); ptr += 4;
197		memcpy(ptr, &texture, 4); ptr += 4;
198
199	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
200	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
201
202}
203
204void glBlendColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
205{
206
207	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
208	IOStream *stream = ctx->m_stream;
209	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
210	bool useChecksum = checksumCalculator->getVersion() > 0;
211
212	 unsigned char *ptr;
213	 unsigned char *buf;
214	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
215	 const size_t checksumSize = checksumCalculator->checksumByteSize();
216	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
217	buf = stream->alloc(totalSize);
218	ptr = buf;
219	int tmp = OP_glBlendColor;memcpy(ptr, &tmp, 4); ptr += 4;
220	memcpy(ptr, &totalSize, 4);  ptr += 4;
221
222		memcpy(ptr, &red, 4); ptr += 4;
223		memcpy(ptr, &green, 4); ptr += 4;
224		memcpy(ptr, &blue, 4); ptr += 4;
225		memcpy(ptr, &alpha, 4); ptr += 4;
226
227	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
228	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
229
230}
231
232void glBlendEquation_enc(void *self , GLenum mode)
233{
234
235	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
236	IOStream *stream = ctx->m_stream;
237	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
238	bool useChecksum = checksumCalculator->getVersion() > 0;
239
240	 unsigned char *ptr;
241	 unsigned char *buf;
242	 const size_t sizeWithoutChecksum = 8 + 4;
243	 const size_t checksumSize = checksumCalculator->checksumByteSize();
244	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
245	buf = stream->alloc(totalSize);
246	ptr = buf;
247	int tmp = OP_glBlendEquation;memcpy(ptr, &tmp, 4); ptr += 4;
248	memcpy(ptr, &totalSize, 4);  ptr += 4;
249
250		memcpy(ptr, &mode, 4); ptr += 4;
251
252	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
253	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
254
255}
256
257void glBlendEquationSeparate_enc(void *self , GLenum modeRGB, GLenum modeAlpha)
258{
259
260	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
261	IOStream *stream = ctx->m_stream;
262	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
263	bool useChecksum = checksumCalculator->getVersion() > 0;
264
265	 unsigned char *ptr;
266	 unsigned char *buf;
267	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
268	 const size_t checksumSize = checksumCalculator->checksumByteSize();
269	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
270	buf = stream->alloc(totalSize);
271	ptr = buf;
272	int tmp = OP_glBlendEquationSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
273	memcpy(ptr, &totalSize, 4);  ptr += 4;
274
275		memcpy(ptr, &modeRGB, 4); ptr += 4;
276		memcpy(ptr, &modeAlpha, 4); ptr += 4;
277
278	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
279	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
280
281}
282
283void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor)
284{
285
286	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
287	IOStream *stream = ctx->m_stream;
288	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
289	bool useChecksum = checksumCalculator->getVersion() > 0;
290
291	 unsigned char *ptr;
292	 unsigned char *buf;
293	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
294	 const size_t checksumSize = checksumCalculator->checksumByteSize();
295	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
296	buf = stream->alloc(totalSize);
297	ptr = buf;
298	int tmp = OP_glBlendFunc;memcpy(ptr, &tmp, 4); ptr += 4;
299	memcpy(ptr, &totalSize, 4);  ptr += 4;
300
301		memcpy(ptr, &sfactor, 4); ptr += 4;
302		memcpy(ptr, &dfactor, 4); ptr += 4;
303
304	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
305	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
306
307}
308
309void glBlendFuncSeparate_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
310{
311
312	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
313	IOStream *stream = ctx->m_stream;
314	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
315	bool useChecksum = checksumCalculator->getVersion() > 0;
316
317	 unsigned char *ptr;
318	 unsigned char *buf;
319	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
320	 const size_t checksumSize = checksumCalculator->checksumByteSize();
321	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
322	buf = stream->alloc(totalSize);
323	ptr = buf;
324	int tmp = OP_glBlendFuncSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
325	memcpy(ptr, &totalSize, 4);  ptr += 4;
326
327		memcpy(ptr, &srcRGB, 4); ptr += 4;
328		memcpy(ptr, &dstRGB, 4); ptr += 4;
329		memcpy(ptr, &srcAlpha, 4); ptr += 4;
330		memcpy(ptr, &dstAlpha, 4); ptr += 4;
331
332	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
333	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
334
335}
336
337void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
338{
339
340	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
341	IOStream *stream = ctx->m_stream;
342	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
343	bool useChecksum = checksumCalculator->getVersion() > 0;
344
345	const unsigned int __size_data = ((data != NULL) ?  size : 0);
346	 unsigned char *ptr;
347	 unsigned char *buf;
348	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
349	 const size_t checksumSize = checksumCalculator->checksumByteSize();
350	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
351	buf = stream->alloc(8 + 4 + 4);
352	ptr = buf;
353	int tmp = OP_glBufferData;memcpy(ptr, &tmp, 4); ptr += 4;
354	memcpy(ptr, &totalSize, 4);  ptr += 4;
355
356		memcpy(ptr, &target, 4); ptr += 4;
357		memcpy(ptr, &size, 4); ptr += 4;
358
359	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
360	stream->flush();
361	stream->writeFully(&__size_data,4);
362	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
363	if (data != NULL) {
364		stream->writeFully(data, __size_data);
365		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
366	}
367	buf = stream->alloc(4);
368	ptr = buf;
369		memcpy(ptr, &usage, 4); ptr += 4;
370
371	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
372	buf = stream->alloc(checksumSize);
373	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
374
375}
376
377void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
378{
379
380	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
381	IOStream *stream = ctx->m_stream;
382	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
383	bool useChecksum = checksumCalculator->getVersion() > 0;
384
385	const unsigned int __size_data = ((data != NULL) ?  size : 0);
386	 unsigned char *ptr;
387	 unsigned char *buf;
388	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 1*4;
389	 const size_t checksumSize = checksumCalculator->checksumByteSize();
390	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
391	buf = stream->alloc(8 + 4 + 4 + 4);
392	ptr = buf;
393	int tmp = OP_glBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
394	memcpy(ptr, &totalSize, 4);  ptr += 4;
395
396		memcpy(ptr, &target, 4); ptr += 4;
397		memcpy(ptr, &offset, 4); ptr += 4;
398		memcpy(ptr, &size, 4); ptr += 4;
399
400	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
401	stream->flush();
402	stream->writeFully(&__size_data,4);
403	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
404	if (data != NULL) {
405		stream->writeFully(data, __size_data);
406		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
407	}
408	buf = stream->alloc(checksumSize);
409	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
410
411}
412
413GLenum glCheckFramebufferStatus_enc(void *self , GLenum target)
414{
415
416	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
417	IOStream *stream = ctx->m_stream;
418	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
419	bool useChecksum = checksumCalculator->getVersion() > 0;
420
421	 unsigned char *ptr;
422	 unsigned char *buf;
423	 const size_t sizeWithoutChecksum = 8 + 4;
424	 const size_t checksumSize = checksumCalculator->checksumByteSize();
425	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
426	buf = stream->alloc(totalSize);
427	ptr = buf;
428	int tmp = OP_glCheckFramebufferStatus;memcpy(ptr, &tmp, 4); ptr += 4;
429	memcpy(ptr, &totalSize, 4);  ptr += 4;
430
431		memcpy(ptr, &target, 4); ptr += 4;
432
433	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
434	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
435
436
437	GLenum retval;
438	stream->readback(&retval, 4);
439	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
440	if (useChecksum) {
441		unsigned char *checksumBufPtr = NULL;
442		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
443		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
444		stream->readback(checksumBufPtr, checksumSize);
445		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
446			ALOGE("glCheckFramebufferStatus: GL communication error, please report this issue to b.android.com.\n");
447			abort();
448		}
449	}
450	return retval;
451}
452
453void glClear_enc(void *self , GLbitfield mask)
454{
455
456	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
457	IOStream *stream = ctx->m_stream;
458	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_glClear;memcpy(ptr, &tmp, 4); ptr += 4;
469	memcpy(ptr, &totalSize, 4);  ptr += 4;
470
471		memcpy(ptr, &mask, 4); ptr += 4;
472
473	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
474	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
475
476}
477
478void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
479{
480
481	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
482	IOStream *stream = ctx->m_stream;
483	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
484	bool useChecksum = checksumCalculator->getVersion() > 0;
485
486	 unsigned char *ptr;
487	 unsigned char *buf;
488	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
489	 const size_t checksumSize = checksumCalculator->checksumByteSize();
490	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
491	buf = stream->alloc(totalSize);
492	ptr = buf;
493	int tmp = OP_glClearColor;memcpy(ptr, &tmp, 4); ptr += 4;
494	memcpy(ptr, &totalSize, 4);  ptr += 4;
495
496		memcpy(ptr, &red, 4); ptr += 4;
497		memcpy(ptr, &green, 4); ptr += 4;
498		memcpy(ptr, &blue, 4); ptr += 4;
499		memcpy(ptr, &alpha, 4); ptr += 4;
500
501	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
502	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
503
504}
505
506void glClearDepthf_enc(void *self , GLclampf depth)
507{
508
509	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
510	IOStream *stream = ctx->m_stream;
511	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
512	bool useChecksum = checksumCalculator->getVersion() > 0;
513
514	 unsigned char *ptr;
515	 unsigned char *buf;
516	 const size_t sizeWithoutChecksum = 8 + 4;
517	 const size_t checksumSize = checksumCalculator->checksumByteSize();
518	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
519	buf = stream->alloc(totalSize);
520	ptr = buf;
521	int tmp = OP_glClearDepthf;memcpy(ptr, &tmp, 4); ptr += 4;
522	memcpy(ptr, &totalSize, 4);  ptr += 4;
523
524		memcpy(ptr, &depth, 4); ptr += 4;
525
526	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
527	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
528
529}
530
531void glClearStencil_enc(void *self , GLint s)
532{
533
534	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
535	IOStream *stream = ctx->m_stream;
536	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
537	bool useChecksum = checksumCalculator->getVersion() > 0;
538
539	 unsigned char *ptr;
540	 unsigned char *buf;
541	 const size_t sizeWithoutChecksum = 8 + 4;
542	 const size_t checksumSize = checksumCalculator->checksumByteSize();
543	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
544	buf = stream->alloc(totalSize);
545	ptr = buf;
546	int tmp = OP_glClearStencil;memcpy(ptr, &tmp, 4); ptr += 4;
547	memcpy(ptr, &totalSize, 4);  ptr += 4;
548
549		memcpy(ptr, &s, 4); ptr += 4;
550
551	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
552	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
553
554}
555
556void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
557{
558
559	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
560	IOStream *stream = ctx->m_stream;
561	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
562	bool useChecksum = checksumCalculator->getVersion() > 0;
563
564	 unsigned char *ptr;
565	 unsigned char *buf;
566	 const size_t sizeWithoutChecksum = 8 + 1 + 1 + 1 + 1;
567	 const size_t checksumSize = checksumCalculator->checksumByteSize();
568	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
569	buf = stream->alloc(totalSize);
570	ptr = buf;
571	int tmp = OP_glColorMask;memcpy(ptr, &tmp, 4); ptr += 4;
572	memcpy(ptr, &totalSize, 4);  ptr += 4;
573
574		memcpy(ptr, &red, 1); ptr += 1;
575		memcpy(ptr, &green, 1); ptr += 1;
576		memcpy(ptr, &blue, 1); ptr += 1;
577		memcpy(ptr, &alpha, 1); ptr += 1;
578
579	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
580	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
581
582}
583
584void glCompileShader_enc(void *self , GLuint shader)
585{
586
587	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
588	IOStream *stream = ctx->m_stream;
589	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
590	bool useChecksum = checksumCalculator->getVersion() > 0;
591
592	 unsigned char *ptr;
593	 unsigned char *buf;
594	 const size_t sizeWithoutChecksum = 8 + 4;
595	 const size_t checksumSize = checksumCalculator->checksumByteSize();
596	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
597	buf = stream->alloc(totalSize);
598	ptr = buf;
599	int tmp = OP_glCompileShader;memcpy(ptr, &tmp, 4); ptr += 4;
600	memcpy(ptr, &totalSize, 4);  ptr += 4;
601
602		memcpy(ptr, &shader, 4); ptr += 4;
603
604	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
605	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
606
607}
608
609void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
610{
611
612	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
613	IOStream *stream = ctx->m_stream;
614	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
615	bool useChecksum = checksumCalculator->getVersion() > 0;
616
617	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
618	 unsigned char *ptr;
619	 unsigned char *buf;
620	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
621	 const size_t checksumSize = checksumCalculator->checksumByteSize();
622	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
623	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
624	ptr = buf;
625	int tmp = OP_glCompressedTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
626	memcpy(ptr, &totalSize, 4);  ptr += 4;
627
628		memcpy(ptr, &target, 4); ptr += 4;
629		memcpy(ptr, &level, 4); ptr += 4;
630		memcpy(ptr, &internalformat, 4); ptr += 4;
631		memcpy(ptr, &width, 4); ptr += 4;
632		memcpy(ptr, &height, 4); ptr += 4;
633		memcpy(ptr, &border, 4); ptr += 4;
634		memcpy(ptr, &imageSize, 4); ptr += 4;
635
636	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
637	stream->flush();
638	stream->writeFully(&__size_data,4);
639	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
640	if (data != NULL) {
641		stream->writeFully(data, __size_data);
642		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
643	}
644	buf = stream->alloc(checksumSize);
645	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
646
647}
648
649void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
650{
651
652	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
653	IOStream *stream = ctx->m_stream;
654	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
655	bool useChecksum = checksumCalculator->getVersion() > 0;
656
657	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
658	 unsigned char *ptr;
659	 unsigned char *buf;
660	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
661	 const size_t checksumSize = checksumCalculator->checksumByteSize();
662	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
663	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
664	ptr = buf;
665	int tmp = OP_glCompressedTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
666	memcpy(ptr, &totalSize, 4);  ptr += 4;
667
668		memcpy(ptr, &target, 4); ptr += 4;
669		memcpy(ptr, &level, 4); ptr += 4;
670		memcpy(ptr, &xoffset, 4); ptr += 4;
671		memcpy(ptr, &yoffset, 4); ptr += 4;
672		memcpy(ptr, &width, 4); ptr += 4;
673		memcpy(ptr, &height, 4); ptr += 4;
674		memcpy(ptr, &format, 4); ptr += 4;
675		memcpy(ptr, &imageSize, 4); ptr += 4;
676
677	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
678	stream->flush();
679	stream->writeFully(&__size_data,4);
680	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
681	if (data != NULL) {
682		stream->writeFully(data, __size_data);
683		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
684	}
685	buf = stream->alloc(checksumSize);
686	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
687
688}
689
690void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
691{
692
693	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
694	IOStream *stream = ctx->m_stream;
695	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
696	bool useChecksum = checksumCalculator->getVersion() > 0;
697
698	 unsigned char *ptr;
699	 unsigned char *buf;
700	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
701	 const size_t checksumSize = checksumCalculator->checksumByteSize();
702	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
703	buf = stream->alloc(totalSize);
704	ptr = buf;
705	int tmp = OP_glCopyTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
706	memcpy(ptr, &totalSize, 4);  ptr += 4;
707
708		memcpy(ptr, &target, 4); ptr += 4;
709		memcpy(ptr, &level, 4); ptr += 4;
710		memcpy(ptr, &internalformat, 4); ptr += 4;
711		memcpy(ptr, &x, 4); ptr += 4;
712		memcpy(ptr, &y, 4); ptr += 4;
713		memcpy(ptr, &width, 4); ptr += 4;
714		memcpy(ptr, &height, 4); ptr += 4;
715		memcpy(ptr, &border, 4); ptr += 4;
716
717	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
718	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
719
720}
721
722void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
723{
724
725	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
726	IOStream *stream = ctx->m_stream;
727	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
728	bool useChecksum = checksumCalculator->getVersion() > 0;
729
730	 unsigned char *ptr;
731	 unsigned char *buf;
732	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
733	 const size_t checksumSize = checksumCalculator->checksumByteSize();
734	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
735	buf = stream->alloc(totalSize);
736	ptr = buf;
737	int tmp = OP_glCopyTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
738	memcpy(ptr, &totalSize, 4);  ptr += 4;
739
740		memcpy(ptr, &target, 4); ptr += 4;
741		memcpy(ptr, &level, 4); ptr += 4;
742		memcpy(ptr, &xoffset, 4); ptr += 4;
743		memcpy(ptr, &yoffset, 4); ptr += 4;
744		memcpy(ptr, &x, 4); ptr += 4;
745		memcpy(ptr, &y, 4); ptr += 4;
746		memcpy(ptr, &width, 4); ptr += 4;
747		memcpy(ptr, &height, 4); ptr += 4;
748
749	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
750	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
751
752}
753
754GLuint glCreateProgram_enc(void *self )
755{
756
757	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
758	IOStream *stream = ctx->m_stream;
759	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
760	bool useChecksum = checksumCalculator->getVersion() > 0;
761
762	 unsigned char *ptr;
763	 unsigned char *buf;
764	 const size_t sizeWithoutChecksum = 8;
765	 const size_t checksumSize = checksumCalculator->checksumByteSize();
766	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
767	buf = stream->alloc(totalSize);
768	ptr = buf;
769	int tmp = OP_glCreateProgram;memcpy(ptr, &tmp, 4); ptr += 4;
770	memcpy(ptr, &totalSize, 4);  ptr += 4;
771
772
773	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
774	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
775
776
777	GLuint retval;
778	stream->readback(&retval, 4);
779	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
780	if (useChecksum) {
781		unsigned char *checksumBufPtr = NULL;
782		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
783		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
784		stream->readback(checksumBufPtr, checksumSize);
785		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
786			ALOGE("glCreateProgram: GL communication error, please report this issue to b.android.com.\n");
787			abort();
788		}
789	}
790	return retval;
791}
792
793GLuint glCreateShader_enc(void *self , GLenum type)
794{
795
796	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
797	IOStream *stream = ctx->m_stream;
798	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
799	bool useChecksum = checksumCalculator->getVersion() > 0;
800
801	 unsigned char *ptr;
802	 unsigned char *buf;
803	 const size_t sizeWithoutChecksum = 8 + 4;
804	 const size_t checksumSize = checksumCalculator->checksumByteSize();
805	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
806	buf = stream->alloc(totalSize);
807	ptr = buf;
808	int tmp = OP_glCreateShader;memcpy(ptr, &tmp, 4); ptr += 4;
809	memcpy(ptr, &totalSize, 4);  ptr += 4;
810
811		memcpy(ptr, &type, 4); ptr += 4;
812
813	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
814	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
815
816
817	GLuint retval;
818	stream->readback(&retval, 4);
819	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
820	if (useChecksum) {
821		unsigned char *checksumBufPtr = NULL;
822		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
823		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
824		stream->readback(checksumBufPtr, checksumSize);
825		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
826			ALOGE("glCreateShader: GL communication error, please report this issue to b.android.com.\n");
827			abort();
828		}
829	}
830	return retval;
831}
832
833void glCullFace_enc(void *self , GLenum mode)
834{
835
836	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
837	IOStream *stream = ctx->m_stream;
838	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
839	bool useChecksum = checksumCalculator->getVersion() > 0;
840
841	 unsigned char *ptr;
842	 unsigned char *buf;
843	 const size_t sizeWithoutChecksum = 8 + 4;
844	 const size_t checksumSize = checksumCalculator->checksumByteSize();
845	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
846	buf = stream->alloc(totalSize);
847	ptr = buf;
848	int tmp = OP_glCullFace;memcpy(ptr, &tmp, 4); ptr += 4;
849	memcpy(ptr, &totalSize, 4);  ptr += 4;
850
851		memcpy(ptr, &mode, 4); ptr += 4;
852
853	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
854	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
855
856}
857
858void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers)
859{
860
861	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
862	IOStream *stream = ctx->m_stream;
863	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
864	bool useChecksum = checksumCalculator->getVersion() > 0;
865
866	const unsigned int __size_buffers =  (n * sizeof(GLuint));
867	 unsigned char *ptr;
868	 unsigned char *buf;
869	 const size_t sizeWithoutChecksum = 8 + 4 + __size_buffers + 1*4;
870	 const size_t checksumSize = checksumCalculator->checksumByteSize();
871	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
872	buf = stream->alloc(totalSize);
873	ptr = buf;
874	int tmp = OP_glDeleteBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
875	memcpy(ptr, &totalSize, 4);  ptr += 4;
876
877		memcpy(ptr, &n, 4); ptr += 4;
878	*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
879	memcpy(ptr, buffers, __size_buffers);ptr += __size_buffers;
880
881	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
882	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
883
884}
885
886void glDeleteFramebuffers_enc(void *self , GLsizei n, const GLuint* framebuffers)
887{
888
889	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
890	IOStream *stream = ctx->m_stream;
891	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
892	bool useChecksum = checksumCalculator->getVersion() > 0;
893
894	const unsigned int __size_framebuffers =  (n * sizeof(GLuint));
895	 unsigned char *ptr;
896	 unsigned char *buf;
897	 const size_t sizeWithoutChecksum = 8 + 4 + __size_framebuffers + 1*4;
898	 const size_t checksumSize = checksumCalculator->checksumByteSize();
899	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
900	buf = stream->alloc(totalSize);
901	ptr = buf;
902	int tmp = OP_glDeleteFramebuffers;memcpy(ptr, &tmp, 4); ptr += 4;
903	memcpy(ptr, &totalSize, 4);  ptr += 4;
904
905		memcpy(ptr, &n, 4); ptr += 4;
906	*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
907	memcpy(ptr, framebuffers, __size_framebuffers);ptr += __size_framebuffers;
908
909	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
910	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
911
912}
913
914void glDeleteProgram_enc(void *self , GLuint program)
915{
916
917	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
918	IOStream *stream = ctx->m_stream;
919	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
920	bool useChecksum = checksumCalculator->getVersion() > 0;
921
922	 unsigned char *ptr;
923	 unsigned char *buf;
924	 const size_t sizeWithoutChecksum = 8 + 4;
925	 const size_t checksumSize = checksumCalculator->checksumByteSize();
926	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
927	buf = stream->alloc(totalSize);
928	ptr = buf;
929	int tmp = OP_glDeleteProgram;memcpy(ptr, &tmp, 4); ptr += 4;
930	memcpy(ptr, &totalSize, 4);  ptr += 4;
931
932		memcpy(ptr, &program, 4); ptr += 4;
933
934	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
935	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
936
937}
938
939void glDeleteRenderbuffers_enc(void *self , GLsizei n, const GLuint* renderbuffers)
940{
941
942	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
943	IOStream *stream = ctx->m_stream;
944	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
945	bool useChecksum = checksumCalculator->getVersion() > 0;
946
947	const unsigned int __size_renderbuffers =  (n * sizeof(GLuint));
948	 unsigned char *ptr;
949	 unsigned char *buf;
950	 const size_t sizeWithoutChecksum = 8 + 4 + __size_renderbuffers + 1*4;
951	 const size_t checksumSize = checksumCalculator->checksumByteSize();
952	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
953	buf = stream->alloc(totalSize);
954	ptr = buf;
955	int tmp = OP_glDeleteRenderbuffers;memcpy(ptr, &tmp, 4); ptr += 4;
956	memcpy(ptr, &totalSize, 4);  ptr += 4;
957
958		memcpy(ptr, &n, 4); ptr += 4;
959	*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
960	memcpy(ptr, renderbuffers, __size_renderbuffers);ptr += __size_renderbuffers;
961
962	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
963	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
964
965}
966
967void glDeleteShader_enc(void *self , GLuint shader)
968{
969
970	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
971	IOStream *stream = ctx->m_stream;
972	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
973	bool useChecksum = checksumCalculator->getVersion() > 0;
974
975	 unsigned char *ptr;
976	 unsigned char *buf;
977	 const size_t sizeWithoutChecksum = 8 + 4;
978	 const size_t checksumSize = checksumCalculator->checksumByteSize();
979	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
980	buf = stream->alloc(totalSize);
981	ptr = buf;
982	int tmp = OP_glDeleteShader;memcpy(ptr, &tmp, 4); ptr += 4;
983	memcpy(ptr, &totalSize, 4);  ptr += 4;
984
985		memcpy(ptr, &shader, 4); ptr += 4;
986
987	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
988	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
989
990}
991
992void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures)
993{
994
995	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
996	IOStream *stream = ctx->m_stream;
997	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
998	bool useChecksum = checksumCalculator->getVersion() > 0;
999
1000	const unsigned int __size_textures =  (n * sizeof(GLuint));
1001	 unsigned char *ptr;
1002	 unsigned char *buf;
1003	 const size_t sizeWithoutChecksum = 8 + 4 + __size_textures + 1*4;
1004	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1005	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1006	buf = stream->alloc(totalSize);
1007	ptr = buf;
1008	int tmp = OP_glDeleteTextures;memcpy(ptr, &tmp, 4); ptr += 4;
1009	memcpy(ptr, &totalSize, 4);  ptr += 4;
1010
1011		memcpy(ptr, &n, 4); ptr += 4;
1012	*(unsigned int *)(ptr) = __size_textures; ptr += 4;
1013	memcpy(ptr, textures, __size_textures);ptr += __size_textures;
1014
1015	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1016	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1017
1018}
1019
1020void glDepthFunc_enc(void *self , GLenum func)
1021{
1022
1023	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1024	IOStream *stream = ctx->m_stream;
1025	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1026	bool useChecksum = checksumCalculator->getVersion() > 0;
1027
1028	 unsigned char *ptr;
1029	 unsigned char *buf;
1030	 const size_t sizeWithoutChecksum = 8 + 4;
1031	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1032	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1033	buf = stream->alloc(totalSize);
1034	ptr = buf;
1035	int tmp = OP_glDepthFunc;memcpy(ptr, &tmp, 4); ptr += 4;
1036	memcpy(ptr, &totalSize, 4);  ptr += 4;
1037
1038		memcpy(ptr, &func, 4); ptr += 4;
1039
1040	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1041	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1042
1043}
1044
1045void glDepthMask_enc(void *self , GLboolean flag)
1046{
1047
1048	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1049	IOStream *stream = ctx->m_stream;
1050	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1051	bool useChecksum = checksumCalculator->getVersion() > 0;
1052
1053	 unsigned char *ptr;
1054	 unsigned char *buf;
1055	 const size_t sizeWithoutChecksum = 8 + 1;
1056	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1057	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1058	buf = stream->alloc(totalSize);
1059	ptr = buf;
1060	int tmp = OP_glDepthMask;memcpy(ptr, &tmp, 4); ptr += 4;
1061	memcpy(ptr, &totalSize, 4);  ptr += 4;
1062
1063		memcpy(ptr, &flag, 1); ptr += 1;
1064
1065	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1066	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1067
1068}
1069
1070void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar)
1071{
1072
1073	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1074	IOStream *stream = ctx->m_stream;
1075	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1076	bool useChecksum = checksumCalculator->getVersion() > 0;
1077
1078	 unsigned char *ptr;
1079	 unsigned char *buf;
1080	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1081	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1082	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1083	buf = stream->alloc(totalSize);
1084	ptr = buf;
1085	int tmp = OP_glDepthRangef;memcpy(ptr, &tmp, 4); ptr += 4;
1086	memcpy(ptr, &totalSize, 4);  ptr += 4;
1087
1088		memcpy(ptr, &zNear, 4); ptr += 4;
1089		memcpy(ptr, &zFar, 4); ptr += 4;
1090
1091	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1092	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1093
1094}
1095
1096void glDetachShader_enc(void *self , GLuint program, GLuint shader)
1097{
1098
1099	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1100	IOStream *stream = ctx->m_stream;
1101	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1102	bool useChecksum = checksumCalculator->getVersion() > 0;
1103
1104	 unsigned char *ptr;
1105	 unsigned char *buf;
1106	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1107	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1108	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1109	buf = stream->alloc(totalSize);
1110	ptr = buf;
1111	int tmp = OP_glDetachShader;memcpy(ptr, &tmp, 4); ptr += 4;
1112	memcpy(ptr, &totalSize, 4);  ptr += 4;
1113
1114		memcpy(ptr, &program, 4); ptr += 4;
1115		memcpy(ptr, &shader, 4); ptr += 4;
1116
1117	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1118	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1119
1120}
1121
1122void glDisable_enc(void *self , GLenum cap)
1123{
1124
1125	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1126	IOStream *stream = ctx->m_stream;
1127	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1128	bool useChecksum = checksumCalculator->getVersion() > 0;
1129
1130	 unsigned char *ptr;
1131	 unsigned char *buf;
1132	 const size_t sizeWithoutChecksum = 8 + 4;
1133	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1134	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1135	buf = stream->alloc(totalSize);
1136	ptr = buf;
1137	int tmp = OP_glDisable;memcpy(ptr, &tmp, 4); ptr += 4;
1138	memcpy(ptr, &totalSize, 4);  ptr += 4;
1139
1140		memcpy(ptr, &cap, 4); ptr += 4;
1141
1142	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1143	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1144
1145}
1146
1147void glDisableVertexAttribArray_enc(void *self , GLuint index)
1148{
1149
1150	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1151	IOStream *stream = ctx->m_stream;
1152	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1153	bool useChecksum = checksumCalculator->getVersion() > 0;
1154
1155	 unsigned char *ptr;
1156	 unsigned char *buf;
1157	 const size_t sizeWithoutChecksum = 8 + 4;
1158	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1159	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1160	buf = stream->alloc(totalSize);
1161	ptr = buf;
1162	int tmp = OP_glDisableVertexAttribArray;memcpy(ptr, &tmp, 4); ptr += 4;
1163	memcpy(ptr, &totalSize, 4);  ptr += 4;
1164
1165		memcpy(ptr, &index, 4); ptr += 4;
1166
1167	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1168	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1169
1170}
1171
1172void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count)
1173{
1174
1175	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1176	IOStream *stream = ctx->m_stream;
1177	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1178	bool useChecksum = checksumCalculator->getVersion() > 0;
1179
1180	 unsigned char *ptr;
1181	 unsigned char *buf;
1182	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
1183	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1184	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1185	buf = stream->alloc(totalSize);
1186	ptr = buf;
1187	int tmp = OP_glDrawArrays;memcpy(ptr, &tmp, 4); ptr += 4;
1188	memcpy(ptr, &totalSize, 4);  ptr += 4;
1189
1190		memcpy(ptr, &mode, 4); ptr += 4;
1191		memcpy(ptr, &first, 4); ptr += 4;
1192		memcpy(ptr, &count, 4); ptr += 4;
1193
1194	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1195	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1196
1197}
1198
1199void glEnable_enc(void *self , GLenum cap)
1200{
1201
1202	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1203	IOStream *stream = ctx->m_stream;
1204	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1205	bool useChecksum = checksumCalculator->getVersion() > 0;
1206
1207	 unsigned char *ptr;
1208	 unsigned char *buf;
1209	 const size_t sizeWithoutChecksum = 8 + 4;
1210	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1211	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1212	buf = stream->alloc(totalSize);
1213	ptr = buf;
1214	int tmp = OP_glEnable;memcpy(ptr, &tmp, 4); ptr += 4;
1215	memcpy(ptr, &totalSize, 4);  ptr += 4;
1216
1217		memcpy(ptr, &cap, 4); ptr += 4;
1218
1219	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1220	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1221
1222}
1223
1224void glEnableVertexAttribArray_enc(void *self , GLuint index)
1225{
1226
1227	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1228	IOStream *stream = ctx->m_stream;
1229	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1230	bool useChecksum = checksumCalculator->getVersion() > 0;
1231
1232	 unsigned char *ptr;
1233	 unsigned char *buf;
1234	 const size_t sizeWithoutChecksum = 8 + 4;
1235	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1236	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1237	buf = stream->alloc(totalSize);
1238	ptr = buf;
1239	int tmp = OP_glEnableVertexAttribArray;memcpy(ptr, &tmp, 4); ptr += 4;
1240	memcpy(ptr, &totalSize, 4);  ptr += 4;
1241
1242		memcpy(ptr, &index, 4); ptr += 4;
1243
1244	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1245	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1246
1247}
1248
1249void glFinish_enc(void *self )
1250{
1251
1252	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1253	IOStream *stream = ctx->m_stream;
1254	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1255	bool useChecksum = checksumCalculator->getVersion() > 0;
1256
1257	 unsigned char *ptr;
1258	 unsigned char *buf;
1259	 const size_t sizeWithoutChecksum = 8;
1260	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1261	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1262	buf = stream->alloc(totalSize);
1263	ptr = buf;
1264	int tmp = OP_glFinish;memcpy(ptr, &tmp, 4); ptr += 4;
1265	memcpy(ptr, &totalSize, 4);  ptr += 4;
1266
1267
1268	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1269	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1270
1271}
1272
1273void glFlush_enc(void *self )
1274{
1275
1276	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1277	IOStream *stream = ctx->m_stream;
1278	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1279	bool useChecksum = checksumCalculator->getVersion() > 0;
1280
1281	 unsigned char *ptr;
1282	 unsigned char *buf;
1283	 const size_t sizeWithoutChecksum = 8;
1284	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1285	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1286	buf = stream->alloc(totalSize);
1287	ptr = buf;
1288	int tmp = OP_glFlush;memcpy(ptr, &tmp, 4); ptr += 4;
1289	memcpy(ptr, &totalSize, 4);  ptr += 4;
1290
1291
1292	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1293	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1294
1295}
1296
1297void glFramebufferRenderbuffer_enc(void *self , GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
1298{
1299
1300	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1301	IOStream *stream = ctx->m_stream;
1302	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1303	bool useChecksum = checksumCalculator->getVersion() > 0;
1304
1305	 unsigned char *ptr;
1306	 unsigned char *buf;
1307	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
1308	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1309	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1310	buf = stream->alloc(totalSize);
1311	ptr = buf;
1312	int tmp = OP_glFramebufferRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
1313	memcpy(ptr, &totalSize, 4);  ptr += 4;
1314
1315		memcpy(ptr, &target, 4); ptr += 4;
1316		memcpy(ptr, &attachment, 4); ptr += 4;
1317		memcpy(ptr, &renderbuffertarget, 4); ptr += 4;
1318		memcpy(ptr, &renderbuffer, 4); ptr += 4;
1319
1320	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1321	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1322
1323}
1324
1325void glFramebufferTexture2D_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
1326{
1327
1328	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1329	IOStream *stream = ctx->m_stream;
1330	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1331	bool useChecksum = checksumCalculator->getVersion() > 0;
1332
1333	 unsigned char *ptr;
1334	 unsigned char *buf;
1335	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
1336	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1337	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1338	buf = stream->alloc(totalSize);
1339	ptr = buf;
1340	int tmp = OP_glFramebufferTexture2D;memcpy(ptr, &tmp, 4); ptr += 4;
1341	memcpy(ptr, &totalSize, 4);  ptr += 4;
1342
1343		memcpy(ptr, &target, 4); ptr += 4;
1344		memcpy(ptr, &attachment, 4); ptr += 4;
1345		memcpy(ptr, &textarget, 4); ptr += 4;
1346		memcpy(ptr, &texture, 4); ptr += 4;
1347		memcpy(ptr, &level, 4); ptr += 4;
1348
1349	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1350	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1351
1352}
1353
1354void glFrontFace_enc(void *self , GLenum mode)
1355{
1356
1357	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1358	IOStream *stream = ctx->m_stream;
1359	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1360	bool useChecksum = checksumCalculator->getVersion() > 0;
1361
1362	 unsigned char *ptr;
1363	 unsigned char *buf;
1364	 const size_t sizeWithoutChecksum = 8 + 4;
1365	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1366	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1367	buf = stream->alloc(totalSize);
1368	ptr = buf;
1369	int tmp = OP_glFrontFace;memcpy(ptr, &tmp, 4); ptr += 4;
1370	memcpy(ptr, &totalSize, 4);  ptr += 4;
1371
1372		memcpy(ptr, &mode, 4); ptr += 4;
1373
1374	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1375	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1376
1377}
1378
1379void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers)
1380{
1381
1382	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1383	IOStream *stream = ctx->m_stream;
1384	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1385	bool useChecksum = checksumCalculator->getVersion() > 0;
1386
1387	const unsigned int __size_buffers =  (n * sizeof(GLuint));
1388	 unsigned char *ptr;
1389	 unsigned char *buf;
1390	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1391	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1392	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1393	buf = stream->alloc(totalSize);
1394	ptr = buf;
1395	int tmp = OP_glGenBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1396	memcpy(ptr, &totalSize, 4);  ptr += 4;
1397
1398		memcpy(ptr, &n, 4); ptr += 4;
1399	*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
1400
1401	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1402	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1403
1404	stream->readback(buffers, __size_buffers);
1405	if (useChecksum) checksumCalculator->addBuffer(buffers, __size_buffers);
1406	if (useChecksum) {
1407		unsigned char *checksumBufPtr = NULL;
1408		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1409		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1410		stream->readback(checksumBufPtr, checksumSize);
1411		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1412			ALOGE("glGenBuffers: GL communication error, please report this issue to b.android.com.\n");
1413			abort();
1414		}
1415	}
1416}
1417
1418void glGenerateMipmap_enc(void *self , GLenum target)
1419{
1420
1421	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1422	IOStream *stream = ctx->m_stream;
1423	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1424	bool useChecksum = checksumCalculator->getVersion() > 0;
1425
1426	 unsigned char *ptr;
1427	 unsigned char *buf;
1428	 const size_t sizeWithoutChecksum = 8 + 4;
1429	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1430	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1431	buf = stream->alloc(totalSize);
1432	ptr = buf;
1433	int tmp = OP_glGenerateMipmap;memcpy(ptr, &tmp, 4); ptr += 4;
1434	memcpy(ptr, &totalSize, 4);  ptr += 4;
1435
1436		memcpy(ptr, &target, 4); ptr += 4;
1437
1438	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1439	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1440
1441}
1442
1443void glGenFramebuffers_enc(void *self , GLsizei n, GLuint* framebuffers)
1444{
1445
1446	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1447	IOStream *stream = ctx->m_stream;
1448	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1449	bool useChecksum = checksumCalculator->getVersion() > 0;
1450
1451	const unsigned int __size_framebuffers =  (n * sizeof(GLuint));
1452	 unsigned char *ptr;
1453	 unsigned char *buf;
1454	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1455	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1456	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1457	buf = stream->alloc(totalSize);
1458	ptr = buf;
1459	int tmp = OP_glGenFramebuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1460	memcpy(ptr, &totalSize, 4);  ptr += 4;
1461
1462		memcpy(ptr, &n, 4); ptr += 4;
1463	*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
1464
1465	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1466	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1467
1468	stream->readback(framebuffers, __size_framebuffers);
1469	if (useChecksum) checksumCalculator->addBuffer(framebuffers, __size_framebuffers);
1470	if (useChecksum) {
1471		unsigned char *checksumBufPtr = NULL;
1472		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1473		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1474		stream->readback(checksumBufPtr, checksumSize);
1475		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1476			ALOGE("glGenFramebuffers: GL communication error, please report this issue to b.android.com.\n");
1477			abort();
1478		}
1479	}
1480}
1481
1482void glGenRenderbuffers_enc(void *self , GLsizei n, GLuint* renderbuffers)
1483{
1484
1485	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1486	IOStream *stream = ctx->m_stream;
1487	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1488	bool useChecksum = checksumCalculator->getVersion() > 0;
1489
1490	const unsigned int __size_renderbuffers =  (n * sizeof(GLuint));
1491	 unsigned char *ptr;
1492	 unsigned char *buf;
1493	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1494	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1495	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1496	buf = stream->alloc(totalSize);
1497	ptr = buf;
1498	int tmp = OP_glGenRenderbuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1499	memcpy(ptr, &totalSize, 4);  ptr += 4;
1500
1501		memcpy(ptr, &n, 4); ptr += 4;
1502	*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
1503
1504	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1505	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1506
1507	stream->readback(renderbuffers, __size_renderbuffers);
1508	if (useChecksum) checksumCalculator->addBuffer(renderbuffers, __size_renderbuffers);
1509	if (useChecksum) {
1510		unsigned char *checksumBufPtr = NULL;
1511		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1512		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1513		stream->readback(checksumBufPtr, checksumSize);
1514		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1515			ALOGE("glGenRenderbuffers: GL communication error, please report this issue to b.android.com.\n");
1516			abort();
1517		}
1518	}
1519}
1520
1521void glGenTextures_enc(void *self , GLsizei n, GLuint* textures)
1522{
1523
1524	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1525	IOStream *stream = ctx->m_stream;
1526	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1527	bool useChecksum = checksumCalculator->getVersion() > 0;
1528
1529	const unsigned int __size_textures =  (n * sizeof(GLuint));
1530	 unsigned char *ptr;
1531	 unsigned char *buf;
1532	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1533	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1534	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1535	buf = stream->alloc(totalSize);
1536	ptr = buf;
1537	int tmp = OP_glGenTextures;memcpy(ptr, &tmp, 4); ptr += 4;
1538	memcpy(ptr, &totalSize, 4);  ptr += 4;
1539
1540		memcpy(ptr, &n, 4); ptr += 4;
1541	*(unsigned int *)(ptr) = __size_textures; ptr += 4;
1542
1543	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1544	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1545
1546	stream->readback(textures, __size_textures);
1547	if (useChecksum) checksumCalculator->addBuffer(textures, __size_textures);
1548	if (useChecksum) {
1549		unsigned char *checksumBufPtr = NULL;
1550		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1551		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1552		stream->readback(checksumBufPtr, checksumSize);
1553		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1554			ALOGE("glGenTextures: GL communication error, please report this issue to b.android.com.\n");
1555			abort();
1556		}
1557	}
1558}
1559
1560void glGetActiveAttrib_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
1561{
1562
1563	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1564	IOStream *stream = ctx->m_stream;
1565	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1566	bool useChecksum = checksumCalculator->getVersion() > 0;
1567
1568	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
1569	const unsigned int __size_size = ((size != NULL) ?  (sizeof(GLint)) : 0);
1570	const unsigned int __size_type = ((type != NULL) ?  (sizeof(GLenum)) : 0);
1571	const unsigned int __size_name = ((name != NULL) ?  bufsize : 0);
1572	 unsigned char *ptr;
1573	 unsigned char *buf;
1574	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
1575	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1576	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1577	buf = stream->alloc(totalSize);
1578	ptr = buf;
1579	int tmp = OP_glGetActiveAttrib;memcpy(ptr, &tmp, 4); ptr += 4;
1580	memcpy(ptr, &totalSize, 4);  ptr += 4;
1581
1582		memcpy(ptr, &program, 4); ptr += 4;
1583		memcpy(ptr, &index, 4); ptr += 4;
1584		memcpy(ptr, &bufsize, 4); ptr += 4;
1585	*(unsigned int *)(ptr) = __size_length; ptr += 4;
1586	*(unsigned int *)(ptr) = __size_size; ptr += 4;
1587	*(unsigned int *)(ptr) = __size_type; ptr += 4;
1588	*(unsigned int *)(ptr) = __size_name; ptr += 4;
1589
1590	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1591	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1592
1593	if (length != NULL) {
1594		stream->readback(length, __size_length);
1595		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
1596	}
1597	if (size != NULL) {
1598		stream->readback(size, __size_size);
1599		if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
1600	}
1601	if (type != NULL) {
1602		stream->readback(type, __size_type);
1603		if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
1604	}
1605	if (name != NULL) {
1606		stream->readback(name, __size_name);
1607		if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
1608	}
1609	if (useChecksum) {
1610		unsigned char *checksumBufPtr = NULL;
1611		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1612		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1613		stream->readback(checksumBufPtr, checksumSize);
1614		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1615			ALOGE("glGetActiveAttrib: GL communication error, please report this issue to b.android.com.\n");
1616			abort();
1617		}
1618	}
1619}
1620
1621void glGetActiveUniform_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
1622{
1623
1624	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1625	IOStream *stream = ctx->m_stream;
1626	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1627	bool useChecksum = checksumCalculator->getVersion() > 0;
1628
1629	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
1630	const unsigned int __size_size = ((size != NULL) ?  (sizeof(GLint)) : 0);
1631	const unsigned int __size_type = ((type != NULL) ?  (sizeof(GLenum)) : 0);
1632	const unsigned int __size_name = ((name != NULL) ?  bufsize : 0);
1633	 unsigned char *ptr;
1634	 unsigned char *buf;
1635	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
1636	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1637	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1638	buf = stream->alloc(totalSize);
1639	ptr = buf;
1640	int tmp = OP_glGetActiveUniform;memcpy(ptr, &tmp, 4); ptr += 4;
1641	memcpy(ptr, &totalSize, 4);  ptr += 4;
1642
1643		memcpy(ptr, &program, 4); ptr += 4;
1644		memcpy(ptr, &index, 4); ptr += 4;
1645		memcpy(ptr, &bufsize, 4); ptr += 4;
1646	*(unsigned int *)(ptr) = __size_length; ptr += 4;
1647	*(unsigned int *)(ptr) = __size_size; ptr += 4;
1648	*(unsigned int *)(ptr) = __size_type; ptr += 4;
1649	*(unsigned int *)(ptr) = __size_name; ptr += 4;
1650
1651	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1652	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1653
1654	if (length != NULL) {
1655		stream->readback(length, __size_length);
1656		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
1657	}
1658	if (size != NULL) {
1659		stream->readback(size, __size_size);
1660		if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
1661	}
1662	if (type != NULL) {
1663		stream->readback(type, __size_type);
1664		if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
1665	}
1666	if (name != NULL) {
1667		stream->readback(name, __size_name);
1668		if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
1669	}
1670	if (useChecksum) {
1671		unsigned char *checksumBufPtr = NULL;
1672		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1673		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1674		stream->readback(checksumBufPtr, checksumSize);
1675		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1676			ALOGE("glGetActiveUniform: GL communication error, please report this issue to b.android.com.\n");
1677			abort();
1678		}
1679	}
1680}
1681
1682void glGetAttachedShaders_enc(void *self , GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
1683{
1684
1685	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1686	IOStream *stream = ctx->m_stream;
1687	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1688	bool useChecksum = checksumCalculator->getVersion() > 0;
1689
1690	const unsigned int __size_count = ((count != NULL) ?  (sizeof(GLsizei)) : 0);
1691	const unsigned int __size_shaders =  (maxcount*sizeof(GLuint));
1692	 unsigned char *ptr;
1693	 unsigned char *buf;
1694	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
1695	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1696	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1697	buf = stream->alloc(totalSize);
1698	ptr = buf;
1699	int tmp = OP_glGetAttachedShaders;memcpy(ptr, &tmp, 4); ptr += 4;
1700	memcpy(ptr, &totalSize, 4);  ptr += 4;
1701
1702		memcpy(ptr, &program, 4); ptr += 4;
1703		memcpy(ptr, &maxcount, 4); ptr += 4;
1704	*(unsigned int *)(ptr) = __size_count; ptr += 4;
1705	*(unsigned int *)(ptr) = __size_shaders; ptr += 4;
1706
1707	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1708	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1709
1710	if (count != NULL) {
1711		stream->readback(count, __size_count);
1712		if (useChecksum) checksumCalculator->addBuffer(count, __size_count);
1713	}
1714	stream->readback(shaders, __size_shaders);
1715	if (useChecksum) checksumCalculator->addBuffer(shaders, __size_shaders);
1716	if (useChecksum) {
1717		unsigned char *checksumBufPtr = NULL;
1718		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1719		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1720		stream->readback(checksumBufPtr, checksumSize);
1721		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1722			ALOGE("glGetAttachedShaders: GL communication error, please report this issue to b.android.com.\n");
1723			abort();
1724		}
1725	}
1726}
1727
1728int glGetAttribLocation_enc(void *self , GLuint program, const GLchar* name)
1729{
1730
1731	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1732	IOStream *stream = ctx->m_stream;
1733	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1734	bool useChecksum = checksumCalculator->getVersion() > 0;
1735
1736	const unsigned int __size_name =  (strlen(name) + 1);
1737	 unsigned char *ptr;
1738	 unsigned char *buf;
1739	 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
1740	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1741	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1742	buf = stream->alloc(totalSize);
1743	ptr = buf;
1744	int tmp = OP_glGetAttribLocation;memcpy(ptr, &tmp, 4); ptr += 4;
1745	memcpy(ptr, &totalSize, 4);  ptr += 4;
1746
1747		memcpy(ptr, &program, 4); ptr += 4;
1748	*(unsigned int *)(ptr) = __size_name; ptr += 4;
1749	memcpy(ptr, name, __size_name);ptr += __size_name;
1750
1751	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1752	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1753
1754
1755	int retval;
1756	stream->readback(&retval, 4);
1757	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
1758	if (useChecksum) {
1759		unsigned char *checksumBufPtr = NULL;
1760		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1761		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1762		stream->readback(checksumBufPtr, checksumSize);
1763		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1764			ALOGE("glGetAttribLocation: GL communication error, please report this issue to b.android.com.\n");
1765			abort();
1766		}
1767	}
1768	return retval;
1769}
1770
1771void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params)
1772{
1773
1774	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1775	IOStream *stream = ctx->m_stream;
1776	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1777	bool useChecksum = checksumCalculator->getVersion() > 0;
1778
1779	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLboolean));
1780	 unsigned char *ptr;
1781	 unsigned char *buf;
1782	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1783	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1784	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1785	buf = stream->alloc(totalSize);
1786	ptr = buf;
1787	int tmp = OP_glGetBooleanv;memcpy(ptr, &tmp, 4); ptr += 4;
1788	memcpy(ptr, &totalSize, 4);  ptr += 4;
1789
1790		memcpy(ptr, &pname, 4); ptr += 4;
1791	*(unsigned int *)(ptr) = __size_params; ptr += 4;
1792
1793	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1794	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1795
1796	stream->readback(params, __size_params);
1797	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
1798	if (useChecksum) {
1799		unsigned char *checksumBufPtr = NULL;
1800		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1801		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1802		stream->readback(checksumBufPtr, checksumSize);
1803		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1804			ALOGE("glGetBooleanv: GL communication error, please report this issue to b.android.com.\n");
1805			abort();
1806		}
1807	}
1808}
1809
1810void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
1811{
1812
1813	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1814	IOStream *stream = ctx->m_stream;
1815	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1816	bool useChecksum = checksumCalculator->getVersion() > 0;
1817
1818	const unsigned int __size_params =  (sizeof(GLint));
1819	 unsigned char *ptr;
1820	 unsigned char *buf;
1821	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
1822	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1823	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1824	buf = stream->alloc(totalSize);
1825	ptr = buf;
1826	int tmp = OP_glGetBufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
1827	memcpy(ptr, &totalSize, 4);  ptr += 4;
1828
1829		memcpy(ptr, &target, 4); ptr += 4;
1830		memcpy(ptr, &pname, 4); ptr += 4;
1831	*(unsigned int *)(ptr) = __size_params; ptr += 4;
1832
1833	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1834	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1835
1836	stream->readback(params, __size_params);
1837	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
1838	if (useChecksum) {
1839		unsigned char *checksumBufPtr = NULL;
1840		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1841		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1842		stream->readback(checksumBufPtr, checksumSize);
1843		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1844			ALOGE("glGetBufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
1845			abort();
1846		}
1847	}
1848}
1849
1850GLenum glGetError_enc(void *self )
1851{
1852
1853	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1854	IOStream *stream = ctx->m_stream;
1855	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1856	bool useChecksum = checksumCalculator->getVersion() > 0;
1857
1858	 unsigned char *ptr;
1859	 unsigned char *buf;
1860	 const size_t sizeWithoutChecksum = 8;
1861	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1862	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1863	buf = stream->alloc(totalSize);
1864	ptr = buf;
1865	int tmp = OP_glGetError;memcpy(ptr, &tmp, 4); ptr += 4;
1866	memcpy(ptr, &totalSize, 4);  ptr += 4;
1867
1868
1869	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1870	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1871
1872
1873	GLenum retval;
1874	stream->readback(&retval, 4);
1875	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
1876	if (useChecksum) {
1877		unsigned char *checksumBufPtr = NULL;
1878		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1879		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1880		stream->readback(checksumBufPtr, checksumSize);
1881		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1882			ALOGE("glGetError: GL communication error, please report this issue to b.android.com.\n");
1883			abort();
1884		}
1885	}
1886	return retval;
1887}
1888
1889void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params)
1890{
1891
1892	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1893	IOStream *stream = ctx->m_stream;
1894	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1895	bool useChecksum = checksumCalculator->getVersion() > 0;
1896
1897	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
1898	 unsigned char *ptr;
1899	 unsigned char *buf;
1900	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1901	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1902	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1903	buf = stream->alloc(totalSize);
1904	ptr = buf;
1905	int tmp = OP_glGetFloatv;memcpy(ptr, &tmp, 4); ptr += 4;
1906	memcpy(ptr, &totalSize, 4);  ptr += 4;
1907
1908		memcpy(ptr, &pname, 4); ptr += 4;
1909	*(unsigned int *)(ptr) = __size_params; ptr += 4;
1910
1911	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1912	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1913
1914	stream->readback(params, __size_params);
1915	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
1916	if (useChecksum) {
1917		unsigned char *checksumBufPtr = NULL;
1918		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1919		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1920		stream->readback(checksumBufPtr, checksumSize);
1921		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1922			ALOGE("glGetFloatv: GL communication error, please report this issue to b.android.com.\n");
1923			abort();
1924		}
1925	}
1926}
1927
1928void glGetFramebufferAttachmentParameteriv_enc(void *self , GLenum target, GLenum attachment, GLenum pname, GLint* params)
1929{
1930
1931	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1932	IOStream *stream = ctx->m_stream;
1933	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1934	bool useChecksum = checksumCalculator->getVersion() > 0;
1935
1936	const unsigned int __size_params =  (sizeof(GLint));
1937	 unsigned char *ptr;
1938	 unsigned char *buf;
1939	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
1940	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1941	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1942	buf = stream->alloc(totalSize);
1943	ptr = buf;
1944	int tmp = OP_glGetFramebufferAttachmentParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
1945	memcpy(ptr, &totalSize, 4);  ptr += 4;
1946
1947		memcpy(ptr, &target, 4); ptr += 4;
1948		memcpy(ptr, &attachment, 4); ptr += 4;
1949		memcpy(ptr, &pname, 4); ptr += 4;
1950	*(unsigned int *)(ptr) = __size_params; ptr += 4;
1951
1952	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1953	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1954
1955	stream->readback(params, __size_params);
1956	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
1957	if (useChecksum) {
1958		unsigned char *checksumBufPtr = NULL;
1959		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1960		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
1961		stream->readback(checksumBufPtr, checksumSize);
1962		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
1963			ALOGE("glGetFramebufferAttachmentParameteriv: GL communication error, please report this issue to b.android.com.\n");
1964			abort();
1965		}
1966	}
1967}
1968
1969void glGetIntegerv_enc(void *self , GLenum pname, GLint* params)
1970{
1971
1972	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
1973	IOStream *stream = ctx->m_stream;
1974	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1975	bool useChecksum = checksumCalculator->getVersion() > 0;
1976
1977	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
1978	 unsigned char *ptr;
1979	 unsigned char *buf;
1980	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
1981	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1982	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1983	buf = stream->alloc(totalSize);
1984	ptr = buf;
1985	int tmp = OP_glGetIntegerv;memcpy(ptr, &tmp, 4); ptr += 4;
1986	memcpy(ptr, &totalSize, 4);  ptr += 4;
1987
1988		memcpy(ptr, &pname, 4); ptr += 4;
1989	*(unsigned int *)(ptr) = __size_params; ptr += 4;
1990
1991	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1992	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1993
1994	stream->readback(params, __size_params);
1995	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
1996	if (useChecksum) {
1997		unsigned char *checksumBufPtr = NULL;
1998		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
1999		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2000		stream->readback(checksumBufPtr, checksumSize);
2001		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2002			ALOGE("glGetIntegerv: GL communication error, please report this issue to b.android.com.\n");
2003			abort();
2004		}
2005	}
2006}
2007
2008void glGetProgramiv_enc(void *self , GLuint program, GLenum pname, GLint* params)
2009{
2010
2011	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2012	IOStream *stream = ctx->m_stream;
2013	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2014	bool useChecksum = checksumCalculator->getVersion() > 0;
2015
2016	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
2017	 unsigned char *ptr;
2018	 unsigned char *buf;
2019	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2020	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2021	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2022	buf = stream->alloc(totalSize);
2023	ptr = buf;
2024	int tmp = OP_glGetProgramiv;memcpy(ptr, &tmp, 4); ptr += 4;
2025	memcpy(ptr, &totalSize, 4);  ptr += 4;
2026
2027		memcpy(ptr, &program, 4); ptr += 4;
2028		memcpy(ptr, &pname, 4); ptr += 4;
2029	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2030
2031	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2032	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2033
2034	stream->readback(params, __size_params);
2035	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2036	if (useChecksum) {
2037		unsigned char *checksumBufPtr = NULL;
2038		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2039		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2040		stream->readback(checksumBufPtr, checksumSize);
2041		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2042			ALOGE("glGetProgramiv: GL communication error, please report this issue to b.android.com.\n");
2043			abort();
2044		}
2045	}
2046}
2047
2048void glGetProgramInfoLog_enc(void *self , GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
2049{
2050
2051	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2052	IOStream *stream = ctx->m_stream;
2053	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2054	bool useChecksum = checksumCalculator->getVersion() > 0;
2055
2056	const unsigned int __size_length = ((length != NULL) ?  sizeof(GLsizei) : 0);
2057	const unsigned int __size_infolog =  bufsize;
2058	 unsigned char *ptr;
2059	 unsigned char *buf;
2060	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2061	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2062	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2063	buf = stream->alloc(totalSize);
2064	ptr = buf;
2065	int tmp = OP_glGetProgramInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
2066	memcpy(ptr, &totalSize, 4);  ptr += 4;
2067
2068		memcpy(ptr, &program, 4); ptr += 4;
2069		memcpy(ptr, &bufsize, 4); ptr += 4;
2070	*(unsigned int *)(ptr) = __size_length; ptr += 4;
2071	*(unsigned int *)(ptr) = __size_infolog; ptr += 4;
2072
2073	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2074	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2075
2076	if (length != NULL) {
2077		stream->readback(length, __size_length);
2078		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2079	}
2080	stream->readback(infolog, __size_infolog);
2081	if (useChecksum) checksumCalculator->addBuffer(infolog, __size_infolog);
2082	if (useChecksum) {
2083		unsigned char *checksumBufPtr = NULL;
2084		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2085		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2086		stream->readback(checksumBufPtr, checksumSize);
2087		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2088			ALOGE("glGetProgramInfoLog: GL communication error, please report this issue to b.android.com.\n");
2089			abort();
2090		}
2091	}
2092}
2093
2094void glGetRenderbufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
2095{
2096
2097	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2098	IOStream *stream = ctx->m_stream;
2099	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2100	bool useChecksum = checksumCalculator->getVersion() > 0;
2101
2102	const unsigned int __size_params =  sizeof(GLint);
2103	 unsigned char *ptr;
2104	 unsigned char *buf;
2105	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2106	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2107	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2108	buf = stream->alloc(totalSize);
2109	ptr = buf;
2110	int tmp = OP_glGetRenderbufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2111	memcpy(ptr, &totalSize, 4);  ptr += 4;
2112
2113		memcpy(ptr, &target, 4); ptr += 4;
2114		memcpy(ptr, &pname, 4); ptr += 4;
2115	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2116
2117	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2118	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2119
2120	stream->readback(params, __size_params);
2121	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2122	if (useChecksum) {
2123		unsigned char *checksumBufPtr = NULL;
2124		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2125		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2126		stream->readback(checksumBufPtr, checksumSize);
2127		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2128			ALOGE("glGetRenderbufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
2129			abort();
2130		}
2131	}
2132}
2133
2134void glGetShaderiv_enc(void *self , GLuint shader, GLenum pname, GLint* params)
2135{
2136
2137	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2138	IOStream *stream = ctx->m_stream;
2139	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2140	bool useChecksum = checksumCalculator->getVersion() > 0;
2141
2142	const unsigned int __size_params =  sizeof(GLint);
2143	 unsigned char *ptr;
2144	 unsigned char *buf;
2145	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2146	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2147	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2148	buf = stream->alloc(totalSize);
2149	ptr = buf;
2150	int tmp = OP_glGetShaderiv;memcpy(ptr, &tmp, 4); ptr += 4;
2151	memcpy(ptr, &totalSize, 4);  ptr += 4;
2152
2153		memcpy(ptr, &shader, 4); ptr += 4;
2154		memcpy(ptr, &pname, 4); ptr += 4;
2155	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2156
2157	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2158	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2159
2160	stream->readback(params, __size_params);
2161	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2162	if (useChecksum) {
2163		unsigned char *checksumBufPtr = NULL;
2164		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2165		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2166		stream->readback(checksumBufPtr, checksumSize);
2167		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2168			ALOGE("glGetShaderiv: GL communication error, please report this issue to b.android.com.\n");
2169			abort();
2170		}
2171	}
2172}
2173
2174void glGetShaderInfoLog_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
2175{
2176
2177	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2178	IOStream *stream = ctx->m_stream;
2179	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2180	bool useChecksum = checksumCalculator->getVersion() > 0;
2181
2182	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
2183	const unsigned int __size_infolog =  bufsize;
2184	 unsigned char *ptr;
2185	 unsigned char *buf;
2186	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2187	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2188	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2189	buf = stream->alloc(totalSize);
2190	ptr = buf;
2191	int tmp = OP_glGetShaderInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
2192	memcpy(ptr, &totalSize, 4);  ptr += 4;
2193
2194		memcpy(ptr, &shader, 4); ptr += 4;
2195		memcpy(ptr, &bufsize, 4); ptr += 4;
2196	*(unsigned int *)(ptr) = __size_length; ptr += 4;
2197	*(unsigned int *)(ptr) = __size_infolog; ptr += 4;
2198
2199	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2200	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2201
2202	if (length != NULL) {
2203		stream->readback(length, __size_length);
2204		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2205	}
2206	stream->readback(infolog, __size_infolog);
2207	if (useChecksum) checksumCalculator->addBuffer(infolog, __size_infolog);
2208	if (useChecksum) {
2209		unsigned char *checksumBufPtr = NULL;
2210		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2211		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2212		stream->readback(checksumBufPtr, checksumSize);
2213		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2214			ALOGE("glGetShaderInfoLog: GL communication error, please report this issue to b.android.com.\n");
2215			abort();
2216		}
2217	}
2218}
2219
2220void glGetShaderPrecisionFormat_enc(void *self , GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
2221{
2222
2223	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2224	IOStream *stream = ctx->m_stream;
2225	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2226	bool useChecksum = checksumCalculator->getVersion() > 0;
2227
2228	const unsigned int __size_range =  (2 * sizeof(GLint));
2229	const unsigned int __size_precision =  (sizeof(GLint));
2230	 unsigned char *ptr;
2231	 unsigned char *buf;
2232	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2233	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2234	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2235	buf = stream->alloc(totalSize);
2236	ptr = buf;
2237	int tmp = OP_glGetShaderPrecisionFormat;memcpy(ptr, &tmp, 4); ptr += 4;
2238	memcpy(ptr, &totalSize, 4);  ptr += 4;
2239
2240		memcpy(ptr, &shadertype, 4); ptr += 4;
2241		memcpy(ptr, &precisiontype, 4); ptr += 4;
2242	*(unsigned int *)(ptr) = __size_range; ptr += 4;
2243	*(unsigned int *)(ptr) = __size_precision; ptr += 4;
2244
2245	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2246	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2247
2248	stream->readback(range, __size_range);
2249	if (useChecksum) checksumCalculator->addBuffer(range, __size_range);
2250	stream->readback(precision, __size_precision);
2251	if (useChecksum) checksumCalculator->addBuffer(precision, __size_precision);
2252	if (useChecksum) {
2253		unsigned char *checksumBufPtr = NULL;
2254		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2255		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2256		stream->readback(checksumBufPtr, checksumSize);
2257		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2258			ALOGE("glGetShaderPrecisionFormat: GL communication error, please report this issue to b.android.com.\n");
2259			abort();
2260		}
2261	}
2262}
2263
2264void glGetShaderSource_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
2265{
2266
2267	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2268	IOStream *stream = ctx->m_stream;
2269	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2270	bool useChecksum = checksumCalculator->getVersion() > 0;
2271
2272	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
2273	const unsigned int __size_source =  bufsize;
2274	 unsigned char *ptr;
2275	 unsigned char *buf;
2276	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
2277	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2278	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2279	buf = stream->alloc(totalSize);
2280	ptr = buf;
2281	int tmp = OP_glGetShaderSource;memcpy(ptr, &tmp, 4); ptr += 4;
2282	memcpy(ptr, &totalSize, 4);  ptr += 4;
2283
2284		memcpy(ptr, &shader, 4); ptr += 4;
2285		memcpy(ptr, &bufsize, 4); ptr += 4;
2286	*(unsigned int *)(ptr) = __size_length; ptr += 4;
2287	*(unsigned int *)(ptr) = __size_source; ptr += 4;
2288
2289	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2290	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2291
2292	if (length != NULL) {
2293		stream->readback(length, __size_length);
2294		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
2295	}
2296	stream->readback(source, __size_source);
2297	if (useChecksum) checksumCalculator->addBuffer(source, __size_source);
2298	if (useChecksum) {
2299		unsigned char *checksumBufPtr = NULL;
2300		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2301		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2302		stream->readback(checksumBufPtr, checksumSize);
2303		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2304			ALOGE("glGetShaderSource: GL communication error, please report this issue to b.android.com.\n");
2305			abort();
2306		}
2307	}
2308}
2309
2310void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* params)
2311{
2312
2313	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2314	IOStream *stream = ctx->m_stream;
2315	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2316	bool useChecksum = checksumCalculator->getVersion() > 0;
2317
2318	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
2319	 unsigned char *ptr;
2320	 unsigned char *buf;
2321	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2322	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2323	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2324	buf = stream->alloc(totalSize);
2325	ptr = buf;
2326	int tmp = OP_glGetTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
2327	memcpy(ptr, &totalSize, 4);  ptr += 4;
2328
2329		memcpy(ptr, &target, 4); ptr += 4;
2330		memcpy(ptr, &pname, 4); ptr += 4;
2331	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2332
2333	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2334	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2335
2336	stream->readback(params, __size_params);
2337	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2338	if (useChecksum) {
2339		unsigned char *checksumBufPtr = NULL;
2340		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2341		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2342		stream->readback(checksumBufPtr, checksumSize);
2343		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2344			ALOGE("glGetTexParameterfv: GL communication error, please report this issue to b.android.com.\n");
2345			abort();
2346		}
2347	}
2348}
2349
2350void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
2351{
2352
2353	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2354	IOStream *stream = ctx->m_stream;
2355	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2356	bool useChecksum = checksumCalculator->getVersion() > 0;
2357
2358	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
2359	 unsigned char *ptr;
2360	 unsigned char *buf;
2361	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2362	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2363	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2364	buf = stream->alloc(totalSize);
2365	ptr = buf;
2366	int tmp = OP_glGetTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2367	memcpy(ptr, &totalSize, 4);  ptr += 4;
2368
2369		memcpy(ptr, &target, 4); ptr += 4;
2370		memcpy(ptr, &pname, 4); ptr += 4;
2371	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2372
2373	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2374	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2375
2376	stream->readback(params, __size_params);
2377	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2378	if (useChecksum) {
2379		unsigned char *checksumBufPtr = NULL;
2380		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2381		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2382		stream->readback(checksumBufPtr, checksumSize);
2383		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2384			ALOGE("glGetTexParameteriv: GL communication error, please report this issue to b.android.com.\n");
2385			abort();
2386		}
2387	}
2388}
2389
2390void glGetUniformfv_enc(void *self , GLuint program, GLint location, GLfloat* params)
2391{
2392
2393	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2394	IOStream *stream = ctx->m_stream;
2395	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2396	bool useChecksum = checksumCalculator->getVersion() > 0;
2397
2398	const unsigned int __size_params =  glSizeof(glesv2_enc::uniformType(self, program, location));
2399	 unsigned char *ptr;
2400	 unsigned char *buf;
2401	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2402	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2403	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2404	buf = stream->alloc(totalSize);
2405	ptr = buf;
2406	int tmp = OP_glGetUniformfv;memcpy(ptr, &tmp, 4); ptr += 4;
2407	memcpy(ptr, &totalSize, 4);  ptr += 4;
2408
2409		memcpy(ptr, &program, 4); ptr += 4;
2410		memcpy(ptr, &location, 4); ptr += 4;
2411	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2412
2413	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2414	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2415
2416	stream->readback(params, __size_params);
2417	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2418	if (useChecksum) {
2419		unsigned char *checksumBufPtr = NULL;
2420		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2421		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2422		stream->readback(checksumBufPtr, checksumSize);
2423		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2424			ALOGE("glGetUniformfv: GL communication error, please report this issue to b.android.com.\n");
2425			abort();
2426		}
2427	}
2428}
2429
2430void glGetUniformiv_enc(void *self , GLuint program, GLint location, GLint* params)
2431{
2432
2433	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2434	IOStream *stream = ctx->m_stream;
2435	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2436	bool useChecksum = checksumCalculator->getVersion() > 0;
2437
2438	const unsigned int __size_params =  glSizeof(glesv2_enc::uniformType(self, program, location));
2439	 unsigned char *ptr;
2440	 unsigned char *buf;
2441	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2442	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2443	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2444	buf = stream->alloc(totalSize);
2445	ptr = buf;
2446	int tmp = OP_glGetUniformiv;memcpy(ptr, &tmp, 4); ptr += 4;
2447	memcpy(ptr, &totalSize, 4);  ptr += 4;
2448
2449		memcpy(ptr, &program, 4); ptr += 4;
2450		memcpy(ptr, &location, 4); ptr += 4;
2451	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2452
2453	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2454	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2455
2456	stream->readback(params, __size_params);
2457	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2458	if (useChecksum) {
2459		unsigned char *checksumBufPtr = NULL;
2460		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2461		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2462		stream->readback(checksumBufPtr, checksumSize);
2463		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2464			ALOGE("glGetUniformiv: GL communication error, please report this issue to b.android.com.\n");
2465			abort();
2466		}
2467	}
2468}
2469
2470int glGetUniformLocation_enc(void *self , GLuint program, const GLchar* name)
2471{
2472
2473	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2474	IOStream *stream = ctx->m_stream;
2475	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2476	bool useChecksum = checksumCalculator->getVersion() > 0;
2477
2478	const unsigned int __size_name =  (strlen(name) + 1);
2479	 unsigned char *ptr;
2480	 unsigned char *buf;
2481	 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
2482	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2483	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2484	buf = stream->alloc(totalSize);
2485	ptr = buf;
2486	int tmp = OP_glGetUniformLocation;memcpy(ptr, &tmp, 4); ptr += 4;
2487	memcpy(ptr, &totalSize, 4);  ptr += 4;
2488
2489		memcpy(ptr, &program, 4); ptr += 4;
2490	*(unsigned int *)(ptr) = __size_name; ptr += 4;
2491	memcpy(ptr, name, __size_name);ptr += __size_name;
2492
2493	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2494	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2495
2496
2497	int retval;
2498	stream->readback(&retval, 4);
2499	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
2500	if (useChecksum) {
2501		unsigned char *checksumBufPtr = NULL;
2502		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2503		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2504		stream->readback(checksumBufPtr, checksumSize);
2505		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2506			ALOGE("glGetUniformLocation: GL communication error, please report this issue to b.android.com.\n");
2507			abort();
2508		}
2509	}
2510	return retval;
2511}
2512
2513void glGetVertexAttribfv_enc(void *self , GLuint index, GLenum pname, GLfloat* params)
2514{
2515
2516	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2517	IOStream *stream = ctx->m_stream;
2518	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2519	bool useChecksum = checksumCalculator->getVersion() > 0;
2520
2521	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
2522	 unsigned char *ptr;
2523	 unsigned char *buf;
2524	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2525	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2526	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2527	buf = stream->alloc(totalSize);
2528	ptr = buf;
2529	int tmp = OP_glGetVertexAttribfv;memcpy(ptr, &tmp, 4); ptr += 4;
2530	memcpy(ptr, &totalSize, 4);  ptr += 4;
2531
2532		memcpy(ptr, &index, 4); ptr += 4;
2533		memcpy(ptr, &pname, 4); ptr += 4;
2534	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2535
2536	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2537	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2538
2539	stream->readback(params, __size_params);
2540	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2541	if (useChecksum) {
2542		unsigned char *checksumBufPtr = NULL;
2543		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2544		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2545		stream->readback(checksumBufPtr, checksumSize);
2546		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2547			ALOGE("glGetVertexAttribfv: GL communication error, please report this issue to b.android.com.\n");
2548			abort();
2549		}
2550	}
2551}
2552
2553void glGetVertexAttribiv_enc(void *self , GLuint index, GLenum pname, GLint* params)
2554{
2555
2556	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2557	IOStream *stream = ctx->m_stream;
2558	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2559	bool useChecksum = checksumCalculator->getVersion() > 0;
2560
2561	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
2562	 unsigned char *ptr;
2563	 unsigned char *buf;
2564	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2565	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2566	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2567	buf = stream->alloc(totalSize);
2568	ptr = buf;
2569	int tmp = OP_glGetVertexAttribiv;memcpy(ptr, &tmp, 4); ptr += 4;
2570	memcpy(ptr, &totalSize, 4);  ptr += 4;
2571
2572		memcpy(ptr, &index, 4); ptr += 4;
2573		memcpy(ptr, &pname, 4); ptr += 4;
2574	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2575
2576	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2577	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2578
2579	stream->readback(params, __size_params);
2580	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2581	if (useChecksum) {
2582		unsigned char *checksumBufPtr = NULL;
2583		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2584		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2585		stream->readback(checksumBufPtr, checksumSize);
2586		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2587			ALOGE("glGetVertexAttribiv: GL communication error, please report this issue to b.android.com.\n");
2588			abort();
2589		}
2590	}
2591}
2592
2593void glHint_enc(void *self , GLenum target, GLenum mode)
2594{
2595
2596	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2597	IOStream *stream = ctx->m_stream;
2598	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2599	bool useChecksum = checksumCalculator->getVersion() > 0;
2600
2601	 unsigned char *ptr;
2602	 unsigned char *buf;
2603	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
2604	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2605	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2606	buf = stream->alloc(totalSize);
2607	ptr = buf;
2608	int tmp = OP_glHint;memcpy(ptr, &tmp, 4); ptr += 4;
2609	memcpy(ptr, &totalSize, 4);  ptr += 4;
2610
2611		memcpy(ptr, &target, 4); ptr += 4;
2612		memcpy(ptr, &mode, 4); ptr += 4;
2613
2614	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2615	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2616
2617}
2618
2619GLboolean glIsBuffer_enc(void *self , GLuint buffer)
2620{
2621
2622	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2623	IOStream *stream = ctx->m_stream;
2624	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2625	bool useChecksum = checksumCalculator->getVersion() > 0;
2626
2627	 unsigned char *ptr;
2628	 unsigned char *buf;
2629	 const size_t sizeWithoutChecksum = 8 + 4;
2630	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2631	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2632	buf = stream->alloc(totalSize);
2633	ptr = buf;
2634	int tmp = OP_glIsBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2635	memcpy(ptr, &totalSize, 4);  ptr += 4;
2636
2637		memcpy(ptr, &buffer, 4); ptr += 4;
2638
2639	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2640	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2641
2642
2643	GLboolean retval;
2644	stream->readback(&retval, 1);
2645	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2646	if (useChecksum) {
2647		unsigned char *checksumBufPtr = NULL;
2648		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2649		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2650		stream->readback(checksumBufPtr, checksumSize);
2651		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2652			ALOGE("glIsBuffer: GL communication error, please report this issue to b.android.com.\n");
2653			abort();
2654		}
2655	}
2656	return retval;
2657}
2658
2659GLboolean glIsEnabled_enc(void *self , GLenum cap)
2660{
2661
2662	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2663	IOStream *stream = ctx->m_stream;
2664	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2665	bool useChecksum = checksumCalculator->getVersion() > 0;
2666
2667	 unsigned char *ptr;
2668	 unsigned char *buf;
2669	 const size_t sizeWithoutChecksum = 8 + 4;
2670	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2671	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2672	buf = stream->alloc(totalSize);
2673	ptr = buf;
2674	int tmp = OP_glIsEnabled;memcpy(ptr, &tmp, 4); ptr += 4;
2675	memcpy(ptr, &totalSize, 4);  ptr += 4;
2676
2677		memcpy(ptr, &cap, 4); ptr += 4;
2678
2679	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2680	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2681
2682
2683	GLboolean retval;
2684	stream->readback(&retval, 1);
2685	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2686	if (useChecksum) {
2687		unsigned char *checksumBufPtr = NULL;
2688		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2689		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2690		stream->readback(checksumBufPtr, checksumSize);
2691		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2692			ALOGE("glIsEnabled: GL communication error, please report this issue to b.android.com.\n");
2693			abort();
2694		}
2695	}
2696	return retval;
2697}
2698
2699GLboolean glIsFramebuffer_enc(void *self , GLuint framebuffer)
2700{
2701
2702	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2703	IOStream *stream = ctx->m_stream;
2704	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2705	bool useChecksum = checksumCalculator->getVersion() > 0;
2706
2707	 unsigned char *ptr;
2708	 unsigned char *buf;
2709	 const size_t sizeWithoutChecksum = 8 + 4;
2710	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2711	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2712	buf = stream->alloc(totalSize);
2713	ptr = buf;
2714	int tmp = OP_glIsFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2715	memcpy(ptr, &totalSize, 4);  ptr += 4;
2716
2717		memcpy(ptr, &framebuffer, 4); ptr += 4;
2718
2719	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2720	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2721
2722
2723	GLboolean retval;
2724	stream->readback(&retval, 1);
2725	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2726	if (useChecksum) {
2727		unsigned char *checksumBufPtr = NULL;
2728		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2729		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2730		stream->readback(checksumBufPtr, checksumSize);
2731		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2732			ALOGE("glIsFramebuffer: GL communication error, please report this issue to b.android.com.\n");
2733			abort();
2734		}
2735	}
2736	return retval;
2737}
2738
2739GLboolean glIsProgram_enc(void *self , GLuint program)
2740{
2741
2742	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2743	IOStream *stream = ctx->m_stream;
2744	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2745	bool useChecksum = checksumCalculator->getVersion() > 0;
2746
2747	 unsigned char *ptr;
2748	 unsigned char *buf;
2749	 const size_t sizeWithoutChecksum = 8 + 4;
2750	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2751	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2752	buf = stream->alloc(totalSize);
2753	ptr = buf;
2754	int tmp = OP_glIsProgram;memcpy(ptr, &tmp, 4); ptr += 4;
2755	memcpy(ptr, &totalSize, 4);  ptr += 4;
2756
2757		memcpy(ptr, &program, 4); ptr += 4;
2758
2759	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2760	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2761
2762
2763	GLboolean retval;
2764	stream->readback(&retval, 1);
2765	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2766	if (useChecksum) {
2767		unsigned char *checksumBufPtr = NULL;
2768		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2769		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2770		stream->readback(checksumBufPtr, checksumSize);
2771		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2772			ALOGE("glIsProgram: GL communication error, please report this issue to b.android.com.\n");
2773			abort();
2774		}
2775	}
2776	return retval;
2777}
2778
2779GLboolean glIsRenderbuffer_enc(void *self , GLuint renderbuffer)
2780{
2781
2782	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2783	IOStream *stream = ctx->m_stream;
2784	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2785	bool useChecksum = checksumCalculator->getVersion() > 0;
2786
2787	 unsigned char *ptr;
2788	 unsigned char *buf;
2789	 const size_t sizeWithoutChecksum = 8 + 4;
2790	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2791	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2792	buf = stream->alloc(totalSize);
2793	ptr = buf;
2794	int tmp = OP_glIsRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2795	memcpy(ptr, &totalSize, 4);  ptr += 4;
2796
2797		memcpy(ptr, &renderbuffer, 4); ptr += 4;
2798
2799	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2800	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2801
2802
2803	GLboolean retval;
2804	stream->readback(&retval, 1);
2805	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2806	if (useChecksum) {
2807		unsigned char *checksumBufPtr = NULL;
2808		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2809		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2810		stream->readback(checksumBufPtr, checksumSize);
2811		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2812			ALOGE("glIsRenderbuffer: GL communication error, please report this issue to b.android.com.\n");
2813			abort();
2814		}
2815	}
2816	return retval;
2817}
2818
2819GLboolean glIsShader_enc(void *self , GLuint shader)
2820{
2821
2822	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2823	IOStream *stream = ctx->m_stream;
2824	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2825	bool useChecksum = checksumCalculator->getVersion() > 0;
2826
2827	 unsigned char *ptr;
2828	 unsigned char *buf;
2829	 const size_t sizeWithoutChecksum = 8 + 4;
2830	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2831	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2832	buf = stream->alloc(totalSize);
2833	ptr = buf;
2834	int tmp = OP_glIsShader;memcpy(ptr, &tmp, 4); ptr += 4;
2835	memcpy(ptr, &totalSize, 4);  ptr += 4;
2836
2837		memcpy(ptr, &shader, 4); ptr += 4;
2838
2839	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2840	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2841
2842
2843	GLboolean retval;
2844	stream->readback(&retval, 1);
2845	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2846	if (useChecksum) {
2847		unsigned char *checksumBufPtr = NULL;
2848		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2849		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2850		stream->readback(checksumBufPtr, checksumSize);
2851		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2852			ALOGE("glIsShader: GL communication error, please report this issue to b.android.com.\n");
2853			abort();
2854		}
2855	}
2856	return retval;
2857}
2858
2859GLboolean glIsTexture_enc(void *self , GLuint texture)
2860{
2861
2862	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2863	IOStream *stream = ctx->m_stream;
2864	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2865	bool useChecksum = checksumCalculator->getVersion() > 0;
2866
2867	 unsigned char *ptr;
2868	 unsigned char *buf;
2869	 const size_t sizeWithoutChecksum = 8 + 4;
2870	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2871	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2872	buf = stream->alloc(totalSize);
2873	ptr = buf;
2874	int tmp = OP_glIsTexture;memcpy(ptr, &tmp, 4); ptr += 4;
2875	memcpy(ptr, &totalSize, 4);  ptr += 4;
2876
2877		memcpy(ptr, &texture, 4); ptr += 4;
2878
2879	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2880	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2881
2882
2883	GLboolean retval;
2884	stream->readback(&retval, 1);
2885	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2886	if (useChecksum) {
2887		unsigned char *checksumBufPtr = NULL;
2888		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2889		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2890		stream->readback(checksumBufPtr, checksumSize);
2891		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2892			ALOGE("glIsTexture: GL communication error, please report this issue to b.android.com.\n");
2893			abort();
2894		}
2895	}
2896	return retval;
2897}
2898
2899void glLineWidth_enc(void *self , GLfloat width)
2900{
2901
2902	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2903	IOStream *stream = ctx->m_stream;
2904	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2905	bool useChecksum = checksumCalculator->getVersion() > 0;
2906
2907	 unsigned char *ptr;
2908	 unsigned char *buf;
2909	 const size_t sizeWithoutChecksum = 8 + 4;
2910	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2911	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2912	buf = stream->alloc(totalSize);
2913	ptr = buf;
2914	int tmp = OP_glLineWidth;memcpy(ptr, &tmp, 4); ptr += 4;
2915	memcpy(ptr, &totalSize, 4);  ptr += 4;
2916
2917		memcpy(ptr, &width, 4); ptr += 4;
2918
2919	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2920	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2921
2922}
2923
2924void glLinkProgram_enc(void *self , GLuint program)
2925{
2926
2927	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2928	IOStream *stream = ctx->m_stream;
2929	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2930	bool useChecksum = checksumCalculator->getVersion() > 0;
2931
2932	 unsigned char *ptr;
2933	 unsigned char *buf;
2934	 const size_t sizeWithoutChecksum = 8 + 4;
2935	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2936	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2937	buf = stream->alloc(totalSize);
2938	ptr = buf;
2939	int tmp = OP_glLinkProgram;memcpy(ptr, &tmp, 4); ptr += 4;
2940	memcpy(ptr, &totalSize, 4);  ptr += 4;
2941
2942		memcpy(ptr, &program, 4); ptr += 4;
2943
2944	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2945	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2946
2947}
2948
2949void glPixelStorei_enc(void *self , GLenum pname, GLint param)
2950{
2951
2952	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2953	IOStream *stream = ctx->m_stream;
2954	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2955	bool useChecksum = checksumCalculator->getVersion() > 0;
2956
2957	 unsigned char *ptr;
2958	 unsigned char *buf;
2959	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
2960	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2961	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2962	buf = stream->alloc(totalSize);
2963	ptr = buf;
2964	int tmp = OP_glPixelStorei;memcpy(ptr, &tmp, 4); ptr += 4;
2965	memcpy(ptr, &totalSize, 4);  ptr += 4;
2966
2967		memcpy(ptr, &pname, 4); ptr += 4;
2968		memcpy(ptr, &param, 4); ptr += 4;
2969
2970	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2971	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2972
2973}
2974
2975void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units)
2976{
2977
2978	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
2979	IOStream *stream = ctx->m_stream;
2980	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2981	bool useChecksum = checksumCalculator->getVersion() > 0;
2982
2983	 unsigned char *ptr;
2984	 unsigned char *buf;
2985	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
2986	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2987	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2988	buf = stream->alloc(totalSize);
2989	ptr = buf;
2990	int tmp = OP_glPolygonOffset;memcpy(ptr, &tmp, 4); ptr += 4;
2991	memcpy(ptr, &totalSize, 4);  ptr += 4;
2992
2993		memcpy(ptr, &factor, 4); ptr += 4;
2994		memcpy(ptr, &units, 4); ptr += 4;
2995
2996	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2997	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2998
2999}
3000
3001void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
3002{
3003
3004	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3005	IOStream *stream = ctx->m_stream;
3006	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3007	bool useChecksum = checksumCalculator->getVersion() > 0;
3008
3009	const unsigned int __size_pixels =  glesv2_enc::pixelDataSize(self, width, height, format, type, 1);
3010	 unsigned char *ptr;
3011	 unsigned char *buf;
3012	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 0 + 1*4;
3013	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3014	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3015	buf = stream->alloc(totalSize);
3016	ptr = buf;
3017	int tmp = OP_glReadPixels;memcpy(ptr, &tmp, 4); ptr += 4;
3018	memcpy(ptr, &totalSize, 4);  ptr += 4;
3019
3020		memcpy(ptr, &x, 4); ptr += 4;
3021		memcpy(ptr, &y, 4); ptr += 4;
3022		memcpy(ptr, &width, 4); ptr += 4;
3023		memcpy(ptr, &height, 4); ptr += 4;
3024		memcpy(ptr, &format, 4); ptr += 4;
3025		memcpy(ptr, &type, 4); ptr += 4;
3026	*(unsigned int *)(ptr) = __size_pixels; ptr += 4;
3027
3028	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3029	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3030
3031	stream->readback(pixels, __size_pixels);
3032	if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3033	if (useChecksum) {
3034		unsigned char *checksumBufPtr = NULL;
3035		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
3036		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
3037		stream->readback(checksumBufPtr, checksumSize);
3038		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
3039			ALOGE("glReadPixels: GL communication error, please report this issue to b.android.com.\n");
3040			abort();
3041		}
3042	}
3043}
3044
3045void glReleaseShaderCompiler_enc(void *self )
3046{
3047
3048	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3049	IOStream *stream = ctx->m_stream;
3050	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3051	bool useChecksum = checksumCalculator->getVersion() > 0;
3052
3053	 unsigned char *ptr;
3054	 unsigned char *buf;
3055	 const size_t sizeWithoutChecksum = 8;
3056	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3057	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3058	buf = stream->alloc(totalSize);
3059	ptr = buf;
3060	int tmp = OP_glReleaseShaderCompiler;memcpy(ptr, &tmp, 4); ptr += 4;
3061	memcpy(ptr, &totalSize, 4);  ptr += 4;
3062
3063
3064	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3065	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3066
3067}
3068
3069void glRenderbufferStorage_enc(void *self , GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
3070{
3071
3072	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3073	IOStream *stream = ctx->m_stream;
3074	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3075	bool useChecksum = checksumCalculator->getVersion() > 0;
3076
3077	 unsigned char *ptr;
3078	 unsigned char *buf;
3079	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3080	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3081	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3082	buf = stream->alloc(totalSize);
3083	ptr = buf;
3084	int tmp = OP_glRenderbufferStorage;memcpy(ptr, &tmp, 4); ptr += 4;
3085	memcpy(ptr, &totalSize, 4);  ptr += 4;
3086
3087		memcpy(ptr, &target, 4); ptr += 4;
3088		memcpy(ptr, &internalformat, 4); ptr += 4;
3089		memcpy(ptr, &width, 4); ptr += 4;
3090		memcpy(ptr, &height, 4); ptr += 4;
3091
3092	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3093	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3094
3095}
3096
3097void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert)
3098{
3099
3100	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3101	IOStream *stream = ctx->m_stream;
3102	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3103	bool useChecksum = checksumCalculator->getVersion() > 0;
3104
3105	 unsigned char *ptr;
3106	 unsigned char *buf;
3107	 const size_t sizeWithoutChecksum = 8 + 4 + 1;
3108	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3109	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3110	buf = stream->alloc(totalSize);
3111	ptr = buf;
3112	int tmp = OP_glSampleCoverage;memcpy(ptr, &tmp, 4); ptr += 4;
3113	memcpy(ptr, &totalSize, 4);  ptr += 4;
3114
3115		memcpy(ptr, &value, 4); ptr += 4;
3116		memcpy(ptr, &invert, 1); ptr += 1;
3117
3118	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3119	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3120
3121}
3122
3123void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
3124{
3125
3126	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3127	IOStream *stream = ctx->m_stream;
3128	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3129	bool useChecksum = checksumCalculator->getVersion() > 0;
3130
3131	 unsigned char *ptr;
3132	 unsigned char *buf;
3133	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3134	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3135	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3136	buf = stream->alloc(totalSize);
3137	ptr = buf;
3138	int tmp = OP_glScissor;memcpy(ptr, &tmp, 4); ptr += 4;
3139	memcpy(ptr, &totalSize, 4);  ptr += 4;
3140
3141		memcpy(ptr, &x, 4); ptr += 4;
3142		memcpy(ptr, &y, 4); ptr += 4;
3143		memcpy(ptr, &width, 4); ptr += 4;
3144		memcpy(ptr, &height, 4); ptr += 4;
3145
3146	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3147	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3148
3149}
3150
3151void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask)
3152{
3153
3154	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3155	IOStream *stream = ctx->m_stream;
3156	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3157	bool useChecksum = checksumCalculator->getVersion() > 0;
3158
3159	 unsigned char *ptr;
3160	 unsigned char *buf;
3161	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3162	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3163	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3164	buf = stream->alloc(totalSize);
3165	ptr = buf;
3166	int tmp = OP_glStencilFunc;memcpy(ptr, &tmp, 4); ptr += 4;
3167	memcpy(ptr, &totalSize, 4);  ptr += 4;
3168
3169		memcpy(ptr, &func, 4); ptr += 4;
3170		memcpy(ptr, &ref, 4); ptr += 4;
3171		memcpy(ptr, &mask, 4); ptr += 4;
3172
3173	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3174	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3175
3176}
3177
3178void glStencilFuncSeparate_enc(void *self , GLenum face, GLenum func, GLint ref, GLuint mask)
3179{
3180
3181	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3182	IOStream *stream = ctx->m_stream;
3183	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3184	bool useChecksum = checksumCalculator->getVersion() > 0;
3185
3186	 unsigned char *ptr;
3187	 unsigned char *buf;
3188	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3189	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3190	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3191	buf = stream->alloc(totalSize);
3192	ptr = buf;
3193	int tmp = OP_glStencilFuncSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3194	memcpy(ptr, &totalSize, 4);  ptr += 4;
3195
3196		memcpy(ptr, &face, 4); ptr += 4;
3197		memcpy(ptr, &func, 4); ptr += 4;
3198		memcpy(ptr, &ref, 4); ptr += 4;
3199		memcpy(ptr, &mask, 4); ptr += 4;
3200
3201	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3202	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3203
3204}
3205
3206void glStencilMask_enc(void *self , GLuint mask)
3207{
3208
3209	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3210	IOStream *stream = ctx->m_stream;
3211	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3212	bool useChecksum = checksumCalculator->getVersion() > 0;
3213
3214	 unsigned char *ptr;
3215	 unsigned char *buf;
3216	 const size_t sizeWithoutChecksum = 8 + 4;
3217	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3218	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3219	buf = stream->alloc(totalSize);
3220	ptr = buf;
3221	int tmp = OP_glStencilMask;memcpy(ptr, &tmp, 4); ptr += 4;
3222	memcpy(ptr, &totalSize, 4);  ptr += 4;
3223
3224		memcpy(ptr, &mask, 4); ptr += 4;
3225
3226	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3227	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3228
3229}
3230
3231void glStencilMaskSeparate_enc(void *self , GLenum face, GLuint mask)
3232{
3233
3234	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3235	IOStream *stream = ctx->m_stream;
3236	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3237	bool useChecksum = checksumCalculator->getVersion() > 0;
3238
3239	 unsigned char *ptr;
3240	 unsigned char *buf;
3241	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3242	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3243	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3244	buf = stream->alloc(totalSize);
3245	ptr = buf;
3246	int tmp = OP_glStencilMaskSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3247	memcpy(ptr, &totalSize, 4);  ptr += 4;
3248
3249		memcpy(ptr, &face, 4); ptr += 4;
3250		memcpy(ptr, &mask, 4); ptr += 4;
3251
3252	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3253	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3254
3255}
3256
3257void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass)
3258{
3259
3260	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3261	IOStream *stream = ctx->m_stream;
3262	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3263	bool useChecksum = checksumCalculator->getVersion() > 0;
3264
3265	 unsigned char *ptr;
3266	 unsigned char *buf;
3267	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3268	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3269	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3270	buf = stream->alloc(totalSize);
3271	ptr = buf;
3272	int tmp = OP_glStencilOp;memcpy(ptr, &tmp, 4); ptr += 4;
3273	memcpy(ptr, &totalSize, 4);  ptr += 4;
3274
3275		memcpy(ptr, &fail, 4); ptr += 4;
3276		memcpy(ptr, &zfail, 4); ptr += 4;
3277		memcpy(ptr, &zpass, 4); ptr += 4;
3278
3279	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3280	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3281
3282}
3283
3284void glStencilOpSeparate_enc(void *self , GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
3285{
3286
3287	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3288	IOStream *stream = ctx->m_stream;
3289	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3290	bool useChecksum = checksumCalculator->getVersion() > 0;
3291
3292	 unsigned char *ptr;
3293	 unsigned char *buf;
3294	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3295	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3296	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3297	buf = stream->alloc(totalSize);
3298	ptr = buf;
3299	int tmp = OP_glStencilOpSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
3300	memcpy(ptr, &totalSize, 4);  ptr += 4;
3301
3302		memcpy(ptr, &face, 4); ptr += 4;
3303		memcpy(ptr, &fail, 4); ptr += 4;
3304		memcpy(ptr, &zfail, 4); ptr += 4;
3305		memcpy(ptr, &zpass, 4); ptr += 4;
3306
3307	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3308	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3309
3310}
3311
3312void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
3313{
3314
3315	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3316	IOStream *stream = ctx->m_stream;
3317	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3318	bool useChecksum = checksumCalculator->getVersion() > 0;
3319
3320	const unsigned int __size_pixels = ((pixels != NULL) ?  glesv2_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
3321	 unsigned char *ptr;
3322	 unsigned char *buf;
3323	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
3324	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3325	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3326	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3327	ptr = buf;
3328	int tmp = OP_glTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
3329	memcpy(ptr, &totalSize, 4);  ptr += 4;
3330
3331		memcpy(ptr, &target, 4); ptr += 4;
3332		memcpy(ptr, &level, 4); ptr += 4;
3333		memcpy(ptr, &internalformat, 4); ptr += 4;
3334		memcpy(ptr, &width, 4); ptr += 4;
3335		memcpy(ptr, &height, 4); ptr += 4;
3336		memcpy(ptr, &border, 4); ptr += 4;
3337		memcpy(ptr, &format, 4); ptr += 4;
3338		memcpy(ptr, &type, 4); ptr += 4;
3339
3340	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3341	stream->flush();
3342	stream->writeFully(&__size_pixels,4);
3343	if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
3344	if (pixels != NULL) {
3345		stream->writeFully(pixels, __size_pixels);
3346		if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3347	}
3348	buf = stream->alloc(checksumSize);
3349	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
3350
3351}
3352
3353void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param)
3354{
3355
3356	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3357	IOStream *stream = ctx->m_stream;
3358	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3359	bool useChecksum = checksumCalculator->getVersion() > 0;
3360
3361	 unsigned char *ptr;
3362	 unsigned char *buf;
3363	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3364	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3365	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3366	buf = stream->alloc(totalSize);
3367	ptr = buf;
3368	int tmp = OP_glTexParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
3369	memcpy(ptr, &totalSize, 4);  ptr += 4;
3370
3371		memcpy(ptr, &target, 4); ptr += 4;
3372		memcpy(ptr, &pname, 4); ptr += 4;
3373		memcpy(ptr, &param, 4); ptr += 4;
3374
3375	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3376	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3377
3378}
3379
3380void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params)
3381{
3382
3383	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3384	IOStream *stream = ctx->m_stream;
3385	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3386	bool useChecksum = checksumCalculator->getVersion() > 0;
3387
3388	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
3389	 unsigned char *ptr;
3390	 unsigned char *buf;
3391	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
3392	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3393	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3394	buf = stream->alloc(totalSize);
3395	ptr = buf;
3396	int tmp = OP_glTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
3397	memcpy(ptr, &totalSize, 4);  ptr += 4;
3398
3399		memcpy(ptr, &target, 4); ptr += 4;
3400		memcpy(ptr, &pname, 4); ptr += 4;
3401	*(unsigned int *)(ptr) = __size_params; ptr += 4;
3402	memcpy(ptr, params, __size_params);ptr += __size_params;
3403
3404	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3405	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3406
3407}
3408
3409void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
3410{
3411
3412	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3413	IOStream *stream = ctx->m_stream;
3414	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3415	bool useChecksum = checksumCalculator->getVersion() > 0;
3416
3417	 unsigned char *ptr;
3418	 unsigned char *buf;
3419	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3420	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3421	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3422	buf = stream->alloc(totalSize);
3423	ptr = buf;
3424	int tmp = OP_glTexParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
3425	memcpy(ptr, &totalSize, 4);  ptr += 4;
3426
3427		memcpy(ptr, &target, 4); ptr += 4;
3428		memcpy(ptr, &pname, 4); ptr += 4;
3429		memcpy(ptr, &param, 4); ptr += 4;
3430
3431	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3432	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3433
3434}
3435
3436void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* params)
3437{
3438
3439	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3440	IOStream *stream = ctx->m_stream;
3441	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3442	bool useChecksum = checksumCalculator->getVersion() > 0;
3443
3444	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
3445	 unsigned char *ptr;
3446	 unsigned char *buf;
3447	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*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_glTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
3453	memcpy(ptr, &totalSize, 4);  ptr += 4;
3454
3455		memcpy(ptr, &target, 4); ptr += 4;
3456		memcpy(ptr, &pname, 4); ptr += 4;
3457	*(unsigned int *)(ptr) = __size_params; ptr += 4;
3458	memcpy(ptr, params, __size_params);ptr += __size_params;
3459
3460	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3461	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3462
3463}
3464
3465void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
3466{
3467
3468	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3469	IOStream *stream = ctx->m_stream;
3470	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3471	bool useChecksum = checksumCalculator->getVersion() > 0;
3472
3473	const unsigned int __size_pixels = ((pixels != NULL) ?  glesv2_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
3474	 unsigned char *ptr;
3475	 unsigned char *buf;
3476	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
3477	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3478	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3479	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3480	ptr = buf;
3481	int tmp = OP_glTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
3482	memcpy(ptr, &totalSize, 4);  ptr += 4;
3483
3484		memcpy(ptr, &target, 4); ptr += 4;
3485		memcpy(ptr, &level, 4); ptr += 4;
3486		memcpy(ptr, &xoffset, 4); ptr += 4;
3487		memcpy(ptr, &yoffset, 4); ptr += 4;
3488		memcpy(ptr, &width, 4); ptr += 4;
3489		memcpy(ptr, &height, 4); ptr += 4;
3490		memcpy(ptr, &format, 4); ptr += 4;
3491		memcpy(ptr, &type, 4); ptr += 4;
3492
3493	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3494	stream->flush();
3495	stream->writeFully(&__size_pixels,4);
3496	if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
3497	if (pixels != NULL) {
3498		stream->writeFully(pixels, __size_pixels);
3499		if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3500	}
3501	buf = stream->alloc(checksumSize);
3502	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
3503
3504}
3505
3506void glUniform1f_enc(void *self , GLint location, GLfloat x)
3507{
3508
3509	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3510	IOStream *stream = ctx->m_stream;
3511	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3512	bool useChecksum = checksumCalculator->getVersion() > 0;
3513
3514	 unsigned char *ptr;
3515	 unsigned char *buf;
3516	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3517	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3518	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3519	buf = stream->alloc(totalSize);
3520	ptr = buf;
3521	int tmp = OP_glUniform1f;memcpy(ptr, &tmp, 4); ptr += 4;
3522	memcpy(ptr, &totalSize, 4);  ptr += 4;
3523
3524		memcpy(ptr, &location, 4); ptr += 4;
3525		memcpy(ptr, &x, 4); ptr += 4;
3526
3527	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3528	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3529
3530}
3531
3532void glUniform1fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3533{
3534
3535	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3536	IOStream *stream = ctx->m_stream;
3537	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3538	bool useChecksum = checksumCalculator->getVersion() > 0;
3539
3540	const unsigned int __size_v =  (count * sizeof(GLfloat));
3541	 unsigned char *ptr;
3542	 unsigned char *buf;
3543	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3544	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3545	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3546	buf = stream->alloc(totalSize);
3547	ptr = buf;
3548	int tmp = OP_glUniform1fv;memcpy(ptr, &tmp, 4); ptr += 4;
3549	memcpy(ptr, &totalSize, 4);  ptr += 4;
3550
3551		memcpy(ptr, &location, 4); ptr += 4;
3552		memcpy(ptr, &count, 4); ptr += 4;
3553	*(unsigned int *)(ptr) = __size_v; ptr += 4;
3554	memcpy(ptr, v, __size_v);ptr += __size_v;
3555
3556	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3557	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3558
3559}
3560
3561void glUniform1i_enc(void *self , GLint location, GLint x)
3562{
3563
3564	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3565	IOStream *stream = ctx->m_stream;
3566	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3567	bool useChecksum = checksumCalculator->getVersion() > 0;
3568
3569	 unsigned char *ptr;
3570	 unsigned char *buf;
3571	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3572	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3573	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3574	buf = stream->alloc(totalSize);
3575	ptr = buf;
3576	int tmp = OP_glUniform1i;memcpy(ptr, &tmp, 4); ptr += 4;
3577	memcpy(ptr, &totalSize, 4);  ptr += 4;
3578
3579		memcpy(ptr, &location, 4); ptr += 4;
3580		memcpy(ptr, &x, 4); ptr += 4;
3581
3582	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3583	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3584
3585}
3586
3587void glUniform1iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
3588{
3589
3590	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3591	IOStream *stream = ctx->m_stream;
3592	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3593	bool useChecksum = checksumCalculator->getVersion() > 0;
3594
3595	const unsigned int __size_v =  (count * sizeof(GLint));
3596	 unsigned char *ptr;
3597	 unsigned char *buf;
3598	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3599	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3600	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3601	buf = stream->alloc(totalSize);
3602	ptr = buf;
3603	int tmp = OP_glUniform1iv;memcpy(ptr, &tmp, 4); ptr += 4;
3604	memcpy(ptr, &totalSize, 4);  ptr += 4;
3605
3606		memcpy(ptr, &location, 4); ptr += 4;
3607		memcpy(ptr, &count, 4); ptr += 4;
3608	*(unsigned int *)(ptr) = __size_v; ptr += 4;
3609	memcpy(ptr, v, __size_v);ptr += __size_v;
3610
3611	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3612	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3613
3614}
3615
3616void glUniform2f_enc(void *self , GLint location, GLfloat x, GLfloat y)
3617{
3618
3619	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3620	IOStream *stream = ctx->m_stream;
3621	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3622	bool useChecksum = checksumCalculator->getVersion() > 0;
3623
3624	 unsigned char *ptr;
3625	 unsigned char *buf;
3626	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3627	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3628	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3629	buf = stream->alloc(totalSize);
3630	ptr = buf;
3631	int tmp = OP_glUniform2f;memcpy(ptr, &tmp, 4); ptr += 4;
3632	memcpy(ptr, &totalSize, 4);  ptr += 4;
3633
3634		memcpy(ptr, &location, 4); ptr += 4;
3635		memcpy(ptr, &x, 4); ptr += 4;
3636		memcpy(ptr, &y, 4); ptr += 4;
3637
3638	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3639	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3640
3641}
3642
3643void glUniform2fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3644{
3645
3646	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3647	IOStream *stream = ctx->m_stream;
3648	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3649	bool useChecksum = checksumCalculator->getVersion() > 0;
3650
3651	const unsigned int __size_v =  (count * 2 * sizeof(GLfloat));
3652	 unsigned char *ptr;
3653	 unsigned char *buf;
3654	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3655	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3656	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3657	buf = stream->alloc(totalSize);
3658	ptr = buf;
3659	int tmp = OP_glUniform2fv;memcpy(ptr, &tmp, 4); ptr += 4;
3660	memcpy(ptr, &totalSize, 4);  ptr += 4;
3661
3662		memcpy(ptr, &location, 4); ptr += 4;
3663		memcpy(ptr, &count, 4); ptr += 4;
3664	*(unsigned int *)(ptr) = __size_v; ptr += 4;
3665	memcpy(ptr, v, __size_v);ptr += __size_v;
3666
3667	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3668	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3669
3670}
3671
3672void glUniform2i_enc(void *self , GLint location, GLint x, GLint y)
3673{
3674
3675	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3676	IOStream *stream = ctx->m_stream;
3677	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3678	bool useChecksum = checksumCalculator->getVersion() > 0;
3679
3680	 unsigned char *ptr;
3681	 unsigned char *buf;
3682	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3683	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3684	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3685	buf = stream->alloc(totalSize);
3686	ptr = buf;
3687	int tmp = OP_glUniform2i;memcpy(ptr, &tmp, 4); ptr += 4;
3688	memcpy(ptr, &totalSize, 4);  ptr += 4;
3689
3690		memcpy(ptr, &location, 4); ptr += 4;
3691		memcpy(ptr, &x, 4); ptr += 4;
3692		memcpy(ptr, &y, 4); ptr += 4;
3693
3694	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3695	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3696
3697}
3698
3699void glUniform2iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
3700{
3701
3702	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3703	IOStream *stream = ctx->m_stream;
3704	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3705	bool useChecksum = checksumCalculator->getVersion() > 0;
3706
3707	const unsigned int __size_v =  (count * 2 * sizeof(GLint));
3708	 unsigned char *ptr;
3709	 unsigned char *buf;
3710	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3711	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3712	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3713	buf = stream->alloc(totalSize);
3714	ptr = buf;
3715	int tmp = OP_glUniform2iv;memcpy(ptr, &tmp, 4); ptr += 4;
3716	memcpy(ptr, &totalSize, 4);  ptr += 4;
3717
3718		memcpy(ptr, &location, 4); ptr += 4;
3719		memcpy(ptr, &count, 4); ptr += 4;
3720	*(unsigned int *)(ptr) = __size_v; ptr += 4;
3721	memcpy(ptr, v, __size_v);ptr += __size_v;
3722
3723	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3724	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3725
3726}
3727
3728void glUniform3f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z)
3729{
3730
3731	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3732	IOStream *stream = ctx->m_stream;
3733	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3734	bool useChecksum = checksumCalculator->getVersion() > 0;
3735
3736	 unsigned char *ptr;
3737	 unsigned char *buf;
3738	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3739	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3740	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3741	buf = stream->alloc(totalSize);
3742	ptr = buf;
3743	int tmp = OP_glUniform3f;memcpy(ptr, &tmp, 4); ptr += 4;
3744	memcpy(ptr, &totalSize, 4);  ptr += 4;
3745
3746		memcpy(ptr, &location, 4); ptr += 4;
3747		memcpy(ptr, &x, 4); ptr += 4;
3748		memcpy(ptr, &y, 4); ptr += 4;
3749		memcpy(ptr, &z, 4); ptr += 4;
3750
3751	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3752	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3753
3754}
3755
3756void glUniform3fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3757{
3758
3759	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3760	IOStream *stream = ctx->m_stream;
3761	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3762	bool useChecksum = checksumCalculator->getVersion() > 0;
3763
3764	const unsigned int __size_v =  (count * 3 * sizeof(GLfloat));
3765	 unsigned char *ptr;
3766	 unsigned char *buf;
3767	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3768	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3769	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3770	buf = stream->alloc(totalSize);
3771	ptr = buf;
3772	int tmp = OP_glUniform3fv;memcpy(ptr, &tmp, 4); ptr += 4;
3773	memcpy(ptr, &totalSize, 4);  ptr += 4;
3774
3775		memcpy(ptr, &location, 4); ptr += 4;
3776		memcpy(ptr, &count, 4); ptr += 4;
3777	*(unsigned int *)(ptr) = __size_v; ptr += 4;
3778	memcpy(ptr, v, __size_v);ptr += __size_v;
3779
3780	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3781	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3782
3783}
3784
3785void glUniform3i_enc(void *self , GLint location, GLint x, GLint y, GLint z)
3786{
3787
3788	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3789	IOStream *stream = ctx->m_stream;
3790	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3791	bool useChecksum = checksumCalculator->getVersion() > 0;
3792
3793	 unsigned char *ptr;
3794	 unsigned char *buf;
3795	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3796	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3797	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3798	buf = stream->alloc(totalSize);
3799	ptr = buf;
3800	int tmp = OP_glUniform3i;memcpy(ptr, &tmp, 4); ptr += 4;
3801	memcpy(ptr, &totalSize, 4);  ptr += 4;
3802
3803		memcpy(ptr, &location, 4); ptr += 4;
3804		memcpy(ptr, &x, 4); ptr += 4;
3805		memcpy(ptr, &y, 4); ptr += 4;
3806		memcpy(ptr, &z, 4); ptr += 4;
3807
3808	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3809	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3810
3811}
3812
3813void glUniform3iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
3814{
3815
3816	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3817	IOStream *stream = ctx->m_stream;
3818	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3819	bool useChecksum = checksumCalculator->getVersion() > 0;
3820
3821	const unsigned int __size_v =  (3 * count * sizeof(GLint));
3822	 unsigned char *ptr;
3823	 unsigned char *buf;
3824	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3825	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3826	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3827	buf = stream->alloc(totalSize);
3828	ptr = buf;
3829	int tmp = OP_glUniform3iv;memcpy(ptr, &tmp, 4); ptr += 4;
3830	memcpy(ptr, &totalSize, 4);  ptr += 4;
3831
3832		memcpy(ptr, &location, 4); ptr += 4;
3833		memcpy(ptr, &count, 4); ptr += 4;
3834	*(unsigned int *)(ptr) = __size_v; ptr += 4;
3835	memcpy(ptr, v, __size_v);ptr += __size_v;
3836
3837	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3838	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3839
3840}
3841
3842void glUniform4f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
3843{
3844
3845	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3846	IOStream *stream = ctx->m_stream;
3847	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3848	bool useChecksum = checksumCalculator->getVersion() > 0;
3849
3850	 unsigned char *ptr;
3851	 unsigned char *buf;
3852	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
3853	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3854	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3855	buf = stream->alloc(totalSize);
3856	ptr = buf;
3857	int tmp = OP_glUniform4f;memcpy(ptr, &tmp, 4); ptr += 4;
3858	memcpy(ptr, &totalSize, 4);  ptr += 4;
3859
3860		memcpy(ptr, &location, 4); ptr += 4;
3861		memcpy(ptr, &x, 4); ptr += 4;
3862		memcpy(ptr, &y, 4); ptr += 4;
3863		memcpy(ptr, &z, 4); ptr += 4;
3864		memcpy(ptr, &w, 4); ptr += 4;
3865
3866	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3867	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3868
3869}
3870
3871void glUniform4fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
3872{
3873
3874	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3875	IOStream *stream = ctx->m_stream;
3876	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3877	bool useChecksum = checksumCalculator->getVersion() > 0;
3878
3879	const unsigned int __size_v =  (4 * count * sizeof(GLfloat));
3880	 unsigned char *ptr;
3881	 unsigned char *buf;
3882	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3883	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3884	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3885	buf = stream->alloc(totalSize);
3886	ptr = buf;
3887	int tmp = OP_glUniform4fv;memcpy(ptr, &tmp, 4); ptr += 4;
3888	memcpy(ptr, &totalSize, 4);  ptr += 4;
3889
3890		memcpy(ptr, &location, 4); ptr += 4;
3891		memcpy(ptr, &count, 4); ptr += 4;
3892	*(unsigned int *)(ptr) = __size_v; ptr += 4;
3893	memcpy(ptr, v, __size_v);ptr += __size_v;
3894
3895	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3896	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3897
3898}
3899
3900void glUniform4i_enc(void *self , GLint location, GLint x, GLint y, GLint z, GLint w)
3901{
3902
3903	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3904	IOStream *stream = ctx->m_stream;
3905	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3906	bool useChecksum = checksumCalculator->getVersion() > 0;
3907
3908	 unsigned char *ptr;
3909	 unsigned char *buf;
3910	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
3911	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3912	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3913	buf = stream->alloc(totalSize);
3914	ptr = buf;
3915	int tmp = OP_glUniform4i;memcpy(ptr, &tmp, 4); ptr += 4;
3916	memcpy(ptr, &totalSize, 4);  ptr += 4;
3917
3918		memcpy(ptr, &location, 4); ptr += 4;
3919		memcpy(ptr, &x, 4); ptr += 4;
3920		memcpy(ptr, &y, 4); ptr += 4;
3921		memcpy(ptr, &z, 4); ptr += 4;
3922		memcpy(ptr, &w, 4); ptr += 4;
3923
3924	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3925	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3926
3927}
3928
3929void glUniform4iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
3930{
3931
3932	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3933	IOStream *stream = ctx->m_stream;
3934	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3935	bool useChecksum = checksumCalculator->getVersion() > 0;
3936
3937	const unsigned int __size_v =  (4 * count * sizeof(GLint));
3938	 unsigned char *ptr;
3939	 unsigned char *buf;
3940	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
3941	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3942	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3943	buf = stream->alloc(totalSize);
3944	ptr = buf;
3945	int tmp = OP_glUniform4iv;memcpy(ptr, &tmp, 4); ptr += 4;
3946	memcpy(ptr, &totalSize, 4);  ptr += 4;
3947
3948		memcpy(ptr, &location, 4); ptr += 4;
3949		memcpy(ptr, &count, 4); ptr += 4;
3950	*(unsigned int *)(ptr) = __size_v; ptr += 4;
3951	memcpy(ptr, v, __size_v);ptr += __size_v;
3952
3953	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3954	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3955
3956}
3957
3958void glUniformMatrix2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
3959{
3960
3961	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3962	IOStream *stream = ctx->m_stream;
3963	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3964	bool useChecksum = checksumCalculator->getVersion() > 0;
3965
3966	const unsigned int __size_value =  (count * 4 * sizeof(GLfloat));
3967	 unsigned char *ptr;
3968	 unsigned char *buf;
3969	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
3970	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3971	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3972	buf = stream->alloc(totalSize);
3973	ptr = buf;
3974	int tmp = OP_glUniformMatrix2fv;memcpy(ptr, &tmp, 4); ptr += 4;
3975	memcpy(ptr, &totalSize, 4);  ptr += 4;
3976
3977		memcpy(ptr, &location, 4); ptr += 4;
3978		memcpy(ptr, &count, 4); ptr += 4;
3979		memcpy(ptr, &transpose, 1); ptr += 1;
3980	*(unsigned int *)(ptr) = __size_value; ptr += 4;
3981	memcpy(ptr, value, __size_value);ptr += __size_value;
3982
3983	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3984	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3985
3986}
3987
3988void glUniformMatrix3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
3989{
3990
3991	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
3992	IOStream *stream = ctx->m_stream;
3993	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3994	bool useChecksum = checksumCalculator->getVersion() > 0;
3995
3996	const unsigned int __size_value =  (count * 9 * sizeof(GLfloat));
3997	 unsigned char *ptr;
3998	 unsigned char *buf;
3999	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
4000	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4001	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4002	buf = stream->alloc(totalSize);
4003	ptr = buf;
4004	int tmp = OP_glUniformMatrix3fv;memcpy(ptr, &tmp, 4); ptr += 4;
4005	memcpy(ptr, &totalSize, 4);  ptr += 4;
4006
4007		memcpy(ptr, &location, 4); ptr += 4;
4008		memcpy(ptr, &count, 4); ptr += 4;
4009		memcpy(ptr, &transpose, 1); ptr += 1;
4010	*(unsigned int *)(ptr) = __size_value; ptr += 4;
4011	memcpy(ptr, value, __size_value);ptr += __size_value;
4012
4013	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4014	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4015
4016}
4017
4018void glUniformMatrix4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
4019{
4020
4021	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4022	IOStream *stream = ctx->m_stream;
4023	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4024	bool useChecksum = checksumCalculator->getVersion() > 0;
4025
4026	const unsigned int __size_value =  (count * 16 * sizeof(GLfloat));
4027	 unsigned char *ptr;
4028	 unsigned char *buf;
4029	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
4030	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4031	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4032	buf = stream->alloc(totalSize);
4033	ptr = buf;
4034	int tmp = OP_glUniformMatrix4fv;memcpy(ptr, &tmp, 4); ptr += 4;
4035	memcpy(ptr, &totalSize, 4);  ptr += 4;
4036
4037		memcpy(ptr, &location, 4); ptr += 4;
4038		memcpy(ptr, &count, 4); ptr += 4;
4039		memcpy(ptr, &transpose, 1); ptr += 1;
4040	*(unsigned int *)(ptr) = __size_value; ptr += 4;
4041	memcpy(ptr, value, __size_value);ptr += __size_value;
4042
4043	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4044	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4045
4046}
4047
4048void glUseProgram_enc(void *self , GLuint program)
4049{
4050
4051	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4052	IOStream *stream = ctx->m_stream;
4053	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4054	bool useChecksum = checksumCalculator->getVersion() > 0;
4055
4056	 unsigned char *ptr;
4057	 unsigned char *buf;
4058	 const size_t sizeWithoutChecksum = 8 + 4;
4059	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4060	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4061	buf = stream->alloc(totalSize);
4062	ptr = buf;
4063	int tmp = OP_glUseProgram;memcpy(ptr, &tmp, 4); ptr += 4;
4064	memcpy(ptr, &totalSize, 4);  ptr += 4;
4065
4066		memcpy(ptr, &program, 4); ptr += 4;
4067
4068	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4069	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4070
4071}
4072
4073void glValidateProgram_enc(void *self , GLuint program)
4074{
4075
4076	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4077	IOStream *stream = ctx->m_stream;
4078	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4079	bool useChecksum = checksumCalculator->getVersion() > 0;
4080
4081	 unsigned char *ptr;
4082	 unsigned char *buf;
4083	 const size_t sizeWithoutChecksum = 8 + 4;
4084	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4085	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4086	buf = stream->alloc(totalSize);
4087	ptr = buf;
4088	int tmp = OP_glValidateProgram;memcpy(ptr, &tmp, 4); ptr += 4;
4089	memcpy(ptr, &totalSize, 4);  ptr += 4;
4090
4091		memcpy(ptr, &program, 4); ptr += 4;
4092
4093	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4094	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4095
4096}
4097
4098void glVertexAttrib1f_enc(void *self , GLuint indx, GLfloat x)
4099{
4100
4101	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4102	IOStream *stream = ctx->m_stream;
4103	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4104	bool useChecksum = checksumCalculator->getVersion() > 0;
4105
4106	 unsigned char *ptr;
4107	 unsigned char *buf;
4108	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4109	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4110	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4111	buf = stream->alloc(totalSize);
4112	ptr = buf;
4113	int tmp = OP_glVertexAttrib1f;memcpy(ptr, &tmp, 4); ptr += 4;
4114	memcpy(ptr, &totalSize, 4);  ptr += 4;
4115
4116		memcpy(ptr, &indx, 4); ptr += 4;
4117		memcpy(ptr, &x, 4); ptr += 4;
4118
4119	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4120	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4121
4122}
4123
4124void glVertexAttrib1fv_enc(void *self , GLuint indx, const GLfloat* values)
4125{
4126
4127	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4128	IOStream *stream = ctx->m_stream;
4129	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4130	bool useChecksum = checksumCalculator->getVersion() > 0;
4131
4132	const unsigned int __size_values =  (sizeof(GLfloat));
4133	 unsigned char *ptr;
4134	 unsigned char *buf;
4135	 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4136	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4137	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4138	buf = stream->alloc(totalSize);
4139	ptr = buf;
4140	int tmp = OP_glVertexAttrib1fv;memcpy(ptr, &tmp, 4); ptr += 4;
4141	memcpy(ptr, &totalSize, 4);  ptr += 4;
4142
4143		memcpy(ptr, &indx, 4); ptr += 4;
4144	*(unsigned int *)(ptr) = __size_values; ptr += 4;
4145	memcpy(ptr, values, __size_values);ptr += __size_values;
4146
4147	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4148	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4149
4150}
4151
4152void glVertexAttrib2f_enc(void *self , GLuint indx, GLfloat x, GLfloat y)
4153{
4154
4155	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4156	IOStream *stream = ctx->m_stream;
4157	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;
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_glVertexAttrib2f;memcpy(ptr, &tmp, 4); ptr += 4;
4168	memcpy(ptr, &totalSize, 4);  ptr += 4;
4169
4170		memcpy(ptr, &indx, 4); ptr += 4;
4171		memcpy(ptr, &x, 4); ptr += 4;
4172		memcpy(ptr, &y, 4); ptr += 4;
4173
4174	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4175	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4176
4177}
4178
4179void glVertexAttrib2fv_enc(void *self , GLuint indx, const GLfloat* values)
4180{
4181
4182	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4183	IOStream *stream = ctx->m_stream;
4184	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4185	bool useChecksum = checksumCalculator->getVersion() > 0;
4186
4187	const unsigned int __size_values =  (2 * sizeof(GLfloat));
4188	 unsigned char *ptr;
4189	 unsigned char *buf;
4190	 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4191	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4192	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4193	buf = stream->alloc(totalSize);
4194	ptr = buf;
4195	int tmp = OP_glVertexAttrib2fv;memcpy(ptr, &tmp, 4); ptr += 4;
4196	memcpy(ptr, &totalSize, 4);  ptr += 4;
4197
4198		memcpy(ptr, &indx, 4); ptr += 4;
4199	*(unsigned int *)(ptr) = __size_values; ptr += 4;
4200	memcpy(ptr, values, __size_values);ptr += __size_values;
4201
4202	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4203	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4204
4205}
4206
4207void glVertexAttrib3f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z)
4208{
4209
4210	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4211	IOStream *stream = ctx->m_stream;
4212	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4213	bool useChecksum = checksumCalculator->getVersion() > 0;
4214
4215	 unsigned char *ptr;
4216	 unsigned char *buf;
4217	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4218	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4219	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4220	buf = stream->alloc(totalSize);
4221	ptr = buf;
4222	int tmp = OP_glVertexAttrib3f;memcpy(ptr, &tmp, 4); ptr += 4;
4223	memcpy(ptr, &totalSize, 4);  ptr += 4;
4224
4225		memcpy(ptr, &indx, 4); ptr += 4;
4226		memcpy(ptr, &x, 4); ptr += 4;
4227		memcpy(ptr, &y, 4); ptr += 4;
4228		memcpy(ptr, &z, 4); ptr += 4;
4229
4230	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4231	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4232
4233}
4234
4235void glVertexAttrib3fv_enc(void *self , GLuint indx, const GLfloat* values)
4236{
4237
4238	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4239	IOStream *stream = ctx->m_stream;
4240	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4241	bool useChecksum = checksumCalculator->getVersion() > 0;
4242
4243	const unsigned int __size_values =  (3 * sizeof(GLfloat));
4244	 unsigned char *ptr;
4245	 unsigned char *buf;
4246	 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4247	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4248	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4249	buf = stream->alloc(totalSize);
4250	ptr = buf;
4251	int tmp = OP_glVertexAttrib3fv;memcpy(ptr, &tmp, 4); ptr += 4;
4252	memcpy(ptr, &totalSize, 4);  ptr += 4;
4253
4254		memcpy(ptr, &indx, 4); ptr += 4;
4255	*(unsigned int *)(ptr) = __size_values; ptr += 4;
4256	memcpy(ptr, values, __size_values);ptr += __size_values;
4257
4258	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4259	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4260
4261}
4262
4263void glVertexAttrib4f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
4264{
4265
4266	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4267	IOStream *stream = ctx->m_stream;
4268	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4269	bool useChecksum = checksumCalculator->getVersion() > 0;
4270
4271	 unsigned char *ptr;
4272	 unsigned char *buf;
4273	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4274	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4275	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4276	buf = stream->alloc(totalSize);
4277	ptr = buf;
4278	int tmp = OP_glVertexAttrib4f;memcpy(ptr, &tmp, 4); ptr += 4;
4279	memcpy(ptr, &totalSize, 4);  ptr += 4;
4280
4281		memcpy(ptr, &indx, 4); ptr += 4;
4282		memcpy(ptr, &x, 4); ptr += 4;
4283		memcpy(ptr, &y, 4); ptr += 4;
4284		memcpy(ptr, &z, 4); ptr += 4;
4285		memcpy(ptr, &w, 4); ptr += 4;
4286
4287	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4288	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4289
4290}
4291
4292void glVertexAttrib4fv_enc(void *self , GLuint indx, const GLfloat* values)
4293{
4294
4295	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4296	IOStream *stream = ctx->m_stream;
4297	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4298	bool useChecksum = checksumCalculator->getVersion() > 0;
4299
4300	const unsigned int __size_values =  (4 * sizeof(GLfloat));
4301	 unsigned char *ptr;
4302	 unsigned char *buf;
4303	 const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
4304	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4305	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4306	buf = stream->alloc(totalSize);
4307	ptr = buf;
4308	int tmp = OP_glVertexAttrib4fv;memcpy(ptr, &tmp, 4); ptr += 4;
4309	memcpy(ptr, &totalSize, 4);  ptr += 4;
4310
4311		memcpy(ptr, &indx, 4); ptr += 4;
4312	*(unsigned int *)(ptr) = __size_values; ptr += 4;
4313	memcpy(ptr, values, __size_values);ptr += __size_values;
4314
4315	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4316	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4317
4318}
4319
4320void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
4321{
4322
4323	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4324	IOStream *stream = ctx->m_stream;
4325	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4326	bool useChecksum = checksumCalculator->getVersion() > 0;
4327
4328	 unsigned char *ptr;
4329	 unsigned char *buf;
4330	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4331	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4332	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4333	buf = stream->alloc(totalSize);
4334	ptr = buf;
4335	int tmp = OP_glViewport;memcpy(ptr, &tmp, 4); ptr += 4;
4336	memcpy(ptr, &totalSize, 4);  ptr += 4;
4337
4338		memcpy(ptr, &x, 4); ptr += 4;
4339		memcpy(ptr, &y, 4); ptr += 4;
4340		memcpy(ptr, &width, 4); ptr += 4;
4341		memcpy(ptr, &height, 4); ptr += 4;
4342
4343	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4344	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4345
4346}
4347
4348void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES image)
4349{
4350
4351	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4352	IOStream *stream = ctx->m_stream;
4353	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4354	bool useChecksum = checksumCalculator->getVersion() > 0;
4355
4356	 unsigned char *ptr;
4357	 unsigned char *buf;
4358	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4359	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4360	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4361	buf = stream->alloc(totalSize);
4362	ptr = buf;
4363	int tmp = OP_glEGLImageTargetTexture2DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4364	memcpy(ptr, &totalSize, 4);  ptr += 4;
4365
4366		memcpy(ptr, &target, 4); ptr += 4;
4367		memcpy(ptr, &image, 4); ptr += 4;
4368
4369	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4370	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4371
4372}
4373
4374void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeglImageOES image)
4375{
4376
4377	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4378	IOStream *stream = ctx->m_stream;
4379	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4380	bool useChecksum = checksumCalculator->getVersion() > 0;
4381
4382	 unsigned char *ptr;
4383	 unsigned char *buf;
4384	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4385	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4386	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4387	buf = stream->alloc(totalSize);
4388	ptr = buf;
4389	int tmp = OP_glEGLImageTargetRenderbufferStorageOES;memcpy(ptr, &tmp, 4); ptr += 4;
4390	memcpy(ptr, &totalSize, 4);  ptr += 4;
4391
4392		memcpy(ptr, &target, 4); ptr += 4;
4393		memcpy(ptr, &image, 4); ptr += 4;
4394
4395	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4396	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4397
4398}
4399
4400GLboolean glUnmapBufferOES_enc(void *self , GLenum target)
4401{
4402
4403	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4404	IOStream *stream = ctx->m_stream;
4405	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4406	bool useChecksum = checksumCalculator->getVersion() > 0;
4407
4408	 unsigned char *ptr;
4409	 unsigned char *buf;
4410	 const size_t sizeWithoutChecksum = 8 + 4;
4411	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4412	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4413	buf = stream->alloc(totalSize);
4414	ptr = buf;
4415	int tmp = OP_glUnmapBufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
4416	memcpy(ptr, &totalSize, 4);  ptr += 4;
4417
4418		memcpy(ptr, &target, 4); ptr += 4;
4419
4420	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4421	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4422
4423
4424	GLboolean retval;
4425	stream->readback(&retval, 1);
4426	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
4427	if (useChecksum) {
4428		unsigned char *checksumBufPtr = NULL;
4429		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
4430		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
4431		stream->readback(checksumBufPtr, checksumSize);
4432		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
4433			ALOGE("glUnmapBufferOES: GL communication error, please report this issue to b.android.com.\n");
4434			abort();
4435		}
4436	}
4437	return retval;
4438}
4439
4440void 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)
4441{
4442
4443	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4444	IOStream *stream = ctx->m_stream;
4445	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4446	bool useChecksum = checksumCalculator->getVersion() > 0;
4447
4448	const unsigned int __size_pixels = ((pixels != NULL) ?  glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
4449	 unsigned char *ptr;
4450	 unsigned char *buf;
4451	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
4452	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4453	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4454	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4455	ptr = buf;
4456	int tmp = OP_glTexImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4457	memcpy(ptr, &totalSize, 4);  ptr += 4;
4458
4459		memcpy(ptr, &target, 4); ptr += 4;
4460		memcpy(ptr, &level, 4); ptr += 4;
4461		memcpy(ptr, &internalformat, 4); ptr += 4;
4462		memcpy(ptr, &width, 4); ptr += 4;
4463		memcpy(ptr, &height, 4); ptr += 4;
4464		memcpy(ptr, &depth, 4); ptr += 4;
4465		memcpy(ptr, &border, 4); ptr += 4;
4466		memcpy(ptr, &format, 4); ptr += 4;
4467		memcpy(ptr, &type, 4); ptr += 4;
4468
4469	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4470	stream->flush();
4471	stream->writeFully(&__size_pixels,4);
4472	if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
4473	if (pixels != NULL) {
4474		stream->writeFully(pixels, __size_pixels);
4475		if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
4476	}
4477	buf = stream->alloc(checksumSize);
4478	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4479
4480}
4481
4482void 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)
4483{
4484
4485	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4486	IOStream *stream = ctx->m_stream;
4487	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4488	bool useChecksum = checksumCalculator->getVersion() > 0;
4489
4490	const unsigned int __size_pixels = ((pixels != NULL) ?  glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
4491	 unsigned char *ptr;
4492	 unsigned char *buf;
4493	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
4494	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4495	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4496	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4497	ptr = buf;
4498	int tmp = OP_glTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4499	memcpy(ptr, &totalSize, 4);  ptr += 4;
4500
4501		memcpy(ptr, &target, 4); ptr += 4;
4502		memcpy(ptr, &level, 4); ptr += 4;
4503		memcpy(ptr, &xoffset, 4); ptr += 4;
4504		memcpy(ptr, &yoffset, 4); ptr += 4;
4505		memcpy(ptr, &zoffset, 4); ptr += 4;
4506		memcpy(ptr, &width, 4); ptr += 4;
4507		memcpy(ptr, &height, 4); ptr += 4;
4508		memcpy(ptr, &depth, 4); ptr += 4;
4509		memcpy(ptr, &format, 4); ptr += 4;
4510		memcpy(ptr, &type, 4); ptr += 4;
4511
4512	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4513	stream->flush();
4514	stream->writeFully(&__size_pixels,4);
4515	if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
4516	if (pixels != NULL) {
4517		stream->writeFully(pixels, __size_pixels);
4518		if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
4519	}
4520	buf = stream->alloc(checksumSize);
4521	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4522
4523}
4524
4525void glCopyTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
4526{
4527
4528	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4529	IOStream *stream = ctx->m_stream;
4530	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4531	bool useChecksum = checksumCalculator->getVersion() > 0;
4532
4533	 unsigned char *ptr;
4534	 unsigned char *buf;
4535	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
4536	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4537	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4538	buf = stream->alloc(totalSize);
4539	ptr = buf;
4540	int tmp = OP_glCopyTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4541	memcpy(ptr, &totalSize, 4);  ptr += 4;
4542
4543		memcpy(ptr, &target, 4); ptr += 4;
4544		memcpy(ptr, &level, 4); ptr += 4;
4545		memcpy(ptr, &xoffset, 4); ptr += 4;
4546		memcpy(ptr, &yoffset, 4); ptr += 4;
4547		memcpy(ptr, &zoffset, 4); ptr += 4;
4548		memcpy(ptr, &x, 4); ptr += 4;
4549		memcpy(ptr, &y, 4); ptr += 4;
4550		memcpy(ptr, &width, 4); ptr += 4;
4551		memcpy(ptr, &height, 4); ptr += 4;
4552
4553	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4554	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4555
4556}
4557
4558void glCompressedTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
4559{
4560
4561	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4562	IOStream *stream = ctx->m_stream;
4563	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4564	bool useChecksum = checksumCalculator->getVersion() > 0;
4565
4566	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
4567	 unsigned char *ptr;
4568	 unsigned char *buf;
4569	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
4570	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4571	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4572	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4573	ptr = buf;
4574	int tmp = OP_glCompressedTexImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4575	memcpy(ptr, &totalSize, 4);  ptr += 4;
4576
4577		memcpy(ptr, &target, 4); ptr += 4;
4578		memcpy(ptr, &level, 4); ptr += 4;
4579		memcpy(ptr, &internalformat, 4); ptr += 4;
4580		memcpy(ptr, &width, 4); ptr += 4;
4581		memcpy(ptr, &height, 4); ptr += 4;
4582		memcpy(ptr, &depth, 4); ptr += 4;
4583		memcpy(ptr, &border, 4); ptr += 4;
4584		memcpy(ptr, &imageSize, 4); ptr += 4;
4585
4586	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4587	stream->flush();
4588	stream->writeFully(&__size_data,4);
4589	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
4590	if (data != NULL) {
4591		stream->writeFully(data, __size_data);
4592		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
4593	}
4594	buf = stream->alloc(checksumSize);
4595	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4596
4597}
4598
4599void 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)
4600{
4601
4602	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4603	IOStream *stream = ctx->m_stream;
4604	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4605	bool useChecksum = checksumCalculator->getVersion() > 0;
4606
4607	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
4608	 unsigned char *ptr;
4609	 unsigned char *buf;
4610	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
4611	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4612	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4613	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
4614	ptr = buf;
4615	int tmp = OP_glCompressedTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4616	memcpy(ptr, &totalSize, 4);  ptr += 4;
4617
4618		memcpy(ptr, &target, 4); ptr += 4;
4619		memcpy(ptr, &level, 4); ptr += 4;
4620		memcpy(ptr, &xoffset, 4); ptr += 4;
4621		memcpy(ptr, &yoffset, 4); ptr += 4;
4622		memcpy(ptr, &zoffset, 4); ptr += 4;
4623		memcpy(ptr, &width, 4); ptr += 4;
4624		memcpy(ptr, &height, 4); ptr += 4;
4625		memcpy(ptr, &depth, 4); ptr += 4;
4626		memcpy(ptr, &format, 4); ptr += 4;
4627		memcpy(ptr, &imageSize, 4); ptr += 4;
4628
4629	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4630	stream->flush();
4631	stream->writeFully(&__size_data,4);
4632	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
4633	if (data != NULL) {
4634		stream->writeFully(data, __size_data);
4635		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
4636	}
4637	buf = stream->alloc(checksumSize);
4638	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
4639
4640}
4641
4642void glFramebufferTexture3DOES_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
4643{
4644
4645	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4646	IOStream *stream = ctx->m_stream;
4647	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4648	bool useChecksum = checksumCalculator->getVersion() > 0;
4649
4650	 unsigned char *ptr;
4651	 unsigned char *buf;
4652	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
4653	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4654	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4655	buf = stream->alloc(totalSize);
4656	ptr = buf;
4657	int tmp = OP_glFramebufferTexture3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4658	memcpy(ptr, &totalSize, 4);  ptr += 4;
4659
4660		memcpy(ptr, &target, 4); ptr += 4;
4661		memcpy(ptr, &attachment, 4); ptr += 4;
4662		memcpy(ptr, &textarget, 4); ptr += 4;
4663		memcpy(ptr, &texture, 4); ptr += 4;
4664		memcpy(ptr, &level, 4); ptr += 4;
4665		memcpy(ptr, &zoffset, 4); ptr += 4;
4666
4667	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4668	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4669
4670}
4671
4672void glBindVertexArrayOES_enc(void *self , GLuint array)
4673{
4674
4675	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4676	IOStream *stream = ctx->m_stream;
4677	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4678	bool useChecksum = checksumCalculator->getVersion() > 0;
4679
4680	 unsigned char *ptr;
4681	 unsigned char *buf;
4682	 const size_t sizeWithoutChecksum = 8 + 4;
4683	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4684	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4685	buf = stream->alloc(totalSize);
4686	ptr = buf;
4687	int tmp = OP_glBindVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
4688	memcpy(ptr, &totalSize, 4);  ptr += 4;
4689
4690		memcpy(ptr, &array, 4); ptr += 4;
4691
4692	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4693	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4694
4695}
4696
4697void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays)
4698{
4699
4700	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4701	IOStream *stream = ctx->m_stream;
4702	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4703	bool useChecksum = checksumCalculator->getVersion() > 0;
4704
4705	const unsigned int __size_arrays =  (n * sizeof(GLuint));
4706	 unsigned char *ptr;
4707	 unsigned char *buf;
4708	 const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
4709	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4710	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4711	buf = stream->alloc(totalSize);
4712	ptr = buf;
4713	int tmp = OP_glDeleteVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
4714	memcpy(ptr, &totalSize, 4);  ptr += 4;
4715
4716		memcpy(ptr, &n, 4); ptr += 4;
4717	*(unsigned int *)(ptr) = __size_arrays; ptr += 4;
4718	memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
4719
4720	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4721	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4722
4723}
4724
4725void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays)
4726{
4727
4728	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4729	IOStream *stream = ctx->m_stream;
4730	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4731	bool useChecksum = checksumCalculator->getVersion() > 0;
4732
4733	const unsigned int __size_arrays =  (n * sizeof(GLuint));
4734	 unsigned char *ptr;
4735	 unsigned char *buf;
4736	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
4737	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4738	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4739	buf = stream->alloc(totalSize);
4740	ptr = buf;
4741	int tmp = OP_glGenVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
4742	memcpy(ptr, &totalSize, 4);  ptr += 4;
4743
4744		memcpy(ptr, &n, 4); ptr += 4;
4745	*(unsigned int *)(ptr) = __size_arrays; ptr += 4;
4746
4747	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4748	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4749
4750	stream->readback(arrays, __size_arrays);
4751	if (useChecksum) checksumCalculator->addBuffer(arrays, __size_arrays);
4752	if (useChecksum) {
4753		unsigned char *checksumBufPtr = NULL;
4754		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
4755		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
4756		stream->readback(checksumBufPtr, checksumSize);
4757		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
4758			ALOGE("glGenVertexArraysOES: GL communication error, please report this issue to b.android.com.\n");
4759			abort();
4760		}
4761	}
4762}
4763
4764GLboolean glIsVertexArrayOES_enc(void *self , GLuint array)
4765{
4766
4767	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4768	IOStream *stream = ctx->m_stream;
4769	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4770	bool useChecksum = checksumCalculator->getVersion() > 0;
4771
4772	 unsigned char *ptr;
4773	 unsigned char *buf;
4774	 const size_t sizeWithoutChecksum = 8 + 4;
4775	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4776	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4777	buf = stream->alloc(totalSize);
4778	ptr = buf;
4779	int tmp = OP_glIsVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
4780	memcpy(ptr, &totalSize, 4);  ptr += 4;
4781
4782		memcpy(ptr, &array, 4); ptr += 4;
4783
4784	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4785	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4786
4787
4788	GLboolean retval;
4789	stream->readback(&retval, 1);
4790	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
4791	if (useChecksum) {
4792		unsigned char *checksumBufPtr = NULL;
4793		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
4794		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
4795		stream->readback(checksumBufPtr, checksumSize);
4796		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
4797			ALOGE("glIsVertexArrayOES: GL communication error, please report this issue to b.android.com.\n");
4798			abort();
4799		}
4800	}
4801	return retval;
4802}
4803
4804void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments)
4805{
4806
4807	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4808	IOStream *stream = ctx->m_stream;
4809	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4810	bool useChecksum = checksumCalculator->getVersion() > 0;
4811
4812	const unsigned int __size_attachments =  (numAttachments * sizeof(GLenum));
4813	 unsigned char *ptr;
4814	 unsigned char *buf;
4815	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 1*4;
4816	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4817	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4818	buf = stream->alloc(totalSize);
4819	ptr = buf;
4820	int tmp = OP_glDiscardFramebufferEXT;memcpy(ptr, &tmp, 4); ptr += 4;
4821	memcpy(ptr, &totalSize, 4);  ptr += 4;
4822
4823		memcpy(ptr, &target, 4); ptr += 4;
4824		memcpy(ptr, &numAttachments, 4); ptr += 4;
4825	*(unsigned int *)(ptr) = __size_attachments; ptr += 4;
4826	memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
4827
4828	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4829	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4830
4831}
4832
4833void glVertexAttribPointerData_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void* data, GLuint datalen)
4834{
4835
4836	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4837	IOStream *stream = ctx->m_stream;
4838	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4839	bool useChecksum = checksumCalculator->getVersion() > 0;
4840
4841	const unsigned int __size_data =  datalen;
4842	 unsigned char *ptr;
4843	 unsigned char *buf;
4844	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + __size_data + 4 + 1*4;
4845	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4846	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4847	buf = stream->alloc(totalSize);
4848	ptr = buf;
4849	int tmp = OP_glVertexAttribPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
4850	memcpy(ptr, &totalSize, 4);  ptr += 4;
4851
4852		memcpy(ptr, &indx, 4); ptr += 4;
4853		memcpy(ptr, &size, 4); ptr += 4;
4854		memcpy(ptr, &type, 4); ptr += 4;
4855		memcpy(ptr, &normalized, 1); ptr += 1;
4856		memcpy(ptr, &stride, 4); ptr += 4;
4857	*(unsigned int *)(ptr) = __size_data; ptr += 4;
4858	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
4859		memcpy(ptr, &datalen, 4); ptr += 4;
4860
4861	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4862	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4863
4864}
4865
4866void glVertexAttribPointerOffset_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint offset)
4867{
4868
4869	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4870	IOStream *stream = ctx->m_stream;
4871	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4872	bool useChecksum = checksumCalculator->getVersion() > 0;
4873
4874	 unsigned char *ptr;
4875	 unsigned char *buf;
4876	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + 4;
4877	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4878	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4879	buf = stream->alloc(totalSize);
4880	ptr = buf;
4881	int tmp = OP_glVertexAttribPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
4882	memcpy(ptr, &totalSize, 4);  ptr += 4;
4883
4884		memcpy(ptr, &indx, 4); ptr += 4;
4885		memcpy(ptr, &size, 4); ptr += 4;
4886		memcpy(ptr, &type, 4); ptr += 4;
4887		memcpy(ptr, &normalized, 1); ptr += 1;
4888		memcpy(ptr, &stride, 4); ptr += 4;
4889		memcpy(ptr, &offset, 4); ptr += 4;
4890
4891	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4892	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4893
4894}
4895
4896void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset)
4897{
4898
4899	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4900	IOStream *stream = ctx->m_stream;
4901	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4902	bool useChecksum = checksumCalculator->getVersion() > 0;
4903
4904	 unsigned char *ptr;
4905	 unsigned char *buf;
4906	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4907	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4908	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4909	buf = stream->alloc(totalSize);
4910	ptr = buf;
4911	int tmp = OP_glDrawElementsOffset;memcpy(ptr, &tmp, 4); ptr += 4;
4912	memcpy(ptr, &totalSize, 4);  ptr += 4;
4913
4914		memcpy(ptr, &mode, 4); ptr += 4;
4915		memcpy(ptr, &count, 4); ptr += 4;
4916		memcpy(ptr, &type, 4); ptr += 4;
4917		memcpy(ptr, &offset, 4); ptr += 4;
4918
4919	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4920	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4921
4922}
4923
4924void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
4925{
4926
4927	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4928	IOStream *stream = ctx->m_stream;
4929	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4930	bool useChecksum = checksumCalculator->getVersion() > 0;
4931
4932	const unsigned int __size_data =  datalen;
4933	 unsigned char *ptr;
4934	 unsigned char *buf;
4935	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
4936	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4937	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4938	buf = stream->alloc(totalSize);
4939	ptr = buf;
4940	int tmp = OP_glDrawElementsData;memcpy(ptr, &tmp, 4); ptr += 4;
4941	memcpy(ptr, &totalSize, 4);  ptr += 4;
4942
4943		memcpy(ptr, &mode, 4); ptr += 4;
4944		memcpy(ptr, &count, 4); ptr += 4;
4945		memcpy(ptr, &type, 4); ptr += 4;
4946	*(unsigned int *)(ptr) = __size_data; ptr += 4;
4947	memcpy(ptr, data, __size_data);ptr += __size_data;
4948		memcpy(ptr, &datalen, 4); ptr += 4;
4949
4950	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4951	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4952
4953}
4954
4955void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats)
4956{
4957
4958	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4959	IOStream *stream = ctx->m_stream;
4960	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4961	bool useChecksum = checksumCalculator->getVersion() > 0;
4962
4963	const unsigned int __size_formats =  (count * sizeof(GLint));
4964	 unsigned char *ptr;
4965	 unsigned char *buf;
4966	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
4967	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4968	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4969	buf = stream->alloc(totalSize);
4970	ptr = buf;
4971	int tmp = OP_glGetCompressedTextureFormats;memcpy(ptr, &tmp, 4); ptr += 4;
4972	memcpy(ptr, &totalSize, 4);  ptr += 4;
4973
4974		memcpy(ptr, &count, 4); ptr += 4;
4975	*(unsigned int *)(ptr) = __size_formats; ptr += 4;
4976
4977	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4978	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4979
4980	stream->readback(formats, __size_formats);
4981	if (useChecksum) checksumCalculator->addBuffer(formats, __size_formats);
4982	if (useChecksum) {
4983		unsigned char *checksumBufPtr = NULL;
4984		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
4985		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
4986		stream->readback(checksumBufPtr, checksumSize);
4987		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
4988			ALOGE("glGetCompressedTextureFormats: GL communication error, please report this issue to b.android.com.\n");
4989			abort();
4990		}
4991	}
4992}
4993
4994void glShaderString_enc(void *self , GLuint shader, const GLchar* string, GLsizei len)
4995{
4996
4997	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
4998	IOStream *stream = ctx->m_stream;
4999	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5000	bool useChecksum = checksumCalculator->getVersion() > 0;
5001
5002	const unsigned int __size_string =  len;
5003	 unsigned char *ptr;
5004	 unsigned char *buf;
5005	 const size_t sizeWithoutChecksum = 8 + 4 + __size_string + 4 + 1*4;
5006	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5007	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5008	buf = stream->alloc(totalSize);
5009	ptr = buf;
5010	int tmp = OP_glShaderString;memcpy(ptr, &tmp, 4); ptr += 4;
5011	memcpy(ptr, &totalSize, 4);  ptr += 4;
5012
5013		memcpy(ptr, &shader, 4); ptr += 4;
5014	*(unsigned int *)(ptr) = __size_string; ptr += 4;
5015	memcpy(ptr, string, __size_string);ptr += __size_string;
5016		memcpy(ptr, &len, 4); ptr += 4;
5017
5018	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5019	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5020
5021}
5022
5023int glFinishRoundTrip_enc(void *self )
5024{
5025
5026	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5027	IOStream *stream = ctx->m_stream;
5028	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5029	bool useChecksum = checksumCalculator->getVersion() > 0;
5030
5031	 unsigned char *ptr;
5032	 unsigned char *buf;
5033	 const size_t sizeWithoutChecksum = 8;
5034	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5035	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5036	buf = stream->alloc(totalSize);
5037	ptr = buf;
5038	int tmp = OP_glFinishRoundTrip;memcpy(ptr, &tmp, 4); ptr += 4;
5039	memcpy(ptr, &totalSize, 4);  ptr += 4;
5040
5041
5042	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5043	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5044
5045
5046	int retval;
5047	stream->readback(&retval, 4);
5048	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
5049	if (useChecksum) {
5050		unsigned char *checksumBufPtr = NULL;
5051		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5052		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5053		stream->readback(checksumBufPtr, checksumSize);
5054		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5055			ALOGE("glFinishRoundTrip: GL communication error, please report this issue to b.android.com.\n");
5056			abort();
5057		}
5058	}
5059	return retval;
5060}
5061
5062void glGenVertexArrays_enc(void *self , GLsizei n, GLuint* arrays)
5063{
5064
5065	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5066	IOStream *stream = ctx->m_stream;
5067	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5068	bool useChecksum = checksumCalculator->getVersion() > 0;
5069
5070	const unsigned int __size_arrays =  (n * sizeof(GLuint));
5071	 unsigned char *ptr;
5072	 unsigned char *buf;
5073	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5074	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5075	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5076	buf = stream->alloc(totalSize);
5077	ptr = buf;
5078	int tmp = OP_glGenVertexArrays;memcpy(ptr, &tmp, 4); ptr += 4;
5079	memcpy(ptr, &totalSize, 4);  ptr += 4;
5080
5081		memcpy(ptr, &n, 4); ptr += 4;
5082	*(unsigned int *)(ptr) = __size_arrays; ptr += 4;
5083
5084	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5085	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5086
5087	stream->readback(arrays, __size_arrays);
5088	if (useChecksum) checksumCalculator->addBuffer(arrays, __size_arrays);
5089	if (useChecksum) {
5090		unsigned char *checksumBufPtr = NULL;
5091		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5092		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5093		stream->readback(checksumBufPtr, checksumSize);
5094		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5095			ALOGE("glGenVertexArrays: GL communication error, please report this issue to b.android.com.\n");
5096			abort();
5097		}
5098	}
5099}
5100
5101void glBindVertexArray_enc(void *self , GLuint array)
5102{
5103
5104	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5105	IOStream *stream = ctx->m_stream;
5106	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5107	bool useChecksum = checksumCalculator->getVersion() > 0;
5108
5109	 unsigned char *ptr;
5110	 unsigned char *buf;
5111	 const size_t sizeWithoutChecksum = 8 + 4;
5112	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5113	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5114	buf = stream->alloc(totalSize);
5115	ptr = buf;
5116	int tmp = OP_glBindVertexArray;memcpy(ptr, &tmp, 4); ptr += 4;
5117	memcpy(ptr, &totalSize, 4);  ptr += 4;
5118
5119		memcpy(ptr, &array, 4); ptr += 4;
5120
5121	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5122	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5123
5124}
5125
5126void glDeleteVertexArrays_enc(void *self , GLsizei n, const GLuint* arrays)
5127{
5128
5129	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5130	IOStream *stream = ctx->m_stream;
5131	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5132	bool useChecksum = checksumCalculator->getVersion() > 0;
5133
5134	const unsigned int __size_arrays =  (n * sizeof(GLuint));
5135	 unsigned char *ptr;
5136	 unsigned char *buf;
5137	 const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
5138	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5139	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5140	buf = stream->alloc(totalSize);
5141	ptr = buf;
5142	int tmp = OP_glDeleteVertexArrays;memcpy(ptr, &tmp, 4); ptr += 4;
5143	memcpy(ptr, &totalSize, 4);  ptr += 4;
5144
5145		memcpy(ptr, &n, 4); ptr += 4;
5146	*(unsigned int *)(ptr) = __size_arrays; ptr += 4;
5147	memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
5148
5149	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5150	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5151
5152}
5153
5154GLboolean glIsVertexArray_enc(void *self , GLuint array)
5155{
5156
5157	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5158	IOStream *stream = ctx->m_stream;
5159	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5160	bool useChecksum = checksumCalculator->getVersion() > 0;
5161
5162	 unsigned char *ptr;
5163	 unsigned char *buf;
5164	 const size_t sizeWithoutChecksum = 8 + 4;
5165	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5166	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5167	buf = stream->alloc(totalSize);
5168	ptr = buf;
5169	int tmp = OP_glIsVertexArray;memcpy(ptr, &tmp, 4); ptr += 4;
5170	memcpy(ptr, &totalSize, 4);  ptr += 4;
5171
5172		memcpy(ptr, &array, 4); ptr += 4;
5173
5174	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5175	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5176
5177
5178	GLboolean retval;
5179	stream->readback(&retval, 1);
5180	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
5181	if (useChecksum) {
5182		unsigned char *checksumBufPtr = NULL;
5183		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5184		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5185		stream->readback(checksumBufPtr, checksumSize);
5186		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5187			ALOGE("glIsVertexArray: GL communication error, please report this issue to b.android.com.\n");
5188			abort();
5189		}
5190	}
5191	return retval;
5192}
5193
5194void glMapBufferRangeAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* mapped)
5195{
5196
5197	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5198	IOStream *stream = ctx->m_stream;
5199	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5200	bool useChecksum = checksumCalculator->getVersion() > 0;
5201
5202	const unsigned int __size_mapped = ((mapped != NULL) ?  length : 0);
5203	 unsigned char *ptr;
5204	 unsigned char *buf;
5205	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 1*4;
5206	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5207	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5208	buf = stream->alloc(totalSize);
5209	ptr = buf;
5210	int tmp = OP_glMapBufferRangeAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5211	memcpy(ptr, &totalSize, 4);  ptr += 4;
5212
5213		memcpy(ptr, &target, 4); ptr += 4;
5214		memcpy(ptr, &offset, 4); ptr += 4;
5215		memcpy(ptr, &length, 4); ptr += 4;
5216		memcpy(ptr, &access, 4); ptr += 4;
5217	*(unsigned int *)(ptr) = __size_mapped; ptr += 4;
5218
5219	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5220	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5221
5222	if (mapped != NULL) {
5223		stream->readback(mapped, __size_mapped);
5224		if (useChecksum) checksumCalculator->addBuffer(mapped, __size_mapped);
5225	}
5226	if (useChecksum) {
5227		unsigned char *checksumBufPtr = NULL;
5228		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5229		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5230		stream->readback(checksumBufPtr, checksumSize);
5231		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5232			ALOGE("glMapBufferRangeAEMU: GL communication error, please report this issue to b.android.com.\n");
5233			abort();
5234		}
5235	}
5236}
5237
5238void glUnmapBufferAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer, GLboolean* out_res)
5239{
5240
5241	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5242	IOStream *stream = ctx->m_stream;
5243	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5244	bool useChecksum = checksumCalculator->getVersion() > 0;
5245
5246	const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ?  length : 0);
5247	const unsigned int __size_out_res =  (sizeof(GLboolean));
5248	 unsigned char *ptr;
5249	 unsigned char *buf;
5250	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + 0 + 2*4;
5251	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5252	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5253	buf = stream->alloc(totalSize);
5254	ptr = buf;
5255	int tmp = OP_glUnmapBufferAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5256	memcpy(ptr, &totalSize, 4);  ptr += 4;
5257
5258		memcpy(ptr, &target, 4); ptr += 4;
5259		memcpy(ptr, &offset, 4); ptr += 4;
5260		memcpy(ptr, &length, 4); ptr += 4;
5261		memcpy(ptr, &access, 4); ptr += 4;
5262	*(unsigned int *)(ptr) = __size_guest_buffer; ptr += 4;
5263	if (guest_buffer != NULL) memcpy(ptr, guest_buffer, __size_guest_buffer);ptr += __size_guest_buffer;
5264	*(unsigned int *)(ptr) = __size_out_res; ptr += 4;
5265
5266	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5267	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5268
5269	stream->readback(out_res, __size_out_res);
5270	if (useChecksum) checksumCalculator->addBuffer(out_res, __size_out_res);
5271	if (useChecksum) {
5272		unsigned char *checksumBufPtr = NULL;
5273		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5274		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5275		stream->readback(checksumBufPtr, checksumSize);
5276		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5277			ALOGE("glUnmapBufferAEMU: GL communication error, please report this issue to b.android.com.\n");
5278			abort();
5279		}
5280	}
5281}
5282
5283void glFlushMappedBufferRangeAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer)
5284{
5285
5286	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5287	IOStream *stream = ctx->m_stream;
5288	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5289	bool useChecksum = checksumCalculator->getVersion() > 0;
5290
5291	const unsigned int __size_guest_buffer = ((guest_buffer != NULL) ?  length : 0);
5292	 unsigned char *ptr;
5293	 unsigned char *buf;
5294	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_guest_buffer + 1*4;
5295	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5296	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5297	buf = stream->alloc(totalSize);
5298	ptr = buf;
5299	int tmp = OP_glFlushMappedBufferRangeAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5300	memcpy(ptr, &totalSize, 4);  ptr += 4;
5301
5302		memcpy(ptr, &target, 4); ptr += 4;
5303		memcpy(ptr, &offset, 4); ptr += 4;
5304		memcpy(ptr, &length, 4); ptr += 4;
5305		memcpy(ptr, &access, 4); ptr += 4;
5306	*(unsigned int *)(ptr) = __size_guest_buffer; ptr += 4;
5307	if (guest_buffer != NULL) memcpy(ptr, guest_buffer, __size_guest_buffer);ptr += __size_guest_buffer;
5308
5309	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5310	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5311
5312}
5313
5314void glReadPixelsOffsetAEMU_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLuint offset)
5315{
5316
5317	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5318	IOStream *stream = ctx->m_stream;
5319	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5320	bool useChecksum = checksumCalculator->getVersion() > 0;
5321
5322	 unsigned char *ptr;
5323	 unsigned char *buf;
5324	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5325	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5326	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5327	buf = stream->alloc(totalSize);
5328	ptr = buf;
5329	int tmp = OP_glReadPixelsOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5330	memcpy(ptr, &totalSize, 4);  ptr += 4;
5331
5332		memcpy(ptr, &x, 4); ptr += 4;
5333		memcpy(ptr, &y, 4); ptr += 4;
5334		memcpy(ptr, &width, 4); ptr += 4;
5335		memcpy(ptr, &height, 4); ptr += 4;
5336		memcpy(ptr, &format, 4); ptr += 4;
5337		memcpy(ptr, &type, 4); ptr += 4;
5338		memcpy(ptr, &offset, 4); ptr += 4;
5339
5340	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5341	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5342
5343}
5344
5345void glCompressedTexImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, GLuint offset)
5346{
5347
5348	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5349	IOStream *stream = ctx->m_stream;
5350	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5351	bool useChecksum = checksumCalculator->getVersion() > 0;
5352
5353	 unsigned char *ptr;
5354	 unsigned char *buf;
5355	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5356	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5357	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5358	buf = stream->alloc(totalSize);
5359	ptr = buf;
5360	int tmp = OP_glCompressedTexImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5361	memcpy(ptr, &totalSize, 4);  ptr += 4;
5362
5363		memcpy(ptr, &target, 4); ptr += 4;
5364		memcpy(ptr, &level, 4); ptr += 4;
5365		memcpy(ptr, &internalformat, 4); ptr += 4;
5366		memcpy(ptr, &width, 4); ptr += 4;
5367		memcpy(ptr, &height, 4); ptr += 4;
5368		memcpy(ptr, &border, 4); ptr += 4;
5369		memcpy(ptr, &imageSize, 4); ptr += 4;
5370		memcpy(ptr, &offset, 4); ptr += 4;
5371
5372	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5373	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5374
5375}
5376
5377void glCompressedTexSubImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLuint offset)
5378{
5379
5380	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5381	IOStream *stream = ctx->m_stream;
5382	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5383	bool useChecksum = checksumCalculator->getVersion() > 0;
5384
5385	 unsigned char *ptr;
5386	 unsigned char *buf;
5387	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5388	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5389	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5390	buf = stream->alloc(totalSize);
5391	ptr = buf;
5392	int tmp = OP_glCompressedTexSubImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5393	memcpy(ptr, &totalSize, 4);  ptr += 4;
5394
5395		memcpy(ptr, &target, 4); ptr += 4;
5396		memcpy(ptr, &level, 4); ptr += 4;
5397		memcpy(ptr, &xoffset, 4); ptr += 4;
5398		memcpy(ptr, &yoffset, 4); ptr += 4;
5399		memcpy(ptr, &width, 4); ptr += 4;
5400		memcpy(ptr, &height, 4); ptr += 4;
5401		memcpy(ptr, &format, 4); ptr += 4;
5402		memcpy(ptr, &imageSize, 4); ptr += 4;
5403		memcpy(ptr, &offset, 4); ptr += 4;
5404
5405	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5406	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5407
5408}
5409
5410void glTexImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLuint offset)
5411{
5412
5413	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5414	IOStream *stream = ctx->m_stream;
5415	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5416	bool useChecksum = checksumCalculator->getVersion() > 0;
5417
5418	 unsigned char *ptr;
5419	 unsigned char *buf;
5420	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5421	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5422	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5423	buf = stream->alloc(totalSize);
5424	ptr = buf;
5425	int tmp = OP_glTexImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5426	memcpy(ptr, &totalSize, 4);  ptr += 4;
5427
5428		memcpy(ptr, &target, 4); ptr += 4;
5429		memcpy(ptr, &level, 4); ptr += 4;
5430		memcpy(ptr, &internalformat, 4); ptr += 4;
5431		memcpy(ptr, &width, 4); ptr += 4;
5432		memcpy(ptr, &height, 4); ptr += 4;
5433		memcpy(ptr, &border, 4); ptr += 4;
5434		memcpy(ptr, &format, 4); ptr += 4;
5435		memcpy(ptr, &type, 4); ptr += 4;
5436		memcpy(ptr, &offset, 4); ptr += 4;
5437
5438	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5439	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5440
5441}
5442
5443void glTexSubImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLuint offset)
5444{
5445
5446	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5447	IOStream *stream = ctx->m_stream;
5448	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5449	bool useChecksum = checksumCalculator->getVersion() > 0;
5450
5451	 unsigned char *ptr;
5452	 unsigned char *buf;
5453	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
5454	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5455	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5456	buf = stream->alloc(totalSize);
5457	ptr = buf;
5458	int tmp = OP_glTexSubImage2DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5459	memcpy(ptr, &totalSize, 4);  ptr += 4;
5460
5461		memcpy(ptr, &target, 4); ptr += 4;
5462		memcpy(ptr, &level, 4); ptr += 4;
5463		memcpy(ptr, &xoffset, 4); ptr += 4;
5464		memcpy(ptr, &yoffset, 4); ptr += 4;
5465		memcpy(ptr, &width, 4); ptr += 4;
5466		memcpy(ptr, &height, 4); ptr += 4;
5467		memcpy(ptr, &format, 4); ptr += 4;
5468		memcpy(ptr, &type, 4); ptr += 4;
5469		memcpy(ptr, &offset, 4); ptr += 4;
5470
5471	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5472	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5473
5474}
5475
5476void glBindBufferRange_enc(void *self , GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
5477{
5478
5479	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5480	IOStream *stream = ctx->m_stream;
5481	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5482	bool useChecksum = checksumCalculator->getVersion() > 0;
5483
5484	 unsigned char *ptr;
5485	 unsigned char *buf;
5486	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
5487	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5488	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5489	buf = stream->alloc(totalSize);
5490	ptr = buf;
5491	int tmp = OP_glBindBufferRange;memcpy(ptr, &tmp, 4); ptr += 4;
5492	memcpy(ptr, &totalSize, 4);  ptr += 4;
5493
5494		memcpy(ptr, &target, 4); ptr += 4;
5495		memcpy(ptr, &index, 4); ptr += 4;
5496		memcpy(ptr, &buffer, 4); ptr += 4;
5497		memcpy(ptr, &offset, 4); ptr += 4;
5498		memcpy(ptr, &size, 4); ptr += 4;
5499
5500	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5501	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5502
5503}
5504
5505void glBindBufferBase_enc(void *self , GLenum target, GLuint index, GLuint buffer)
5506{
5507
5508	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5509	IOStream *stream = ctx->m_stream;
5510	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5511	bool useChecksum = checksumCalculator->getVersion() > 0;
5512
5513	 unsigned char *ptr;
5514	 unsigned char *buf;
5515	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
5516	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5517	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5518	buf = stream->alloc(totalSize);
5519	ptr = buf;
5520	int tmp = OP_glBindBufferBase;memcpy(ptr, &tmp, 4); ptr += 4;
5521	memcpy(ptr, &totalSize, 4);  ptr += 4;
5522
5523		memcpy(ptr, &target, 4); ptr += 4;
5524		memcpy(ptr, &index, 4); ptr += 4;
5525		memcpy(ptr, &buffer, 4); ptr += 4;
5526
5527	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5528	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5529
5530}
5531
5532void glCopyBufferSubData_enc(void *self , GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size)
5533{
5534
5535	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5536	IOStream *stream = ctx->m_stream;
5537	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5538	bool useChecksum = checksumCalculator->getVersion() > 0;
5539
5540	 unsigned char *ptr;
5541	 unsigned char *buf;
5542	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
5543	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5544	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5545	buf = stream->alloc(totalSize);
5546	ptr = buf;
5547	int tmp = OP_glCopyBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
5548	memcpy(ptr, &totalSize, 4);  ptr += 4;
5549
5550		memcpy(ptr, &readtarget, 4); ptr += 4;
5551		memcpy(ptr, &writetarget, 4); ptr += 4;
5552		memcpy(ptr, &readoffset, 4); ptr += 4;
5553		memcpy(ptr, &writeoffset, 4); ptr += 4;
5554		memcpy(ptr, &size, 4); ptr += 4;
5555
5556	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5557	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5558
5559	stream->flush();
5560}
5561
5562void glClearBufferiv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLint* value)
5563{
5564
5565	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5566	IOStream *stream = ctx->m_stream;
5567	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5568	bool useChecksum = checksumCalculator->getVersion() > 0;
5569
5570	const unsigned int __size_value =  (sizeof(GLint) * glesv2_enc::clearBufferNumElts(self, buffer));
5571	 unsigned char *ptr;
5572	 unsigned char *buf;
5573	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5574	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5575	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5576	buf = stream->alloc(totalSize);
5577	ptr = buf;
5578	int tmp = OP_glClearBufferiv;memcpy(ptr, &tmp, 4); ptr += 4;
5579	memcpy(ptr, &totalSize, 4);  ptr += 4;
5580
5581		memcpy(ptr, &buffer, 4); ptr += 4;
5582		memcpy(ptr, &drawBuffer, 4); ptr += 4;
5583	*(unsigned int *)(ptr) = __size_value; ptr += 4;
5584	memcpy(ptr, value, __size_value);ptr += __size_value;
5585
5586	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5587	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5588
5589}
5590
5591void glClearBufferuiv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLuint* value)
5592{
5593
5594	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5595	IOStream *stream = ctx->m_stream;
5596	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5597	bool useChecksum = checksumCalculator->getVersion() > 0;
5598
5599	const unsigned int __size_value =  (sizeof(GLuint) * glesv2_enc::clearBufferNumElts(self, buffer));
5600	 unsigned char *ptr;
5601	 unsigned char *buf;
5602	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5603	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5604	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5605	buf = stream->alloc(totalSize);
5606	ptr = buf;
5607	int tmp = OP_glClearBufferuiv;memcpy(ptr, &tmp, 4); ptr += 4;
5608	memcpy(ptr, &totalSize, 4);  ptr += 4;
5609
5610		memcpy(ptr, &buffer, 4); ptr += 4;
5611		memcpy(ptr, &drawBuffer, 4); ptr += 4;
5612	*(unsigned int *)(ptr) = __size_value; ptr += 4;
5613	memcpy(ptr, value, __size_value);ptr += __size_value;
5614
5615	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5616	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5617
5618}
5619
5620void glClearBufferfv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLfloat* value)
5621{
5622
5623	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5624	IOStream *stream = ctx->m_stream;
5625	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5626	bool useChecksum = checksumCalculator->getVersion() > 0;
5627
5628	const unsigned int __size_value =  (sizeof(GLfloat) * glesv2_enc::clearBufferNumElts(self, buffer));
5629	 unsigned char *ptr;
5630	 unsigned char *buf;
5631	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
5632	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5633	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5634	buf = stream->alloc(totalSize);
5635	ptr = buf;
5636	int tmp = OP_glClearBufferfv;memcpy(ptr, &tmp, 4); ptr += 4;
5637	memcpy(ptr, &totalSize, 4);  ptr += 4;
5638
5639		memcpy(ptr, &buffer, 4); ptr += 4;
5640		memcpy(ptr, &drawBuffer, 4); ptr += 4;
5641	*(unsigned int *)(ptr) = __size_value; ptr += 4;
5642	memcpy(ptr, value, __size_value);ptr += __size_value;
5643
5644	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5645	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5646
5647}
5648
5649void glClearBufferfi_enc(void *self , GLenum buffer, GLint drawBuffer, GLfloat depth, GLint stencil)
5650{
5651
5652	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5653	IOStream *stream = ctx->m_stream;
5654	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5655	bool useChecksum = checksumCalculator->getVersion() > 0;
5656
5657	 unsigned char *ptr;
5658	 unsigned char *buf;
5659	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
5660	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5661	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5662	buf = stream->alloc(totalSize);
5663	ptr = buf;
5664	int tmp = OP_glClearBufferfi;memcpy(ptr, &tmp, 4); ptr += 4;
5665	memcpy(ptr, &totalSize, 4);  ptr += 4;
5666
5667		memcpy(ptr, &buffer, 4); ptr += 4;
5668		memcpy(ptr, &drawBuffer, 4); ptr += 4;
5669		memcpy(ptr, &depth, 4); ptr += 4;
5670		memcpy(ptr, &stencil, 4); ptr += 4;
5671
5672	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5673	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5674
5675}
5676
5677void glUniformBlockBinding_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
5678{
5679
5680	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5681	IOStream *stream = ctx->m_stream;
5682	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5683	bool useChecksum = checksumCalculator->getVersion() > 0;
5684
5685	 unsigned char *ptr;
5686	 unsigned char *buf;
5687	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
5688	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5689	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5690	buf = stream->alloc(totalSize);
5691	ptr = buf;
5692	int tmp = OP_glUniformBlockBinding;memcpy(ptr, &tmp, 4); ptr += 4;
5693	memcpy(ptr, &totalSize, 4);  ptr += 4;
5694
5695		memcpy(ptr, &program, 4); ptr += 4;
5696		memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
5697		memcpy(ptr, &uniformBlockBinding, 4); ptr += 4;
5698
5699	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5700	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5701
5702}
5703
5704GLuint glGetUniformBlockIndex_enc(void *self , GLuint program, const GLchar* uniformBlockName)
5705{
5706
5707	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5708	IOStream *stream = ctx->m_stream;
5709	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5710	bool useChecksum = checksumCalculator->getVersion() > 0;
5711
5712	const unsigned int __size_uniformBlockName =  (strlen(uniformBlockName) + 1);
5713	 unsigned char *ptr;
5714	 unsigned char *buf;
5715	 const size_t sizeWithoutChecksum = 8 + 4 + __size_uniformBlockName + 1*4;
5716	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5717	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5718	buf = stream->alloc(totalSize);
5719	ptr = buf;
5720	int tmp = OP_glGetUniformBlockIndex;memcpy(ptr, &tmp, 4); ptr += 4;
5721	memcpy(ptr, &totalSize, 4);  ptr += 4;
5722
5723		memcpy(ptr, &program, 4); ptr += 4;
5724	*(unsigned int *)(ptr) = __size_uniformBlockName; ptr += 4;
5725	memcpy(ptr, uniformBlockName, __size_uniformBlockName);ptr += __size_uniformBlockName;
5726
5727	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5728	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5729
5730
5731	GLuint retval;
5732	stream->readback(&retval, 4);
5733	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
5734	if (useChecksum) {
5735		unsigned char *checksumBufPtr = NULL;
5736		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5737		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5738		stream->readback(checksumBufPtr, checksumSize);
5739		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5740			ALOGE("glGetUniformBlockIndex: GL communication error, please report this issue to b.android.com.\n");
5741			abort();
5742		}
5743	}
5744	return retval;
5745}
5746
5747void glGetUniformIndicesAEMU_enc(void *self , GLuint program, GLsizei uniformCount, const GLchar* packedUniformNames, GLsizei packedLen, GLuint* uniformIndices)
5748{
5749
5750	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5751	IOStream *stream = ctx->m_stream;
5752	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5753	bool useChecksum = checksumCalculator->getVersion() > 0;
5754
5755	const unsigned int __size_packedUniformNames =  packedLen;
5756	const unsigned int __size_uniformIndices =  (uniformCount * sizeof(GLuint));
5757	 unsigned char *ptr;
5758	 unsigned char *buf;
5759	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedUniformNames + 4 + 0 + 2*4;
5760	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5761	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5762	buf = stream->alloc(totalSize);
5763	ptr = buf;
5764	int tmp = OP_glGetUniformIndicesAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
5765	memcpy(ptr, &totalSize, 4);  ptr += 4;
5766
5767		memcpy(ptr, &program, 4); ptr += 4;
5768		memcpy(ptr, &uniformCount, 4); ptr += 4;
5769	*(unsigned int *)(ptr) = __size_packedUniformNames; ptr += 4;
5770	memcpy(ptr, packedUniformNames, __size_packedUniformNames);ptr += __size_packedUniformNames;
5771		memcpy(ptr, &packedLen, 4); ptr += 4;
5772	*(unsigned int *)(ptr) = __size_uniformIndices; ptr += 4;
5773
5774	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5775	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5776
5777	stream->readback(uniformIndices, __size_uniformIndices);
5778	if (useChecksum) checksumCalculator->addBuffer(uniformIndices, __size_uniformIndices);
5779	if (useChecksum) {
5780		unsigned char *checksumBufPtr = NULL;
5781		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5782		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5783		stream->readback(checksumBufPtr, checksumSize);
5784		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5785			ALOGE("glGetUniformIndicesAEMU: GL communication error, please report this issue to b.android.com.\n");
5786			abort();
5787		}
5788	}
5789}
5790
5791void glGetActiveUniformBlockiv_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params)
5792{
5793
5794	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5795	IOStream *stream = ctx->m_stream;
5796	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5797	bool useChecksum = checksumCalculator->getVersion() > 0;
5798
5799	const unsigned int __size_params =  (glesv2_enc::glActiveUniformBlockivParamSize(self, program, uniformBlockIndex, pname) * sizeof(GLint));
5800	 unsigned char *ptr;
5801	 unsigned char *buf;
5802	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
5803	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5804	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5805	buf = stream->alloc(totalSize);
5806	ptr = buf;
5807	int tmp = OP_glGetActiveUniformBlockiv;memcpy(ptr, &tmp, 4); ptr += 4;
5808	memcpy(ptr, &totalSize, 4);  ptr += 4;
5809
5810		memcpy(ptr, &program, 4); ptr += 4;
5811		memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
5812		memcpy(ptr, &pname, 4); ptr += 4;
5813	*(unsigned int *)(ptr) = __size_params; ptr += 4;
5814
5815	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5816	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5817
5818	stream->readback(params, __size_params);
5819	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
5820	if (useChecksum) {
5821		unsigned char *checksumBufPtr = NULL;
5822		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5823		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5824		stream->readback(checksumBufPtr, checksumSize);
5825		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5826			ALOGE("glGetActiveUniformBlockiv: GL communication error, please report this issue to b.android.com.\n");
5827			abort();
5828		}
5829	}
5830}
5831
5832void glGetActiveUniformBlockName_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName)
5833{
5834
5835	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5836	IOStream *stream = ctx->m_stream;
5837	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5838	bool useChecksum = checksumCalculator->getVersion() > 0;
5839
5840	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
5841	const unsigned int __size_uniformBlockName = ((uniformBlockName != NULL) ?  bufSize : 0);
5842	 unsigned char *ptr;
5843	 unsigned char *buf;
5844	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 2*4;
5845	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5846	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5847	buf = stream->alloc(totalSize);
5848	ptr = buf;
5849	int tmp = OP_glGetActiveUniformBlockName;memcpy(ptr, &tmp, 4); ptr += 4;
5850	memcpy(ptr, &totalSize, 4);  ptr += 4;
5851
5852		memcpy(ptr, &program, 4); ptr += 4;
5853		memcpy(ptr, &uniformBlockIndex, 4); ptr += 4;
5854		memcpy(ptr, &bufSize, 4); ptr += 4;
5855	*(unsigned int *)(ptr) = __size_length; ptr += 4;
5856	*(unsigned int *)(ptr) = __size_uniformBlockName; ptr += 4;
5857
5858	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5859	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5860
5861	if (length != NULL) {
5862		stream->readback(length, __size_length);
5863		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
5864	}
5865	if (uniformBlockName != NULL) {
5866		stream->readback(uniformBlockName, __size_uniformBlockName);
5867		if (useChecksum) checksumCalculator->addBuffer(uniformBlockName, __size_uniformBlockName);
5868	}
5869	if (useChecksum) {
5870		unsigned char *checksumBufPtr = NULL;
5871		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5872		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5873		stream->readback(checksumBufPtr, checksumSize);
5874		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5875			ALOGE("glGetActiveUniformBlockName: GL communication error, please report this issue to b.android.com.\n");
5876			abort();
5877		}
5878	}
5879}
5880
5881void glUniform1ui_enc(void *self , GLint location, GLuint v0)
5882{
5883
5884	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5885	IOStream *stream = ctx->m_stream;
5886	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5887	bool useChecksum = checksumCalculator->getVersion() > 0;
5888
5889	 unsigned char *ptr;
5890	 unsigned char *buf;
5891	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
5892	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5893	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5894	buf = stream->alloc(totalSize);
5895	ptr = buf;
5896	int tmp = OP_glUniform1ui;memcpy(ptr, &tmp, 4); ptr += 4;
5897	memcpy(ptr, &totalSize, 4);  ptr += 4;
5898
5899		memcpy(ptr, &location, 4); ptr += 4;
5900		memcpy(ptr, &v0, 4); ptr += 4;
5901
5902	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5903	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5904
5905}
5906
5907void glUniform2ui_enc(void *self , GLint location, GLuint v0, GLuint v1)
5908{
5909
5910	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5911	IOStream *stream = ctx->m_stream;
5912	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5913	bool useChecksum = checksumCalculator->getVersion() > 0;
5914
5915	 unsigned char *ptr;
5916	 unsigned char *buf;
5917	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
5918	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5919	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5920	buf = stream->alloc(totalSize);
5921	ptr = buf;
5922	int tmp = OP_glUniform2ui;memcpy(ptr, &tmp, 4); ptr += 4;
5923	memcpy(ptr, &totalSize, 4);  ptr += 4;
5924
5925		memcpy(ptr, &location, 4); ptr += 4;
5926		memcpy(ptr, &v0, 4); ptr += 4;
5927		memcpy(ptr, &v1, 4); ptr += 4;
5928
5929	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5930	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5931
5932}
5933
5934void glUniform3ui_enc(void *self , GLint location, GLuint v0, GLuint v1, GLuint v2)
5935{
5936
5937	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5938	IOStream *stream = ctx->m_stream;
5939	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5940	bool useChecksum = checksumCalculator->getVersion() > 0;
5941
5942	 unsigned char *ptr;
5943	 unsigned char *buf;
5944	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
5945	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5946	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5947	buf = stream->alloc(totalSize);
5948	ptr = buf;
5949	int tmp = OP_glUniform3ui;memcpy(ptr, &tmp, 4); ptr += 4;
5950	memcpy(ptr, &totalSize, 4);  ptr += 4;
5951
5952		memcpy(ptr, &location, 4); ptr += 4;
5953		memcpy(ptr, &v0, 4); ptr += 4;
5954		memcpy(ptr, &v1, 4); ptr += 4;
5955		memcpy(ptr, &v2, 4); ptr += 4;
5956
5957	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5958	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5959
5960}
5961
5962void glUniform4ui_enc(void *self , GLint location, GLint v0, GLuint v1, GLuint v2, GLuint v3)
5963{
5964
5965	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5966	IOStream *stream = ctx->m_stream;
5967	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5968	bool useChecksum = checksumCalculator->getVersion() > 0;
5969
5970	 unsigned char *ptr;
5971	 unsigned char *buf;
5972	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
5973	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5974	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5975	buf = stream->alloc(totalSize);
5976	ptr = buf;
5977	int tmp = OP_glUniform4ui;memcpy(ptr, &tmp, 4); ptr += 4;
5978	memcpy(ptr, &totalSize, 4);  ptr += 4;
5979
5980		memcpy(ptr, &location, 4); ptr += 4;
5981		memcpy(ptr, &v0, 4); ptr += 4;
5982		memcpy(ptr, &v1, 4); ptr += 4;
5983		memcpy(ptr, &v2, 4); ptr += 4;
5984		memcpy(ptr, &v3, 4); ptr += 4;
5985
5986	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5987	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5988
5989}
5990
5991void glUniform1uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
5992{
5993
5994	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
5995	IOStream *stream = ctx->m_stream;
5996	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5997	bool useChecksum = checksumCalculator->getVersion() > 0;
5998
5999	const unsigned int __size_value =  (count * sizeof(GLuint));
6000	 unsigned char *ptr;
6001	 unsigned char *buf;
6002	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6003	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6004	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6005	buf = stream->alloc(totalSize);
6006	ptr = buf;
6007	int tmp = OP_glUniform1uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6008	memcpy(ptr, &totalSize, 4);  ptr += 4;
6009
6010		memcpy(ptr, &location, 4); ptr += 4;
6011		memcpy(ptr, &count, 4); ptr += 4;
6012	*(unsigned int *)(ptr) = __size_value; ptr += 4;
6013	memcpy(ptr, value, __size_value);ptr += __size_value;
6014
6015	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6016	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6017
6018}
6019
6020void glUniform2uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6021{
6022
6023	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6024	IOStream *stream = ctx->m_stream;
6025	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6026	bool useChecksum = checksumCalculator->getVersion() > 0;
6027
6028	const unsigned int __size_value =  (count * 2 * sizeof(GLuint));
6029	 unsigned char *ptr;
6030	 unsigned char *buf;
6031	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6032	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6033	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6034	buf = stream->alloc(totalSize);
6035	ptr = buf;
6036	int tmp = OP_glUniform2uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6037	memcpy(ptr, &totalSize, 4);  ptr += 4;
6038
6039		memcpy(ptr, &location, 4); ptr += 4;
6040		memcpy(ptr, &count, 4); ptr += 4;
6041	*(unsigned int *)(ptr) = __size_value; ptr += 4;
6042	memcpy(ptr, value, __size_value);ptr += __size_value;
6043
6044	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6045	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6046
6047}
6048
6049void glUniform3uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6050{
6051
6052	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6053	IOStream *stream = ctx->m_stream;
6054	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6055	bool useChecksum = checksumCalculator->getVersion() > 0;
6056
6057	const unsigned int __size_value =  (count * 3 * sizeof(GLuint));
6058	 unsigned char *ptr;
6059	 unsigned char *buf;
6060	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6061	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6062	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6063	buf = stream->alloc(totalSize);
6064	ptr = buf;
6065	int tmp = OP_glUniform3uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6066	memcpy(ptr, &totalSize, 4);  ptr += 4;
6067
6068		memcpy(ptr, &location, 4); ptr += 4;
6069		memcpy(ptr, &count, 4); ptr += 4;
6070	*(unsigned int *)(ptr) = __size_value; ptr += 4;
6071	memcpy(ptr, value, __size_value);ptr += __size_value;
6072
6073	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6074	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6075
6076}
6077
6078void glUniform4uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value)
6079{
6080
6081	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6082	IOStream *stream = ctx->m_stream;
6083	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6084	bool useChecksum = checksumCalculator->getVersion() > 0;
6085
6086	const unsigned int __size_value =  (count * 4 * sizeof(GLuint));
6087	 unsigned char *ptr;
6088	 unsigned char *buf;
6089	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_value + 1*4;
6090	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6091	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6092	buf = stream->alloc(totalSize);
6093	ptr = buf;
6094	int tmp = OP_glUniform4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6095	memcpy(ptr, &totalSize, 4);  ptr += 4;
6096
6097		memcpy(ptr, &location, 4); ptr += 4;
6098		memcpy(ptr, &count, 4); ptr += 4;
6099	*(unsigned int *)(ptr) = __size_value; ptr += 4;
6100	memcpy(ptr, value, __size_value);ptr += __size_value;
6101
6102	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6103	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6104
6105}
6106
6107void glUniformMatrix2x3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6108{
6109
6110	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6111	IOStream *stream = ctx->m_stream;
6112	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6113	bool useChecksum = checksumCalculator->getVersion() > 0;
6114
6115	const unsigned int __size_value =  (count * 6 * sizeof(GLfloat));
6116	 unsigned char *ptr;
6117	 unsigned char *buf;
6118	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6119	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6120	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6121	buf = stream->alloc(totalSize);
6122	ptr = buf;
6123	int tmp = OP_glUniformMatrix2x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
6124	memcpy(ptr, &totalSize, 4);  ptr += 4;
6125
6126		memcpy(ptr, &location, 4); ptr += 4;
6127		memcpy(ptr, &count, 4); ptr += 4;
6128		memcpy(ptr, &transpose, 1); ptr += 1;
6129	*(unsigned int *)(ptr) = __size_value; ptr += 4;
6130	memcpy(ptr, value, __size_value);ptr += __size_value;
6131
6132	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6133	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6134
6135}
6136
6137void glUniformMatrix3x2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6138{
6139
6140	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6141	IOStream *stream = ctx->m_stream;
6142	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6143	bool useChecksum = checksumCalculator->getVersion() > 0;
6144
6145	const unsigned int __size_value =  (count * 6 * sizeof(GLfloat));
6146	 unsigned char *ptr;
6147	 unsigned char *buf;
6148	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6149	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6150	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6151	buf = stream->alloc(totalSize);
6152	ptr = buf;
6153	int tmp = OP_glUniformMatrix3x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
6154	memcpy(ptr, &totalSize, 4);  ptr += 4;
6155
6156		memcpy(ptr, &location, 4); ptr += 4;
6157		memcpy(ptr, &count, 4); ptr += 4;
6158		memcpy(ptr, &transpose, 1); ptr += 1;
6159	*(unsigned int *)(ptr) = __size_value; ptr += 4;
6160	memcpy(ptr, value, __size_value);ptr += __size_value;
6161
6162	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6163	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6164
6165}
6166
6167void glUniformMatrix2x4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6168{
6169
6170	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6171	IOStream *stream = ctx->m_stream;
6172	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6173	bool useChecksum = checksumCalculator->getVersion() > 0;
6174
6175	const unsigned int __size_value =  (count * 8 * sizeof(GLfloat));
6176	 unsigned char *ptr;
6177	 unsigned char *buf;
6178	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6179	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6180	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6181	buf = stream->alloc(totalSize);
6182	ptr = buf;
6183	int tmp = OP_glUniformMatrix2x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
6184	memcpy(ptr, &totalSize, 4);  ptr += 4;
6185
6186		memcpy(ptr, &location, 4); ptr += 4;
6187		memcpy(ptr, &count, 4); ptr += 4;
6188		memcpy(ptr, &transpose, 1); ptr += 1;
6189	*(unsigned int *)(ptr) = __size_value; ptr += 4;
6190	memcpy(ptr, value, __size_value);ptr += __size_value;
6191
6192	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6193	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6194
6195}
6196
6197void glUniformMatrix4x2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6198{
6199
6200	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6201	IOStream *stream = ctx->m_stream;
6202	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6203	bool useChecksum = checksumCalculator->getVersion() > 0;
6204
6205	const unsigned int __size_value =  (count * 8 * sizeof(GLfloat));
6206	 unsigned char *ptr;
6207	 unsigned char *buf;
6208	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6209	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6210	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6211	buf = stream->alloc(totalSize);
6212	ptr = buf;
6213	int tmp = OP_glUniformMatrix4x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
6214	memcpy(ptr, &totalSize, 4);  ptr += 4;
6215
6216		memcpy(ptr, &location, 4); ptr += 4;
6217		memcpy(ptr, &count, 4); ptr += 4;
6218		memcpy(ptr, &transpose, 1); ptr += 1;
6219	*(unsigned int *)(ptr) = __size_value; ptr += 4;
6220	memcpy(ptr, value, __size_value);ptr += __size_value;
6221
6222	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6223	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6224
6225}
6226
6227void glUniformMatrix3x4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6228{
6229
6230	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6231	IOStream *stream = ctx->m_stream;
6232	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6233	bool useChecksum = checksumCalculator->getVersion() > 0;
6234
6235	const unsigned int __size_value =  (count * 12 * sizeof(GLfloat));
6236	 unsigned char *ptr;
6237	 unsigned char *buf;
6238	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6239	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6240	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6241	buf = stream->alloc(totalSize);
6242	ptr = buf;
6243	int tmp = OP_glUniformMatrix3x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
6244	memcpy(ptr, &totalSize, 4);  ptr += 4;
6245
6246		memcpy(ptr, &location, 4); ptr += 4;
6247		memcpy(ptr, &count, 4); ptr += 4;
6248		memcpy(ptr, &transpose, 1); ptr += 1;
6249	*(unsigned int *)(ptr) = __size_value; ptr += 4;
6250	memcpy(ptr, value, __size_value);ptr += __size_value;
6251
6252	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6253	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6254
6255}
6256
6257void glUniformMatrix4x3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
6258{
6259
6260	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6261	IOStream *stream = ctx->m_stream;
6262	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6263	bool useChecksum = checksumCalculator->getVersion() > 0;
6264
6265	const unsigned int __size_value =  (count * 12 * sizeof(GLfloat));
6266	 unsigned char *ptr;
6267	 unsigned char *buf;
6268	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
6269	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6270	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6271	buf = stream->alloc(totalSize);
6272	ptr = buf;
6273	int tmp = OP_glUniformMatrix4x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
6274	memcpy(ptr, &totalSize, 4);  ptr += 4;
6275
6276		memcpy(ptr, &location, 4); ptr += 4;
6277		memcpy(ptr, &count, 4); ptr += 4;
6278		memcpy(ptr, &transpose, 1); ptr += 1;
6279	*(unsigned int *)(ptr) = __size_value; ptr += 4;
6280	memcpy(ptr, value, __size_value);ptr += __size_value;
6281
6282	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6283	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6284
6285}
6286
6287void glGetUniformuiv_enc(void *self , GLuint program, GLint location, GLuint* params)
6288{
6289
6290	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6291	IOStream *stream = ctx->m_stream;
6292	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6293	bool useChecksum = checksumCalculator->getVersion() > 0;
6294
6295	const unsigned int __size_params =  glSizeof(glesv2_enc::uniformType(self, program, location));
6296	 unsigned char *ptr;
6297	 unsigned char *buf;
6298	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
6299	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6300	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6301	buf = stream->alloc(totalSize);
6302	ptr = buf;
6303	int tmp = OP_glGetUniformuiv;memcpy(ptr, &tmp, 4); ptr += 4;
6304	memcpy(ptr, &totalSize, 4);  ptr += 4;
6305
6306		memcpy(ptr, &program, 4); ptr += 4;
6307		memcpy(ptr, &location, 4); ptr += 4;
6308	*(unsigned int *)(ptr) = __size_params; ptr += 4;
6309
6310	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6311	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6312
6313	stream->readback(params, __size_params);
6314	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6315	if (useChecksum) {
6316		unsigned char *checksumBufPtr = NULL;
6317		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6318		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6319		stream->readback(checksumBufPtr, checksumSize);
6320		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6321			ALOGE("glGetUniformuiv: GL communication error, please report this issue to b.android.com.\n");
6322			abort();
6323		}
6324	}
6325}
6326
6327void glGetActiveUniformsiv_enc(void *self , GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params)
6328{
6329
6330	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6331	IOStream *stream = ctx->m_stream;
6332	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6333	bool useChecksum = checksumCalculator->getVersion() > 0;
6334
6335	const unsigned int __size_uniformIndices =  (uniformCount * sizeof(GLuint));
6336	const unsigned int __size_params =  (uniformCount * sizeof(GLint));
6337	 unsigned char *ptr;
6338	 unsigned char *buf;
6339	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_uniformIndices + 4 + 0 + 2*4;
6340	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6341	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6342	buf = stream->alloc(totalSize);
6343	ptr = buf;
6344	int tmp = OP_glGetActiveUniformsiv;memcpy(ptr, &tmp, 4); ptr += 4;
6345	memcpy(ptr, &totalSize, 4);  ptr += 4;
6346
6347		memcpy(ptr, &program, 4); ptr += 4;
6348		memcpy(ptr, &uniformCount, 4); ptr += 4;
6349	*(unsigned int *)(ptr) = __size_uniformIndices; ptr += 4;
6350	memcpy(ptr, uniformIndices, __size_uniformIndices);ptr += __size_uniformIndices;
6351		memcpy(ptr, &pname, 4); ptr += 4;
6352	*(unsigned int *)(ptr) = __size_params; ptr += 4;
6353
6354	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6355	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6356
6357	stream->readback(params, __size_params);
6358	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6359	if (useChecksum) {
6360		unsigned char *checksumBufPtr = NULL;
6361		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6362		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6363		stream->readback(checksumBufPtr, checksumSize);
6364		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6365			ALOGE("glGetActiveUniformsiv: GL communication error, please report this issue to b.android.com.\n");
6366			abort();
6367		}
6368	}
6369}
6370
6371void glVertexAttribI4i_enc(void *self , GLuint index, GLint v0, GLint v1, GLint v2, GLint v3)
6372{
6373
6374	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6375	IOStream *stream = ctx->m_stream;
6376	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6377	bool useChecksum = checksumCalculator->getVersion() > 0;
6378
6379	 unsigned char *ptr;
6380	 unsigned char *buf;
6381	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6382	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6383	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6384	buf = stream->alloc(totalSize);
6385	ptr = buf;
6386	int tmp = OP_glVertexAttribI4i;memcpy(ptr, &tmp, 4); ptr += 4;
6387	memcpy(ptr, &totalSize, 4);  ptr += 4;
6388
6389		memcpy(ptr, &index, 4); ptr += 4;
6390		memcpy(ptr, &v0, 4); ptr += 4;
6391		memcpy(ptr, &v1, 4); ptr += 4;
6392		memcpy(ptr, &v2, 4); ptr += 4;
6393		memcpy(ptr, &v3, 4); ptr += 4;
6394
6395	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6396	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6397
6398}
6399
6400void glVertexAttribI4ui_enc(void *self , GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
6401{
6402
6403	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6404	IOStream *stream = ctx->m_stream;
6405	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6406	bool useChecksum = checksumCalculator->getVersion() > 0;
6407
6408	 unsigned char *ptr;
6409	 unsigned char *buf;
6410	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6411	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6412	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6413	buf = stream->alloc(totalSize);
6414	ptr = buf;
6415	int tmp = OP_glVertexAttribI4ui;memcpy(ptr, &tmp, 4); ptr += 4;
6416	memcpy(ptr, &totalSize, 4);  ptr += 4;
6417
6418		memcpy(ptr, &index, 4); ptr += 4;
6419		memcpy(ptr, &v0, 4); ptr += 4;
6420		memcpy(ptr, &v1, 4); ptr += 4;
6421		memcpy(ptr, &v2, 4); ptr += 4;
6422		memcpy(ptr, &v3, 4); ptr += 4;
6423
6424	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6425	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6426
6427}
6428
6429void glVertexAttribI4iv_enc(void *self , GLuint index, const GLint* v)
6430{
6431
6432	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6433	IOStream *stream = ctx->m_stream;
6434	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6435	bool useChecksum = checksumCalculator->getVersion() > 0;
6436
6437	const unsigned int __size_v =  (4 * sizeof(GLint));
6438	 unsigned char *ptr;
6439	 unsigned char *buf;
6440	 const size_t sizeWithoutChecksum = 8 + 4 + __size_v + 1*4;
6441	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6442	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6443	buf = stream->alloc(totalSize);
6444	ptr = buf;
6445	int tmp = OP_glVertexAttribI4iv;memcpy(ptr, &tmp, 4); ptr += 4;
6446	memcpy(ptr, &totalSize, 4);  ptr += 4;
6447
6448		memcpy(ptr, &index, 4); ptr += 4;
6449	*(unsigned int *)(ptr) = __size_v; ptr += 4;
6450	memcpy(ptr, v, __size_v);ptr += __size_v;
6451
6452	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6453	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6454
6455}
6456
6457void glVertexAttribI4uiv_enc(void *self , GLuint index, const GLuint* v)
6458{
6459
6460	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6461	IOStream *stream = ctx->m_stream;
6462	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6463	bool useChecksum = checksumCalculator->getVersion() > 0;
6464
6465	const unsigned int __size_v =  (4 * sizeof(GLuint));
6466	 unsigned char *ptr;
6467	 unsigned char *buf;
6468	 const size_t sizeWithoutChecksum = 8 + 4 + __size_v + 1*4;
6469	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6470	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6471	buf = stream->alloc(totalSize);
6472	ptr = buf;
6473	int tmp = OP_glVertexAttribI4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
6474	memcpy(ptr, &totalSize, 4);  ptr += 4;
6475
6476		memcpy(ptr, &index, 4); ptr += 4;
6477	*(unsigned int *)(ptr) = __size_v; ptr += 4;
6478	memcpy(ptr, v, __size_v);ptr += __size_v;
6479
6480	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6481	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6482
6483}
6484
6485void glVertexAttribIPointerOffsetAEMU_enc(void *self , GLuint index, GLint size, GLenum type, GLsizei stride, GLuint offset)
6486{
6487
6488	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6489	IOStream *stream = ctx->m_stream;
6490	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6491	bool useChecksum = checksumCalculator->getVersion() > 0;
6492
6493	 unsigned char *ptr;
6494	 unsigned char *buf;
6495	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6496	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6497	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6498	buf = stream->alloc(totalSize);
6499	ptr = buf;
6500	int tmp = OP_glVertexAttribIPointerOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6501	memcpy(ptr, &totalSize, 4);  ptr += 4;
6502
6503		memcpy(ptr, &index, 4); ptr += 4;
6504		memcpy(ptr, &size, 4); ptr += 4;
6505		memcpy(ptr, &type, 4); ptr += 4;
6506		memcpy(ptr, &stride, 4); ptr += 4;
6507		memcpy(ptr, &offset, 4); ptr += 4;
6508
6509	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6510	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6511
6512}
6513
6514void glVertexAttribIPointerDataAEMU_enc(void *self , GLuint index, GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
6515{
6516
6517	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6518	IOStream *stream = ctx->m_stream;
6519	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6520	bool useChecksum = checksumCalculator->getVersion() > 0;
6521
6522	const unsigned int __size_data =  datalen;
6523	 unsigned char *ptr;
6524	 unsigned char *buf;
6525	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_data + 4 + 1*4;
6526	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6527	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6528	buf = stream->alloc(totalSize);
6529	ptr = buf;
6530	int tmp = OP_glVertexAttribIPointerDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6531	memcpy(ptr, &totalSize, 4);  ptr += 4;
6532
6533		memcpy(ptr, &index, 4); ptr += 4;
6534		memcpy(ptr, &size, 4); ptr += 4;
6535		memcpy(ptr, &type, 4); ptr += 4;
6536		memcpy(ptr, &stride, 4); ptr += 4;
6537	*(unsigned int *)(ptr) = __size_data; ptr += 4;
6538	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
6539		memcpy(ptr, &datalen, 4); ptr += 4;
6540
6541	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6542	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6543
6544}
6545
6546void glGetVertexAttribIiv_enc(void *self , GLuint index, GLenum pname, GLint* params)
6547{
6548
6549	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6550	IOStream *stream = ctx->m_stream;
6551	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6552	bool useChecksum = checksumCalculator->getVersion() > 0;
6553
6554	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
6555	 unsigned char *ptr;
6556	 unsigned char *buf;
6557	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
6558	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6559	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6560	buf = stream->alloc(totalSize);
6561	ptr = buf;
6562	int tmp = OP_glGetVertexAttribIiv;memcpy(ptr, &tmp, 4); ptr += 4;
6563	memcpy(ptr, &totalSize, 4);  ptr += 4;
6564
6565		memcpy(ptr, &index, 4); ptr += 4;
6566		memcpy(ptr, &pname, 4); ptr += 4;
6567	*(unsigned int *)(ptr) = __size_params; ptr += 4;
6568
6569	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6570	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6571
6572	stream->readback(params, __size_params);
6573	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6574	if (useChecksum) {
6575		unsigned char *checksumBufPtr = NULL;
6576		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6577		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6578		stream->readback(checksumBufPtr, checksumSize);
6579		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6580			ALOGE("glGetVertexAttribIiv: GL communication error, please report this issue to b.android.com.\n");
6581			abort();
6582		}
6583	}
6584}
6585
6586void glGetVertexAttribIuiv_enc(void *self , GLuint index, GLenum pname, GLuint* params)
6587{
6588
6589	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6590	IOStream *stream = ctx->m_stream;
6591	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6592	bool useChecksum = checksumCalculator->getVersion() > 0;
6593
6594	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLuint));
6595	 unsigned char *ptr;
6596	 unsigned char *buf;
6597	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
6598	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6599	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6600	buf = stream->alloc(totalSize);
6601	ptr = buf;
6602	int tmp = OP_glGetVertexAttribIuiv;memcpy(ptr, &tmp, 4); ptr += 4;
6603	memcpy(ptr, &totalSize, 4);  ptr += 4;
6604
6605		memcpy(ptr, &index, 4); ptr += 4;
6606		memcpy(ptr, &pname, 4); ptr += 4;
6607	*(unsigned int *)(ptr) = __size_params; ptr += 4;
6608
6609	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6610	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6611
6612	stream->readback(params, __size_params);
6613	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6614	if (useChecksum) {
6615		unsigned char *checksumBufPtr = NULL;
6616		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6617		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6618		stream->readback(checksumBufPtr, checksumSize);
6619		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6620			ALOGE("glGetVertexAttribIuiv: GL communication error, please report this issue to b.android.com.\n");
6621			abort();
6622		}
6623	}
6624}
6625
6626void glVertexAttribDivisor_enc(void *self , GLuint index, GLuint divisor)
6627{
6628
6629	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6630	IOStream *stream = ctx->m_stream;
6631	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6632	bool useChecksum = checksumCalculator->getVersion() > 0;
6633
6634	 unsigned char *ptr;
6635	 unsigned char *buf;
6636	 const size_t sizeWithoutChecksum = 8 + 4 + 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_glVertexAttribDivisor;memcpy(ptr, &tmp, 4); ptr += 4;
6642	memcpy(ptr, &totalSize, 4);  ptr += 4;
6643
6644		memcpy(ptr, &index, 4); ptr += 4;
6645		memcpy(ptr, &divisor, 4); ptr += 4;
6646
6647	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6648	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6649
6650}
6651
6652void glDrawArraysInstanced_enc(void *self , GLenum mode, GLint first, GLsizei count, GLsizei primcount)
6653{
6654
6655	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6656	IOStream *stream = ctx->m_stream;
6657	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6658	bool useChecksum = checksumCalculator->getVersion() > 0;
6659
6660	 unsigned char *ptr;
6661	 unsigned char *buf;
6662	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
6663	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6664	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6665	buf = stream->alloc(totalSize);
6666	ptr = buf;
6667	int tmp = OP_glDrawArraysInstanced;memcpy(ptr, &tmp, 4); ptr += 4;
6668	memcpy(ptr, &totalSize, 4);  ptr += 4;
6669
6670		memcpy(ptr, &mode, 4); ptr += 4;
6671		memcpy(ptr, &first, 4); ptr += 4;
6672		memcpy(ptr, &count, 4); ptr += 4;
6673		memcpy(ptr, &primcount, 4); ptr += 4;
6674
6675	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6676	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6677
6678}
6679
6680void glDrawElementsInstancedDataAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLsizei datalen)
6681{
6682
6683	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6684	IOStream *stream = ctx->m_stream;
6685	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6686	bool useChecksum = checksumCalculator->getVersion() > 0;
6687
6688	const unsigned int __size_indices =  datalen;
6689	 unsigned char *ptr;
6690	 unsigned char *buf;
6691	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_indices + 4 + 4 + 1*4;
6692	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6693	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6694	buf = stream->alloc(totalSize);
6695	ptr = buf;
6696	int tmp = OP_glDrawElementsInstancedDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6697	memcpy(ptr, &totalSize, 4);  ptr += 4;
6698
6699		memcpy(ptr, &mode, 4); ptr += 4;
6700		memcpy(ptr, &count, 4); ptr += 4;
6701		memcpy(ptr, &type, 4); ptr += 4;
6702	*(unsigned int *)(ptr) = __size_indices; ptr += 4;
6703	memcpy(ptr, indices, __size_indices);ptr += __size_indices;
6704		memcpy(ptr, &primcount, 4); ptr += 4;
6705		memcpy(ptr, &datalen, 4); ptr += 4;
6706
6707	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6708	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6709
6710}
6711
6712void glDrawElementsInstancedOffsetAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset, GLsizei primcount)
6713{
6714
6715	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6716	IOStream *stream = ctx->m_stream;
6717	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6718	bool useChecksum = checksumCalculator->getVersion() > 0;
6719
6720	 unsigned char *ptr;
6721	 unsigned char *buf;
6722	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6723	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6724	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6725	buf = stream->alloc(totalSize);
6726	ptr = buf;
6727	int tmp = OP_glDrawElementsInstancedOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6728	memcpy(ptr, &totalSize, 4);  ptr += 4;
6729
6730		memcpy(ptr, &mode, 4); ptr += 4;
6731		memcpy(ptr, &count, 4); ptr += 4;
6732		memcpy(ptr, &type, 4); ptr += 4;
6733		memcpy(ptr, &offset, 4); ptr += 4;
6734		memcpy(ptr, &primcount, 4); ptr += 4;
6735
6736	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6737	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6738
6739}
6740
6741void glDrawRangeElementsDataAEMU_enc(void *self , GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices, GLsizei datalen)
6742{
6743
6744	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6745	IOStream *stream = ctx->m_stream;
6746	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6747	bool useChecksum = checksumCalculator->getVersion() > 0;
6748
6749	const unsigned int __size_indices =  datalen;
6750	 unsigned char *ptr;
6751	 unsigned char *buf;
6752	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + __size_indices + 4 + 1*4;
6753	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6754	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6755	buf = stream->alloc(totalSize);
6756	ptr = buf;
6757	int tmp = OP_glDrawRangeElementsDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6758	memcpy(ptr, &totalSize, 4);  ptr += 4;
6759
6760		memcpy(ptr, &mode, 4); ptr += 4;
6761		memcpy(ptr, &start, 4); ptr += 4;
6762		memcpy(ptr, &end, 4); ptr += 4;
6763		memcpy(ptr, &count, 4); ptr += 4;
6764		memcpy(ptr, &type, 4); ptr += 4;
6765	*(unsigned int *)(ptr) = __size_indices; ptr += 4;
6766	memcpy(ptr, indices, __size_indices);ptr += __size_indices;
6767		memcpy(ptr, &datalen, 4); ptr += 4;
6768
6769	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6770	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6771
6772}
6773
6774void glDrawRangeElementsOffsetAEMU_enc(void *self , GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLuint offset)
6775{
6776
6777	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6778	IOStream *stream = ctx->m_stream;
6779	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6780	bool useChecksum = checksumCalculator->getVersion() > 0;
6781
6782	 unsigned char *ptr;
6783	 unsigned char *buf;
6784	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
6785	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6786	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6787	buf = stream->alloc(totalSize);
6788	ptr = buf;
6789	int tmp = OP_glDrawRangeElementsOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6790	memcpy(ptr, &totalSize, 4);  ptr += 4;
6791
6792		memcpy(ptr, &mode, 4); ptr += 4;
6793		memcpy(ptr, &start, 4); ptr += 4;
6794		memcpy(ptr, &end, 4); ptr += 4;
6795		memcpy(ptr, &count, 4); ptr += 4;
6796		memcpy(ptr, &type, 4); ptr += 4;
6797		memcpy(ptr, &offset, 4); ptr += 4;
6798
6799	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6800	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6801
6802}
6803
6804uint64_t glFenceSyncAEMU_enc(void *self , GLenum condition, GLbitfield flags)
6805{
6806
6807	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6808	IOStream *stream = ctx->m_stream;
6809	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6810	bool useChecksum = checksumCalculator->getVersion() > 0;
6811
6812	 unsigned char *ptr;
6813	 unsigned char *buf;
6814	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
6815	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6816	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6817	buf = stream->alloc(totalSize);
6818	ptr = buf;
6819	int tmp = OP_glFenceSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6820	memcpy(ptr, &totalSize, 4);  ptr += 4;
6821
6822		memcpy(ptr, &condition, 4); ptr += 4;
6823		memcpy(ptr, &flags, 4); ptr += 4;
6824
6825	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6826	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6827
6828
6829	uint64_t retval;
6830	stream->readback(&retval, 8);
6831	if (useChecksum) checksumCalculator->addBuffer(&retval, 8);
6832	if (useChecksum) {
6833		unsigned char *checksumBufPtr = NULL;
6834		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6835		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6836		stream->readback(checksumBufPtr, checksumSize);
6837		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6838			ALOGE("glFenceSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
6839			abort();
6840		}
6841	}
6842	return retval;
6843}
6844
6845GLenum glClientWaitSyncAEMU_enc(void *self , uint64_t wait_on, GLbitfield flags, GLuint64 timeout)
6846{
6847
6848	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6849	IOStream *stream = ctx->m_stream;
6850	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6851	bool useChecksum = checksumCalculator->getVersion() > 0;
6852
6853	 unsigned char *ptr;
6854	 unsigned char *buf;
6855	 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 8;
6856	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6857	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6858	buf = stream->alloc(totalSize);
6859	ptr = buf;
6860	int tmp = OP_glClientWaitSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6861	memcpy(ptr, &totalSize, 4);  ptr += 4;
6862
6863		memcpy(ptr, &wait_on, 8); ptr += 8;
6864		memcpy(ptr, &flags, 4); ptr += 4;
6865		memcpy(ptr, &timeout, 8); ptr += 8;
6866
6867	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6868	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6869
6870
6871	GLenum retval;
6872	stream->readback(&retval, 4);
6873	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
6874	if (useChecksum) {
6875		unsigned char *checksumBufPtr = NULL;
6876		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6877		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6878		stream->readback(checksumBufPtr, checksumSize);
6879		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6880			ALOGE("glClientWaitSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
6881			abort();
6882		}
6883	}
6884	return retval;
6885}
6886
6887void glWaitSyncAEMU_enc(void *self , uint64_t wait_on, GLbitfield flags, GLuint64 timeout)
6888{
6889
6890	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6891	IOStream *stream = ctx->m_stream;
6892	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6893	bool useChecksum = checksumCalculator->getVersion() > 0;
6894
6895	 unsigned char *ptr;
6896	 unsigned char *buf;
6897	 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 8;
6898	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6899	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6900	buf = stream->alloc(totalSize);
6901	ptr = buf;
6902	int tmp = OP_glWaitSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6903	memcpy(ptr, &totalSize, 4);  ptr += 4;
6904
6905		memcpy(ptr, &wait_on, 8); ptr += 8;
6906		memcpy(ptr, &flags, 4); ptr += 4;
6907		memcpy(ptr, &timeout, 8); ptr += 8;
6908
6909	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6910	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6911
6912}
6913
6914void glDeleteSyncAEMU_enc(void *self , uint64_t to_delete)
6915{
6916
6917	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6918	IOStream *stream = ctx->m_stream;
6919	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6920	bool useChecksum = checksumCalculator->getVersion() > 0;
6921
6922	 unsigned char *ptr;
6923	 unsigned char *buf;
6924	 const size_t sizeWithoutChecksum = 8 + 8;
6925	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6926	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6927	buf = stream->alloc(totalSize);
6928	ptr = buf;
6929	int tmp = OP_glDeleteSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6930	memcpy(ptr, &totalSize, 4);  ptr += 4;
6931
6932		memcpy(ptr, &to_delete, 8); ptr += 8;
6933
6934	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6935	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6936
6937}
6938
6939GLboolean glIsSyncAEMU_enc(void *self , uint64_t sync)
6940{
6941
6942	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6943	IOStream *stream = ctx->m_stream;
6944	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6945	bool useChecksum = checksumCalculator->getVersion() > 0;
6946
6947	 unsigned char *ptr;
6948	 unsigned char *buf;
6949	 const size_t sizeWithoutChecksum = 8 + 8;
6950	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6951	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6952	buf = stream->alloc(totalSize);
6953	ptr = buf;
6954	int tmp = OP_glIsSyncAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6955	memcpy(ptr, &totalSize, 4);  ptr += 4;
6956
6957		memcpy(ptr, &sync, 8); ptr += 8;
6958
6959	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6960	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6961
6962
6963	GLboolean retval;
6964	stream->readback(&retval, 1);
6965	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
6966	if (useChecksum) {
6967		unsigned char *checksumBufPtr = NULL;
6968		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6969		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6970		stream->readback(checksumBufPtr, checksumSize);
6971		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6972			ALOGE("glIsSyncAEMU: GL communication error, please report this issue to b.android.com.\n");
6973			abort();
6974		}
6975	}
6976	return retval;
6977}
6978
6979void glGetSyncivAEMU_enc(void *self , uint64_t sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values)
6980{
6981
6982	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
6983	IOStream *stream = ctx->m_stream;
6984	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6985	bool useChecksum = checksumCalculator->getVersion() > 0;
6986
6987	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
6988	const unsigned int __size_values =  (bufSize * sizeof(GLint));
6989	 unsigned char *ptr;
6990	 unsigned char *buf;
6991	 const size_t sizeWithoutChecksum = 8 + 8 + 4 + 4 + 0 + 0 + 2*4;
6992	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6993	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6994	buf = stream->alloc(totalSize);
6995	ptr = buf;
6996	int tmp = OP_glGetSyncivAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
6997	memcpy(ptr, &totalSize, 4);  ptr += 4;
6998
6999		memcpy(ptr, &sync, 8); ptr += 8;
7000		memcpy(ptr, &pname, 4); ptr += 4;
7001		memcpy(ptr, &bufSize, 4); ptr += 4;
7002	*(unsigned int *)(ptr) = __size_length; ptr += 4;
7003	*(unsigned int *)(ptr) = __size_values; ptr += 4;
7004
7005	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7006	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7007
7008	if (length != NULL) {
7009		stream->readback(length, __size_length);
7010		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
7011	}
7012	stream->readback(values, __size_values);
7013	if (useChecksum) checksumCalculator->addBuffer(values, __size_values);
7014	if (useChecksum) {
7015		unsigned char *checksumBufPtr = NULL;
7016		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7017		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7018		stream->readback(checksumBufPtr, checksumSize);
7019		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7020			ALOGE("glGetSyncivAEMU: GL communication error, please report this issue to b.android.com.\n");
7021			abort();
7022		}
7023	}
7024}
7025
7026void glDrawBuffers_enc(void *self , GLsizei n, const GLenum* bufs)
7027{
7028
7029	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7030	IOStream *stream = ctx->m_stream;
7031	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7032	bool useChecksum = checksumCalculator->getVersion() > 0;
7033
7034	const unsigned int __size_bufs =  (n * sizeof(GLenum));
7035	 unsigned char *ptr;
7036	 unsigned char *buf;
7037	 const size_t sizeWithoutChecksum = 8 + 4 + __size_bufs + 1*4;
7038	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7039	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7040	buf = stream->alloc(totalSize);
7041	ptr = buf;
7042	int tmp = OP_glDrawBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
7043	memcpy(ptr, &totalSize, 4);  ptr += 4;
7044
7045		memcpy(ptr, &n, 4); ptr += 4;
7046	*(unsigned int *)(ptr) = __size_bufs; ptr += 4;
7047	memcpy(ptr, bufs, __size_bufs);ptr += __size_bufs;
7048
7049	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7050	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7051
7052}
7053
7054void glReadBuffer_enc(void *self , GLenum src)
7055{
7056
7057	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7058	IOStream *stream = ctx->m_stream;
7059	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7060	bool useChecksum = checksumCalculator->getVersion() > 0;
7061
7062	 unsigned char *ptr;
7063	 unsigned char *buf;
7064	 const size_t sizeWithoutChecksum = 8 + 4;
7065	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7066	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7067	buf = stream->alloc(totalSize);
7068	ptr = buf;
7069	int tmp = OP_glReadBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7070	memcpy(ptr, &totalSize, 4);  ptr += 4;
7071
7072		memcpy(ptr, &src, 4); ptr += 4;
7073
7074	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7075	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7076
7077}
7078
7079void glBlitFramebuffer_enc(void *self , GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
7080{
7081
7082	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7083	IOStream *stream = ctx->m_stream;
7084	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7085	bool useChecksum = checksumCalculator->getVersion() > 0;
7086
7087	 unsigned char *ptr;
7088	 unsigned char *buf;
7089	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
7090	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7091	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7092	buf = stream->alloc(totalSize);
7093	ptr = buf;
7094	int tmp = OP_glBlitFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7095	memcpy(ptr, &totalSize, 4);  ptr += 4;
7096
7097		memcpy(ptr, &srcX0, 4); ptr += 4;
7098		memcpy(ptr, &srcY0, 4); ptr += 4;
7099		memcpy(ptr, &srcX1, 4); ptr += 4;
7100		memcpy(ptr, &srcY1, 4); ptr += 4;
7101		memcpy(ptr, &dstX0, 4); ptr += 4;
7102		memcpy(ptr, &dstY0, 4); ptr += 4;
7103		memcpy(ptr, &dstX1, 4); ptr += 4;
7104		memcpy(ptr, &dstY1, 4); ptr += 4;
7105		memcpy(ptr, &mask, 4); ptr += 4;
7106		memcpy(ptr, &filter, 4); ptr += 4;
7107
7108	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7109	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7110
7111}
7112
7113void glInvalidateFramebuffer_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments)
7114{
7115
7116	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7117	IOStream *stream = ctx->m_stream;
7118	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7119	bool useChecksum = checksumCalculator->getVersion() > 0;
7120
7121	const unsigned int __size_attachments =  (numAttachments * sizeof(GLenum));
7122	 unsigned char *ptr;
7123	 unsigned char *buf;
7124	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 1*4;
7125	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7126	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7127	buf = stream->alloc(totalSize);
7128	ptr = buf;
7129	int tmp = OP_glInvalidateFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7130	memcpy(ptr, &totalSize, 4);  ptr += 4;
7131
7132		memcpy(ptr, &target, 4); ptr += 4;
7133		memcpy(ptr, &numAttachments, 4); ptr += 4;
7134	*(unsigned int *)(ptr) = __size_attachments; ptr += 4;
7135	memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
7136
7137	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7138	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7139
7140}
7141
7142void glInvalidateSubFramebuffer_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height)
7143{
7144
7145	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7146	IOStream *stream = ctx->m_stream;
7147	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7148	bool useChecksum = checksumCalculator->getVersion() > 0;
7149
7150	const unsigned int __size_attachments =  (numAttachments * sizeof(GLenum));
7151	 unsigned char *ptr;
7152	 unsigned char *buf;
7153	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 4 + 4 + 4 + 4 + 1*4;
7154	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7155	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7156	buf = stream->alloc(totalSize);
7157	ptr = buf;
7158	int tmp = OP_glInvalidateSubFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
7159	memcpy(ptr, &totalSize, 4);  ptr += 4;
7160
7161		memcpy(ptr, &target, 4); ptr += 4;
7162		memcpy(ptr, &numAttachments, 4); ptr += 4;
7163	*(unsigned int *)(ptr) = __size_attachments; ptr += 4;
7164	memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
7165		memcpy(ptr, &x, 4); ptr += 4;
7166		memcpy(ptr, &y, 4); ptr += 4;
7167		memcpy(ptr, &width, 4); ptr += 4;
7168		memcpy(ptr, &height, 4); ptr += 4;
7169
7170	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7171	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7172
7173}
7174
7175void glFramebufferTextureLayer_enc(void *self , GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
7176{
7177
7178	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7179	IOStream *stream = ctx->m_stream;
7180	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7181	bool useChecksum = checksumCalculator->getVersion() > 0;
7182
7183	 unsigned char *ptr;
7184	 unsigned char *buf;
7185	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7186	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7187	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7188	buf = stream->alloc(totalSize);
7189	ptr = buf;
7190	int tmp = OP_glFramebufferTextureLayer;memcpy(ptr, &tmp, 4); ptr += 4;
7191	memcpy(ptr, &totalSize, 4);  ptr += 4;
7192
7193		memcpy(ptr, &target, 4); ptr += 4;
7194		memcpy(ptr, &attachment, 4); ptr += 4;
7195		memcpy(ptr, &texture, 4); ptr += 4;
7196		memcpy(ptr, &level, 4); ptr += 4;
7197		memcpy(ptr, &layer, 4); ptr += 4;
7198
7199	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7200	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7201
7202}
7203
7204void glRenderbufferStorageMultisample_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
7205{
7206
7207	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7208	IOStream *stream = ctx->m_stream;
7209	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7210	bool useChecksum = checksumCalculator->getVersion() > 0;
7211
7212	 unsigned char *ptr;
7213	 unsigned char *buf;
7214	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7215	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7216	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7217	buf = stream->alloc(totalSize);
7218	ptr = buf;
7219	int tmp = OP_glRenderbufferStorageMultisample;memcpy(ptr, &tmp, 4); ptr += 4;
7220	memcpy(ptr, &totalSize, 4);  ptr += 4;
7221
7222		memcpy(ptr, &target, 4); ptr += 4;
7223		memcpy(ptr, &samples, 4); ptr += 4;
7224		memcpy(ptr, &internalformat, 4); ptr += 4;
7225		memcpy(ptr, &width, 4); ptr += 4;
7226		memcpy(ptr, &height, 4); ptr += 4;
7227
7228	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7229	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7230
7231}
7232
7233void glTexStorage2D_enc(void *self , GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
7234{
7235
7236	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7237	IOStream *stream = ctx->m_stream;
7238	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7239	bool useChecksum = checksumCalculator->getVersion() > 0;
7240
7241	 unsigned char *ptr;
7242	 unsigned char *buf;
7243	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7244	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7245	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7246	buf = stream->alloc(totalSize);
7247	ptr = buf;
7248	int tmp = OP_glTexStorage2D;memcpy(ptr, &tmp, 4); ptr += 4;
7249	memcpy(ptr, &totalSize, 4);  ptr += 4;
7250
7251		memcpy(ptr, &target, 4); ptr += 4;
7252		memcpy(ptr, &levels, 4); ptr += 4;
7253		memcpy(ptr, &internalformat, 4); ptr += 4;
7254		memcpy(ptr, &width, 4); ptr += 4;
7255		memcpy(ptr, &height, 4); ptr += 4;
7256
7257	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7258	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7259
7260}
7261
7262void glGetInternalformativ_enc(void *self , GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params)
7263{
7264
7265	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7266	IOStream *stream = ctx->m_stream;
7267	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7268	bool useChecksum = checksumCalculator->getVersion() > 0;
7269
7270	const unsigned int __size_params =  (sizeof(GLint) * bufSize);
7271	 unsigned char *ptr;
7272	 unsigned char *buf;
7273	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 1*4;
7274	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7275	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7276	buf = stream->alloc(totalSize);
7277	ptr = buf;
7278	int tmp = OP_glGetInternalformativ;memcpy(ptr, &tmp, 4); ptr += 4;
7279	memcpy(ptr, &totalSize, 4);  ptr += 4;
7280
7281		memcpy(ptr, &target, 4); ptr += 4;
7282		memcpy(ptr, &internalformat, 4); ptr += 4;
7283		memcpy(ptr, &pname, 4); ptr += 4;
7284		memcpy(ptr, &bufSize, 4); ptr += 4;
7285	*(unsigned int *)(ptr) = __size_params; ptr += 4;
7286
7287	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7288	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7289
7290	stream->readback(params, __size_params);
7291	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
7292	if (useChecksum) {
7293		unsigned char *checksumBufPtr = NULL;
7294		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7295		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7296		stream->readback(checksumBufPtr, checksumSize);
7297		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7298			ALOGE("glGetInternalformativ: GL communication error, please report this issue to b.android.com.\n");
7299			abort();
7300		}
7301	}
7302}
7303
7304void glBeginTransformFeedback_enc(void *self , GLenum primitiveMode)
7305{
7306
7307	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7308	IOStream *stream = ctx->m_stream;
7309	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7310	bool useChecksum = checksumCalculator->getVersion() > 0;
7311
7312	 unsigned char *ptr;
7313	 unsigned char *buf;
7314	 const size_t sizeWithoutChecksum = 8 + 4;
7315	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7316	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7317	buf = stream->alloc(totalSize);
7318	ptr = buf;
7319	int tmp = OP_glBeginTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7320	memcpy(ptr, &totalSize, 4);  ptr += 4;
7321
7322		memcpy(ptr, &primitiveMode, 4); ptr += 4;
7323
7324	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7325	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7326
7327}
7328
7329void glEndTransformFeedback_enc(void *self )
7330{
7331
7332	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7333	IOStream *stream = ctx->m_stream;
7334	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7335	bool useChecksum = checksumCalculator->getVersion() > 0;
7336
7337	 unsigned char *ptr;
7338	 unsigned char *buf;
7339	 const size_t sizeWithoutChecksum = 8;
7340	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7341	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7342	buf = stream->alloc(totalSize);
7343	ptr = buf;
7344	int tmp = OP_glEndTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7345	memcpy(ptr, &totalSize, 4);  ptr += 4;
7346
7347
7348	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7349	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7350
7351}
7352
7353void glGenTransformFeedbacks_enc(void *self , GLsizei n, GLuint* ids)
7354{
7355
7356	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7357	IOStream *stream = ctx->m_stream;
7358	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7359	bool useChecksum = checksumCalculator->getVersion() > 0;
7360
7361	const unsigned int __size_ids =  (n * sizeof(GLuint));
7362	 unsigned char *ptr;
7363	 unsigned char *buf;
7364	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
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_glGenTransformFeedbacks;memcpy(ptr, &tmp, 4); ptr += 4;
7370	memcpy(ptr, &totalSize, 4);  ptr += 4;
7371
7372		memcpy(ptr, &n, 4); ptr += 4;
7373	*(unsigned int *)(ptr) = __size_ids; ptr += 4;
7374
7375	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7376	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7377
7378	stream->readback(ids, __size_ids);
7379	if (useChecksum) checksumCalculator->addBuffer(ids, __size_ids);
7380	if (useChecksum) {
7381		unsigned char *checksumBufPtr = NULL;
7382		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7383		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7384		stream->readback(checksumBufPtr, checksumSize);
7385		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7386			ALOGE("glGenTransformFeedbacks: GL communication error, please report this issue to b.android.com.\n");
7387			abort();
7388		}
7389	}
7390}
7391
7392void glDeleteTransformFeedbacks_enc(void *self , GLsizei n, const GLuint* ids)
7393{
7394
7395	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7396	IOStream *stream = ctx->m_stream;
7397	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7398	bool useChecksum = checksumCalculator->getVersion() > 0;
7399
7400	const unsigned int __size_ids =  (n * sizeof(GLuint));
7401	 unsigned char *ptr;
7402	 unsigned char *buf;
7403	 const size_t sizeWithoutChecksum = 8 + 4 + __size_ids + 1*4;
7404	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7405	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7406	buf = stream->alloc(totalSize);
7407	ptr = buf;
7408	int tmp = OP_glDeleteTransformFeedbacks;memcpy(ptr, &tmp, 4); ptr += 4;
7409	memcpy(ptr, &totalSize, 4);  ptr += 4;
7410
7411		memcpy(ptr, &n, 4); ptr += 4;
7412	*(unsigned int *)(ptr) = __size_ids; ptr += 4;
7413	memcpy(ptr, ids, __size_ids);ptr += __size_ids;
7414
7415	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7416	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7417
7418}
7419
7420void glBindTransformFeedback_enc(void *self , GLenum target, GLuint id)
7421{
7422
7423	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7424	IOStream *stream = ctx->m_stream;
7425	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7426	bool useChecksum = checksumCalculator->getVersion() > 0;
7427
7428	 unsigned char *ptr;
7429	 unsigned char *buf;
7430	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7431	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7432	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7433	buf = stream->alloc(totalSize);
7434	ptr = buf;
7435	int tmp = OP_glBindTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7436	memcpy(ptr, &totalSize, 4);  ptr += 4;
7437
7438		memcpy(ptr, &target, 4); ptr += 4;
7439		memcpy(ptr, &id, 4); ptr += 4;
7440
7441	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7442	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7443
7444}
7445
7446void glPauseTransformFeedback_enc(void *self )
7447{
7448
7449	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7450	IOStream *stream = ctx->m_stream;
7451	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7452	bool useChecksum = checksumCalculator->getVersion() > 0;
7453
7454	 unsigned char *ptr;
7455	 unsigned char *buf;
7456	 const size_t sizeWithoutChecksum = 8;
7457	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7458	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7459	buf = stream->alloc(totalSize);
7460	ptr = buf;
7461	int tmp = OP_glPauseTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7462	memcpy(ptr, &totalSize, 4);  ptr += 4;
7463
7464
7465	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7466	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7467
7468}
7469
7470void glResumeTransformFeedback_enc(void *self )
7471{
7472
7473	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7474	IOStream *stream = ctx->m_stream;
7475	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7476	bool useChecksum = checksumCalculator->getVersion() > 0;
7477
7478	 unsigned char *ptr;
7479	 unsigned char *buf;
7480	 const size_t sizeWithoutChecksum = 8;
7481	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7482	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7483	buf = stream->alloc(totalSize);
7484	ptr = buf;
7485	int tmp = OP_glResumeTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7486	memcpy(ptr, &totalSize, 4);  ptr += 4;
7487
7488
7489	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7490	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7491
7492}
7493
7494GLboolean glIsTransformFeedback_enc(void *self , GLuint id)
7495{
7496
7497	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7498	IOStream *stream = ctx->m_stream;
7499	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7500	bool useChecksum = checksumCalculator->getVersion() > 0;
7501
7502	 unsigned char *ptr;
7503	 unsigned char *buf;
7504	 const size_t sizeWithoutChecksum = 8 + 4;
7505	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7506	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7507	buf = stream->alloc(totalSize);
7508	ptr = buf;
7509	int tmp = OP_glIsTransformFeedback;memcpy(ptr, &tmp, 4); ptr += 4;
7510	memcpy(ptr, &totalSize, 4);  ptr += 4;
7511
7512		memcpy(ptr, &id, 4); ptr += 4;
7513
7514	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7515	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7516
7517
7518	GLboolean retval;
7519	stream->readback(&retval, 1);
7520	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
7521	if (useChecksum) {
7522		unsigned char *checksumBufPtr = NULL;
7523		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7524		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7525		stream->readback(checksumBufPtr, checksumSize);
7526		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7527			ALOGE("glIsTransformFeedback: GL communication error, please report this issue to b.android.com.\n");
7528			abort();
7529		}
7530	}
7531	return retval;
7532}
7533
7534void glTransformFeedbackVaryingsAEMU_enc(void *self , GLuint program, GLsizei count, const char* packedVaryings, GLuint packedVaryingsLen, GLenum bufferMode)
7535{
7536
7537	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7538	IOStream *stream = ctx->m_stream;
7539	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7540	bool useChecksum = checksumCalculator->getVersion() > 0;
7541
7542	const unsigned int __size_packedVaryings =  packedVaryingsLen;
7543	 unsigned char *ptr;
7544	 unsigned char *buf;
7545	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedVaryings + 4 + 4 + 1*4;
7546	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7547	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7548	buf = stream->alloc(totalSize);
7549	ptr = buf;
7550	int tmp = OP_glTransformFeedbackVaryingsAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
7551	memcpy(ptr, &totalSize, 4);  ptr += 4;
7552
7553		memcpy(ptr, &program, 4); ptr += 4;
7554		memcpy(ptr, &count, 4); ptr += 4;
7555	*(unsigned int *)(ptr) = __size_packedVaryings; ptr += 4;
7556	memcpy(ptr, packedVaryings, __size_packedVaryings);ptr += __size_packedVaryings;
7557		memcpy(ptr, &packedVaryingsLen, 4); ptr += 4;
7558		memcpy(ptr, &bufferMode, 4); ptr += 4;
7559
7560	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7561	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7562
7563}
7564
7565void glGetTransformFeedbackVarying_enc(void *self , GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, char* name)
7566{
7567
7568	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7569	IOStream *stream = ctx->m_stream;
7570	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7571	bool useChecksum = checksumCalculator->getVersion() > 0;
7572
7573	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
7574	const unsigned int __size_size =  (sizeof(GLsizei));
7575	const unsigned int __size_type = ((type != NULL) ?  (sizeof(GLenum)) : 0);
7576	const unsigned int __size_name = ((name != NULL) ?  bufSize : 0);
7577	 unsigned char *ptr;
7578	 unsigned char *buf;
7579	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 0 + 0 + 0 + 4*4;
7580	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7581	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7582	buf = stream->alloc(totalSize);
7583	ptr = buf;
7584	int tmp = OP_glGetTransformFeedbackVarying;memcpy(ptr, &tmp, 4); ptr += 4;
7585	memcpy(ptr, &totalSize, 4);  ptr += 4;
7586
7587		memcpy(ptr, &program, 4); ptr += 4;
7588		memcpy(ptr, &index, 4); ptr += 4;
7589		memcpy(ptr, &bufSize, 4); ptr += 4;
7590	*(unsigned int *)(ptr) = __size_length; ptr += 4;
7591	*(unsigned int *)(ptr) = __size_size; ptr += 4;
7592	*(unsigned int *)(ptr) = __size_type; ptr += 4;
7593	*(unsigned int *)(ptr) = __size_name; ptr += 4;
7594
7595	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7596	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7597
7598	if (length != NULL) {
7599		stream->readback(length, __size_length);
7600		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
7601	}
7602	stream->readback(size, __size_size);
7603	if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
7604	if (type != NULL) {
7605		stream->readback(type, __size_type);
7606		if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
7607	}
7608	if (name != NULL) {
7609		stream->readback(name, __size_name);
7610		if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
7611	}
7612	if (useChecksum) {
7613		unsigned char *checksumBufPtr = NULL;
7614		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7615		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7616		stream->readback(checksumBufPtr, checksumSize);
7617		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7618			ALOGE("glGetTransformFeedbackVarying: GL communication error, please report this issue to b.android.com.\n");
7619			abort();
7620		}
7621	}
7622}
7623
7624void glGenSamplers_enc(void *self , GLsizei n, GLuint* samplers)
7625{
7626
7627	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7628	IOStream *stream = ctx->m_stream;
7629	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7630	bool useChecksum = checksumCalculator->getVersion() > 0;
7631
7632	const unsigned int __size_samplers =  (n * sizeof(GLuint));
7633	 unsigned char *ptr;
7634	 unsigned char *buf;
7635	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
7636	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7637	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7638	buf = stream->alloc(totalSize);
7639	ptr = buf;
7640	int tmp = OP_glGenSamplers;memcpy(ptr, &tmp, 4); ptr += 4;
7641	memcpy(ptr, &totalSize, 4);  ptr += 4;
7642
7643		memcpy(ptr, &n, 4); ptr += 4;
7644	*(unsigned int *)(ptr) = __size_samplers; ptr += 4;
7645
7646	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7647	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7648
7649	stream->readback(samplers, __size_samplers);
7650	if (useChecksum) checksumCalculator->addBuffer(samplers, __size_samplers);
7651	if (useChecksum) {
7652		unsigned char *checksumBufPtr = NULL;
7653		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7654		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7655		stream->readback(checksumBufPtr, checksumSize);
7656		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7657			ALOGE("glGenSamplers: GL communication error, please report this issue to b.android.com.\n");
7658			abort();
7659		}
7660	}
7661}
7662
7663void glDeleteSamplers_enc(void *self , GLsizei n, const GLuint* samplers)
7664{
7665
7666	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7667	IOStream *stream = ctx->m_stream;
7668	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7669	bool useChecksum = checksumCalculator->getVersion() > 0;
7670
7671	const unsigned int __size_samplers =  (n * sizeof(GLuint));
7672	 unsigned char *ptr;
7673	 unsigned char *buf;
7674	 const size_t sizeWithoutChecksum = 8 + 4 + __size_samplers + 1*4;
7675	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7676	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7677	buf = stream->alloc(totalSize);
7678	ptr = buf;
7679	int tmp = OP_glDeleteSamplers;memcpy(ptr, &tmp, 4); ptr += 4;
7680	memcpy(ptr, &totalSize, 4);  ptr += 4;
7681
7682		memcpy(ptr, &n, 4); ptr += 4;
7683	*(unsigned int *)(ptr) = __size_samplers; ptr += 4;
7684	memcpy(ptr, samplers, __size_samplers);ptr += __size_samplers;
7685
7686	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7687	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7688
7689}
7690
7691void glBindSampler_enc(void *self , GLuint unit, GLuint sampler)
7692{
7693
7694	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7695	IOStream *stream = ctx->m_stream;
7696	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7697	bool useChecksum = checksumCalculator->getVersion() > 0;
7698
7699	 unsigned char *ptr;
7700	 unsigned char *buf;
7701	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7702	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7703	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7704	buf = stream->alloc(totalSize);
7705	ptr = buf;
7706	int tmp = OP_glBindSampler;memcpy(ptr, &tmp, 4); ptr += 4;
7707	memcpy(ptr, &totalSize, 4);  ptr += 4;
7708
7709		memcpy(ptr, &unit, 4); ptr += 4;
7710		memcpy(ptr, &sampler, 4); ptr += 4;
7711
7712	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7713	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7714
7715}
7716
7717void glSamplerParameterf_enc(void *self , GLuint sampler, GLenum pname, GLfloat param)
7718{
7719
7720	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7721	IOStream *stream = ctx->m_stream;
7722	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7723	bool useChecksum = checksumCalculator->getVersion() > 0;
7724
7725	 unsigned char *ptr;
7726	 unsigned char *buf;
7727	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
7728	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7729	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7730	buf = stream->alloc(totalSize);
7731	ptr = buf;
7732	int tmp = OP_glSamplerParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
7733	memcpy(ptr, &totalSize, 4);  ptr += 4;
7734
7735		memcpy(ptr, &sampler, 4); ptr += 4;
7736		memcpy(ptr, &pname, 4); ptr += 4;
7737		memcpy(ptr, &param, 4); ptr += 4;
7738
7739	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7740	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7741
7742}
7743
7744void glSamplerParameteri_enc(void *self , GLuint sampler, GLenum pname, GLint param)
7745{
7746
7747	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7748	IOStream *stream = ctx->m_stream;
7749	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7750	bool useChecksum = checksumCalculator->getVersion() > 0;
7751
7752	 unsigned char *ptr;
7753	 unsigned char *buf;
7754	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
7755	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7756	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7757	buf = stream->alloc(totalSize);
7758	ptr = buf;
7759	int tmp = OP_glSamplerParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
7760	memcpy(ptr, &totalSize, 4);  ptr += 4;
7761
7762		memcpy(ptr, &sampler, 4); ptr += 4;
7763		memcpy(ptr, &pname, 4); ptr += 4;
7764		memcpy(ptr, &param, 4); ptr += 4;
7765
7766	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7767	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7768
7769}
7770
7771void glSamplerParameterfv_enc(void *self , GLuint sampler, GLenum pname, const GLfloat* params)
7772{
7773
7774	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7775	IOStream *stream = ctx->m_stream;
7776	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7777	bool useChecksum = checksumCalculator->getVersion() > 0;
7778
7779	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
7780	 unsigned char *ptr;
7781	 unsigned char *buf;
7782	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
7783	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7784	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7785	buf = stream->alloc(totalSize);
7786	ptr = buf;
7787	int tmp = OP_glSamplerParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
7788	memcpy(ptr, &totalSize, 4);  ptr += 4;
7789
7790		memcpy(ptr, &sampler, 4); ptr += 4;
7791		memcpy(ptr, &pname, 4); ptr += 4;
7792	*(unsigned int *)(ptr) = __size_params; ptr += 4;
7793	memcpy(ptr, params, __size_params);ptr += __size_params;
7794
7795	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7796	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7797
7798}
7799
7800void glSamplerParameteriv_enc(void *self , GLuint sampler, GLenum pname, const GLint* params)
7801{
7802
7803	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7804	IOStream *stream = ctx->m_stream;
7805	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7806	bool useChecksum = checksumCalculator->getVersion() > 0;
7807
7808	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
7809	 unsigned char *ptr;
7810	 unsigned char *buf;
7811	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
7812	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7813	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7814	buf = stream->alloc(totalSize);
7815	ptr = buf;
7816	int tmp = OP_glSamplerParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
7817	memcpy(ptr, &totalSize, 4);  ptr += 4;
7818
7819		memcpy(ptr, &sampler, 4); ptr += 4;
7820		memcpy(ptr, &pname, 4); ptr += 4;
7821	*(unsigned int *)(ptr) = __size_params; ptr += 4;
7822	memcpy(ptr, params, __size_params);ptr += __size_params;
7823
7824	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7825	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7826
7827}
7828
7829void glGetSamplerParameterfv_enc(void *self , GLuint sampler, GLenum pname, GLfloat* params)
7830{
7831
7832	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7833	IOStream *stream = ctx->m_stream;
7834	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7835	bool useChecksum = checksumCalculator->getVersion() > 0;
7836
7837	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
7838	 unsigned char *ptr;
7839	 unsigned char *buf;
7840	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
7841	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7842	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7843	buf = stream->alloc(totalSize);
7844	ptr = buf;
7845	int tmp = OP_glGetSamplerParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
7846	memcpy(ptr, &totalSize, 4);  ptr += 4;
7847
7848		memcpy(ptr, &sampler, 4); ptr += 4;
7849		memcpy(ptr, &pname, 4); ptr += 4;
7850	*(unsigned int *)(ptr) = __size_params; ptr += 4;
7851
7852	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7853	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7854
7855	stream->readback(params, __size_params);
7856	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
7857	if (useChecksum) {
7858		unsigned char *checksumBufPtr = NULL;
7859		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7860		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7861		stream->readback(checksumBufPtr, checksumSize);
7862		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7863			ALOGE("glGetSamplerParameterfv: GL communication error, please report this issue to b.android.com.\n");
7864			abort();
7865		}
7866	}
7867}
7868
7869void glGetSamplerParameteriv_enc(void *self , GLuint sampler, GLenum pname, GLint* params)
7870{
7871
7872	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7873	IOStream *stream = ctx->m_stream;
7874	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7875	bool useChecksum = checksumCalculator->getVersion() > 0;
7876
7877	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
7878	 unsigned char *ptr;
7879	 unsigned char *buf;
7880	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
7881	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7882	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7883	buf = stream->alloc(totalSize);
7884	ptr = buf;
7885	int tmp = OP_glGetSamplerParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
7886	memcpy(ptr, &totalSize, 4);  ptr += 4;
7887
7888		memcpy(ptr, &sampler, 4); ptr += 4;
7889		memcpy(ptr, &pname, 4); ptr += 4;
7890	*(unsigned int *)(ptr) = __size_params; ptr += 4;
7891
7892	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7893	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7894
7895	stream->readback(params, __size_params);
7896	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
7897	if (useChecksum) {
7898		unsigned char *checksumBufPtr = NULL;
7899		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7900		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7901		stream->readback(checksumBufPtr, checksumSize);
7902		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7903			ALOGE("glGetSamplerParameteriv: GL communication error, please report this issue to b.android.com.\n");
7904			abort();
7905		}
7906	}
7907}
7908
7909GLboolean glIsSampler_enc(void *self , GLuint sampler)
7910{
7911
7912	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7913	IOStream *stream = ctx->m_stream;
7914	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7915	bool useChecksum = checksumCalculator->getVersion() > 0;
7916
7917	 unsigned char *ptr;
7918	 unsigned char *buf;
7919	 const size_t sizeWithoutChecksum = 8 + 4;
7920	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7921	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7922	buf = stream->alloc(totalSize);
7923	ptr = buf;
7924	int tmp = OP_glIsSampler;memcpy(ptr, &tmp, 4); ptr += 4;
7925	memcpy(ptr, &totalSize, 4);  ptr += 4;
7926
7927		memcpy(ptr, &sampler, 4); ptr += 4;
7928
7929	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7930	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7931
7932
7933	GLboolean retval;
7934	stream->readback(&retval, 1);
7935	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
7936	if (useChecksum) {
7937		unsigned char *checksumBufPtr = NULL;
7938		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7939		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7940		stream->readback(checksumBufPtr, checksumSize);
7941		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7942			ALOGE("glIsSampler: GL communication error, please report this issue to b.android.com.\n");
7943			abort();
7944		}
7945	}
7946	return retval;
7947}
7948
7949void glGenQueries_enc(void *self , GLsizei n, GLuint* queries)
7950{
7951
7952	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7953	IOStream *stream = ctx->m_stream;
7954	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7955	bool useChecksum = checksumCalculator->getVersion() > 0;
7956
7957	const unsigned int __size_queries =  (n * sizeof(GLuint));
7958	 unsigned char *ptr;
7959	 unsigned char *buf;
7960	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
7961	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7962	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7963	buf = stream->alloc(totalSize);
7964	ptr = buf;
7965	int tmp = OP_glGenQueries;memcpy(ptr, &tmp, 4); ptr += 4;
7966	memcpy(ptr, &totalSize, 4);  ptr += 4;
7967
7968		memcpy(ptr, &n, 4); ptr += 4;
7969	*(unsigned int *)(ptr) = __size_queries; ptr += 4;
7970
7971	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7972	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7973
7974	stream->readback(queries, __size_queries);
7975	if (useChecksum) checksumCalculator->addBuffer(queries, __size_queries);
7976	if (useChecksum) {
7977		unsigned char *checksumBufPtr = NULL;
7978		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7979		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7980		stream->readback(checksumBufPtr, checksumSize);
7981		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7982			ALOGE("glGenQueries: GL communication error, please report this issue to b.android.com.\n");
7983			abort();
7984		}
7985	}
7986}
7987
7988void glDeleteQueries_enc(void *self , GLsizei n, const GLuint* queries)
7989{
7990
7991	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
7992	IOStream *stream = ctx->m_stream;
7993	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7994	bool useChecksum = checksumCalculator->getVersion() > 0;
7995
7996	const unsigned int __size_queries =  (n * sizeof(GLuint));
7997	 unsigned char *ptr;
7998	 unsigned char *buf;
7999	 const size_t sizeWithoutChecksum = 8 + 4 + __size_queries + 1*4;
8000	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8001	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8002	buf = stream->alloc(totalSize);
8003	ptr = buf;
8004	int tmp = OP_glDeleteQueries;memcpy(ptr, &tmp, 4); ptr += 4;
8005	memcpy(ptr, &totalSize, 4);  ptr += 4;
8006
8007		memcpy(ptr, &n, 4); ptr += 4;
8008	*(unsigned int *)(ptr) = __size_queries; ptr += 4;
8009	memcpy(ptr, queries, __size_queries);ptr += __size_queries;
8010
8011	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8012	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8013
8014}
8015
8016void glBeginQuery_enc(void *self , GLenum target, GLuint query)
8017{
8018
8019	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8020	IOStream *stream = ctx->m_stream;
8021	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8022	bool useChecksum = checksumCalculator->getVersion() > 0;
8023
8024	 unsigned char *ptr;
8025	 unsigned char *buf;
8026	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
8027	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8028	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8029	buf = stream->alloc(totalSize);
8030	ptr = buf;
8031	int tmp = OP_glBeginQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8032	memcpy(ptr, &totalSize, 4);  ptr += 4;
8033
8034		memcpy(ptr, &target, 4); ptr += 4;
8035		memcpy(ptr, &query, 4); ptr += 4;
8036
8037	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8038	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8039
8040}
8041
8042void glEndQuery_enc(void *self , GLenum target)
8043{
8044
8045	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8046	IOStream *stream = ctx->m_stream;
8047	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8048	bool useChecksum = checksumCalculator->getVersion() > 0;
8049
8050	 unsigned char *ptr;
8051	 unsigned char *buf;
8052	 const size_t sizeWithoutChecksum = 8 + 4;
8053	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8054	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8055	buf = stream->alloc(totalSize);
8056	ptr = buf;
8057	int tmp = OP_glEndQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8058	memcpy(ptr, &totalSize, 4);  ptr += 4;
8059
8060		memcpy(ptr, &target, 4); ptr += 4;
8061
8062	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8063	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8064
8065}
8066
8067void glGetQueryiv_enc(void *self , GLenum target, GLenum pname, GLint* params)
8068{
8069
8070	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8071	IOStream *stream = ctx->m_stream;
8072	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8073	bool useChecksum = checksumCalculator->getVersion() > 0;
8074
8075	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
8076	 unsigned char *ptr;
8077	 unsigned char *buf;
8078	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8079	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8080	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8081	buf = stream->alloc(totalSize);
8082	ptr = buf;
8083	int tmp = OP_glGetQueryiv;memcpy(ptr, &tmp, 4); ptr += 4;
8084	memcpy(ptr, &totalSize, 4);  ptr += 4;
8085
8086		memcpy(ptr, &target, 4); ptr += 4;
8087		memcpy(ptr, &pname, 4); ptr += 4;
8088	*(unsigned int *)(ptr) = __size_params; ptr += 4;
8089
8090	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8091	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8092
8093	stream->readback(params, __size_params);
8094	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8095	if (useChecksum) {
8096		unsigned char *checksumBufPtr = NULL;
8097		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8098		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8099		stream->readback(checksumBufPtr, checksumSize);
8100		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8101			ALOGE("glGetQueryiv: GL communication error, please report this issue to b.android.com.\n");
8102			abort();
8103		}
8104	}
8105}
8106
8107void glGetQueryObjectuiv_enc(void *self , GLuint query, GLenum pname, GLuint* params)
8108{
8109
8110	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8111	IOStream *stream = ctx->m_stream;
8112	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8113	bool useChecksum = checksumCalculator->getVersion() > 0;
8114
8115	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLuint));
8116	 unsigned char *ptr;
8117	 unsigned char *buf;
8118	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8119	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8120	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8121	buf = stream->alloc(totalSize);
8122	ptr = buf;
8123	int tmp = OP_glGetQueryObjectuiv;memcpy(ptr, &tmp, 4); ptr += 4;
8124	memcpy(ptr, &totalSize, 4);  ptr += 4;
8125
8126		memcpy(ptr, &query, 4); ptr += 4;
8127		memcpy(ptr, &pname, 4); ptr += 4;
8128	*(unsigned int *)(ptr) = __size_params; ptr += 4;
8129
8130	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8131	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8132
8133	stream->readback(params, __size_params);
8134	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8135	if (useChecksum) {
8136		unsigned char *checksumBufPtr = NULL;
8137		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8138		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8139		stream->readback(checksumBufPtr, checksumSize);
8140		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8141			ALOGE("glGetQueryObjectuiv: GL communication error, please report this issue to b.android.com.\n");
8142			abort();
8143		}
8144	}
8145}
8146
8147GLboolean glIsQuery_enc(void *self , GLuint query)
8148{
8149
8150	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8151	IOStream *stream = ctx->m_stream;
8152	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8153	bool useChecksum = checksumCalculator->getVersion() > 0;
8154
8155	 unsigned char *ptr;
8156	 unsigned char *buf;
8157	 const size_t sizeWithoutChecksum = 8 + 4;
8158	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8159	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8160	buf = stream->alloc(totalSize);
8161	ptr = buf;
8162	int tmp = OP_glIsQuery;memcpy(ptr, &tmp, 4); ptr += 4;
8163	memcpy(ptr, &totalSize, 4);  ptr += 4;
8164
8165		memcpy(ptr, &query, 4); ptr += 4;
8166
8167	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8168	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8169
8170
8171	GLboolean retval;
8172	stream->readback(&retval, 1);
8173	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
8174	if (useChecksum) {
8175		unsigned char *checksumBufPtr = NULL;
8176		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8177		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8178		stream->readback(checksumBufPtr, checksumSize);
8179		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8180			ALOGE("glIsQuery: GL communication error, please report this issue to b.android.com.\n");
8181			abort();
8182		}
8183	}
8184	return retval;
8185}
8186
8187void glProgramParameteri_enc(void *self , GLuint program, GLenum pname, GLint value)
8188{
8189
8190	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8191	IOStream *stream = ctx->m_stream;
8192	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8193	bool useChecksum = checksumCalculator->getVersion() > 0;
8194
8195	 unsigned char *ptr;
8196	 unsigned char *buf;
8197	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
8198	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8199	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8200	buf = stream->alloc(totalSize);
8201	ptr = buf;
8202	int tmp = OP_glProgramParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
8203	memcpy(ptr, &totalSize, 4);  ptr += 4;
8204
8205		memcpy(ptr, &program, 4); ptr += 4;
8206		memcpy(ptr, &pname, 4); ptr += 4;
8207		memcpy(ptr, &value, 4); ptr += 4;
8208
8209	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8210	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8211
8212}
8213
8214void glProgramBinary_enc(void *self , GLuint program, GLenum binaryFormat, const void* binary, GLsizei length)
8215{
8216
8217	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8218	IOStream *stream = ctx->m_stream;
8219	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8220	bool useChecksum = checksumCalculator->getVersion() > 0;
8221
8222	const unsigned int __size_binary =  length;
8223	 unsigned char *ptr;
8224	 unsigned char *buf;
8225	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_binary + 4 + 1*4;
8226	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8227	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8228	buf = stream->alloc(totalSize);
8229	ptr = buf;
8230	int tmp = OP_glProgramBinary;memcpy(ptr, &tmp, 4); ptr += 4;
8231	memcpy(ptr, &totalSize, 4);  ptr += 4;
8232
8233		memcpy(ptr, &program, 4); ptr += 4;
8234		memcpy(ptr, &binaryFormat, 4); ptr += 4;
8235	*(unsigned int *)(ptr) = __size_binary; ptr += 4;
8236	memcpy(ptr, binary, __size_binary);ptr += __size_binary;
8237		memcpy(ptr, &length, 4); ptr += 4;
8238
8239	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8240	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8241
8242}
8243
8244void glGetProgramBinary_enc(void *self , GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void* binary)
8245{
8246
8247	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8248	IOStream *stream = ctx->m_stream;
8249	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8250	bool useChecksum = checksumCalculator->getVersion() > 0;
8251
8252	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
8253	const unsigned int __size_binaryFormat =  (sizeof(GLenum));
8254	const unsigned int __size_binary =  bufSize;
8255	 unsigned char *ptr;
8256	 unsigned char *buf;
8257	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 0 + 3*4;
8258	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8259	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8260	buf = stream->alloc(totalSize);
8261	ptr = buf;
8262	int tmp = OP_glGetProgramBinary;memcpy(ptr, &tmp, 4); ptr += 4;
8263	memcpy(ptr, &totalSize, 4);  ptr += 4;
8264
8265		memcpy(ptr, &program, 4); ptr += 4;
8266		memcpy(ptr, &bufSize, 4); ptr += 4;
8267	*(unsigned int *)(ptr) = __size_length; ptr += 4;
8268	*(unsigned int *)(ptr) = __size_binaryFormat; ptr += 4;
8269	*(unsigned int *)(ptr) = __size_binary; ptr += 4;
8270
8271	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8272	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8273
8274	if (length != NULL) {
8275		stream->readback(length, __size_length);
8276		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
8277	}
8278	stream->readback(binaryFormat, __size_binaryFormat);
8279	if (useChecksum) checksumCalculator->addBuffer(binaryFormat, __size_binaryFormat);
8280	stream->readback(binary, __size_binary);
8281	if (useChecksum) checksumCalculator->addBuffer(binary, __size_binary);
8282	if (useChecksum) {
8283		unsigned char *checksumBufPtr = NULL;
8284		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8285		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8286		stream->readback(checksumBufPtr, checksumSize);
8287		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8288			ALOGE("glGetProgramBinary: GL communication error, please report this issue to b.android.com.\n");
8289			abort();
8290		}
8291	}
8292}
8293
8294GLint glGetFragDataLocation_enc(void *self , GLuint program, const char* name)
8295{
8296
8297	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8298	IOStream *stream = ctx->m_stream;
8299	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8300	bool useChecksum = checksumCalculator->getVersion() > 0;
8301
8302	const unsigned int __size_name =  (strlen(name) + 1);
8303	 unsigned char *ptr;
8304	 unsigned char *buf;
8305	 const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
8306	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8307	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8308	buf = stream->alloc(totalSize);
8309	ptr = buf;
8310	int tmp = OP_glGetFragDataLocation;memcpy(ptr, &tmp, 4); ptr += 4;
8311	memcpy(ptr, &totalSize, 4);  ptr += 4;
8312
8313		memcpy(ptr, &program, 4); ptr += 4;
8314	*(unsigned int *)(ptr) = __size_name; ptr += 4;
8315	memcpy(ptr, name, __size_name);ptr += __size_name;
8316
8317	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8318	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8319
8320
8321	GLint retval;
8322	stream->readback(&retval, 4);
8323	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
8324	if (useChecksum) {
8325		unsigned char *checksumBufPtr = NULL;
8326		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8327		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8328		stream->readback(checksumBufPtr, checksumSize);
8329		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8330			ALOGE("glGetFragDataLocation: GL communication error, please report this issue to b.android.com.\n");
8331			abort();
8332		}
8333	}
8334	return retval;
8335}
8336
8337void glGetInteger64v_enc(void *self , GLenum pname, GLint64* data)
8338{
8339
8340	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8341	IOStream *stream = ctx->m_stream;
8342	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8343	bool useChecksum = checksumCalculator->getVersion() > 0;
8344
8345	const unsigned int __size_data =  (glUtilsParamSize(pname) * sizeof(GLint64));
8346	 unsigned char *ptr;
8347	 unsigned char *buf;
8348	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
8349	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8350	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8351	buf = stream->alloc(totalSize);
8352	ptr = buf;
8353	int tmp = OP_glGetInteger64v;memcpy(ptr, &tmp, 4); ptr += 4;
8354	memcpy(ptr, &totalSize, 4);  ptr += 4;
8355
8356		memcpy(ptr, &pname, 4); ptr += 4;
8357	*(unsigned int *)(ptr) = __size_data; ptr += 4;
8358
8359	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8360	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8361
8362	stream->readback(data, __size_data);
8363	if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8364	if (useChecksum) {
8365		unsigned char *checksumBufPtr = NULL;
8366		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8367		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8368		stream->readback(checksumBufPtr, checksumSize);
8369		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8370			ALOGE("glGetInteger64v: GL communication error, please report this issue to b.android.com.\n");
8371			abort();
8372		}
8373	}
8374}
8375
8376void glGetIntegeri_v_enc(void *self , GLenum target, GLuint index, GLint* data)
8377{
8378
8379	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8380	IOStream *stream = ctx->m_stream;
8381	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8382	bool useChecksum = checksumCalculator->getVersion() > 0;
8383
8384	const unsigned int __size_data =  (sizeof(GLint));
8385	 unsigned char *ptr;
8386	 unsigned char *buf;
8387	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8388	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8389	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8390	buf = stream->alloc(totalSize);
8391	ptr = buf;
8392	int tmp = OP_glGetIntegeri_v;memcpy(ptr, &tmp, 4); ptr += 4;
8393	memcpy(ptr, &totalSize, 4);  ptr += 4;
8394
8395		memcpy(ptr, &target, 4); ptr += 4;
8396		memcpy(ptr, &index, 4); ptr += 4;
8397	*(unsigned int *)(ptr) = __size_data; ptr += 4;
8398
8399	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8400	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8401
8402	stream->readback(data, __size_data);
8403	if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8404	if (useChecksum) {
8405		unsigned char *checksumBufPtr = NULL;
8406		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8407		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8408		stream->readback(checksumBufPtr, checksumSize);
8409		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8410			ALOGE("glGetIntegeri_v: GL communication error, please report this issue to b.android.com.\n");
8411			abort();
8412		}
8413	}
8414}
8415
8416void glGetInteger64i_v_enc(void *self , GLenum target, GLuint index, GLint64* data)
8417{
8418
8419	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8420	IOStream *stream = ctx->m_stream;
8421	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8422	bool useChecksum = checksumCalculator->getVersion() > 0;
8423
8424	const unsigned int __size_data =  (sizeof(GLint64));
8425	 unsigned char *ptr;
8426	 unsigned char *buf;
8427	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8428	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8429	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8430	buf = stream->alloc(totalSize);
8431	ptr = buf;
8432	int tmp = OP_glGetInteger64i_v;memcpy(ptr, &tmp, 4); ptr += 4;
8433	memcpy(ptr, &totalSize, 4);  ptr += 4;
8434
8435		memcpy(ptr, &target, 4); ptr += 4;
8436		memcpy(ptr, &index, 4); ptr += 4;
8437	*(unsigned int *)(ptr) = __size_data; ptr += 4;
8438
8439	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8440	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8441
8442	stream->readback(data, __size_data);
8443	if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8444	if (useChecksum) {
8445		unsigned char *checksumBufPtr = NULL;
8446		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8447		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8448		stream->readback(checksumBufPtr, checksumSize);
8449		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8450			ALOGE("glGetInteger64i_v: GL communication error, please report this issue to b.android.com.\n");
8451			abort();
8452		}
8453	}
8454}
8455
8456void 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)
8457{
8458
8459	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8460	IOStream *stream = ctx->m_stream;
8461	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8462	bool useChecksum = checksumCalculator->getVersion() > 0;
8463
8464	const unsigned int __size_data = ((data != NULL) ?  glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
8465	 unsigned char *ptr;
8466	 unsigned char *buf;
8467	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
8468	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8469	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8470	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
8471	ptr = buf;
8472	int tmp = OP_glTexImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
8473	memcpy(ptr, &totalSize, 4);  ptr += 4;
8474
8475		memcpy(ptr, &target, 4); ptr += 4;
8476		memcpy(ptr, &level, 4); ptr += 4;
8477		memcpy(ptr, &internalFormat, 4); ptr += 4;
8478		memcpy(ptr, &width, 4); ptr += 4;
8479		memcpy(ptr, &height, 4); ptr += 4;
8480		memcpy(ptr, &depth, 4); ptr += 4;
8481		memcpy(ptr, &border, 4); ptr += 4;
8482		memcpy(ptr, &format, 4); ptr += 4;
8483		memcpy(ptr, &type, 4); ptr += 4;
8484
8485	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8486	stream->flush();
8487	stream->writeFully(&__size_data,4);
8488	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
8489	if (data != NULL) {
8490		stream->writeFully(data, __size_data);
8491		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8492	}
8493	buf = stream->alloc(checksumSize);
8494	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
8495
8496}
8497
8498void glTexImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLuint offset)
8499{
8500
8501	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8502	IOStream *stream = ctx->m_stream;
8503	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8504	bool useChecksum = checksumCalculator->getVersion() > 0;
8505
8506	 unsigned char *ptr;
8507	 unsigned char *buf;
8508	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
8509	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8510	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8511	buf = stream->alloc(totalSize);
8512	ptr = buf;
8513	int tmp = OP_glTexImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
8514	memcpy(ptr, &totalSize, 4);  ptr += 4;
8515
8516		memcpy(ptr, &target, 4); ptr += 4;
8517		memcpy(ptr, &level, 4); ptr += 4;
8518		memcpy(ptr, &internalFormat, 4); ptr += 4;
8519		memcpy(ptr, &width, 4); ptr += 4;
8520		memcpy(ptr, &height, 4); ptr += 4;
8521		memcpy(ptr, &depth, 4); ptr += 4;
8522		memcpy(ptr, &border, 4); ptr += 4;
8523		memcpy(ptr, &format, 4); ptr += 4;
8524		memcpy(ptr, &type, 4); ptr += 4;
8525		memcpy(ptr, &offset, 4); ptr += 4;
8526
8527	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8528	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8529
8530}
8531
8532void glTexStorage3D_enc(void *self , GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
8533{
8534
8535	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8536	IOStream *stream = ctx->m_stream;
8537	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8538	bool useChecksum = checksumCalculator->getVersion() > 0;
8539
8540	 unsigned char *ptr;
8541	 unsigned char *buf;
8542	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
8543	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8544	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8545	buf = stream->alloc(totalSize);
8546	ptr = buf;
8547	int tmp = OP_glTexStorage3D;memcpy(ptr, &tmp, 4); ptr += 4;
8548	memcpy(ptr, &totalSize, 4);  ptr += 4;
8549
8550		memcpy(ptr, &target, 4); ptr += 4;
8551		memcpy(ptr, &levels, 4); ptr += 4;
8552		memcpy(ptr, &internalformat, 4); ptr += 4;
8553		memcpy(ptr, &width, 4); ptr += 4;
8554		memcpy(ptr, &height, 4); ptr += 4;
8555		memcpy(ptr, &depth, 4); ptr += 4;
8556
8557	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8558	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8559
8560}
8561
8562void 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)
8563{
8564
8565	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8566	IOStream *stream = ctx->m_stream;
8567	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8568	bool useChecksum = checksumCalculator->getVersion() > 0;
8569
8570	const unsigned int __size_data = ((data != NULL) ?  glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
8571	 unsigned char *ptr;
8572	 unsigned char *buf;
8573	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
8574	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8575	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8576	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
8577	ptr = buf;
8578	int tmp = OP_glTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
8579	memcpy(ptr, &totalSize, 4);  ptr += 4;
8580
8581		memcpy(ptr, &target, 4); ptr += 4;
8582		memcpy(ptr, &level, 4); ptr += 4;
8583		memcpy(ptr, &xoffset, 4); ptr += 4;
8584		memcpy(ptr, &yoffset, 4); ptr += 4;
8585		memcpy(ptr, &zoffset, 4); ptr += 4;
8586		memcpy(ptr, &width, 4); ptr += 4;
8587		memcpy(ptr, &height, 4); ptr += 4;
8588		memcpy(ptr, &depth, 4); ptr += 4;
8589		memcpy(ptr, &format, 4); ptr += 4;
8590		memcpy(ptr, &type, 4); ptr += 4;
8591
8592	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8593	stream->flush();
8594	stream->writeFully(&__size_data,4);
8595	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
8596	if (data != NULL) {
8597		stream->writeFully(data, __size_data);
8598		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8599	}
8600	buf = stream->alloc(checksumSize);
8601	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
8602
8603}
8604
8605void 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)
8606{
8607
8608	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8609	IOStream *stream = ctx->m_stream;
8610	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8611	bool useChecksum = checksumCalculator->getVersion() > 0;
8612
8613	 unsigned char *ptr;
8614	 unsigned char *buf;
8615	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
8616	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8617	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8618	buf = stream->alloc(totalSize);
8619	ptr = buf;
8620	int tmp = OP_glTexSubImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
8621	memcpy(ptr, &totalSize, 4);  ptr += 4;
8622
8623		memcpy(ptr, &target, 4); ptr += 4;
8624		memcpy(ptr, &level, 4); ptr += 4;
8625		memcpy(ptr, &xoffset, 4); ptr += 4;
8626		memcpy(ptr, &yoffset, 4); ptr += 4;
8627		memcpy(ptr, &zoffset, 4); ptr += 4;
8628		memcpy(ptr, &width, 4); ptr += 4;
8629		memcpy(ptr, &height, 4); ptr += 4;
8630		memcpy(ptr, &depth, 4); ptr += 4;
8631		memcpy(ptr, &format, 4); ptr += 4;
8632		memcpy(ptr, &type, 4); ptr += 4;
8633		memcpy(ptr, &offset, 4); ptr += 4;
8634
8635	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8636	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8637
8638}
8639
8640void glCompressedTexImage3D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
8641{
8642
8643	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8644	IOStream *stream = ctx->m_stream;
8645	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8646	bool useChecksum = checksumCalculator->getVersion() > 0;
8647
8648	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
8649	 unsigned char *ptr;
8650	 unsigned char *buf;
8651	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
8652	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8653	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8654	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
8655	ptr = buf;
8656	int tmp = OP_glCompressedTexImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
8657	memcpy(ptr, &totalSize, 4);  ptr += 4;
8658
8659		memcpy(ptr, &target, 4); ptr += 4;
8660		memcpy(ptr, &level, 4); ptr += 4;
8661		memcpy(ptr, &internalformat, 4); ptr += 4;
8662		memcpy(ptr, &width, 4); ptr += 4;
8663		memcpy(ptr, &height, 4); ptr += 4;
8664		memcpy(ptr, &depth, 4); ptr += 4;
8665		memcpy(ptr, &border, 4); ptr += 4;
8666		memcpy(ptr, &imageSize, 4); ptr += 4;
8667
8668	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8669	stream->flush();
8670	stream->writeFully(&__size_data,4);
8671	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
8672	if (data != NULL) {
8673		stream->writeFully(data, __size_data);
8674		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8675	}
8676	buf = stream->alloc(checksumSize);
8677	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
8678
8679}
8680
8681void glCompressedTexImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLuint offset)
8682{
8683
8684	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8685	IOStream *stream = ctx->m_stream;
8686	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8687	bool useChecksum = checksumCalculator->getVersion() > 0;
8688
8689	 unsigned char *ptr;
8690	 unsigned char *buf;
8691	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
8692	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8693	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8694	buf = stream->alloc(totalSize);
8695	ptr = buf;
8696	int tmp = OP_glCompressedTexImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
8697	memcpy(ptr, &totalSize, 4);  ptr += 4;
8698
8699		memcpy(ptr, &target, 4); ptr += 4;
8700		memcpy(ptr, &level, 4); ptr += 4;
8701		memcpy(ptr, &internalformat, 4); ptr += 4;
8702		memcpy(ptr, &width, 4); ptr += 4;
8703		memcpy(ptr, &height, 4); ptr += 4;
8704		memcpy(ptr, &depth, 4); ptr += 4;
8705		memcpy(ptr, &border, 4); ptr += 4;
8706		memcpy(ptr, &imageSize, 4); ptr += 4;
8707		memcpy(ptr, &offset, 4); ptr += 4;
8708
8709	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8710	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8711
8712}
8713
8714void 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)
8715{
8716
8717	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8718	IOStream *stream = ctx->m_stream;
8719	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8720	bool useChecksum = checksumCalculator->getVersion() > 0;
8721
8722	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
8723	 unsigned char *ptr;
8724	 unsigned char *buf;
8725	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
8726	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8727	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8728	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
8729	ptr = buf;
8730	int tmp = OP_glCompressedTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
8731	memcpy(ptr, &totalSize, 4);  ptr += 4;
8732
8733		memcpy(ptr, &target, 4); ptr += 4;
8734		memcpy(ptr, &level, 4); ptr += 4;
8735		memcpy(ptr, &xoffset, 4); ptr += 4;
8736		memcpy(ptr, &yoffset, 4); ptr += 4;
8737		memcpy(ptr, &zoffset, 4); ptr += 4;
8738		memcpy(ptr, &width, 4); ptr += 4;
8739		memcpy(ptr, &height, 4); ptr += 4;
8740		memcpy(ptr, &depth, 4); ptr += 4;
8741		memcpy(ptr, &format, 4); ptr += 4;
8742		memcpy(ptr, &imageSize, 4); ptr += 4;
8743
8744	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8745	stream->flush();
8746	stream->writeFully(&__size_data,4);
8747	if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
8748	if (data != NULL) {
8749		stream->writeFully(data, __size_data);
8750		if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8751	}
8752	buf = stream->alloc(checksumSize);
8753	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
8754
8755}
8756
8757void 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)
8758{
8759
8760	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8761	IOStream *stream = ctx->m_stream;
8762	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8763	bool useChecksum = checksumCalculator->getVersion() > 0;
8764
8765	 unsigned char *ptr;
8766	 unsigned char *buf;
8767	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
8768	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8769	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8770	buf = stream->alloc(totalSize);
8771	ptr = buf;
8772	int tmp = OP_glCompressedTexSubImage3DOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
8773	memcpy(ptr, &totalSize, 4);  ptr += 4;
8774
8775		memcpy(ptr, &target, 4); ptr += 4;
8776		memcpy(ptr, &level, 4); ptr += 4;
8777		memcpy(ptr, &xoffset, 4); ptr += 4;
8778		memcpy(ptr, &yoffset, 4); ptr += 4;
8779		memcpy(ptr, &zoffset, 4); ptr += 4;
8780		memcpy(ptr, &width, 4); ptr += 4;
8781		memcpy(ptr, &height, 4); ptr += 4;
8782		memcpy(ptr, &depth, 4); ptr += 4;
8783		memcpy(ptr, &format, 4); ptr += 4;
8784		memcpy(ptr, &imageSize, 4); ptr += 4;
8785		memcpy(ptr, &data, 4); ptr += 4;
8786
8787	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8788	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8789
8790}
8791
8792void glCopyTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
8793{
8794
8795	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8796	IOStream *stream = ctx->m_stream;
8797	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8798	bool useChecksum = checksumCalculator->getVersion() > 0;
8799
8800	 unsigned char *ptr;
8801	 unsigned char *buf;
8802	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
8803	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8804	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8805	buf = stream->alloc(totalSize);
8806	ptr = buf;
8807	int tmp = OP_glCopyTexSubImage3D;memcpy(ptr, &tmp, 4); ptr += 4;
8808	memcpy(ptr, &totalSize, 4);  ptr += 4;
8809
8810		memcpy(ptr, &target, 4); ptr += 4;
8811		memcpy(ptr, &level, 4); ptr += 4;
8812		memcpy(ptr, &xoffset, 4); ptr += 4;
8813		memcpy(ptr, &yoffset, 4); ptr += 4;
8814		memcpy(ptr, &zoffset, 4); ptr += 4;
8815		memcpy(ptr, &x, 4); ptr += 4;
8816		memcpy(ptr, &y, 4); ptr += 4;
8817		memcpy(ptr, &width, 4); ptr += 4;
8818		memcpy(ptr, &height, 4); ptr += 4;
8819
8820	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8821	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8822
8823}
8824
8825void glGetBooleani_v_enc(void *self , GLenum target, GLuint index, GLboolean* data)
8826{
8827
8828	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8829	IOStream *stream = ctx->m_stream;
8830	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8831	bool useChecksum = checksumCalculator->getVersion() > 0;
8832
8833	const unsigned int __size_data =  (sizeof(GLboolean));
8834	 unsigned char *ptr;
8835	 unsigned char *buf;
8836	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
8837	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8838	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8839	buf = stream->alloc(totalSize);
8840	ptr = buf;
8841	int tmp = OP_glGetBooleani_v;memcpy(ptr, &tmp, 4); ptr += 4;
8842	memcpy(ptr, &totalSize, 4);  ptr += 4;
8843
8844		memcpy(ptr, &target, 4); ptr += 4;
8845		memcpy(ptr, &index, 4); ptr += 4;
8846	*(unsigned int *)(ptr) = __size_data; ptr += 4;
8847
8848	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8849	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8850
8851	stream->readback(data, __size_data);
8852	if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
8853	if (useChecksum) {
8854		unsigned char *checksumBufPtr = NULL;
8855		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8856		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8857		stream->readback(checksumBufPtr, checksumSize);
8858		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8859			ALOGE("glGetBooleani_v: GL communication error, please report this issue to b.android.com.\n");
8860			abort();
8861		}
8862	}
8863}
8864
8865void glMemoryBarrier_enc(void *self , GLbitfield barriers)
8866{
8867
8868	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8869	IOStream *stream = ctx->m_stream;
8870	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8871	bool useChecksum = checksumCalculator->getVersion() > 0;
8872
8873	 unsigned char *ptr;
8874	 unsigned char *buf;
8875	 const size_t sizeWithoutChecksum = 8 + 4;
8876	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8877	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8878	buf = stream->alloc(totalSize);
8879	ptr = buf;
8880	int tmp = OP_glMemoryBarrier;memcpy(ptr, &tmp, 4); ptr += 4;
8881	memcpy(ptr, &totalSize, 4);  ptr += 4;
8882
8883		memcpy(ptr, &barriers, 4); ptr += 4;
8884
8885	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8886	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8887
8888}
8889
8890void glMemoryBarrierByRegion_enc(void *self , GLbitfield barriers)
8891{
8892
8893	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8894	IOStream *stream = ctx->m_stream;
8895	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8896	bool useChecksum = checksumCalculator->getVersion() > 0;
8897
8898	 unsigned char *ptr;
8899	 unsigned char *buf;
8900	 const size_t sizeWithoutChecksum = 8 + 4;
8901	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8902	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8903	buf = stream->alloc(totalSize);
8904	ptr = buf;
8905	int tmp = OP_glMemoryBarrierByRegion;memcpy(ptr, &tmp, 4); ptr += 4;
8906	memcpy(ptr, &totalSize, 4);  ptr += 4;
8907
8908		memcpy(ptr, &barriers, 4); ptr += 4;
8909
8910	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8911	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8912
8913}
8914
8915void glGenProgramPipelines_enc(void *self , GLsizei n, GLuint* pipelines)
8916{
8917
8918	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8919	IOStream *stream = ctx->m_stream;
8920	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8921	bool useChecksum = checksumCalculator->getVersion() > 0;
8922
8923	const unsigned int __size_pipelines =  (n * sizeof(GLuint));
8924	 unsigned char *ptr;
8925	 unsigned char *buf;
8926	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
8927	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8928	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8929	buf = stream->alloc(totalSize);
8930	ptr = buf;
8931	int tmp = OP_glGenProgramPipelines;memcpy(ptr, &tmp, 4); ptr += 4;
8932	memcpy(ptr, &totalSize, 4);  ptr += 4;
8933
8934		memcpy(ptr, &n, 4); ptr += 4;
8935	*(unsigned int *)(ptr) = __size_pipelines; ptr += 4;
8936
8937	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8938	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8939
8940	stream->readback(pipelines, __size_pipelines);
8941	if (useChecksum) checksumCalculator->addBuffer(pipelines, __size_pipelines);
8942	if (useChecksum) {
8943		unsigned char *checksumBufPtr = NULL;
8944		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8945		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8946		stream->readback(checksumBufPtr, checksumSize);
8947		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8948			ALOGE("glGenProgramPipelines: GL communication error, please report this issue to b.android.com.\n");
8949			abort();
8950		}
8951	}
8952}
8953
8954void glDeleteProgramPipelines_enc(void *self , GLsizei n, const GLuint* pipelines)
8955{
8956
8957	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8958	IOStream *stream = ctx->m_stream;
8959	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8960	bool useChecksum = checksumCalculator->getVersion() > 0;
8961
8962	const unsigned int __size_pipelines =  (n * sizeof(GLuint));
8963	 unsigned char *ptr;
8964	 unsigned char *buf;
8965	 const size_t sizeWithoutChecksum = 8 + 4 + __size_pipelines + 1*4;
8966	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8967	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8968	buf = stream->alloc(totalSize);
8969	ptr = buf;
8970	int tmp = OP_glDeleteProgramPipelines;memcpy(ptr, &tmp, 4); ptr += 4;
8971	memcpy(ptr, &totalSize, 4);  ptr += 4;
8972
8973		memcpy(ptr, &n, 4); ptr += 4;
8974	*(unsigned int *)(ptr) = __size_pipelines; ptr += 4;
8975	memcpy(ptr, pipelines, __size_pipelines);ptr += __size_pipelines;
8976
8977	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8978	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8979
8980}
8981
8982void glBindProgramPipeline_enc(void *self , GLuint pipeline)
8983{
8984
8985	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
8986	IOStream *stream = ctx->m_stream;
8987	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8988	bool useChecksum = checksumCalculator->getVersion() > 0;
8989
8990	 unsigned char *ptr;
8991	 unsigned char *buf;
8992	 const size_t sizeWithoutChecksum = 8 + 4;
8993	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8994	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8995	buf = stream->alloc(totalSize);
8996	ptr = buf;
8997	int tmp = OP_glBindProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
8998	memcpy(ptr, &totalSize, 4);  ptr += 4;
8999
9000		memcpy(ptr, &pipeline, 4); ptr += 4;
9001
9002	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9003	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9004
9005}
9006
9007void glGetProgramPipelineiv_enc(void *self , GLuint pipeline, GLenum pname, GLint* params)
9008{
9009
9010	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9011	IOStream *stream = ctx->m_stream;
9012	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9013	bool useChecksum = checksumCalculator->getVersion() > 0;
9014
9015	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
9016	 unsigned char *ptr;
9017	 unsigned char *buf;
9018	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
9019	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9020	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9021	buf = stream->alloc(totalSize);
9022	ptr = buf;
9023	int tmp = OP_glGetProgramPipelineiv;memcpy(ptr, &tmp, 4); ptr += 4;
9024	memcpy(ptr, &totalSize, 4);  ptr += 4;
9025
9026		memcpy(ptr, &pipeline, 4); ptr += 4;
9027		memcpy(ptr, &pname, 4); ptr += 4;
9028	*(unsigned int *)(ptr) = __size_params; ptr += 4;
9029
9030	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9031	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9032
9033	stream->readback(params, __size_params);
9034	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
9035	if (useChecksum) {
9036		unsigned char *checksumBufPtr = NULL;
9037		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9038		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9039		stream->readback(checksumBufPtr, checksumSize);
9040		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9041			ALOGE("glGetProgramPipelineiv: GL communication error, please report this issue to b.android.com.\n");
9042			abort();
9043		}
9044	}
9045}
9046
9047void glGetProgramPipelineInfoLog_enc(void *self , GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog)
9048{
9049
9050	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9051	IOStream *stream = ctx->m_stream;
9052	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9053	bool useChecksum = checksumCalculator->getVersion() > 0;
9054
9055	const unsigned int __size_length = ((length != NULL) ?  sizeof(GLsizei) : 0);
9056	const unsigned int __size_infoLog =  bufSize;
9057	 unsigned char *ptr;
9058	 unsigned char *buf;
9059	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
9060	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9061	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9062	buf = stream->alloc(totalSize);
9063	ptr = buf;
9064	int tmp = OP_glGetProgramPipelineInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
9065	memcpy(ptr, &totalSize, 4);  ptr += 4;
9066
9067		memcpy(ptr, &pipeline, 4); ptr += 4;
9068		memcpy(ptr, &bufSize, 4); ptr += 4;
9069	*(unsigned int *)(ptr) = __size_length; ptr += 4;
9070	*(unsigned int *)(ptr) = __size_infoLog; ptr += 4;
9071
9072	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9073	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9074
9075	if (length != NULL) {
9076		stream->readback(length, __size_length);
9077		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
9078	}
9079	stream->readback(infoLog, __size_infoLog);
9080	if (useChecksum) checksumCalculator->addBuffer(infoLog, __size_infoLog);
9081	if (useChecksum) {
9082		unsigned char *checksumBufPtr = NULL;
9083		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9084		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9085		stream->readback(checksumBufPtr, checksumSize);
9086		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9087			ALOGE("glGetProgramPipelineInfoLog: GL communication error, please report this issue to b.android.com.\n");
9088			abort();
9089		}
9090	}
9091}
9092
9093void glValidateProgramPipeline_enc(void *self , GLuint pipeline)
9094{
9095
9096	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9097	IOStream *stream = ctx->m_stream;
9098	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9099	bool useChecksum = checksumCalculator->getVersion() > 0;
9100
9101	 unsigned char *ptr;
9102	 unsigned char *buf;
9103	 const size_t sizeWithoutChecksum = 8 + 4;
9104	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9105	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9106	buf = stream->alloc(totalSize);
9107	ptr = buf;
9108	int tmp = OP_glValidateProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
9109	memcpy(ptr, &totalSize, 4);  ptr += 4;
9110
9111		memcpy(ptr, &pipeline, 4); ptr += 4;
9112
9113	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9114	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9115
9116}
9117
9118GLboolean glIsProgramPipeline_enc(void *self , GLuint pipeline)
9119{
9120
9121	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9122	IOStream *stream = ctx->m_stream;
9123	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9124	bool useChecksum = checksumCalculator->getVersion() > 0;
9125
9126	 unsigned char *ptr;
9127	 unsigned char *buf;
9128	 const size_t sizeWithoutChecksum = 8 + 4;
9129	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9130	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9131	buf = stream->alloc(totalSize);
9132	ptr = buf;
9133	int tmp = OP_glIsProgramPipeline;memcpy(ptr, &tmp, 4); ptr += 4;
9134	memcpy(ptr, &totalSize, 4);  ptr += 4;
9135
9136		memcpy(ptr, &pipeline, 4); ptr += 4;
9137
9138	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9139	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9140
9141
9142	GLboolean retval;
9143	stream->readback(&retval, 1);
9144	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
9145	if (useChecksum) {
9146		unsigned char *checksumBufPtr = NULL;
9147		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9148		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9149		stream->readback(checksumBufPtr, checksumSize);
9150		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9151			ALOGE("glIsProgramPipeline: GL communication error, please report this issue to b.android.com.\n");
9152			abort();
9153		}
9154	}
9155	return retval;
9156}
9157
9158void glUseProgramStages_enc(void *self , GLuint pipeline, GLbitfield stages, GLuint program)
9159{
9160
9161	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9162	IOStream *stream = ctx->m_stream;
9163	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9164	bool useChecksum = checksumCalculator->getVersion() > 0;
9165
9166	 unsigned char *ptr;
9167	 unsigned char *buf;
9168	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9169	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9170	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9171	buf = stream->alloc(totalSize);
9172	ptr = buf;
9173	int tmp = OP_glUseProgramStages;memcpy(ptr, &tmp, 4); ptr += 4;
9174	memcpy(ptr, &totalSize, 4);  ptr += 4;
9175
9176		memcpy(ptr, &pipeline, 4); ptr += 4;
9177		memcpy(ptr, &stages, 4); ptr += 4;
9178		memcpy(ptr, &program, 4); ptr += 4;
9179
9180	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9181	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9182
9183}
9184
9185void glActiveShaderProgram_enc(void *self , GLuint pipeline, GLuint program)
9186{
9187
9188	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9189	IOStream *stream = ctx->m_stream;
9190	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9191	bool useChecksum = checksumCalculator->getVersion() > 0;
9192
9193	 unsigned char *ptr;
9194	 unsigned char *buf;
9195	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
9196	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9197	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9198	buf = stream->alloc(totalSize);
9199	ptr = buf;
9200	int tmp = OP_glActiveShaderProgram;memcpy(ptr, &tmp, 4); ptr += 4;
9201	memcpy(ptr, &totalSize, 4);  ptr += 4;
9202
9203		memcpy(ptr, &pipeline, 4); ptr += 4;
9204		memcpy(ptr, &program, 4); ptr += 4;
9205
9206	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9207	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9208
9209}
9210
9211GLuint glCreateShaderProgramvAEMU_enc(void *self , GLenum type, GLsizei count, const char* packedStrings, GLuint packedLen)
9212{
9213
9214	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9215	IOStream *stream = ctx->m_stream;
9216	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9217	bool useChecksum = checksumCalculator->getVersion() > 0;
9218
9219	const unsigned int __size_packedStrings =  packedLen;
9220	 unsigned char *ptr;
9221	 unsigned char *buf;
9222	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_packedStrings + 4 + 1*4;
9223	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9224	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9225	buf = stream->alloc(totalSize);
9226	ptr = buf;
9227	int tmp = OP_glCreateShaderProgramvAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
9228	memcpy(ptr, &totalSize, 4);  ptr += 4;
9229
9230		memcpy(ptr, &type, 4); ptr += 4;
9231		memcpy(ptr, &count, 4); ptr += 4;
9232	*(unsigned int *)(ptr) = __size_packedStrings; ptr += 4;
9233	memcpy(ptr, packedStrings, __size_packedStrings);ptr += __size_packedStrings;
9234		memcpy(ptr, &packedLen, 4); ptr += 4;
9235
9236	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9237	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9238
9239
9240	GLuint retval;
9241	stream->readback(&retval, 4);
9242	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
9243	if (useChecksum) {
9244		unsigned char *checksumBufPtr = NULL;
9245		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
9246		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
9247		stream->readback(checksumBufPtr, checksumSize);
9248		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
9249			ALOGE("glCreateShaderProgramvAEMU: GL communication error, please report this issue to b.android.com.\n");
9250			abort();
9251		}
9252	}
9253	return retval;
9254}
9255
9256void glProgramUniform1f_enc(void *self , GLuint program, GLint location, GLfloat v0)
9257{
9258
9259	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9260	IOStream *stream = ctx->m_stream;
9261	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9262	bool useChecksum = checksumCalculator->getVersion() > 0;
9263
9264	 unsigned char *ptr;
9265	 unsigned char *buf;
9266	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9267	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9268	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9269	buf = stream->alloc(totalSize);
9270	ptr = buf;
9271	int tmp = OP_glProgramUniform1f;memcpy(ptr, &tmp, 4); ptr += 4;
9272	memcpy(ptr, &totalSize, 4);  ptr += 4;
9273
9274		memcpy(ptr, &program, 4); ptr += 4;
9275		memcpy(ptr, &location, 4); ptr += 4;
9276		memcpy(ptr, &v0, 4); ptr += 4;
9277
9278	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9279	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9280
9281}
9282
9283void glProgramUniform2f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1)
9284{
9285
9286	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9287	IOStream *stream = ctx->m_stream;
9288	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9289	bool useChecksum = checksumCalculator->getVersion() > 0;
9290
9291	 unsigned char *ptr;
9292	 unsigned char *buf;
9293	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
9294	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9295	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9296	buf = stream->alloc(totalSize);
9297	ptr = buf;
9298	int tmp = OP_glProgramUniform2f;memcpy(ptr, &tmp, 4); ptr += 4;
9299	memcpy(ptr, &totalSize, 4);  ptr += 4;
9300
9301		memcpy(ptr, &program, 4); ptr += 4;
9302		memcpy(ptr, &location, 4); ptr += 4;
9303		memcpy(ptr, &v0, 4); ptr += 4;
9304		memcpy(ptr, &v1, 4); ptr += 4;
9305
9306	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9307	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9308
9309}
9310
9311void glProgramUniform3f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
9312{
9313
9314	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9315	IOStream *stream = ctx->m_stream;
9316	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9317	bool useChecksum = checksumCalculator->getVersion() > 0;
9318
9319	 unsigned char *ptr;
9320	 unsigned char *buf;
9321	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
9322	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9323	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9324	buf = stream->alloc(totalSize);
9325	ptr = buf;
9326	int tmp = OP_glProgramUniform3f;memcpy(ptr, &tmp, 4); ptr += 4;
9327	memcpy(ptr, &totalSize, 4);  ptr += 4;
9328
9329		memcpy(ptr, &program, 4); ptr += 4;
9330		memcpy(ptr, &location, 4); ptr += 4;
9331		memcpy(ptr, &v0, 4); ptr += 4;
9332		memcpy(ptr, &v1, 4); ptr += 4;
9333		memcpy(ptr, &v2, 4); ptr += 4;
9334
9335	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9336	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9337
9338}
9339
9340void glProgramUniform4f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
9341{
9342
9343	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9344	IOStream *stream = ctx->m_stream;
9345	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9346	bool useChecksum = checksumCalculator->getVersion() > 0;
9347
9348	 unsigned char *ptr;
9349	 unsigned char *buf;
9350	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
9351	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9352	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9353	buf = stream->alloc(totalSize);
9354	ptr = buf;
9355	int tmp = OP_glProgramUniform4f;memcpy(ptr, &tmp, 4); ptr += 4;
9356	memcpy(ptr, &totalSize, 4);  ptr += 4;
9357
9358		memcpy(ptr, &program, 4); ptr += 4;
9359		memcpy(ptr, &location, 4); ptr += 4;
9360		memcpy(ptr, &v0, 4); ptr += 4;
9361		memcpy(ptr, &v1, 4); ptr += 4;
9362		memcpy(ptr, &v2, 4); ptr += 4;
9363		memcpy(ptr, &v3, 4); ptr += 4;
9364
9365	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9366	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9367
9368}
9369
9370void glProgramUniform1i_enc(void *self , GLuint program, GLint location, GLint v0)
9371{
9372
9373	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9374	IOStream *stream = ctx->m_stream;
9375	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9376	bool useChecksum = checksumCalculator->getVersion() > 0;
9377
9378	 unsigned char *ptr;
9379	 unsigned char *buf;
9380	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9381	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9382	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9383	buf = stream->alloc(totalSize);
9384	ptr = buf;
9385	int tmp = OP_glProgramUniform1i;memcpy(ptr, &tmp, 4); ptr += 4;
9386	memcpy(ptr, &totalSize, 4);  ptr += 4;
9387
9388		memcpy(ptr, &program, 4); ptr += 4;
9389		memcpy(ptr, &location, 4); ptr += 4;
9390		memcpy(ptr, &v0, 4); ptr += 4;
9391
9392	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9393	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9394
9395}
9396
9397void glProgramUniform2i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1)
9398{
9399
9400	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9401	IOStream *stream = ctx->m_stream;
9402	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9403	bool useChecksum = checksumCalculator->getVersion() > 0;
9404
9405	 unsigned char *ptr;
9406	 unsigned char *buf;
9407	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
9408	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9409	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9410	buf = stream->alloc(totalSize);
9411	ptr = buf;
9412	int tmp = OP_glProgramUniform2i;memcpy(ptr, &tmp, 4); ptr += 4;
9413	memcpy(ptr, &totalSize, 4);  ptr += 4;
9414
9415		memcpy(ptr, &program, 4); ptr += 4;
9416		memcpy(ptr, &location, 4); ptr += 4;
9417		memcpy(ptr, &v0, 4); ptr += 4;
9418		memcpy(ptr, &v1, 4); ptr += 4;
9419
9420	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9421	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9422
9423}
9424
9425void glProgramUniform3i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
9426{
9427
9428	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9429	IOStream *stream = ctx->m_stream;
9430	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9431	bool useChecksum = checksumCalculator->getVersion() > 0;
9432
9433	 unsigned char *ptr;
9434	 unsigned char *buf;
9435	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
9436	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9437	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9438	buf = stream->alloc(totalSize);
9439	ptr = buf;
9440	int tmp = OP_glProgramUniform3i;memcpy(ptr, &tmp, 4); ptr += 4;
9441	memcpy(ptr, &totalSize, 4);  ptr += 4;
9442
9443		memcpy(ptr, &program, 4); ptr += 4;
9444		memcpy(ptr, &location, 4); ptr += 4;
9445		memcpy(ptr, &v0, 4); ptr += 4;
9446		memcpy(ptr, &v1, 4); ptr += 4;
9447		memcpy(ptr, &v2, 4); ptr += 4;
9448
9449	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9450	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9451
9452}
9453
9454void glProgramUniform4i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
9455{
9456
9457	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9458	IOStream *stream = ctx->m_stream;
9459	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9460	bool useChecksum = checksumCalculator->getVersion() > 0;
9461
9462	 unsigned char *ptr;
9463	 unsigned char *buf;
9464	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
9465	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9466	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9467	buf = stream->alloc(totalSize);
9468	ptr = buf;
9469	int tmp = OP_glProgramUniform4i;memcpy(ptr, &tmp, 4); ptr += 4;
9470	memcpy(ptr, &totalSize, 4);  ptr += 4;
9471
9472		memcpy(ptr, &program, 4); ptr += 4;
9473		memcpy(ptr, &location, 4); ptr += 4;
9474		memcpy(ptr, &v0, 4); ptr += 4;
9475		memcpy(ptr, &v1, 4); ptr += 4;
9476		memcpy(ptr, &v2, 4); ptr += 4;
9477		memcpy(ptr, &v3, 4); ptr += 4;
9478
9479	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9480	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9481
9482}
9483
9484void glProgramUniform1ui_enc(void *self , GLuint program, GLint location, GLuint v0)
9485{
9486
9487	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9488	IOStream *stream = ctx->m_stream;
9489	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9490	bool useChecksum = checksumCalculator->getVersion() > 0;
9491
9492	 unsigned char *ptr;
9493	 unsigned char *buf;
9494	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
9495	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9496	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9497	buf = stream->alloc(totalSize);
9498	ptr = buf;
9499	int tmp = OP_glProgramUniform1ui;memcpy(ptr, &tmp, 4); ptr += 4;
9500	memcpy(ptr, &totalSize, 4);  ptr += 4;
9501
9502		memcpy(ptr, &program, 4); ptr += 4;
9503		memcpy(ptr, &location, 4); ptr += 4;
9504		memcpy(ptr, &v0, 4); ptr += 4;
9505
9506	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9507	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9508
9509}
9510
9511void glProgramUniform2ui_enc(void *self , GLuint program, GLint location, GLint v0, GLuint v1)
9512{
9513
9514	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9515	IOStream *stream = ctx->m_stream;
9516	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9517	bool useChecksum = checksumCalculator->getVersion() > 0;
9518
9519	 unsigned char *ptr;
9520	 unsigned char *buf;
9521	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
9522	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9523	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9524	buf = stream->alloc(totalSize);
9525	ptr = buf;
9526	int tmp = OP_glProgramUniform2ui;memcpy(ptr, &tmp, 4); ptr += 4;
9527	memcpy(ptr, &totalSize, 4);  ptr += 4;
9528
9529		memcpy(ptr, &program, 4); ptr += 4;
9530		memcpy(ptr, &location, 4); ptr += 4;
9531		memcpy(ptr, &v0, 4); ptr += 4;
9532		memcpy(ptr, &v1, 4); ptr += 4;
9533
9534	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9535	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9536
9537}
9538
9539void glProgramUniform3ui_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLuint v2)
9540{
9541
9542	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9543	IOStream *stream = ctx->m_stream;
9544	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9545	bool useChecksum = checksumCalculator->getVersion() > 0;
9546
9547	 unsigned char *ptr;
9548	 unsigned char *buf;
9549	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
9550	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9551	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9552	buf = stream->alloc(totalSize);
9553	ptr = buf;
9554	int tmp = OP_glProgramUniform3ui;memcpy(ptr, &tmp, 4); ptr += 4;
9555	memcpy(ptr, &totalSize, 4);  ptr += 4;
9556
9557		memcpy(ptr, &program, 4); ptr += 4;
9558		memcpy(ptr, &location, 4); ptr += 4;
9559		memcpy(ptr, &v0, 4); ptr += 4;
9560		memcpy(ptr, &v1, 4); ptr += 4;
9561		memcpy(ptr, &v2, 4); ptr += 4;
9562
9563	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9564	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9565
9566}
9567
9568void glProgramUniform4ui_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLuint v3)
9569{
9570
9571	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9572	IOStream *stream = ctx->m_stream;
9573	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9574	bool useChecksum = checksumCalculator->getVersion() > 0;
9575
9576	 unsigned char *ptr;
9577	 unsigned char *buf;
9578	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
9579	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9580	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9581	buf = stream->alloc(totalSize);
9582	ptr = buf;
9583	int tmp = OP_glProgramUniform4ui;memcpy(ptr, &tmp, 4); ptr += 4;
9584	memcpy(ptr, &totalSize, 4);  ptr += 4;
9585
9586		memcpy(ptr, &program, 4); ptr += 4;
9587		memcpy(ptr, &location, 4); ptr += 4;
9588		memcpy(ptr, &v0, 4); ptr += 4;
9589		memcpy(ptr, &v1, 4); ptr += 4;
9590		memcpy(ptr, &v2, 4); ptr += 4;
9591		memcpy(ptr, &v3, 4); ptr += 4;
9592
9593	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9594	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9595
9596}
9597
9598void glProgramUniform1fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
9599{
9600
9601	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9602	IOStream *stream = ctx->m_stream;
9603	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9604	bool useChecksum = checksumCalculator->getVersion() > 0;
9605
9606	const unsigned int __size_value =  (count * sizeof(GLfloat));
9607	 unsigned char *ptr;
9608	 unsigned char *buf;
9609	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
9610	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9611	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9612	buf = stream->alloc(totalSize);
9613	ptr = buf;
9614	int tmp = OP_glProgramUniform1fv;memcpy(ptr, &tmp, 4); ptr += 4;
9615	memcpy(ptr, &totalSize, 4);  ptr += 4;
9616
9617		memcpy(ptr, &program, 4); ptr += 4;
9618		memcpy(ptr, &location, 4); ptr += 4;
9619		memcpy(ptr, &count, 4); ptr += 4;
9620	*(unsigned int *)(ptr) = __size_value; ptr += 4;
9621	memcpy(ptr, value, __size_value);ptr += __size_value;
9622
9623	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9624	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9625
9626}
9627
9628void glProgramUniform2fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
9629{
9630
9631	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9632	IOStream *stream = ctx->m_stream;
9633	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9634	bool useChecksum = checksumCalculator->getVersion() > 0;
9635
9636	const unsigned int __size_value =  (count * 2 * sizeof(GLfloat));
9637	 unsigned char *ptr;
9638	 unsigned char *buf;
9639	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
9640	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9641	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9642	buf = stream->alloc(totalSize);
9643	ptr = buf;
9644	int tmp = OP_glProgramUniform2fv;memcpy(ptr, &tmp, 4); ptr += 4;
9645	memcpy(ptr, &totalSize, 4);  ptr += 4;
9646
9647		memcpy(ptr, &program, 4); ptr += 4;
9648		memcpy(ptr, &location, 4); ptr += 4;
9649		memcpy(ptr, &count, 4); ptr += 4;
9650	*(unsigned int *)(ptr) = __size_value; ptr += 4;
9651	memcpy(ptr, value, __size_value);ptr += __size_value;
9652
9653	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9654	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9655
9656}
9657
9658void glProgramUniform3fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
9659{
9660
9661	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9662	IOStream *stream = ctx->m_stream;
9663	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9664	bool useChecksum = checksumCalculator->getVersion() > 0;
9665
9666	const unsigned int __size_value =  (count * 3 * sizeof(GLfloat));
9667	 unsigned char *ptr;
9668	 unsigned char *buf;
9669	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
9670	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9671	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9672	buf = stream->alloc(totalSize);
9673	ptr = buf;
9674	int tmp = OP_glProgramUniform3fv;memcpy(ptr, &tmp, 4); ptr += 4;
9675	memcpy(ptr, &totalSize, 4);  ptr += 4;
9676
9677		memcpy(ptr, &program, 4); ptr += 4;
9678		memcpy(ptr, &location, 4); ptr += 4;
9679		memcpy(ptr, &count, 4); ptr += 4;
9680	*(unsigned int *)(ptr) = __size_value; ptr += 4;
9681	memcpy(ptr, value, __size_value);ptr += __size_value;
9682
9683	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9684	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9685
9686}
9687
9688void glProgramUniform4fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value)
9689{
9690
9691	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9692	IOStream *stream = ctx->m_stream;
9693	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9694	bool useChecksum = checksumCalculator->getVersion() > 0;
9695
9696	const unsigned int __size_value =  (count * 4 * sizeof(GLfloat));
9697	 unsigned char *ptr;
9698	 unsigned char *buf;
9699	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
9700	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9701	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9702	buf = stream->alloc(totalSize);
9703	ptr = buf;
9704	int tmp = OP_glProgramUniform4fv;memcpy(ptr, &tmp, 4); ptr += 4;
9705	memcpy(ptr, &totalSize, 4);  ptr += 4;
9706
9707		memcpy(ptr, &program, 4); ptr += 4;
9708		memcpy(ptr, &location, 4); ptr += 4;
9709		memcpy(ptr, &count, 4); ptr += 4;
9710	*(unsigned int *)(ptr) = __size_value; ptr += 4;
9711	memcpy(ptr, value, __size_value);ptr += __size_value;
9712
9713	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9714	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9715
9716}
9717
9718void glProgramUniform1iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
9719{
9720
9721	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9722	IOStream *stream = ctx->m_stream;
9723	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9724	bool useChecksum = checksumCalculator->getVersion() > 0;
9725
9726	const unsigned int __size_value =  (count * sizeof(GLint));
9727	 unsigned char *ptr;
9728	 unsigned char *buf;
9729	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
9730	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9731	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9732	buf = stream->alloc(totalSize);
9733	ptr = buf;
9734	int tmp = OP_glProgramUniform1iv;memcpy(ptr, &tmp, 4); ptr += 4;
9735	memcpy(ptr, &totalSize, 4);  ptr += 4;
9736
9737		memcpy(ptr, &program, 4); ptr += 4;
9738		memcpy(ptr, &location, 4); ptr += 4;
9739		memcpy(ptr, &count, 4); ptr += 4;
9740	*(unsigned int *)(ptr) = __size_value; ptr += 4;
9741	memcpy(ptr, value, __size_value);ptr += __size_value;
9742
9743	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9744	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9745
9746}
9747
9748void glProgramUniform2iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
9749{
9750
9751	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9752	IOStream *stream = ctx->m_stream;
9753	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9754	bool useChecksum = checksumCalculator->getVersion() > 0;
9755
9756	const unsigned int __size_value =  (count * 2 * sizeof(GLint));
9757	 unsigned char *ptr;
9758	 unsigned char *buf;
9759	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
9760	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9761	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9762	buf = stream->alloc(totalSize);
9763	ptr = buf;
9764	int tmp = OP_glProgramUniform2iv;memcpy(ptr, &tmp, 4); ptr += 4;
9765	memcpy(ptr, &totalSize, 4);  ptr += 4;
9766
9767		memcpy(ptr, &program, 4); ptr += 4;
9768		memcpy(ptr, &location, 4); ptr += 4;
9769		memcpy(ptr, &count, 4); ptr += 4;
9770	*(unsigned int *)(ptr) = __size_value; ptr += 4;
9771	memcpy(ptr, value, __size_value);ptr += __size_value;
9772
9773	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9774	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9775
9776}
9777
9778void glProgramUniform3iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
9779{
9780
9781	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9782	IOStream *stream = ctx->m_stream;
9783	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9784	bool useChecksum = checksumCalculator->getVersion() > 0;
9785
9786	const unsigned int __size_value =  (count * 3 * sizeof(GLint));
9787	 unsigned char *ptr;
9788	 unsigned char *buf;
9789	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
9790	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9791	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9792	buf = stream->alloc(totalSize);
9793	ptr = buf;
9794	int tmp = OP_glProgramUniform3iv;memcpy(ptr, &tmp, 4); ptr += 4;
9795	memcpy(ptr, &totalSize, 4);  ptr += 4;
9796
9797		memcpy(ptr, &program, 4); ptr += 4;
9798		memcpy(ptr, &location, 4); ptr += 4;
9799		memcpy(ptr, &count, 4); ptr += 4;
9800	*(unsigned int *)(ptr) = __size_value; ptr += 4;
9801	memcpy(ptr, value, __size_value);ptr += __size_value;
9802
9803	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9804	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9805
9806}
9807
9808void glProgramUniform4iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value)
9809{
9810
9811	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9812	IOStream *stream = ctx->m_stream;
9813	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9814	bool useChecksum = checksumCalculator->getVersion() > 0;
9815
9816	const unsigned int __size_value =  (count * 4 * sizeof(GLint));
9817	 unsigned char *ptr;
9818	 unsigned char *buf;
9819	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
9820	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9821	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9822	buf = stream->alloc(totalSize);
9823	ptr = buf;
9824	int tmp = OP_glProgramUniform4iv;memcpy(ptr, &tmp, 4); ptr += 4;
9825	memcpy(ptr, &totalSize, 4);  ptr += 4;
9826
9827		memcpy(ptr, &program, 4); ptr += 4;
9828		memcpy(ptr, &location, 4); ptr += 4;
9829		memcpy(ptr, &count, 4); ptr += 4;
9830	*(unsigned int *)(ptr) = __size_value; ptr += 4;
9831	memcpy(ptr, value, __size_value);ptr += __size_value;
9832
9833	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9834	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9835
9836}
9837
9838void glProgramUniform1uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
9839{
9840
9841	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9842	IOStream *stream = ctx->m_stream;
9843	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9844	bool useChecksum = checksumCalculator->getVersion() > 0;
9845
9846	const unsigned int __size_value =  (count * sizeof(GLuint));
9847	 unsigned char *ptr;
9848	 unsigned char *buf;
9849	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
9850	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9851	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9852	buf = stream->alloc(totalSize);
9853	ptr = buf;
9854	int tmp = OP_glProgramUniform1uiv;memcpy(ptr, &tmp, 4); ptr += 4;
9855	memcpy(ptr, &totalSize, 4);  ptr += 4;
9856
9857		memcpy(ptr, &program, 4); ptr += 4;
9858		memcpy(ptr, &location, 4); ptr += 4;
9859		memcpy(ptr, &count, 4); ptr += 4;
9860	*(unsigned int *)(ptr) = __size_value; ptr += 4;
9861	memcpy(ptr, value, __size_value);ptr += __size_value;
9862
9863	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9864	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9865
9866}
9867
9868void glProgramUniform2uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
9869{
9870
9871	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9872	IOStream *stream = ctx->m_stream;
9873	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9874	bool useChecksum = checksumCalculator->getVersion() > 0;
9875
9876	const unsigned int __size_value =  (count * 2 * sizeof(GLuint));
9877	 unsigned char *ptr;
9878	 unsigned char *buf;
9879	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
9880	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9881	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9882	buf = stream->alloc(totalSize);
9883	ptr = buf;
9884	int tmp = OP_glProgramUniform2uiv;memcpy(ptr, &tmp, 4); ptr += 4;
9885	memcpy(ptr, &totalSize, 4);  ptr += 4;
9886
9887		memcpy(ptr, &program, 4); ptr += 4;
9888		memcpy(ptr, &location, 4); ptr += 4;
9889		memcpy(ptr, &count, 4); ptr += 4;
9890	*(unsigned int *)(ptr) = __size_value; ptr += 4;
9891	memcpy(ptr, value, __size_value);ptr += __size_value;
9892
9893	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9894	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9895
9896}
9897
9898void glProgramUniform3uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
9899{
9900
9901	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9902	IOStream *stream = ctx->m_stream;
9903	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9904	bool useChecksum = checksumCalculator->getVersion() > 0;
9905
9906	const unsigned int __size_value =  (count * 3 * sizeof(GLuint));
9907	 unsigned char *ptr;
9908	 unsigned char *buf;
9909	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
9910	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9911	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9912	buf = stream->alloc(totalSize);
9913	ptr = buf;
9914	int tmp = OP_glProgramUniform3uiv;memcpy(ptr, &tmp, 4); ptr += 4;
9915	memcpy(ptr, &totalSize, 4);  ptr += 4;
9916
9917		memcpy(ptr, &program, 4); ptr += 4;
9918		memcpy(ptr, &location, 4); ptr += 4;
9919		memcpy(ptr, &count, 4); ptr += 4;
9920	*(unsigned int *)(ptr) = __size_value; ptr += 4;
9921	memcpy(ptr, value, __size_value);ptr += __size_value;
9922
9923	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9924	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9925
9926}
9927
9928void glProgramUniform4uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value)
9929{
9930
9931	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9932	IOStream *stream = ctx->m_stream;
9933	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9934	bool useChecksum = checksumCalculator->getVersion() > 0;
9935
9936	const unsigned int __size_value =  (count * 4 * sizeof(GLuint));
9937	 unsigned char *ptr;
9938	 unsigned char *buf;
9939	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_value + 1*4;
9940	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9941	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9942	buf = stream->alloc(totalSize);
9943	ptr = buf;
9944	int tmp = OP_glProgramUniform4uiv;memcpy(ptr, &tmp, 4); ptr += 4;
9945	memcpy(ptr, &totalSize, 4);  ptr += 4;
9946
9947		memcpy(ptr, &program, 4); ptr += 4;
9948		memcpy(ptr, &location, 4); ptr += 4;
9949		memcpy(ptr, &count, 4); ptr += 4;
9950	*(unsigned int *)(ptr) = __size_value; ptr += 4;
9951	memcpy(ptr, value, __size_value);ptr += __size_value;
9952
9953	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9954	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9955
9956}
9957
9958void glProgramUniformMatrix2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
9959{
9960
9961	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9962	IOStream *stream = ctx->m_stream;
9963	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9964	bool useChecksum = checksumCalculator->getVersion() > 0;
9965
9966	const unsigned int __size_value =  (count * 4 * sizeof(GLfloat));
9967	 unsigned char *ptr;
9968	 unsigned char *buf;
9969	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
9970	 const size_t checksumSize = checksumCalculator->checksumByteSize();
9971	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
9972	buf = stream->alloc(totalSize);
9973	ptr = buf;
9974	int tmp = OP_glProgramUniformMatrix2fv;memcpy(ptr, &tmp, 4); ptr += 4;
9975	memcpy(ptr, &totalSize, 4);  ptr += 4;
9976
9977		memcpy(ptr, &program, 4); ptr += 4;
9978		memcpy(ptr, &location, 4); ptr += 4;
9979		memcpy(ptr, &count, 4); ptr += 4;
9980		memcpy(ptr, &transpose, 1); ptr += 1;
9981	*(unsigned int *)(ptr) = __size_value; ptr += 4;
9982	memcpy(ptr, value, __size_value);ptr += __size_value;
9983
9984	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
9985	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
9986
9987}
9988
9989void glProgramUniformMatrix3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
9990{
9991
9992	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
9993	IOStream *stream = ctx->m_stream;
9994	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
9995	bool useChecksum = checksumCalculator->getVersion() > 0;
9996
9997	const unsigned int __size_value =  (count * 9 * sizeof(GLfloat));
9998	 unsigned char *ptr;
9999	 unsigned char *buf;
10000	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10001	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10002	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10003	buf = stream->alloc(totalSize);
10004	ptr = buf;
10005	int tmp = OP_glProgramUniformMatrix3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10006	memcpy(ptr, &totalSize, 4);  ptr += 4;
10007
10008		memcpy(ptr, &program, 4); ptr += 4;
10009		memcpy(ptr, &location, 4); ptr += 4;
10010		memcpy(ptr, &count, 4); ptr += 4;
10011		memcpy(ptr, &transpose, 1); ptr += 1;
10012	*(unsigned int *)(ptr) = __size_value; ptr += 4;
10013	memcpy(ptr, value, __size_value);ptr += __size_value;
10014
10015	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10016	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10017
10018}
10019
10020void glProgramUniformMatrix4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10021{
10022
10023	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10024	IOStream *stream = ctx->m_stream;
10025	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10026	bool useChecksum = checksumCalculator->getVersion() > 0;
10027
10028	const unsigned int __size_value =  (count * 16 * sizeof(GLfloat));
10029	 unsigned char *ptr;
10030	 unsigned char *buf;
10031	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10032	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10033	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10034	buf = stream->alloc(totalSize);
10035	ptr = buf;
10036	int tmp = OP_glProgramUniformMatrix4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10037	memcpy(ptr, &totalSize, 4);  ptr += 4;
10038
10039		memcpy(ptr, &program, 4); ptr += 4;
10040		memcpy(ptr, &location, 4); ptr += 4;
10041		memcpy(ptr, &count, 4); ptr += 4;
10042		memcpy(ptr, &transpose, 1); ptr += 1;
10043	*(unsigned int *)(ptr) = __size_value; ptr += 4;
10044	memcpy(ptr, value, __size_value);ptr += __size_value;
10045
10046	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10047	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10048
10049}
10050
10051void glProgramUniformMatrix2x3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10052{
10053
10054	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10055	IOStream *stream = ctx->m_stream;
10056	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10057	bool useChecksum = checksumCalculator->getVersion() > 0;
10058
10059	const unsigned int __size_value =  (count * 6 * sizeof(GLfloat));
10060	 unsigned char *ptr;
10061	 unsigned char *buf;
10062	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10063	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10064	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10065	buf = stream->alloc(totalSize);
10066	ptr = buf;
10067	int tmp = OP_glProgramUniformMatrix2x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10068	memcpy(ptr, &totalSize, 4);  ptr += 4;
10069
10070		memcpy(ptr, &program, 4); ptr += 4;
10071		memcpy(ptr, &location, 4); ptr += 4;
10072		memcpy(ptr, &count, 4); ptr += 4;
10073		memcpy(ptr, &transpose, 1); ptr += 1;
10074	*(unsigned int *)(ptr) = __size_value; ptr += 4;
10075	memcpy(ptr, value, __size_value);ptr += __size_value;
10076
10077	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10078	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10079
10080}
10081
10082void glProgramUniformMatrix3x2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10083{
10084
10085	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10086	IOStream *stream = ctx->m_stream;
10087	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10088	bool useChecksum = checksumCalculator->getVersion() > 0;
10089
10090	const unsigned int __size_value =  (count * 6 * sizeof(GLfloat));
10091	 unsigned char *ptr;
10092	 unsigned char *buf;
10093	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10094	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10095	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10096	buf = stream->alloc(totalSize);
10097	ptr = buf;
10098	int tmp = OP_glProgramUniformMatrix3x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10099	memcpy(ptr, &totalSize, 4);  ptr += 4;
10100
10101		memcpy(ptr, &program, 4); ptr += 4;
10102		memcpy(ptr, &location, 4); ptr += 4;
10103		memcpy(ptr, &count, 4); ptr += 4;
10104		memcpy(ptr, &transpose, 1); ptr += 1;
10105	*(unsigned int *)(ptr) = __size_value; ptr += 4;
10106	memcpy(ptr, value, __size_value);ptr += __size_value;
10107
10108	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10109	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10110
10111}
10112
10113void glProgramUniformMatrix2x4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10114{
10115
10116	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10117	IOStream *stream = ctx->m_stream;
10118	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10119	bool useChecksum = checksumCalculator->getVersion() > 0;
10120
10121	const unsigned int __size_value =  (count * 8 * sizeof(GLfloat));
10122	 unsigned char *ptr;
10123	 unsigned char *buf;
10124	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10125	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10126	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10127	buf = stream->alloc(totalSize);
10128	ptr = buf;
10129	int tmp = OP_glProgramUniformMatrix2x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10130	memcpy(ptr, &totalSize, 4);  ptr += 4;
10131
10132		memcpy(ptr, &program, 4); ptr += 4;
10133		memcpy(ptr, &location, 4); ptr += 4;
10134		memcpy(ptr, &count, 4); ptr += 4;
10135		memcpy(ptr, &transpose, 1); ptr += 1;
10136	*(unsigned int *)(ptr) = __size_value; ptr += 4;
10137	memcpy(ptr, value, __size_value);ptr += __size_value;
10138
10139	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10140	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10141
10142}
10143
10144void glProgramUniformMatrix4x2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10145{
10146
10147	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10148	IOStream *stream = ctx->m_stream;
10149	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10150	bool useChecksum = checksumCalculator->getVersion() > 0;
10151
10152	const unsigned int __size_value =  (count * 8 * sizeof(GLfloat));
10153	 unsigned char *ptr;
10154	 unsigned char *buf;
10155	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10156	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10157	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10158	buf = stream->alloc(totalSize);
10159	ptr = buf;
10160	int tmp = OP_glProgramUniformMatrix4x2fv;memcpy(ptr, &tmp, 4); ptr += 4;
10161	memcpy(ptr, &totalSize, 4);  ptr += 4;
10162
10163		memcpy(ptr, &program, 4); ptr += 4;
10164		memcpy(ptr, &location, 4); ptr += 4;
10165		memcpy(ptr, &count, 4); ptr += 4;
10166		memcpy(ptr, &transpose, 1); ptr += 1;
10167	*(unsigned int *)(ptr) = __size_value; ptr += 4;
10168	memcpy(ptr, value, __size_value);ptr += __size_value;
10169
10170	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10171	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10172
10173}
10174
10175void glProgramUniformMatrix3x4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10176{
10177
10178	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10179	IOStream *stream = ctx->m_stream;
10180	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10181	bool useChecksum = checksumCalculator->getVersion() > 0;
10182
10183	const unsigned int __size_value =  (count * 12 * sizeof(GLfloat));
10184	 unsigned char *ptr;
10185	 unsigned char *buf;
10186	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10187	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10188	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10189	buf = stream->alloc(totalSize);
10190	ptr = buf;
10191	int tmp = OP_glProgramUniformMatrix3x4fv;memcpy(ptr, &tmp, 4); ptr += 4;
10192	memcpy(ptr, &totalSize, 4);  ptr += 4;
10193
10194		memcpy(ptr, &program, 4); ptr += 4;
10195		memcpy(ptr, &location, 4); ptr += 4;
10196		memcpy(ptr, &count, 4); ptr += 4;
10197		memcpy(ptr, &transpose, 1); ptr += 1;
10198	*(unsigned int *)(ptr) = __size_value; ptr += 4;
10199	memcpy(ptr, value, __size_value);ptr += __size_value;
10200
10201	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10202	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10203
10204}
10205
10206void glProgramUniformMatrix4x3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
10207{
10208
10209	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10210	IOStream *stream = ctx->m_stream;
10211	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10212	bool useChecksum = checksumCalculator->getVersion() > 0;
10213
10214	const unsigned int __size_value =  (count * 12 * sizeof(GLfloat));
10215	 unsigned char *ptr;
10216	 unsigned char *buf;
10217	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + __size_value + 1*4;
10218	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10219	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10220	buf = stream->alloc(totalSize);
10221	ptr = buf;
10222	int tmp = OP_glProgramUniformMatrix4x3fv;memcpy(ptr, &tmp, 4); ptr += 4;
10223	memcpy(ptr, &totalSize, 4);  ptr += 4;
10224
10225		memcpy(ptr, &program, 4); ptr += 4;
10226		memcpy(ptr, &location, 4); ptr += 4;
10227		memcpy(ptr, &count, 4); ptr += 4;
10228		memcpy(ptr, &transpose, 1); ptr += 1;
10229	*(unsigned int *)(ptr) = __size_value; ptr += 4;
10230	memcpy(ptr, value, __size_value);ptr += __size_value;
10231
10232	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10233	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10234
10235}
10236
10237void glGetProgramInterfaceiv_enc(void *self , GLuint program, GLenum programInterface, GLenum pname, GLint* params)
10238{
10239
10240	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10241	IOStream *stream = ctx->m_stream;
10242	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10243	bool useChecksum = checksumCalculator->getVersion() > 0;
10244
10245	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
10246	 unsigned char *ptr;
10247	 unsigned char *buf;
10248	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
10249	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10250	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10251	buf = stream->alloc(totalSize);
10252	ptr = buf;
10253	int tmp = OP_glGetProgramInterfaceiv;memcpy(ptr, &tmp, 4); ptr += 4;
10254	memcpy(ptr, &totalSize, 4);  ptr += 4;
10255
10256		memcpy(ptr, &program, 4); ptr += 4;
10257		memcpy(ptr, &programInterface, 4); ptr += 4;
10258		memcpy(ptr, &pname, 4); ptr += 4;
10259	*(unsigned int *)(ptr) = __size_params; ptr += 4;
10260
10261	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10262	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10263
10264	stream->readback(params, __size_params);
10265	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
10266	if (useChecksum) {
10267		unsigned char *checksumBufPtr = NULL;
10268		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
10269		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10270		stream->readback(checksumBufPtr, checksumSize);
10271		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10272			ALOGE("glGetProgramInterfaceiv: GL communication error, please report this issue to b.android.com.\n");
10273			abort();
10274		}
10275	}
10276}
10277
10278void glGetProgramResourceiv_enc(void *self , GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei* length, GLint* params)
10279{
10280
10281	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10282	IOStream *stream = ctx->m_stream;
10283	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10284	bool useChecksum = checksumCalculator->getVersion() > 0;
10285
10286	const unsigned int __size_props =  (propCount * sizeof(GLenum));
10287	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
10288	const unsigned int __size_params =  (bufSize * sizeof(GLint));
10289	 unsigned char *ptr;
10290	 unsigned char *buf;
10291	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_props + 4 + 0 + 0 + 3*4;
10292	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10293	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10294	buf = stream->alloc(totalSize);
10295	ptr = buf;
10296	int tmp = OP_glGetProgramResourceiv;memcpy(ptr, &tmp, 4); ptr += 4;
10297	memcpy(ptr, &totalSize, 4);  ptr += 4;
10298
10299		memcpy(ptr, &program, 4); ptr += 4;
10300		memcpy(ptr, &programInterface, 4); ptr += 4;
10301		memcpy(ptr, &index, 4); ptr += 4;
10302		memcpy(ptr, &propCount, 4); ptr += 4;
10303	*(unsigned int *)(ptr) = __size_props; ptr += 4;
10304	memcpy(ptr, props, __size_props);ptr += __size_props;
10305		memcpy(ptr, &bufSize, 4); ptr += 4;
10306	*(unsigned int *)(ptr) = __size_length; ptr += 4;
10307	*(unsigned int *)(ptr) = __size_params; ptr += 4;
10308
10309	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10310	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10311
10312	if (length != NULL) {
10313		stream->readback(length, __size_length);
10314		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
10315	}
10316	stream->readback(params, __size_params);
10317	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
10318	if (useChecksum) {
10319		unsigned char *checksumBufPtr = NULL;
10320		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
10321		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10322		stream->readback(checksumBufPtr, checksumSize);
10323		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10324			ALOGE("glGetProgramResourceiv: GL communication error, please report this issue to b.android.com.\n");
10325			abort();
10326		}
10327	}
10328}
10329
10330GLuint glGetProgramResourceIndex_enc(void *self , GLuint program, GLenum programInterface, const char* name)
10331{
10332
10333	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10334	IOStream *stream = ctx->m_stream;
10335	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10336	bool useChecksum = checksumCalculator->getVersion() > 0;
10337
10338	const unsigned int __size_name =  (strlen(name) + 1);
10339	 unsigned char *ptr;
10340	 unsigned char *buf;
10341	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
10342	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10343	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10344	buf = stream->alloc(totalSize);
10345	ptr = buf;
10346	int tmp = OP_glGetProgramResourceIndex;memcpy(ptr, &tmp, 4); ptr += 4;
10347	memcpy(ptr, &totalSize, 4);  ptr += 4;
10348
10349		memcpy(ptr, &program, 4); ptr += 4;
10350		memcpy(ptr, &programInterface, 4); ptr += 4;
10351	*(unsigned int *)(ptr) = __size_name; ptr += 4;
10352	memcpy(ptr, name, __size_name);ptr += __size_name;
10353
10354	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10355	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10356
10357
10358	GLuint retval;
10359	stream->readback(&retval, 4);
10360	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
10361	if (useChecksum) {
10362		unsigned char *checksumBufPtr = NULL;
10363		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
10364		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10365		stream->readback(checksumBufPtr, checksumSize);
10366		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10367			ALOGE("glGetProgramResourceIndex: GL communication error, please report this issue to b.android.com.\n");
10368			abort();
10369		}
10370	}
10371	return retval;
10372}
10373
10374GLint glGetProgramResourceLocation_enc(void *self , GLuint program, GLenum programInterface, const char* name)
10375{
10376
10377	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10378	IOStream *stream = ctx->m_stream;
10379	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10380	bool useChecksum = checksumCalculator->getVersion() > 0;
10381
10382	const unsigned int __size_name =  (strlen(name) + 1);
10383	 unsigned char *ptr;
10384	 unsigned char *buf;
10385	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
10386	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10387	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10388	buf = stream->alloc(totalSize);
10389	ptr = buf;
10390	int tmp = OP_glGetProgramResourceLocation;memcpy(ptr, &tmp, 4); ptr += 4;
10391	memcpy(ptr, &totalSize, 4);  ptr += 4;
10392
10393		memcpy(ptr, &program, 4); ptr += 4;
10394		memcpy(ptr, &programInterface, 4); ptr += 4;
10395	*(unsigned int *)(ptr) = __size_name; ptr += 4;
10396	memcpy(ptr, name, __size_name);ptr += __size_name;
10397
10398	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10399	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10400
10401
10402	GLint retval;
10403	stream->readback(&retval, 4);
10404	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
10405	if (useChecksum) {
10406		unsigned char *checksumBufPtr = NULL;
10407		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
10408		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10409		stream->readback(checksumBufPtr, checksumSize);
10410		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10411			ALOGE("glGetProgramResourceLocation: GL communication error, please report this issue to b.android.com.\n");
10412			abort();
10413		}
10414	}
10415	return retval;
10416}
10417
10418void glGetProgramResourceName_enc(void *self , GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, char* name)
10419{
10420
10421	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10422	IOStream *stream = ctx->m_stream;
10423	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10424	bool useChecksum = checksumCalculator->getVersion() > 0;
10425
10426	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
10427	const unsigned int __size_name =  bufSize;
10428	 unsigned char *ptr;
10429	 unsigned char *buf;
10430	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 0 + 2*4;
10431	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10432	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10433	buf = stream->alloc(totalSize);
10434	ptr = buf;
10435	int tmp = OP_glGetProgramResourceName;memcpy(ptr, &tmp, 4); ptr += 4;
10436	memcpy(ptr, &totalSize, 4);  ptr += 4;
10437
10438		memcpy(ptr, &program, 4); ptr += 4;
10439		memcpy(ptr, &programInterface, 4); ptr += 4;
10440		memcpy(ptr, &index, 4); ptr += 4;
10441		memcpy(ptr, &bufSize, 4); ptr += 4;
10442	*(unsigned int *)(ptr) = __size_length; ptr += 4;
10443	*(unsigned int *)(ptr) = __size_name; ptr += 4;
10444
10445	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10446	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10447
10448	if (length != NULL) {
10449		stream->readback(length, __size_length);
10450		if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
10451	}
10452	stream->readback(name, __size_name);
10453	if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
10454	if (useChecksum) {
10455		unsigned char *checksumBufPtr = NULL;
10456		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
10457		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10458		stream->readback(checksumBufPtr, checksumSize);
10459		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10460			ALOGE("glGetProgramResourceName: GL communication error, please report this issue to b.android.com.\n");
10461			abort();
10462		}
10463	}
10464}
10465
10466void glBindImageTexture_enc(void *self , GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
10467{
10468
10469	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10470	IOStream *stream = ctx->m_stream;
10471	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10472	bool useChecksum = checksumCalculator->getVersion() > 0;
10473
10474	 unsigned char *ptr;
10475	 unsigned char *buf;
10476	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + 4 + 4;
10477	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10478	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10479	buf = stream->alloc(totalSize);
10480	ptr = buf;
10481	int tmp = OP_glBindImageTexture;memcpy(ptr, &tmp, 4); ptr += 4;
10482	memcpy(ptr, &totalSize, 4);  ptr += 4;
10483
10484		memcpy(ptr, &unit, 4); ptr += 4;
10485		memcpy(ptr, &texture, 4); ptr += 4;
10486		memcpy(ptr, &level, 4); ptr += 4;
10487		memcpy(ptr, &layered, 1); ptr += 1;
10488		memcpy(ptr, &layer, 4); ptr += 4;
10489		memcpy(ptr, &access, 4); ptr += 4;
10490		memcpy(ptr, &format, 4); ptr += 4;
10491
10492	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10493	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10494
10495}
10496
10497void glDispatchCompute_enc(void *self , GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
10498{
10499
10500	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10501	IOStream *stream = ctx->m_stream;
10502	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10503	bool useChecksum = checksumCalculator->getVersion() > 0;
10504
10505	 unsigned char *ptr;
10506	 unsigned char *buf;
10507	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
10508	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10509	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10510	buf = stream->alloc(totalSize);
10511	ptr = buf;
10512	int tmp = OP_glDispatchCompute;memcpy(ptr, &tmp, 4); ptr += 4;
10513	memcpy(ptr, &totalSize, 4);  ptr += 4;
10514
10515		memcpy(ptr, &num_groups_x, 4); ptr += 4;
10516		memcpy(ptr, &num_groups_y, 4); ptr += 4;
10517		memcpy(ptr, &num_groups_z, 4); ptr += 4;
10518
10519	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10520	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10521
10522}
10523
10524void glDispatchComputeIndirect_enc(void *self , GLintptr indirect)
10525{
10526
10527	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10528	IOStream *stream = ctx->m_stream;
10529	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10530	bool useChecksum = checksumCalculator->getVersion() > 0;
10531
10532	 unsigned char *ptr;
10533	 unsigned char *buf;
10534	 const size_t sizeWithoutChecksum = 8 + 4;
10535	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10536	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10537	buf = stream->alloc(totalSize);
10538	ptr = buf;
10539	int tmp = OP_glDispatchComputeIndirect;memcpy(ptr, &tmp, 4); ptr += 4;
10540	memcpy(ptr, &totalSize, 4);  ptr += 4;
10541
10542		memcpy(ptr, &indirect, 4); ptr += 4;
10543
10544	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10545	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10546
10547}
10548
10549void glBindVertexBuffer_enc(void *self , GLuint bindingindex, GLuint buffer, GLintptr offset, GLintptr stride)
10550{
10551
10552	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10553	IOStream *stream = ctx->m_stream;
10554	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10555	bool useChecksum = checksumCalculator->getVersion() > 0;
10556
10557	 unsigned char *ptr;
10558	 unsigned char *buf;
10559	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
10560	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10561	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10562	buf = stream->alloc(totalSize);
10563	ptr = buf;
10564	int tmp = OP_glBindVertexBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
10565	memcpy(ptr, &totalSize, 4);  ptr += 4;
10566
10567		memcpy(ptr, &bindingindex, 4); ptr += 4;
10568		memcpy(ptr, &buffer, 4); ptr += 4;
10569		memcpy(ptr, &offset, 4); ptr += 4;
10570		memcpy(ptr, &stride, 4); ptr += 4;
10571
10572	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10573	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10574
10575}
10576
10577void glVertexAttribBinding_enc(void *self , GLuint attribindex, GLuint bindingindex)
10578{
10579
10580	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10581	IOStream *stream = ctx->m_stream;
10582	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10583	bool useChecksum = checksumCalculator->getVersion() > 0;
10584
10585	 unsigned char *ptr;
10586	 unsigned char *buf;
10587	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
10588	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10589	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10590	buf = stream->alloc(totalSize);
10591	ptr = buf;
10592	int tmp = OP_glVertexAttribBinding;memcpy(ptr, &tmp, 4); ptr += 4;
10593	memcpy(ptr, &totalSize, 4);  ptr += 4;
10594
10595		memcpy(ptr, &attribindex, 4); ptr += 4;
10596		memcpy(ptr, &bindingindex, 4); ptr += 4;
10597
10598	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10599	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10600
10601}
10602
10603void glVertexAttribFormat_enc(void *self , GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
10604{
10605
10606	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10607	IOStream *stream = ctx->m_stream;
10608	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10609	bool useChecksum = checksumCalculator->getVersion() > 0;
10610
10611	 unsigned char *ptr;
10612	 unsigned char *buf;
10613	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4;
10614	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10615	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10616	buf = stream->alloc(totalSize);
10617	ptr = buf;
10618	int tmp = OP_glVertexAttribFormat;memcpy(ptr, &tmp, 4); ptr += 4;
10619	memcpy(ptr, &totalSize, 4);  ptr += 4;
10620
10621		memcpy(ptr, &attribindex, 4); ptr += 4;
10622		memcpy(ptr, &size, 4); ptr += 4;
10623		memcpy(ptr, &type, 4); ptr += 4;
10624		memcpy(ptr, &normalized, 1); ptr += 1;
10625		memcpy(ptr, &relativeoffset, 4); ptr += 4;
10626
10627	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10628	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10629
10630}
10631
10632void glVertexAttribIFormat_enc(void *self , GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
10633{
10634
10635	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10636	IOStream *stream = ctx->m_stream;
10637	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10638	bool useChecksum = checksumCalculator->getVersion() > 0;
10639
10640	 unsigned char *ptr;
10641	 unsigned char *buf;
10642	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
10643	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10644	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10645	buf = stream->alloc(totalSize);
10646	ptr = buf;
10647	int tmp = OP_glVertexAttribIFormat;memcpy(ptr, &tmp, 4); ptr += 4;
10648	memcpy(ptr, &totalSize, 4);  ptr += 4;
10649
10650		memcpy(ptr, &attribindex, 4); ptr += 4;
10651		memcpy(ptr, &size, 4); ptr += 4;
10652		memcpy(ptr, &type, 4); ptr += 4;
10653		memcpy(ptr, &relativeoffset, 4); ptr += 4;
10654
10655	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10656	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10657
10658}
10659
10660void glVertexBindingDivisor_enc(void *self , GLuint bindingindex, GLuint divisor)
10661{
10662
10663	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10664	IOStream *stream = ctx->m_stream;
10665	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10666	bool useChecksum = checksumCalculator->getVersion() > 0;
10667
10668	 unsigned char *ptr;
10669	 unsigned char *buf;
10670	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
10671	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10672	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10673	buf = stream->alloc(totalSize);
10674	ptr = buf;
10675	int tmp = OP_glVertexBindingDivisor;memcpy(ptr, &tmp, 4); ptr += 4;
10676	memcpy(ptr, &totalSize, 4);  ptr += 4;
10677
10678		memcpy(ptr, &bindingindex, 4); ptr += 4;
10679		memcpy(ptr, &divisor, 4); ptr += 4;
10680
10681	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10682	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10683
10684}
10685
10686void glDrawArraysIndirectDataAEMU_enc(void *self , GLenum mode, const void* indirect, GLuint datalen)
10687{
10688
10689	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10690	IOStream *stream = ctx->m_stream;
10691	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10692	bool useChecksum = checksumCalculator->getVersion() > 0;
10693
10694	const unsigned int __size_indirect =  datalen;
10695	 unsigned char *ptr;
10696	 unsigned char *buf;
10697	 const size_t sizeWithoutChecksum = 8 + 4 + __size_indirect + 4 + 1*4;
10698	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10699	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10700	buf = stream->alloc(totalSize);
10701	ptr = buf;
10702	int tmp = OP_glDrawArraysIndirectDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
10703	memcpy(ptr, &totalSize, 4);  ptr += 4;
10704
10705		memcpy(ptr, &mode, 4); ptr += 4;
10706	*(unsigned int *)(ptr) = __size_indirect; ptr += 4;
10707	memcpy(ptr, indirect, __size_indirect);ptr += __size_indirect;
10708		memcpy(ptr, &datalen, 4); ptr += 4;
10709
10710	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10711	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10712
10713}
10714
10715void glDrawArraysIndirectOffsetAEMU_enc(void *self , GLenum mode, GLuint offset)
10716{
10717
10718	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10719	IOStream *stream = ctx->m_stream;
10720	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10721	bool useChecksum = checksumCalculator->getVersion() > 0;
10722
10723	 unsigned char *ptr;
10724	 unsigned char *buf;
10725	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
10726	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10727	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10728	buf = stream->alloc(totalSize);
10729	ptr = buf;
10730	int tmp = OP_glDrawArraysIndirectOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
10731	memcpy(ptr, &totalSize, 4);  ptr += 4;
10732
10733		memcpy(ptr, &mode, 4); ptr += 4;
10734		memcpy(ptr, &offset, 4); ptr += 4;
10735
10736	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10737	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10738
10739}
10740
10741void glDrawElementsIndirectDataAEMU_enc(void *self , GLenum mode, GLenum type, const void* indirect, GLuint datalen)
10742{
10743
10744	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10745	IOStream *stream = ctx->m_stream;
10746	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10747	bool useChecksum = checksumCalculator->getVersion() > 0;
10748
10749	const unsigned int __size_indirect =  datalen;
10750	 unsigned char *ptr;
10751	 unsigned char *buf;
10752	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_indirect + 4 + 1*4;
10753	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10754	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10755	buf = stream->alloc(totalSize);
10756	ptr = buf;
10757	int tmp = OP_glDrawElementsIndirectDataAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
10758	memcpy(ptr, &totalSize, 4);  ptr += 4;
10759
10760		memcpy(ptr, &mode, 4); ptr += 4;
10761		memcpy(ptr, &type, 4); ptr += 4;
10762	*(unsigned int *)(ptr) = __size_indirect; ptr += 4;
10763	memcpy(ptr, indirect, __size_indirect);ptr += __size_indirect;
10764		memcpy(ptr, &datalen, 4); ptr += 4;
10765
10766	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10767	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10768
10769}
10770
10771void glDrawElementsIndirectOffsetAEMU_enc(void *self , GLenum mode, GLenum type, GLuint offset)
10772{
10773
10774	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10775	IOStream *stream = ctx->m_stream;
10776	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10777	bool useChecksum = checksumCalculator->getVersion() > 0;
10778
10779	 unsigned char *ptr;
10780	 unsigned char *buf;
10781	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
10782	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10783	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10784	buf = stream->alloc(totalSize);
10785	ptr = buf;
10786	int tmp = OP_glDrawElementsIndirectOffsetAEMU;memcpy(ptr, &tmp, 4); ptr += 4;
10787	memcpy(ptr, &totalSize, 4);  ptr += 4;
10788
10789		memcpy(ptr, &mode, 4); ptr += 4;
10790		memcpy(ptr, &type, 4); ptr += 4;
10791		memcpy(ptr, &offset, 4); ptr += 4;
10792
10793	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10794	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10795
10796}
10797
10798void glTexStorage2DMultisample_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
10799{
10800
10801	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10802	IOStream *stream = ctx->m_stream;
10803	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10804	bool useChecksum = checksumCalculator->getVersion() > 0;
10805
10806	 unsigned char *ptr;
10807	 unsigned char *buf;
10808	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 1;
10809	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10810	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10811	buf = stream->alloc(totalSize);
10812	ptr = buf;
10813	int tmp = OP_glTexStorage2DMultisample;memcpy(ptr, &tmp, 4); ptr += 4;
10814	memcpy(ptr, &totalSize, 4);  ptr += 4;
10815
10816		memcpy(ptr, &target, 4); ptr += 4;
10817		memcpy(ptr, &samples, 4); ptr += 4;
10818		memcpy(ptr, &internalformat, 4); ptr += 4;
10819		memcpy(ptr, &width, 4); ptr += 4;
10820		memcpy(ptr, &height, 4); ptr += 4;
10821		memcpy(ptr, &fixedsamplelocations, 1); ptr += 1;
10822
10823	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10824	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10825
10826}
10827
10828void glSampleMaski_enc(void *self , GLuint maskNumber, GLbitfield mask)
10829{
10830
10831	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10832	IOStream *stream = ctx->m_stream;
10833	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10834	bool useChecksum = checksumCalculator->getVersion() > 0;
10835
10836	 unsigned char *ptr;
10837	 unsigned char *buf;
10838	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
10839	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10840	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10841	buf = stream->alloc(totalSize);
10842	ptr = buf;
10843	int tmp = OP_glSampleMaski;memcpy(ptr, &tmp, 4); ptr += 4;
10844	memcpy(ptr, &totalSize, 4);  ptr += 4;
10845
10846		memcpy(ptr, &maskNumber, 4); ptr += 4;
10847		memcpy(ptr, &mask, 4); ptr += 4;
10848
10849	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10850	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10851
10852}
10853
10854void glGetMultisamplefv_enc(void *self , GLenum pname, GLuint index, GLfloat* val)
10855{
10856
10857	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10858	IOStream *stream = ctx->m_stream;
10859	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10860	bool useChecksum = checksumCalculator->getVersion() > 0;
10861
10862	const unsigned int __size_val =  (glUtilsParamSize(pname) * sizeof(GLfloat));
10863	 unsigned char *ptr;
10864	 unsigned char *buf;
10865	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
10866	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10867	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10868	buf = stream->alloc(totalSize);
10869	ptr = buf;
10870	int tmp = OP_glGetMultisamplefv;memcpy(ptr, &tmp, 4); ptr += 4;
10871	memcpy(ptr, &totalSize, 4);  ptr += 4;
10872
10873		memcpy(ptr, &pname, 4); ptr += 4;
10874		memcpy(ptr, &index, 4); ptr += 4;
10875	*(unsigned int *)(ptr) = __size_val; ptr += 4;
10876
10877	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10878	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10879
10880	stream->readback(val, __size_val);
10881	if (useChecksum) checksumCalculator->addBuffer(val, __size_val);
10882	if (useChecksum) {
10883		unsigned char *checksumBufPtr = NULL;
10884		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
10885		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10886		stream->readback(checksumBufPtr, checksumSize);
10887		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10888			ALOGE("glGetMultisamplefv: GL communication error, please report this issue to b.android.com.\n");
10889			abort();
10890		}
10891	}
10892}
10893
10894void glFramebufferParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
10895{
10896
10897	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10898	IOStream *stream = ctx->m_stream;
10899	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10900	bool useChecksum = checksumCalculator->getVersion() > 0;
10901
10902	 unsigned char *ptr;
10903	 unsigned char *buf;
10904	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
10905	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10906	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10907	buf = stream->alloc(totalSize);
10908	ptr = buf;
10909	int tmp = OP_glFramebufferParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
10910	memcpy(ptr, &totalSize, 4);  ptr += 4;
10911
10912		memcpy(ptr, &target, 4); ptr += 4;
10913		memcpy(ptr, &pname, 4); ptr += 4;
10914		memcpy(ptr, &param, 4); ptr += 4;
10915
10916	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10917	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10918
10919}
10920
10921void glGetFramebufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
10922{
10923
10924	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10925	IOStream *stream = ctx->m_stream;
10926	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10927	bool useChecksum = checksumCalculator->getVersion() > 0;
10928
10929	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
10930	 unsigned char *ptr;
10931	 unsigned char *buf;
10932	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
10933	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10934	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10935	buf = stream->alloc(totalSize);
10936	ptr = buf;
10937	int tmp = OP_glGetFramebufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
10938	memcpy(ptr, &totalSize, 4);  ptr += 4;
10939
10940		memcpy(ptr, &target, 4); ptr += 4;
10941		memcpy(ptr, &pname, 4); ptr += 4;
10942	*(unsigned int *)(ptr) = __size_params; ptr += 4;
10943
10944	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10945	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10946
10947	stream->readback(params, __size_params);
10948	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
10949	if (useChecksum) {
10950		unsigned char *checksumBufPtr = NULL;
10951		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
10952		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10953		stream->readback(checksumBufPtr, checksumSize);
10954		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10955			ALOGE("glGetFramebufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
10956			abort();
10957		}
10958	}
10959}
10960
10961void glGetTexLevelParameterfv_enc(void *self , GLenum target, GLint level, GLenum pname, GLfloat* params)
10962{
10963
10964	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
10965	IOStream *stream = ctx->m_stream;
10966	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
10967	bool useChecksum = checksumCalculator->getVersion() > 0;
10968
10969	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
10970	 unsigned char *ptr;
10971	 unsigned char *buf;
10972	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
10973	 const size_t checksumSize = checksumCalculator->checksumByteSize();
10974	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
10975	buf = stream->alloc(totalSize);
10976	ptr = buf;
10977	int tmp = OP_glGetTexLevelParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
10978	memcpy(ptr, &totalSize, 4);  ptr += 4;
10979
10980		memcpy(ptr, &target, 4); ptr += 4;
10981		memcpy(ptr, &level, 4); ptr += 4;
10982		memcpy(ptr, &pname, 4); ptr += 4;
10983	*(unsigned int *)(ptr) = __size_params; ptr += 4;
10984
10985	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
10986	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
10987
10988	stream->readback(params, __size_params);
10989	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
10990	if (useChecksum) {
10991		unsigned char *checksumBufPtr = NULL;
10992		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
10993		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
10994		stream->readback(checksumBufPtr, checksumSize);
10995		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
10996			ALOGE("glGetTexLevelParameterfv: GL communication error, please report this issue to b.android.com.\n");
10997			abort();
10998		}
10999	}
11000}
11001
11002void glGetTexLevelParameteriv_enc(void *self , GLenum target, GLint level, GLenum pname, GLint* params)
11003{
11004
11005	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
11006	IOStream *stream = ctx->m_stream;
11007	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
11008	bool useChecksum = checksumCalculator->getVersion() > 0;
11009
11010	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
11011	 unsigned char *ptr;
11012	 unsigned char *buf;
11013	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
11014	 const size_t checksumSize = checksumCalculator->checksumByteSize();
11015	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
11016	buf = stream->alloc(totalSize);
11017	ptr = buf;
11018	int tmp = OP_glGetTexLevelParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
11019	memcpy(ptr, &totalSize, 4);  ptr += 4;
11020
11021		memcpy(ptr, &target, 4); ptr += 4;
11022		memcpy(ptr, &level, 4); ptr += 4;
11023		memcpy(ptr, &pname, 4); ptr += 4;
11024	*(unsigned int *)(ptr) = __size_params; ptr += 4;
11025
11026	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
11027	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
11028
11029	stream->readback(params, __size_params);
11030	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
11031	if (useChecksum) {
11032		unsigned char *checksumBufPtr = NULL;
11033		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
11034		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
11035		stream->readback(checksumBufPtr, checksumSize);
11036		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
11037			ALOGE("glGetTexLevelParameteriv: GL communication error, please report this issue to b.android.com.\n");
11038			abort();
11039		}
11040	}
11041}
11042
11043}  // namespace
11044
11045gl2_encoder_context_t::gl2_encoder_context_t(IOStream *stream, ChecksumCalculator *checksumCalculator)
11046{
11047	m_stream = stream;
11048	m_checksumCalculator = checksumCalculator;
11049
11050	this->glActiveTexture = &glActiveTexture_enc;
11051	this->glAttachShader = &glAttachShader_enc;
11052	this->glBindAttribLocation = &glBindAttribLocation_enc;
11053	this->glBindBuffer = &glBindBuffer_enc;
11054	this->glBindFramebuffer = &glBindFramebuffer_enc;
11055	this->glBindRenderbuffer = &glBindRenderbuffer_enc;
11056	this->glBindTexture = &glBindTexture_enc;
11057	this->glBlendColor = &glBlendColor_enc;
11058	this->glBlendEquation = &glBlendEquation_enc;
11059	this->glBlendEquationSeparate = &glBlendEquationSeparate_enc;
11060	this->glBlendFunc = &glBlendFunc_enc;
11061	this->glBlendFuncSeparate = &glBlendFuncSeparate_enc;
11062	this->glBufferData = &glBufferData_enc;
11063	this->glBufferSubData = &glBufferSubData_enc;
11064	this->glCheckFramebufferStatus = &glCheckFramebufferStatus_enc;
11065	this->glClear = &glClear_enc;
11066	this->glClearColor = &glClearColor_enc;
11067	this->glClearDepthf = &glClearDepthf_enc;
11068	this->glClearStencil = &glClearStencil_enc;
11069	this->glColorMask = &glColorMask_enc;
11070	this->glCompileShader = &glCompileShader_enc;
11071	this->glCompressedTexImage2D = &glCompressedTexImage2D_enc;
11072	this->glCompressedTexSubImage2D = &glCompressedTexSubImage2D_enc;
11073	this->glCopyTexImage2D = &glCopyTexImage2D_enc;
11074	this->glCopyTexSubImage2D = &glCopyTexSubImage2D_enc;
11075	this->glCreateProgram = &glCreateProgram_enc;
11076	this->glCreateShader = &glCreateShader_enc;
11077	this->glCullFace = &glCullFace_enc;
11078	this->glDeleteBuffers = &glDeleteBuffers_enc;
11079	this->glDeleteFramebuffers = &glDeleteFramebuffers_enc;
11080	this->glDeleteProgram = &glDeleteProgram_enc;
11081	this->glDeleteRenderbuffers = &glDeleteRenderbuffers_enc;
11082	this->glDeleteShader = &glDeleteShader_enc;
11083	this->glDeleteTextures = &glDeleteTextures_enc;
11084	this->glDepthFunc = &glDepthFunc_enc;
11085	this->glDepthMask = &glDepthMask_enc;
11086	this->glDepthRangef = &glDepthRangef_enc;
11087	this->glDetachShader = &glDetachShader_enc;
11088	this->glDisable = &glDisable_enc;
11089	this->glDisableVertexAttribArray = &glDisableVertexAttribArray_enc;
11090	this->glDrawArrays = &glDrawArrays_enc;
11091	this->glDrawElements = (glDrawElements_client_proc_t) &enc_unsupported;
11092	this->glEnable = &glEnable_enc;
11093	this->glEnableVertexAttribArray = &glEnableVertexAttribArray_enc;
11094	this->glFinish = &glFinish_enc;
11095	this->glFlush = &glFlush_enc;
11096	this->glFramebufferRenderbuffer = &glFramebufferRenderbuffer_enc;
11097	this->glFramebufferTexture2D = &glFramebufferTexture2D_enc;
11098	this->glFrontFace = &glFrontFace_enc;
11099	this->glGenBuffers = &glGenBuffers_enc;
11100	this->glGenerateMipmap = &glGenerateMipmap_enc;
11101	this->glGenFramebuffers = &glGenFramebuffers_enc;
11102	this->glGenRenderbuffers = &glGenRenderbuffers_enc;
11103	this->glGenTextures = &glGenTextures_enc;
11104	this->glGetActiveAttrib = &glGetActiveAttrib_enc;
11105	this->glGetActiveUniform = &glGetActiveUniform_enc;
11106	this->glGetAttachedShaders = &glGetAttachedShaders_enc;
11107	this->glGetAttribLocation = &glGetAttribLocation_enc;
11108	this->glGetBooleanv = &glGetBooleanv_enc;
11109	this->glGetBufferParameteriv = &glGetBufferParameteriv_enc;
11110	this->glGetError = &glGetError_enc;
11111	this->glGetFloatv = &glGetFloatv_enc;
11112	this->glGetFramebufferAttachmentParameteriv = &glGetFramebufferAttachmentParameteriv_enc;
11113	this->glGetIntegerv = &glGetIntegerv_enc;
11114	this->glGetProgramiv = &glGetProgramiv_enc;
11115	this->glGetProgramInfoLog = &glGetProgramInfoLog_enc;
11116	this->glGetRenderbufferParameteriv = &glGetRenderbufferParameteriv_enc;
11117	this->glGetShaderiv = &glGetShaderiv_enc;
11118	this->glGetShaderInfoLog = &glGetShaderInfoLog_enc;
11119	this->glGetShaderPrecisionFormat = &glGetShaderPrecisionFormat_enc;
11120	this->glGetShaderSource = &glGetShaderSource_enc;
11121	this->glGetString = (glGetString_client_proc_t) &enc_unsupported;
11122	this->glGetTexParameterfv = &glGetTexParameterfv_enc;
11123	this->glGetTexParameteriv = &glGetTexParameteriv_enc;
11124	this->glGetUniformfv = &glGetUniformfv_enc;
11125	this->glGetUniformiv = &glGetUniformiv_enc;
11126	this->glGetUniformLocation = &glGetUniformLocation_enc;
11127	this->glGetVertexAttribfv = &glGetVertexAttribfv_enc;
11128	this->glGetVertexAttribiv = &glGetVertexAttribiv_enc;
11129	this->glGetVertexAttribPointerv = (glGetVertexAttribPointerv_client_proc_t) &enc_unsupported;
11130	this->glHint = &glHint_enc;
11131	this->glIsBuffer = &glIsBuffer_enc;
11132	this->glIsEnabled = &glIsEnabled_enc;
11133	this->glIsFramebuffer = &glIsFramebuffer_enc;
11134	this->glIsProgram = &glIsProgram_enc;
11135	this->glIsRenderbuffer = &glIsRenderbuffer_enc;
11136	this->glIsShader = &glIsShader_enc;
11137	this->glIsTexture = &glIsTexture_enc;
11138	this->glLineWidth = &glLineWidth_enc;
11139	this->glLinkProgram = &glLinkProgram_enc;
11140	this->glPixelStorei = &glPixelStorei_enc;
11141	this->glPolygonOffset = &glPolygonOffset_enc;
11142	this->glReadPixels = &glReadPixels_enc;
11143	this->glReleaseShaderCompiler = &glReleaseShaderCompiler_enc;
11144	this->glRenderbufferStorage = &glRenderbufferStorage_enc;
11145	this->glSampleCoverage = &glSampleCoverage_enc;
11146	this->glScissor = &glScissor_enc;
11147	this->glShaderBinary = (glShaderBinary_client_proc_t) &enc_unsupported;
11148	this->glShaderSource = (glShaderSource_client_proc_t) &enc_unsupported;
11149	this->glStencilFunc = &glStencilFunc_enc;
11150	this->glStencilFuncSeparate = &glStencilFuncSeparate_enc;
11151	this->glStencilMask = &glStencilMask_enc;
11152	this->glStencilMaskSeparate = &glStencilMaskSeparate_enc;
11153	this->glStencilOp = &glStencilOp_enc;
11154	this->glStencilOpSeparate = &glStencilOpSeparate_enc;
11155	this->glTexImage2D = &glTexImage2D_enc;
11156	this->glTexParameterf = &glTexParameterf_enc;
11157	this->glTexParameterfv = &glTexParameterfv_enc;
11158	this->glTexParameteri = &glTexParameteri_enc;
11159	this->glTexParameteriv = &glTexParameteriv_enc;
11160	this->glTexSubImage2D = &glTexSubImage2D_enc;
11161	this->glUniform1f = &glUniform1f_enc;
11162	this->glUniform1fv = &glUniform1fv_enc;
11163	this->glUniform1i = &glUniform1i_enc;
11164	this->glUniform1iv = &glUniform1iv_enc;
11165	this->glUniform2f = &glUniform2f_enc;
11166	this->glUniform2fv = &glUniform2fv_enc;
11167	this->glUniform2i = &glUniform2i_enc;
11168	this->glUniform2iv = &glUniform2iv_enc;
11169	this->glUniform3f = &glUniform3f_enc;
11170	this->glUniform3fv = &glUniform3fv_enc;
11171	this->glUniform3i = &glUniform3i_enc;
11172	this->glUniform3iv = &glUniform3iv_enc;
11173	this->glUniform4f = &glUniform4f_enc;
11174	this->glUniform4fv = &glUniform4fv_enc;
11175	this->glUniform4i = &glUniform4i_enc;
11176	this->glUniform4iv = &glUniform4iv_enc;
11177	this->glUniformMatrix2fv = &glUniformMatrix2fv_enc;
11178	this->glUniformMatrix3fv = &glUniformMatrix3fv_enc;
11179	this->glUniformMatrix4fv = &glUniformMatrix4fv_enc;
11180	this->glUseProgram = &glUseProgram_enc;
11181	this->glValidateProgram = &glValidateProgram_enc;
11182	this->glVertexAttrib1f = &glVertexAttrib1f_enc;
11183	this->glVertexAttrib1fv = &glVertexAttrib1fv_enc;
11184	this->glVertexAttrib2f = &glVertexAttrib2f_enc;
11185	this->glVertexAttrib2fv = &glVertexAttrib2fv_enc;
11186	this->glVertexAttrib3f = &glVertexAttrib3f_enc;
11187	this->glVertexAttrib3fv = &glVertexAttrib3fv_enc;
11188	this->glVertexAttrib4f = &glVertexAttrib4f_enc;
11189	this->glVertexAttrib4fv = &glVertexAttrib4fv_enc;
11190	this->glVertexAttribPointer = (glVertexAttribPointer_client_proc_t) &enc_unsupported;
11191	this->glViewport = &glViewport_enc;
11192	this->glEGLImageTargetTexture2DOES = &glEGLImageTargetTexture2DOES_enc;
11193	this->glEGLImageTargetRenderbufferStorageOES = &glEGLImageTargetRenderbufferStorageOES_enc;
11194	this->glGetProgramBinaryOES = (glGetProgramBinaryOES_client_proc_t) &enc_unsupported;
11195	this->glProgramBinaryOES = (glProgramBinaryOES_client_proc_t) &enc_unsupported;
11196	this->glMapBufferOES = (glMapBufferOES_client_proc_t) &enc_unsupported;
11197	this->glUnmapBufferOES = &glUnmapBufferOES_enc;
11198	this->glTexImage3DOES = &glTexImage3DOES_enc;
11199	this->glTexSubImage3DOES = &glTexSubImage3DOES_enc;
11200	this->glCopyTexSubImage3DOES = &glCopyTexSubImage3DOES_enc;
11201	this->glCompressedTexImage3DOES = &glCompressedTexImage3DOES_enc;
11202	this->glCompressedTexSubImage3DOES = &glCompressedTexSubImage3DOES_enc;
11203	this->glFramebufferTexture3DOES = &glFramebufferTexture3DOES_enc;
11204	this->glBindVertexArrayOES = &glBindVertexArrayOES_enc;
11205	this->glDeleteVertexArraysOES = &glDeleteVertexArraysOES_enc;
11206	this->glGenVertexArraysOES = &glGenVertexArraysOES_enc;
11207	this->glIsVertexArrayOES = &glIsVertexArrayOES_enc;
11208	this->glDiscardFramebufferEXT = &glDiscardFramebufferEXT_enc;
11209	this->glMultiDrawArraysEXT = (glMultiDrawArraysEXT_client_proc_t) &enc_unsupported;
11210	this->glMultiDrawElementsEXT = (glMultiDrawElementsEXT_client_proc_t) &enc_unsupported;
11211	this->glGetPerfMonitorGroupsAMD = (glGetPerfMonitorGroupsAMD_client_proc_t) &enc_unsupported;
11212	this->glGetPerfMonitorCountersAMD = (glGetPerfMonitorCountersAMD_client_proc_t) &enc_unsupported;
11213	this->glGetPerfMonitorGroupStringAMD = (glGetPerfMonitorGroupStringAMD_client_proc_t) &enc_unsupported;
11214	this->glGetPerfMonitorCounterStringAMD = (glGetPerfMonitorCounterStringAMD_client_proc_t) &enc_unsupported;
11215	this->glGetPerfMonitorCounterInfoAMD = (glGetPerfMonitorCounterInfoAMD_client_proc_t) &enc_unsupported;
11216	this->glGenPerfMonitorsAMD = (glGenPerfMonitorsAMD_client_proc_t) &enc_unsupported;
11217	this->glDeletePerfMonitorsAMD = (glDeletePerfMonitorsAMD_client_proc_t) &enc_unsupported;
11218	this->glSelectPerfMonitorCountersAMD = (glSelectPerfMonitorCountersAMD_client_proc_t) &enc_unsupported;
11219	this->glBeginPerfMonitorAMD = (glBeginPerfMonitorAMD_client_proc_t) &enc_unsupported;
11220	this->glEndPerfMonitorAMD = (glEndPerfMonitorAMD_client_proc_t) &enc_unsupported;
11221	this->glGetPerfMonitorCounterDataAMD = (glGetPerfMonitorCounterDataAMD_client_proc_t) &enc_unsupported;
11222	this->glRenderbufferStorageMultisampleIMG = (glRenderbufferStorageMultisampleIMG_client_proc_t) &enc_unsupported;
11223	this->glFramebufferTexture2DMultisampleIMG = (glFramebufferTexture2DMultisampleIMG_client_proc_t) &enc_unsupported;
11224	this->glDeleteFencesNV = (glDeleteFencesNV_client_proc_t) &enc_unsupported;
11225	this->glGenFencesNV = (glGenFencesNV_client_proc_t) &enc_unsupported;
11226	this->glIsFenceNV = (glIsFenceNV_client_proc_t) &enc_unsupported;
11227	this->glTestFenceNV = (glTestFenceNV_client_proc_t) &enc_unsupported;
11228	this->glGetFenceivNV = (glGetFenceivNV_client_proc_t) &enc_unsupported;
11229	this->glFinishFenceNV = (glFinishFenceNV_client_proc_t) &enc_unsupported;
11230	this->glSetFenceNV = (glSetFenceNV_client_proc_t) &enc_unsupported;
11231	this->glCoverageMaskNV = (glCoverageMaskNV_client_proc_t) &enc_unsupported;
11232	this->glCoverageOperationNV = (glCoverageOperationNV_client_proc_t) &enc_unsupported;
11233	this->glGetDriverControlsQCOM = (glGetDriverControlsQCOM_client_proc_t) &enc_unsupported;
11234	this->glGetDriverControlStringQCOM = (glGetDriverControlStringQCOM_client_proc_t) &enc_unsupported;
11235	this->glEnableDriverControlQCOM = (glEnableDriverControlQCOM_client_proc_t) &enc_unsupported;
11236	this->glDisableDriverControlQCOM = (glDisableDriverControlQCOM_client_proc_t) &enc_unsupported;
11237	this->glExtGetTexturesQCOM = (glExtGetTexturesQCOM_client_proc_t) &enc_unsupported;
11238	this->glExtGetBuffersQCOM = (glExtGetBuffersQCOM_client_proc_t) &enc_unsupported;
11239	this->glExtGetRenderbuffersQCOM = (glExtGetRenderbuffersQCOM_client_proc_t) &enc_unsupported;
11240	this->glExtGetFramebuffersQCOM = (glExtGetFramebuffersQCOM_client_proc_t) &enc_unsupported;
11241	this->glExtGetTexLevelParameterivQCOM = (glExtGetTexLevelParameterivQCOM_client_proc_t) &enc_unsupported;
11242	this->glExtTexObjectStateOverrideiQCOM = (glExtTexObjectStateOverrideiQCOM_client_proc_t) &enc_unsupported;
11243	this->glExtGetTexSubImageQCOM = (glExtGetTexSubImageQCOM_client_proc_t) &enc_unsupported;
11244	this->glExtGetBufferPointervQCOM = (glExtGetBufferPointervQCOM_client_proc_t) &enc_unsupported;
11245	this->glExtGetShadersQCOM = (glExtGetShadersQCOM_client_proc_t) &enc_unsupported;
11246	this->glExtGetProgramsQCOM = (glExtGetProgramsQCOM_client_proc_t) &enc_unsupported;
11247	this->glExtIsProgramBinaryQCOM = (glExtIsProgramBinaryQCOM_client_proc_t) &enc_unsupported;
11248	this->glExtGetProgramBinarySourceQCOM = (glExtGetProgramBinarySourceQCOM_client_proc_t) &enc_unsupported;
11249	this->glStartTilingQCOM = (glStartTilingQCOM_client_proc_t) &enc_unsupported;
11250	this->glEndTilingQCOM = (glEndTilingQCOM_client_proc_t) &enc_unsupported;
11251	this->glVertexAttribPointerData = &glVertexAttribPointerData_enc;
11252	this->glVertexAttribPointerOffset = &glVertexAttribPointerOffset_enc;
11253	this->glDrawElementsOffset = &glDrawElementsOffset_enc;
11254	this->glDrawElementsData = &glDrawElementsData_enc;
11255	this->glGetCompressedTextureFormats = &glGetCompressedTextureFormats_enc;
11256	this->glShaderString = &glShaderString_enc;
11257	this->glFinishRoundTrip = &glFinishRoundTrip_enc;
11258	this->glGenVertexArrays = &glGenVertexArrays_enc;
11259	this->glBindVertexArray = &glBindVertexArray_enc;
11260	this->glDeleteVertexArrays = &glDeleteVertexArrays_enc;
11261	this->glIsVertexArray = &glIsVertexArray_enc;
11262	this->glMapBufferRange = (glMapBufferRange_client_proc_t) &enc_unsupported;
11263	this->glUnmapBuffer = (glUnmapBuffer_client_proc_t) &enc_unsupported;
11264	this->glFlushMappedBufferRange = (glFlushMappedBufferRange_client_proc_t) &enc_unsupported;
11265	this->glMapBufferRangeAEMU = &glMapBufferRangeAEMU_enc;
11266	this->glUnmapBufferAEMU = &glUnmapBufferAEMU_enc;
11267	this->glFlushMappedBufferRangeAEMU = &glFlushMappedBufferRangeAEMU_enc;
11268	this->glReadPixelsOffsetAEMU = &glReadPixelsOffsetAEMU_enc;
11269	this->glCompressedTexImage2DOffsetAEMU = &glCompressedTexImage2DOffsetAEMU_enc;
11270	this->glCompressedTexSubImage2DOffsetAEMU = &glCompressedTexSubImage2DOffsetAEMU_enc;
11271	this->glTexImage2DOffsetAEMU = &glTexImage2DOffsetAEMU_enc;
11272	this->glTexSubImage2DOffsetAEMU = &glTexSubImage2DOffsetAEMU_enc;
11273	this->glBindBufferRange = &glBindBufferRange_enc;
11274	this->glBindBufferBase = &glBindBufferBase_enc;
11275	this->glCopyBufferSubData = &glCopyBufferSubData_enc;
11276	this->glClearBufferiv = &glClearBufferiv_enc;
11277	this->glClearBufferuiv = &glClearBufferuiv_enc;
11278	this->glClearBufferfv = &glClearBufferfv_enc;
11279	this->glClearBufferfi = &glClearBufferfi_enc;
11280	this->glGetBufferParameteri64v = (glGetBufferParameteri64v_client_proc_t) &enc_unsupported;
11281	this->glGetBufferPointerv = (glGetBufferPointerv_client_proc_t) &enc_unsupported;
11282	this->glUniformBlockBinding = &glUniformBlockBinding_enc;
11283	this->glGetUniformBlockIndex = &glGetUniformBlockIndex_enc;
11284	this->glGetUniformIndices = (glGetUniformIndices_client_proc_t) &enc_unsupported;
11285	this->glGetUniformIndicesAEMU = &glGetUniformIndicesAEMU_enc;
11286	this->glGetActiveUniformBlockiv = &glGetActiveUniformBlockiv_enc;
11287	this->glGetActiveUniformBlockName = &glGetActiveUniformBlockName_enc;
11288	this->glUniform1ui = &glUniform1ui_enc;
11289	this->glUniform2ui = &glUniform2ui_enc;
11290	this->glUniform3ui = &glUniform3ui_enc;
11291	this->glUniform4ui = &glUniform4ui_enc;
11292	this->glUniform1uiv = &glUniform1uiv_enc;
11293	this->glUniform2uiv = &glUniform2uiv_enc;
11294	this->glUniform3uiv = &glUniform3uiv_enc;
11295	this->glUniform4uiv = &glUniform4uiv_enc;
11296	this->glUniformMatrix2x3fv = &glUniformMatrix2x3fv_enc;
11297	this->glUniformMatrix3x2fv = &glUniformMatrix3x2fv_enc;
11298	this->glUniformMatrix2x4fv = &glUniformMatrix2x4fv_enc;
11299	this->glUniformMatrix4x2fv = &glUniformMatrix4x2fv_enc;
11300	this->glUniformMatrix3x4fv = &glUniformMatrix3x4fv_enc;
11301	this->glUniformMatrix4x3fv = &glUniformMatrix4x3fv_enc;
11302	this->glGetUniformuiv = &glGetUniformuiv_enc;
11303	this->glGetActiveUniformsiv = &glGetActiveUniformsiv_enc;
11304	this->glVertexAttribI4i = &glVertexAttribI4i_enc;
11305	this->glVertexAttribI4ui = &glVertexAttribI4ui_enc;
11306	this->glVertexAttribI4iv = &glVertexAttribI4iv_enc;
11307	this->glVertexAttribI4uiv = &glVertexAttribI4uiv_enc;
11308	this->glVertexAttribIPointer = (glVertexAttribIPointer_client_proc_t) &enc_unsupported;
11309	this->glVertexAttribIPointerOffsetAEMU = &glVertexAttribIPointerOffsetAEMU_enc;
11310	this->glVertexAttribIPointerDataAEMU = &glVertexAttribIPointerDataAEMU_enc;
11311	this->glGetVertexAttribIiv = &glGetVertexAttribIiv_enc;
11312	this->glGetVertexAttribIuiv = &glGetVertexAttribIuiv_enc;
11313	this->glVertexAttribDivisor = &glVertexAttribDivisor_enc;
11314	this->glDrawArraysInstanced = &glDrawArraysInstanced_enc;
11315	this->glDrawElementsInstanced = (glDrawElementsInstanced_client_proc_t) &enc_unsupported;
11316	this->glDrawElementsInstancedDataAEMU = &glDrawElementsInstancedDataAEMU_enc;
11317	this->glDrawElementsInstancedOffsetAEMU = &glDrawElementsInstancedOffsetAEMU_enc;
11318	this->glDrawRangeElements = (glDrawRangeElements_client_proc_t) &enc_unsupported;
11319	this->glDrawRangeElementsDataAEMU = &glDrawRangeElementsDataAEMU_enc;
11320	this->glDrawRangeElementsOffsetAEMU = &glDrawRangeElementsOffsetAEMU_enc;
11321	this->glFenceSync = (glFenceSync_client_proc_t) &enc_unsupported;
11322	this->glClientWaitSync = (glClientWaitSync_client_proc_t) &enc_unsupported;
11323	this->glWaitSync = (glWaitSync_client_proc_t) &enc_unsupported;
11324	this->glDeleteSync = (glDeleteSync_client_proc_t) &enc_unsupported;
11325	this->glIsSync = (glIsSync_client_proc_t) &enc_unsupported;
11326	this->glGetSynciv = (glGetSynciv_client_proc_t) &enc_unsupported;
11327	this->glFenceSyncAEMU = &glFenceSyncAEMU_enc;
11328	this->glClientWaitSyncAEMU = &glClientWaitSyncAEMU_enc;
11329	this->glWaitSyncAEMU = &glWaitSyncAEMU_enc;
11330	this->glDeleteSyncAEMU = &glDeleteSyncAEMU_enc;
11331	this->glIsSyncAEMU = &glIsSyncAEMU_enc;
11332	this->glGetSyncivAEMU = &glGetSyncivAEMU_enc;
11333	this->glDrawBuffers = &glDrawBuffers_enc;
11334	this->glReadBuffer = &glReadBuffer_enc;
11335	this->glBlitFramebuffer = &glBlitFramebuffer_enc;
11336	this->glInvalidateFramebuffer = &glInvalidateFramebuffer_enc;
11337	this->glInvalidateSubFramebuffer = &glInvalidateSubFramebuffer_enc;
11338	this->glFramebufferTextureLayer = &glFramebufferTextureLayer_enc;
11339	this->glRenderbufferStorageMultisample = &glRenderbufferStorageMultisample_enc;
11340	this->glTexStorage2D = &glTexStorage2D_enc;
11341	this->glGetInternalformativ = &glGetInternalformativ_enc;
11342	this->glBeginTransformFeedback = &glBeginTransformFeedback_enc;
11343	this->glEndTransformFeedback = &glEndTransformFeedback_enc;
11344	this->glGenTransformFeedbacks = &glGenTransformFeedbacks_enc;
11345	this->glDeleteTransformFeedbacks = &glDeleteTransformFeedbacks_enc;
11346	this->glBindTransformFeedback = &glBindTransformFeedback_enc;
11347	this->glPauseTransformFeedback = &glPauseTransformFeedback_enc;
11348	this->glResumeTransformFeedback = &glResumeTransformFeedback_enc;
11349	this->glIsTransformFeedback = &glIsTransformFeedback_enc;
11350	this->glTransformFeedbackVaryings = (glTransformFeedbackVaryings_client_proc_t) &enc_unsupported;
11351	this->glTransformFeedbackVaryingsAEMU = &glTransformFeedbackVaryingsAEMU_enc;
11352	this->glGetTransformFeedbackVarying = &glGetTransformFeedbackVarying_enc;
11353	this->glGenSamplers = &glGenSamplers_enc;
11354	this->glDeleteSamplers = &glDeleteSamplers_enc;
11355	this->glBindSampler = &glBindSampler_enc;
11356	this->glSamplerParameterf = &glSamplerParameterf_enc;
11357	this->glSamplerParameteri = &glSamplerParameteri_enc;
11358	this->glSamplerParameterfv = &glSamplerParameterfv_enc;
11359	this->glSamplerParameteriv = &glSamplerParameteriv_enc;
11360	this->glGetSamplerParameterfv = &glGetSamplerParameterfv_enc;
11361	this->glGetSamplerParameteriv = &glGetSamplerParameteriv_enc;
11362	this->glIsSampler = &glIsSampler_enc;
11363	this->glGenQueries = &glGenQueries_enc;
11364	this->glDeleteQueries = &glDeleteQueries_enc;
11365	this->glBeginQuery = &glBeginQuery_enc;
11366	this->glEndQuery = &glEndQuery_enc;
11367	this->glGetQueryiv = &glGetQueryiv_enc;
11368	this->glGetQueryObjectuiv = &glGetQueryObjectuiv_enc;
11369	this->glIsQuery = &glIsQuery_enc;
11370	this->glProgramParameteri = &glProgramParameteri_enc;
11371	this->glProgramBinary = &glProgramBinary_enc;
11372	this->glGetProgramBinary = &glGetProgramBinary_enc;
11373	this->glGetFragDataLocation = &glGetFragDataLocation_enc;
11374	this->glGetInteger64v = &glGetInteger64v_enc;
11375	this->glGetIntegeri_v = &glGetIntegeri_v_enc;
11376	this->glGetInteger64i_v = &glGetInteger64i_v_enc;
11377	this->glTexImage3D = &glTexImage3D_enc;
11378	this->glTexImage3DOffsetAEMU = &glTexImage3DOffsetAEMU_enc;
11379	this->glTexStorage3D = &glTexStorage3D_enc;
11380	this->glTexSubImage3D = &glTexSubImage3D_enc;
11381	this->glTexSubImage3DOffsetAEMU = &glTexSubImage3DOffsetAEMU_enc;
11382	this->glCompressedTexImage3D = &glCompressedTexImage3D_enc;
11383	this->glCompressedTexImage3DOffsetAEMU = &glCompressedTexImage3DOffsetAEMU_enc;
11384	this->glCompressedTexSubImage3D = &glCompressedTexSubImage3D_enc;
11385	this->glCompressedTexSubImage3DOffsetAEMU = &glCompressedTexSubImage3DOffsetAEMU_enc;
11386	this->glCopyTexSubImage3D = &glCopyTexSubImage3D_enc;
11387	this->glGetStringi = (glGetStringi_client_proc_t) &enc_unsupported;
11388	this->glGetBooleani_v = &glGetBooleani_v_enc;
11389	this->glMemoryBarrier = &glMemoryBarrier_enc;
11390	this->glMemoryBarrierByRegion = &glMemoryBarrierByRegion_enc;
11391	this->glGenProgramPipelines = &glGenProgramPipelines_enc;
11392	this->glDeleteProgramPipelines = &glDeleteProgramPipelines_enc;
11393	this->glBindProgramPipeline = &glBindProgramPipeline_enc;
11394	this->glGetProgramPipelineiv = &glGetProgramPipelineiv_enc;
11395	this->glGetProgramPipelineInfoLog = &glGetProgramPipelineInfoLog_enc;
11396	this->glValidateProgramPipeline = &glValidateProgramPipeline_enc;
11397	this->glIsProgramPipeline = &glIsProgramPipeline_enc;
11398	this->glUseProgramStages = &glUseProgramStages_enc;
11399	this->glActiveShaderProgram = &glActiveShaderProgram_enc;
11400	this->glCreateShaderProgramv = (glCreateShaderProgramv_client_proc_t) &enc_unsupported;
11401	this->glCreateShaderProgramvAEMU = &glCreateShaderProgramvAEMU_enc;
11402	this->glProgramUniform1f = &glProgramUniform1f_enc;
11403	this->glProgramUniform2f = &glProgramUniform2f_enc;
11404	this->glProgramUniform3f = &glProgramUniform3f_enc;
11405	this->glProgramUniform4f = &glProgramUniform4f_enc;
11406	this->glProgramUniform1i = &glProgramUniform1i_enc;
11407	this->glProgramUniform2i = &glProgramUniform2i_enc;
11408	this->glProgramUniform3i = &glProgramUniform3i_enc;
11409	this->glProgramUniform4i = &glProgramUniform4i_enc;
11410	this->glProgramUniform1ui = &glProgramUniform1ui_enc;
11411	this->glProgramUniform2ui = &glProgramUniform2ui_enc;
11412	this->glProgramUniform3ui = &glProgramUniform3ui_enc;
11413	this->glProgramUniform4ui = &glProgramUniform4ui_enc;
11414	this->glProgramUniform1fv = &glProgramUniform1fv_enc;
11415	this->glProgramUniform2fv = &glProgramUniform2fv_enc;
11416	this->glProgramUniform3fv = &glProgramUniform3fv_enc;
11417	this->glProgramUniform4fv = &glProgramUniform4fv_enc;
11418	this->glProgramUniform1iv = &glProgramUniform1iv_enc;
11419	this->glProgramUniform2iv = &glProgramUniform2iv_enc;
11420	this->glProgramUniform3iv = &glProgramUniform3iv_enc;
11421	this->glProgramUniform4iv = &glProgramUniform4iv_enc;
11422	this->glProgramUniform1uiv = &glProgramUniform1uiv_enc;
11423	this->glProgramUniform2uiv = &glProgramUniform2uiv_enc;
11424	this->glProgramUniform3uiv = &glProgramUniform3uiv_enc;
11425	this->glProgramUniform4uiv = &glProgramUniform4uiv_enc;
11426	this->glProgramUniformMatrix2fv = &glProgramUniformMatrix2fv_enc;
11427	this->glProgramUniformMatrix3fv = &glProgramUniformMatrix3fv_enc;
11428	this->glProgramUniformMatrix4fv = &glProgramUniformMatrix4fv_enc;
11429	this->glProgramUniformMatrix2x3fv = &glProgramUniformMatrix2x3fv_enc;
11430	this->glProgramUniformMatrix3x2fv = &glProgramUniformMatrix3x2fv_enc;
11431	this->glProgramUniformMatrix2x4fv = &glProgramUniformMatrix2x4fv_enc;
11432	this->glProgramUniformMatrix4x2fv = &glProgramUniformMatrix4x2fv_enc;
11433	this->glProgramUniformMatrix3x4fv = &glProgramUniformMatrix3x4fv_enc;
11434	this->glProgramUniformMatrix4x3fv = &glProgramUniformMatrix4x3fv_enc;
11435	this->glGetProgramInterfaceiv = &glGetProgramInterfaceiv_enc;
11436	this->glGetProgramResourceiv = &glGetProgramResourceiv_enc;
11437	this->glGetProgramResourceIndex = &glGetProgramResourceIndex_enc;
11438	this->glGetProgramResourceLocation = &glGetProgramResourceLocation_enc;
11439	this->glGetProgramResourceName = &glGetProgramResourceName_enc;
11440	this->glBindImageTexture = &glBindImageTexture_enc;
11441	this->glDispatchCompute = &glDispatchCompute_enc;
11442	this->glDispatchComputeIndirect = &glDispatchComputeIndirect_enc;
11443	this->glBindVertexBuffer = &glBindVertexBuffer_enc;
11444	this->glVertexAttribBinding = &glVertexAttribBinding_enc;
11445	this->glVertexAttribFormat = &glVertexAttribFormat_enc;
11446	this->glVertexAttribIFormat = &glVertexAttribIFormat_enc;
11447	this->glVertexBindingDivisor = &glVertexBindingDivisor_enc;
11448	this->glDrawArraysIndirect = (glDrawArraysIndirect_client_proc_t) &enc_unsupported;
11449	this->glDrawArraysIndirectDataAEMU = &glDrawArraysIndirectDataAEMU_enc;
11450	this->glDrawArraysIndirectOffsetAEMU = &glDrawArraysIndirectOffsetAEMU_enc;
11451	this->glDrawElementsIndirect = (glDrawElementsIndirect_client_proc_t) &enc_unsupported;
11452	this->glDrawElementsIndirectDataAEMU = &glDrawElementsIndirectDataAEMU_enc;
11453	this->glDrawElementsIndirectOffsetAEMU = &glDrawElementsIndirectOffsetAEMU_enc;
11454	this->glTexStorage2DMultisample = &glTexStorage2DMultisample_enc;
11455	this->glSampleMaski = &glSampleMaski_enc;
11456	this->glGetMultisamplefv = &glGetMultisamplefv_enc;
11457	this->glFramebufferParameteri = &glFramebufferParameteri_enc;
11458	this->glGetFramebufferParameteriv = &glGetFramebufferParameteriv_enc;
11459	this->glGetTexLevelParameterfv = &glGetTexLevelParameterfv_enc;
11460	this->glGetTexLevelParameteriv = &glGetTexLevelParameteriv_enc;
11461}
11462
11463