Home | History | Annotate | Download | only in GLESv2_enc
      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 
     13 namespace {
     14 
     15 void enc_unsupported()
     16 {
     17 	ALOGE("Function is unsupported\n");
     18 }
     19 
     20 void 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 
     45 void 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 
     71 void 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 
    100 void 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 
    126 void 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 
    152 void 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 
    178 void 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 
    204 void 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 
    232 void 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 
    257 void 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 
    283 void 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 
    309 void 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 
    337 void 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 
    377 void 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 
    413 GLenum 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 
    453 void 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 
    478 void 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 
    506 void 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 
    531 void 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 
    556 void 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 
    584 void 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 
    609 void 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 
    649 void 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 
    690 void 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 
    722 void 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 
    754 GLuint 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 
    793 GLuint 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 
    833 void 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 
    858 void 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 
    886 void 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 
    914 void 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 
    939 void 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 
    967 void 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 
    992 void 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 
   1020 void 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 
   1045 void 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 
   1070 void 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 
   1096 void 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 
   1122 void 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 
   1147 void 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 
   1172 void 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 
   1199 void 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 
   1224 void 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 
   1249 void 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 
   1273 void 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 
   1297 void 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 
   1325 void 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 
   1354 void 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 
   1379 void 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 
   1418 void 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 
   1443 void 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 
   1482 void 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 
   1521 void 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 
   1560 void 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 
   1621 void 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 
   1682 void 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 
   1728 int 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 
   1771 void 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 
   1810 void 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 
   1850 GLenum 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 
   1889 void 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 
   1928 void 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 
   1969 void 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 
   2008 void 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 
   2048 void 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 
   2094 void 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 
   2134 void 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 
   2174 void 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 
   2220 void 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 
   2264 void 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 
   2310 void 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 
   2350 void 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 
   2390 void 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 
   2430 void 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 
   2470 int 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 
   2513 void 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 
   2553 void 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 
   2593 void 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 
   2619 GLboolean 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 
   2659 GLboolean 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 
   2699 GLboolean 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 
   2739 GLboolean 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 
   2779 GLboolean 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 
   2819 GLboolean 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 
   2859 GLboolean 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 
   2899 void 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 
   2924 void 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 
   2949 void 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 
   2975 void 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 
   3001 void 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 
   3045 void 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 
   3069 void 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 
   3097 void 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 
   3123 void 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 
   3151 void 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 
   3178 void 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 
   3206 void 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 
   3231 void 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 
   3257 void 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 
   3284 void 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 
   3312 void 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 
   3353 void 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 
   3380 void 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 
   3409 void 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 
   3436 void 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 
   3465 void 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 
   3506 void 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 
   3532 void 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 
   3561 void 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 
   3587 void 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 
   3616 void 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 
   3643 void 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 
   3672 void 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 
   3699 void 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 
   3728 void 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 
   3756 void 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 
   3785 void 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 
   3813 void 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 
   3842 void 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 
   3871 void 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 
   3900 void 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 
   3929 void 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 
   3958 void 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 
   3988 void 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 
   4018 void 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 
   4048 void 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 
   4073 void 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 
   4098 void 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 
   4124 void 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 
   4152 void 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 
   4179 void 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 
   4207 void 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 
   4235 void 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 
   4263 void 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 
   4292 void 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 
   4320 void 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 
   4348 void 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 
   4374 void 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 
   4400 GLboolean 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 
   4440 void glTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
   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 
   4482 void glTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels)
   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 
   4525 void 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 
   4558 void 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 
   4599 void glCompressedTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
   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 
   4642 void 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 
   4672 void 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 
   4697 void 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 
   4725 void 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 
   4764 GLboolean 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 
   4804 void 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 
   4833 void 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 
   4866 void 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 
   4896 void 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 
   4924 void 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 
   4955 void 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 
   4994 void 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 
   5023 int 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 
   5062 void 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 
   5101 void 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 
   5126 void 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 
   5154 GLboolean 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 
   5194 void 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 
   5238 void 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 
   5283 void 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 
   5314 void 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 
   5345 void 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 
   5377 void 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 
   5410 void 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 
   5443 void 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 
   5476 void 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 
   5505 void 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 
   5532 void 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 
   5562 void 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 
   5591 void 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 
   5620 void 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 
   5649 void 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 
   5677 void 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 
   5704 GLuint 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 
   5747 void 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 
   5791 void 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 
   5832 void 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 
   5881 void 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 
   5907 void 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 
   5934 void 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 
   5962 void 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 
   5991 void 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 
   6020 void 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 
   6049 void 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 
   6078 void 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 
   6107 void 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 
   6137 void 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 
   6167 void 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 
   6197 void 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 
   6227 void 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 
   6257 void 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 
   6287 void 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 
   6327 void 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 
   6371 void 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 
   6400 void 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 
   6429 void 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 
   6457 void 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 
   6485 void 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 
   6514 void 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 
   6546 void 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 
   6586 void 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 
   6626 void 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 
   6652 void 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 
   6680 void 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 
   6712 void 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 
   6741 void 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 
   6774 void 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 
   6804 uint64_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 
   6845 GLenum 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 
   6887 void 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 
   6914 void 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 
   6939 GLboolean 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 
   6979 void 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 
   7026 void 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 
   7054 void 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 
   7079 void glBlitFramebuffer_enc(void *self , GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
   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 
   7113 void 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 
   7142 void 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 
   7175 void 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 
   7204 void 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 
   7233 void 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 
   7262 void 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 
   7304 void 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 
   7329 void 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 
   7353 void 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 
   7392 void 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 
   7420 void 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 
   7446 void 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 
   7470 void 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 
   7494 GLboolean 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 
   7534 void 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 
   7565 void 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 
   7624 void 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 
   7663 void 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 
   7691 void 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 
   7717 void 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 
   7744 void 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 
   7771 void 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 
   7800 void 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 
   7829 void 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 
   7869 void 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 
   7909 GLboolean 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 
   7949 void 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 
   7988 void 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 
   8016 void 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 
   8042 void 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 
   8067 void 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 
   8107 void 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 
   8147 GLboolean 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 
   8187 void 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 
   8214 void 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 
   8244 void 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 
   8294 GLint 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 
   8337 void 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 
   8376 void 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 
   8416 void 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 
   8456 void glTexImage3D_enc(void *self , GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* data)
   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 
   8498 void glTexImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLuint offset)
   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 
   8532 void 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 
   8562 void glTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* data)
   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 
   8605 void glTexSubImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLuint offset)
   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 
   8640 void 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 
   8681 void 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 
   8714 void glCompressedTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
   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 
   8757 void glCompressedTexSubImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLuint data)
   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 
   8792 void 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 
   8825 void 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 
   8865 void 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 
   8890 void 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 
   8915 void 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 
   8954 void 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 
   8982 void 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 
   9007 void 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 
   9047 void 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 
   9093 void 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 
   9118 GLboolean 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 
   9158 void 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 
   9185 void 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 
   9211 GLuint 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 
   9256 void 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 
   9283 void 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 
   9311 void 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 
   9340 void 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 
   9370 void 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 
   9397 void 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 
   9425 void 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 
   9454 void 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 
   9484 void 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 
   9511 void 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 
   9539 void 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 
   9568 void 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 
   9598 void 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 
   9628 void 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 
   9658 void 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 
   9688 void 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 
   9718 void 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 
   9748 void 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 
   9778 void 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 
   9808 void 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 
   9838 void 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 
   9868 void 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 
   9898 void 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 
   9928 void 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 
   9958 void 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 
   9989 void 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 
   10020 void 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 
   10051 void 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 
   10082 void 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 
   10113 void 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 
   10144 void 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 
   10175 void 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 
   10206 void 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 
   10237 void 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 
   10278 void 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 
   10330 GLuint 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 
   10374 GLint 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 
   10418 void 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 
   10466 void 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 
   10497 void 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 
   10524 void 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 
   10549 void 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 
   10577 void 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 
   10603 void 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 
   10632 void 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 
   10660 void 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 
   10686 void 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 
   10715 void 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 
   10741 void 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 
   10771 void 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 
   10798 void 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 
   10828 void 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 
   10854 void 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 
   10894 void 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 
   10921 void 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 
   10961 void 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 
   11002 void 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 
   11045 gl2_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