// Generated Code - DO NOT EDIT !! // generated by 'emugen' #include #include "gles2_opcodes.h" #include "gles2_dec.h" #include "ProtocolUtils.h" #include "ChecksumCalculatorThreadInfo.h" #include typedef unsigned int tsize_t; // Target "size_t", which is 32-bit for now. It may or may not be the same as host's size_t when emugen is compiled. #ifdef CHECK_GL_ERRORS # define SET_LASTCALL(name) sprintf(lastCall, #name) #else # define SET_LASTCALL(name) #endif using namespace emugl; size_t gles2_decoder_context_t::decode(void *buf, size_t len, IOStream *stream, ChecksumCalculator* checksumCalc) { if (len < 8) return 0; #ifdef CHECK_GL_ERRORS char lastCall[256] = {0}; #endif unsigned char *ptr = (unsigned char *)buf; const unsigned char* const end = (const unsigned char*)buf + len; const size_t checksumSize = checksumCalc->checksumByteSize(); const bool useChecksum = checksumSize > 0; while (end - ptr >= 8) { uint32_t opcode = *(uint32_t *)ptr; int32_t packetLen = *(int32_t *)(ptr + 4); if (end - ptr < packetLen) return ptr - (unsigned char*)buf; switch(opcode) { case OP_glActiveTexture: { android::base::beginTrace("glActiveTexture decode"); GLenum var_texture = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glActiveTexture: GL checksumCalculator failure\n"); } this->glActiveTexture(var_texture); SET_LASTCALL("glActiveTexture"); android::base::endTrace(); break; } case OP_glAttachShader: { android::base::beginTrace("glAttachShader decode"); GLuint var_program = Unpack(ptr + 8); GLuint var_shader = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glAttachShader: GL checksumCalculator failure\n"); } this->glAttachShader_dec(this, var_program, var_shader); SET_LASTCALL("glAttachShader"); android::base::endTrace(); break; } case OP_glBindAttribLocation: { android::base::beginTrace("glBindAttribLocation decode"); GLuint var_program = Unpack(ptr + 8); GLuint var_index = Unpack(ptr + 8 + 4); uint32_t size_name __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_name(ptr + 8 + 4 + 4 + 4, size_name); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_name, ptr + 8 + 4 + 4 + 4 + size_name, checksumSize, "gles2_decoder_context_t::decode, OP_glBindAttribLocation: GL checksumCalculator failure\n"); } this->glBindAttribLocation_dec(this, var_program, var_index, (const GLchar*)(inptr_name.get())); SET_LASTCALL("glBindAttribLocation"); android::base::endTrace(); break; } case OP_glBindBuffer: { android::base::beginTrace("glBindBuffer decode"); GLenum var_target = Unpack(ptr + 8); GLuint var_buffer = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBindBuffer: GL checksumCalculator failure\n"); } this->glBindBuffer(var_target, var_buffer); SET_LASTCALL("glBindBuffer"); android::base::endTrace(); break; } case OP_glBindFramebuffer: { android::base::beginTrace("glBindFramebuffer decode"); GLenum var_target = Unpack(ptr + 8); GLuint var_framebuffer = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBindFramebuffer: GL checksumCalculator failure\n"); } this->glBindFramebuffer(var_target, var_framebuffer); SET_LASTCALL("glBindFramebuffer"); android::base::endTrace(); break; } case OP_glBindRenderbuffer: { android::base::beginTrace("glBindRenderbuffer decode"); GLenum var_target = Unpack(ptr + 8); GLuint var_renderbuffer = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBindRenderbuffer: GL checksumCalculator failure\n"); } this->glBindRenderbuffer(var_target, var_renderbuffer); SET_LASTCALL("glBindRenderbuffer"); android::base::endTrace(); break; } case OP_glBindTexture: { android::base::beginTrace("glBindTexture decode"); GLenum var_target = Unpack(ptr + 8); GLuint var_texture = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBindTexture: GL checksumCalculator failure\n"); } this->glBindTexture(var_target, var_texture); SET_LASTCALL("glBindTexture"); android::base::endTrace(); break; } case OP_glBlendColor: { android::base::beginTrace("glBlendColor decode"); GLclampf var_red = Unpack(ptr + 8); GLclampf var_green = Unpack(ptr + 8 + 4); GLclampf var_blue = Unpack(ptr + 8 + 4 + 4); GLclampf var_alpha = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBlendColor: GL checksumCalculator failure\n"); } this->glBlendColor(var_red, var_green, var_blue, var_alpha); SET_LASTCALL("glBlendColor"); android::base::endTrace(); break; } case OP_glBlendEquation: { android::base::beginTrace("glBlendEquation decode"); GLenum var_mode = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBlendEquation: GL checksumCalculator failure\n"); } this->glBlendEquation(var_mode); SET_LASTCALL("glBlendEquation"); android::base::endTrace(); break; } case OP_glBlendEquationSeparate: { android::base::beginTrace("glBlendEquationSeparate decode"); GLenum var_modeRGB = Unpack(ptr + 8); GLenum var_modeAlpha = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBlendEquationSeparate: GL checksumCalculator failure\n"); } this->glBlendEquationSeparate(var_modeRGB, var_modeAlpha); SET_LASTCALL("glBlendEquationSeparate"); android::base::endTrace(); break; } case OP_glBlendFunc: { android::base::beginTrace("glBlendFunc decode"); GLenum var_sfactor = Unpack(ptr + 8); GLenum var_dfactor = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBlendFunc: GL checksumCalculator failure\n"); } this->glBlendFunc(var_sfactor, var_dfactor); SET_LASTCALL("glBlendFunc"); android::base::endTrace(); break; } case OP_glBlendFuncSeparate: { android::base::beginTrace("glBlendFuncSeparate decode"); GLenum var_srcRGB = Unpack(ptr + 8); GLenum var_dstRGB = Unpack(ptr + 8 + 4); GLenum var_srcAlpha = Unpack(ptr + 8 + 4 + 4); GLenum var_dstAlpha = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBlendFuncSeparate: GL checksumCalculator failure\n"); } this->glBlendFuncSeparate(var_srcRGB, var_dstRGB, var_srcAlpha, var_dstAlpha); SET_LASTCALL("glBlendFuncSeparate"); android::base::endTrace(); break; } case OP_glBufferData: { android::base::beginTrace("glBufferData decode"); GLenum var_target = Unpack(ptr + 8); GLsizeiptr var_size = Unpack(ptr + 8 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4, size_data); GLenum var_usage = Unpack(ptr + 8 + 4 + 4 + 4 + size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_data + 4, ptr + 8 + 4 + 4 + 4 + size_data + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBufferData: GL checksumCalculator failure\n"); } this->glBufferData(var_target, var_size, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get()), var_usage); SET_LASTCALL("glBufferData"); android::base::endTrace(); break; } case OP_glBufferSubData: { android::base::beginTrace("glBufferSubData decode"); GLenum var_target = Unpack(ptr + 8); GLintptr var_offset = Unpack(ptr + 8 + 4); GLsizeiptr var_size = Unpack(ptr + 8 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4, size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + size_data, checksumSize, "gles2_decoder_context_t::decode, OP_glBufferSubData: GL checksumCalculator failure\n"); } this->glBufferSubData(var_target, var_offset, var_size, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get())); SET_LASTCALL("glBufferSubData"); android::base::endTrace(); break; } case OP_glCheckFramebufferStatus: { android::base::beginTrace("glCheckFramebufferStatus decode"); GLenum var_target = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCheckFramebufferStatus: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLenum); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLenum *)(&tmpBuf[0]) = this->glCheckFramebufferStatus(var_target); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glCheckFramebufferStatus"); android::base::endTrace(); break; } case OP_glClear: { android::base::beginTrace("glClear decode"); GLbitfield var_mask = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glClear: GL checksumCalculator failure\n"); } this->glClear(var_mask); SET_LASTCALL("glClear"); android::base::endTrace(); break; } case OP_glClearColor: { android::base::beginTrace("glClearColor decode"); GLclampf var_red = Unpack(ptr + 8); GLclampf var_green = Unpack(ptr + 8 + 4); GLclampf var_blue = Unpack(ptr + 8 + 4 + 4); GLclampf var_alpha = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glClearColor: GL checksumCalculator failure\n"); } this->glClearColor(var_red, var_green, var_blue, var_alpha); SET_LASTCALL("glClearColor"); android::base::endTrace(); break; } case OP_glClearDepthf: { android::base::beginTrace("glClearDepthf decode"); GLclampf var_depth = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glClearDepthf: GL checksumCalculator failure\n"); } this->glClearDepthf(var_depth); SET_LASTCALL("glClearDepthf"); android::base::endTrace(); break; } case OP_glClearStencil: { android::base::beginTrace("glClearStencil decode"); GLint var_s = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glClearStencil: GL checksumCalculator failure\n"); } this->glClearStencil(var_s); SET_LASTCALL("glClearStencil"); android::base::endTrace(); break; } case OP_glColorMask: { android::base::beginTrace("glColorMask decode"); GLboolean var_red = Unpack(ptr + 8); GLboolean var_green = Unpack(ptr + 8 + 1); GLboolean var_blue = Unpack(ptr + 8 + 1 + 1); GLboolean var_alpha = Unpack(ptr + 8 + 1 + 1 + 1); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 1 + 1 + 1 + 1, ptr + 8 + 1 + 1 + 1 + 1, checksumSize, "gles2_decoder_context_t::decode, OP_glColorMask: GL checksumCalculator failure\n"); } this->glColorMask(var_red, var_green, var_blue, var_alpha); SET_LASTCALL("glColorMask"); android::base::endTrace(); break; } case OP_glCompileShader: { android::base::beginTrace("glCompileShader decode"); GLuint var_shader = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCompileShader: GL checksumCalculator failure\n"); } this->glCompileShader_dec(this, var_shader); SET_LASTCALL("glCompileShader"); android::base::endTrace(); break; } case OP_glCompressedTexImage2D: { android::base::beginTrace("glCompressedTexImage2D decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLenum var_internalformat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLint var_border = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLsizei var_imageSize = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize, "gles2_decoder_context_t::decode, OP_glCompressedTexImage2D: GL checksumCalculator failure\n"); } this->glCompressedTexImage2D(var_target, var_level, var_internalformat, var_width, var_height, var_border, var_imageSize, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get())); SET_LASTCALL("glCompressedTexImage2D"); android::base::endTrace(); break; } case OP_glCompressedTexSubImage2D: { android::base::beginTrace("glCompressedTexSubImage2D decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_xoffset = Unpack(ptr + 8 + 4 + 4); GLint var_yoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_imageSize = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize, "gles2_decoder_context_t::decode, OP_glCompressedTexSubImage2D: GL checksumCalculator failure\n"); } this->glCompressedTexSubImage2D(var_target, var_level, var_xoffset, var_yoffset, var_width, var_height, var_format, var_imageSize, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get())); SET_LASTCALL("glCompressedTexSubImage2D"); android::base::endTrace(); break; } case OP_glCopyTexImage2D: { android::base::beginTrace("glCopyTexImage2D decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLenum var_internalformat = Unpack(ptr + 8 + 4 + 4); GLint var_x = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_y = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLint var_border = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCopyTexImage2D: GL checksumCalculator failure\n"); } this->glCopyTexImage2D(var_target, var_level, var_internalformat, var_x, var_y, var_width, var_height, var_border); SET_LASTCALL("glCopyTexImage2D"); android::base::endTrace(); break; } case OP_glCopyTexSubImage2D: { android::base::beginTrace("glCopyTexSubImage2D decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_xoffset = Unpack(ptr + 8 + 4 + 4); GLint var_yoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_x = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLint var_y = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCopyTexSubImage2D: GL checksumCalculator failure\n"); } this->glCopyTexSubImage2D(var_target, var_level, var_xoffset, var_yoffset, var_x, var_y, var_width, var_height); SET_LASTCALL("glCopyTexSubImage2D"); android::base::endTrace(); break; } case OP_glCreateProgram: { android::base::beginTrace("glCreateProgram decode"); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glCreateProgram: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLuint); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLuint *)(&tmpBuf[0]) = this->glCreateProgram_dec(this); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glCreateProgram"); android::base::endTrace(); break; } case OP_glCreateShader: { android::base::beginTrace("glCreateShader decode"); GLenum var_type = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCreateShader: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLuint); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLuint *)(&tmpBuf[0]) = this->glCreateShader_dec(this, var_type); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glCreateShader"); android::base::endTrace(); break; } case OP_glCullFace: { android::base::beginTrace("glCullFace decode"); GLenum var_mode = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCullFace: GL checksumCalculator failure\n"); } this->glCullFace(var_mode); SET_LASTCALL("glCullFace"); android::base::endTrace(); break; } case OP_glDeleteBuffers: { android::base::beginTrace("glDeleteBuffers decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_buffers __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_buffers(ptr + 8 + 4 + 4, size_buffers); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_buffers, ptr + 8 + 4 + 4 + size_buffers, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteBuffers: GL checksumCalculator failure\n"); } this->glDeleteBuffers_dec(this, var_n, (const GLuint*)(inptr_buffers.get())); SET_LASTCALL("glDeleteBuffers"); android::base::endTrace(); break; } case OP_glDeleteFramebuffers: { android::base::beginTrace("glDeleteFramebuffers decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_framebuffers __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_framebuffers(ptr + 8 + 4 + 4, size_framebuffers); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_framebuffers, ptr + 8 + 4 + 4 + size_framebuffers, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteFramebuffers: GL checksumCalculator failure\n"); } this->glDeleteFramebuffers_dec(this, var_n, (const GLuint*)(inptr_framebuffers.get())); SET_LASTCALL("glDeleteFramebuffers"); android::base::endTrace(); break; } case OP_glDeleteProgram: { android::base::beginTrace("glDeleteProgram decode"); GLuint var_program = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteProgram: GL checksumCalculator failure\n"); } this->glDeleteProgram_dec(this, var_program); SET_LASTCALL("glDeleteProgram"); android::base::endTrace(); break; } case OP_glDeleteRenderbuffers: { android::base::beginTrace("glDeleteRenderbuffers decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_renderbuffers __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_renderbuffers(ptr + 8 + 4 + 4, size_renderbuffers); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_renderbuffers, ptr + 8 + 4 + 4 + size_renderbuffers, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteRenderbuffers: GL checksumCalculator failure\n"); } this->glDeleteRenderbuffers_dec(this, var_n, (const GLuint*)(inptr_renderbuffers.get())); SET_LASTCALL("glDeleteRenderbuffers"); android::base::endTrace(); break; } case OP_glDeleteShader: { android::base::beginTrace("glDeleteShader decode"); GLuint var_shader = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteShader: GL checksumCalculator failure\n"); } this->glDeleteShader_dec(this, var_shader); SET_LASTCALL("glDeleteShader"); android::base::endTrace(); break; } case OP_glDeleteTextures: { android::base::beginTrace("glDeleteTextures decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_textures __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_textures(ptr + 8 + 4 + 4, size_textures); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_textures, ptr + 8 + 4 + 4 + size_textures, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteTextures: GL checksumCalculator failure\n"); } this->glDeleteTextures_dec(this, var_n, (const GLuint*)(inptr_textures.get())); SET_LASTCALL("glDeleteTextures"); android::base::endTrace(); break; } case OP_glDepthFunc: { android::base::beginTrace("glDepthFunc decode"); GLenum var_func = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDepthFunc: GL checksumCalculator failure\n"); } this->glDepthFunc(var_func); SET_LASTCALL("glDepthFunc"); android::base::endTrace(); break; } case OP_glDepthMask: { android::base::beginTrace("glDepthMask decode"); GLboolean var_flag = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 1, ptr + 8 + 1, checksumSize, "gles2_decoder_context_t::decode, OP_glDepthMask: GL checksumCalculator failure\n"); } this->glDepthMask(var_flag); SET_LASTCALL("glDepthMask"); android::base::endTrace(); break; } case OP_glDepthRangef: { android::base::beginTrace("glDepthRangef decode"); GLclampf var_zNear = Unpack(ptr + 8); GLclampf var_zFar = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDepthRangef: GL checksumCalculator failure\n"); } this->glDepthRangef(var_zNear, var_zFar); SET_LASTCALL("glDepthRangef"); android::base::endTrace(); break; } case OP_glDetachShader: { android::base::beginTrace("glDetachShader decode"); GLuint var_program = Unpack(ptr + 8); GLuint var_shader = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDetachShader: GL checksumCalculator failure\n"); } this->glDetachShader_dec(this, var_program, var_shader); SET_LASTCALL("glDetachShader"); android::base::endTrace(); break; } case OP_glDisable: { android::base::beginTrace("glDisable decode"); GLenum var_cap = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDisable: GL checksumCalculator failure\n"); } this->glDisable(var_cap); SET_LASTCALL("glDisable"); android::base::endTrace(); break; } case OP_glDisableVertexAttribArray: { android::base::beginTrace("glDisableVertexAttribArray decode"); GLuint var_index = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDisableVertexAttribArray: GL checksumCalculator failure\n"); } this->glDisableVertexAttribArray(var_index); SET_LASTCALL("glDisableVertexAttribArray"); android::base::endTrace(); break; } case OP_glDrawArrays: { android::base::beginTrace("glDrawArrays decode"); GLenum var_mode = Unpack(ptr + 8); GLint var_first = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawArrays: GL checksumCalculator failure\n"); } this->glDrawArrays(var_mode, var_first, var_count); SET_LASTCALL("glDrawArrays"); android::base::endTrace(); break; } case OP_glDrawElements: { android::base::beginTrace("glDrawElements decode"); GLenum var_mode = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); uint32_t size_indices __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_indices(ptr + 8 + 4 + 4 + 4 + 4, size_indices); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_indices, ptr + 8 + 4 + 4 + 4 + 4 + size_indices, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawElements: GL checksumCalculator failure\n"); } this->glDrawElements(var_mode, var_count, var_type, (const GLvoid*)(inptr_indices.get())); SET_LASTCALL("glDrawElements"); android::base::endTrace(); break; } case OP_glEnable: { android::base::beginTrace("glEnable decode"); GLenum var_cap = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glEnable: GL checksumCalculator failure\n"); } this->glEnable(var_cap); SET_LASTCALL("glEnable"); android::base::endTrace(); break; } case OP_glEnableVertexAttribArray: { android::base::beginTrace("glEnableVertexAttribArray decode"); GLuint var_index = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glEnableVertexAttribArray: GL checksumCalculator failure\n"); } this->glEnableVertexAttribArray(var_index); SET_LASTCALL("glEnableVertexAttribArray"); android::base::endTrace(); break; } case OP_glFinish: { android::base::beginTrace("glFinish decode"); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glFinish: GL checksumCalculator failure\n"); } this->glFinish(); SET_LASTCALL("glFinish"); android::base::endTrace(); break; } case OP_glFlush: { android::base::beginTrace("glFlush decode"); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glFlush: GL checksumCalculator failure\n"); } this->glFlush(); SET_LASTCALL("glFlush"); android::base::endTrace(); break; } case OP_glFramebufferRenderbuffer: { android::base::beginTrace("glFramebufferRenderbuffer decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_attachment = Unpack(ptr + 8 + 4); GLenum var_renderbuffertarget = Unpack(ptr + 8 + 4 + 4); GLuint var_renderbuffer = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glFramebufferRenderbuffer: GL checksumCalculator failure\n"); } this->glFramebufferRenderbuffer(var_target, var_attachment, var_renderbuffertarget, var_renderbuffer); SET_LASTCALL("glFramebufferRenderbuffer"); android::base::endTrace(); break; } case OP_glFramebufferTexture2D: { android::base::beginTrace("glFramebufferTexture2D decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_attachment = Unpack(ptr + 8 + 4); GLenum var_textarget = Unpack(ptr + 8 + 4 + 4); GLuint var_texture = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_level = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glFramebufferTexture2D: GL checksumCalculator failure\n"); } this->glFramebufferTexture2D(var_target, var_attachment, var_textarget, var_texture, var_level); SET_LASTCALL("glFramebufferTexture2D"); android::base::endTrace(); break; } case OP_glFrontFace: { android::base::beginTrace("glFrontFace decode"); GLenum var_mode = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glFrontFace: GL checksumCalculator failure\n"); } this->glFrontFace(var_mode); SET_LASTCALL("glFrontFace"); android::base::endTrace(); break; } case OP_glGenBuffers: { android::base::beginTrace("glGenBuffers decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_buffers __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGenBuffers: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_buffers; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_buffers(&tmpBuf[0], size_buffers); this->glGenBuffers_dec(this, var_n, (GLuint*)(outptr_buffers.get())); outptr_buffers.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGenBuffers"); android::base::endTrace(); break; } case OP_glGenerateMipmap: { android::base::beginTrace("glGenerateMipmap decode"); GLenum var_target = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGenerateMipmap: GL checksumCalculator failure\n"); } this->glGenerateMipmap(var_target); SET_LASTCALL("glGenerateMipmap"); android::base::endTrace(); break; } case OP_glGenFramebuffers: { android::base::beginTrace("glGenFramebuffers decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_framebuffers __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGenFramebuffers: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_framebuffers; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_framebuffers(&tmpBuf[0], size_framebuffers); this->glGenFramebuffers_dec(this, var_n, (GLuint*)(outptr_framebuffers.get())); outptr_framebuffers.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGenFramebuffers"); android::base::endTrace(); break; } case OP_glGenRenderbuffers: { android::base::beginTrace("glGenRenderbuffers decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_renderbuffers __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGenRenderbuffers: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_renderbuffers; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_renderbuffers(&tmpBuf[0], size_renderbuffers); this->glGenRenderbuffers_dec(this, var_n, (GLuint*)(outptr_renderbuffers.get())); outptr_renderbuffers.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGenRenderbuffers"); android::base::endTrace(); break; } case OP_glGenTextures: { android::base::beginTrace("glGenTextures decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_textures __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGenTextures: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_textures; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_textures(&tmpBuf[0], size_textures); this->glGenTextures_dec(this, var_n, (GLuint*)(outptr_textures.get())); outptr_textures.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGenTextures"); android::base::endTrace(); break; } case OP_glGetActiveAttrib: { android::base::beginTrace("glGetActiveAttrib decode"); GLuint var_program = Unpack(ptr + 8); GLuint var_index = Unpack(ptr + 8 + 4); GLsizei var_bufsize = Unpack(ptr + 8 + 4 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_size __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); uint32_t size_type __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); uint32_t size_name __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetActiveAttrib: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_length; totalTmpSize += size_size; totalTmpSize += size_type; totalTmpSize += size_name; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_length(&tmpBuf[0], size_length); OutputBuffer outptr_size(&tmpBuf[0 + size_length], size_size); OutputBuffer outptr_type(&tmpBuf[0 + size_length + size_size], size_type); OutputBuffer outptr_name(&tmpBuf[0 + size_length + size_size + size_type], size_name); this->glGetActiveAttrib_dec(this, var_program, var_index, var_bufsize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), size_size == 0 ? nullptr : (GLint*)(outptr_size.get()), size_type == 0 ? nullptr : (GLenum*)(outptr_type.get()), size_name == 0 ? nullptr : (GLchar*)(outptr_name.get())); outptr_length.flush(); outptr_size.flush(); outptr_type.flush(); outptr_name.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetActiveAttrib"); android::base::endTrace(); break; } case OP_glGetActiveUniform: { android::base::beginTrace("glGetActiveUniform decode"); GLuint var_program = Unpack(ptr + 8); GLuint var_index = Unpack(ptr + 8 + 4); GLsizei var_bufsize = Unpack(ptr + 8 + 4 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_size __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); uint32_t size_type __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); uint32_t size_name __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetActiveUniform: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_length; totalTmpSize += size_size; totalTmpSize += size_type; totalTmpSize += size_name; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_length(&tmpBuf[0], size_length); OutputBuffer outptr_size(&tmpBuf[0 + size_length], size_size); OutputBuffer outptr_type(&tmpBuf[0 + size_length + size_size], size_type); OutputBuffer outptr_name(&tmpBuf[0 + size_length + size_size + size_type], size_name); this->glGetActiveUniform_dec(this, var_program, var_index, var_bufsize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), size_size == 0 ? nullptr : (GLint*)(outptr_size.get()), size_type == 0 ? nullptr : (GLenum*)(outptr_type.get()), size_name == 0 ? nullptr : (GLchar*)(outptr_name.get())); outptr_length.flush(); outptr_size.flush(); outptr_type.flush(); outptr_name.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetActiveUniform"); android::base::endTrace(); break; } case OP_glGetAttachedShaders: { android::base::beginTrace("glGetAttachedShaders decode"); GLuint var_program = Unpack(ptr + 8); GLsizei var_maxcount = Unpack(ptr + 8 + 4); uint32_t size_count __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); uint32_t size_shaders __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetAttachedShaders: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_count; totalTmpSize += size_shaders; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_count(&tmpBuf[0], size_count); OutputBuffer outptr_shaders(&tmpBuf[0 + size_count], size_shaders); this->glGetAttachedShaders_dec(this, var_program, var_maxcount, size_count == 0 ? nullptr : (GLsizei*)(outptr_count.get()), (GLuint*)(outptr_shaders.get())); outptr_count.flush(); outptr_shaders.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetAttachedShaders"); android::base::endTrace(); break; } case OP_glGetAttribLocation: { android::base::beginTrace("glGetAttribLocation decode"); GLuint var_program = Unpack(ptr + 8); uint32_t size_name __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_name(ptr + 8 + 4 + 4, size_name); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_name, ptr + 8 + 4 + 4 + size_name, checksumSize, "gles2_decoder_context_t::decode, OP_glGetAttribLocation: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(int); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(int *)(&tmpBuf[0]) = this->glGetAttribLocation_dec(this, var_program, (const GLchar*)(inptr_name.get())); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetAttribLocation"); android::base::endTrace(); break; } case OP_glGetBooleanv: { android::base::beginTrace("glGetBooleanv decode"); GLenum var_pname = Unpack(ptr + 8); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetBooleanv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetBooleanv(var_pname, (GLboolean*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetBooleanv"); android::base::endTrace(); break; } case OP_glGetBufferParameteriv: { android::base::beginTrace("glGetBufferParameteriv decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetBufferParameteriv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetBufferParameteriv(var_target, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetBufferParameteriv"); android::base::endTrace(); break; } case OP_glGetError: { android::base::beginTrace("glGetError decode"); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glGetError: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLenum); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLenum *)(&tmpBuf[0]) = this->glGetError(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetError"); android::base::endTrace(); break; } case OP_glGetFloatv: { android::base::beginTrace("glGetFloatv decode"); GLenum var_pname = Unpack(ptr + 8); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetFloatv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetFloatv(var_pname, (GLfloat*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetFloatv"); android::base::endTrace(); break; } case OP_glGetFramebufferAttachmentParameteriv: { android::base::beginTrace("glGetFramebufferAttachmentParameteriv decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_attachment = Unpack(ptr + 8 + 4); GLenum var_pname = Unpack(ptr + 8 + 4 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetFramebufferAttachmentParameteriv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetFramebufferAttachmentParameteriv(var_target, var_attachment, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetFramebufferAttachmentParameteriv"); android::base::endTrace(); break; } case OP_glGetIntegerv: { android::base::beginTrace("glGetIntegerv decode"); GLenum var_pname = Unpack(ptr + 8); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetIntegerv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetIntegerv(var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetIntegerv"); android::base::endTrace(); break; } case OP_glGetProgramiv: { android::base::beginTrace("glGetProgramiv decode"); GLuint var_program = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetProgramiv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetProgramiv_dec(this, var_program, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetProgramiv"); android::base::endTrace(); break; } case OP_glGetProgramInfoLog: { android::base::beginTrace("glGetProgramInfoLog decode"); GLuint var_program = Unpack(ptr + 8); GLsizei var_bufsize = Unpack(ptr + 8 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); uint32_t size_infolog __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetProgramInfoLog: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_length; totalTmpSize += size_infolog; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_length(&tmpBuf[0], size_length); OutputBuffer outptr_infolog(&tmpBuf[0 + size_length], size_infolog); this->glGetProgramInfoLog_dec(this, var_program, var_bufsize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLchar*)(outptr_infolog.get())); outptr_length.flush(); outptr_infolog.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetProgramInfoLog"); android::base::endTrace(); break; } case OP_glGetRenderbufferParameteriv: { android::base::beginTrace("glGetRenderbufferParameteriv decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetRenderbufferParameteriv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetRenderbufferParameteriv(var_target, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetRenderbufferParameteriv"); android::base::endTrace(); break; } case OP_glGetShaderiv: { android::base::beginTrace("glGetShaderiv decode"); GLuint var_shader = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetShaderiv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetShaderiv_dec(this, var_shader, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetShaderiv"); android::base::endTrace(); break; } case OP_glGetShaderInfoLog: { android::base::beginTrace("glGetShaderInfoLog decode"); GLuint var_shader = Unpack(ptr + 8); GLsizei var_bufsize = Unpack(ptr + 8 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); uint32_t size_infolog __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetShaderInfoLog: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_length; totalTmpSize += size_infolog; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_length(&tmpBuf[0], size_length); OutputBuffer outptr_infolog(&tmpBuf[0 + size_length], size_infolog); this->glGetShaderInfoLog_dec(this, var_shader, var_bufsize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLchar*)(outptr_infolog.get())); outptr_length.flush(); outptr_infolog.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetShaderInfoLog"); android::base::endTrace(); break; } case OP_glGetShaderPrecisionFormat: { android::base::beginTrace("glGetShaderPrecisionFormat decode"); GLenum var_shadertype = Unpack(ptr + 8); GLenum var_precisiontype = Unpack(ptr + 8 + 4); uint32_t size_range __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); uint32_t size_precision __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetShaderPrecisionFormat: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_range; totalTmpSize += size_precision; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_range(&tmpBuf[0], size_range); OutputBuffer outptr_precision(&tmpBuf[0 + size_range], size_precision); this->glGetShaderPrecisionFormat(var_shadertype, var_precisiontype, (GLint*)(outptr_range.get()), (GLint*)(outptr_precision.get())); outptr_range.flush(); outptr_precision.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetShaderPrecisionFormat"); android::base::endTrace(); break; } case OP_glGetShaderSource: { android::base::beginTrace("glGetShaderSource decode"); GLuint var_shader = Unpack(ptr + 8); GLsizei var_bufsize = Unpack(ptr + 8 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); uint32_t size_source __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetShaderSource: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_length; totalTmpSize += size_source; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_length(&tmpBuf[0], size_length); OutputBuffer outptr_source(&tmpBuf[0 + size_length], size_source); this->glGetShaderSource_dec(this, var_shader, var_bufsize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLchar*)(outptr_source.get())); outptr_length.flush(); outptr_source.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetShaderSource"); android::base::endTrace(); break; } case OP_glGetString: { android::base::beginTrace("glGetString decode"); GLenum var_name = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetString: GL checksumCalculator failure\n"); } this->glGetString(var_name); SET_LASTCALL("glGetString"); android::base::endTrace(); break; } case OP_glGetTexParameterfv: { android::base::beginTrace("glGetTexParameterfv decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetTexParameterfv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetTexParameterfv(var_target, var_pname, (GLfloat*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetTexParameterfv"); android::base::endTrace(); break; } case OP_glGetTexParameteriv: { android::base::beginTrace("glGetTexParameteriv decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetTexParameteriv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetTexParameteriv(var_target, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetTexParameteriv"); android::base::endTrace(); break; } case OP_glGetUniformfv: { android::base::beginTrace("glGetUniformfv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetUniformfv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetUniformfv_dec(this, var_program, var_location, (GLfloat*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetUniformfv"); android::base::endTrace(); break; } case OP_glGetUniformiv: { android::base::beginTrace("glGetUniformiv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetUniformiv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetUniformiv_dec(this, var_program, var_location, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetUniformiv"); android::base::endTrace(); break; } case OP_glGetUniformLocation: { android::base::beginTrace("glGetUniformLocation decode"); GLuint var_program = Unpack(ptr + 8); uint32_t size_name __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_name(ptr + 8 + 4 + 4, size_name); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_name, ptr + 8 + 4 + 4 + size_name, checksumSize, "gles2_decoder_context_t::decode, OP_glGetUniformLocation: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(int); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(int *)(&tmpBuf[0]) = this->glGetUniformLocation_dec(this, var_program, (const GLchar*)(inptr_name.get())); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetUniformLocation"); android::base::endTrace(); break; } case OP_glGetVertexAttribfv: { android::base::beginTrace("glGetVertexAttribfv decode"); GLuint var_index = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetVertexAttribfv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetVertexAttribfv(var_index, var_pname, (GLfloat*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetVertexAttribfv"); android::base::endTrace(); break; } case OP_glGetVertexAttribiv: { android::base::beginTrace("glGetVertexAttribiv decode"); GLuint var_index = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetVertexAttribiv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetVertexAttribiv(var_index, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetVertexAttribiv"); android::base::endTrace(); break; } case OP_glGetVertexAttribPointerv: { android::base::beginTrace("glGetVertexAttribPointerv decode"); GLuint var_index = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_pointer __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_pointer(ptr + 8 + 4 + 4 + 4, size_pointer); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_pointer, ptr + 8 + 4 + 4 + 4 + size_pointer, checksumSize, "gles2_decoder_context_t::decode, OP_glGetVertexAttribPointerv: GL checksumCalculator failure\n"); } this->glGetVertexAttribPointerv(var_index, var_pname, (GLvoid**)(inptr_pointer.get())); SET_LASTCALL("glGetVertexAttribPointerv"); android::base::endTrace(); break; } case OP_glHint: { android::base::beginTrace("glHint decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_mode = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glHint: GL checksumCalculator failure\n"); } this->glHint(var_target, var_mode); SET_LASTCALL("glHint"); android::base::endTrace(); break; } case OP_glIsBuffer: { android::base::beginTrace("glIsBuffer decode"); GLuint var_buffer = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glIsBuffer: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsBuffer(var_buffer); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsBuffer"); android::base::endTrace(); break; } case OP_glIsEnabled: { android::base::beginTrace("glIsEnabled decode"); GLenum var_cap = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glIsEnabled: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsEnabled(var_cap); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsEnabled"); android::base::endTrace(); break; } case OP_glIsFramebuffer: { android::base::beginTrace("glIsFramebuffer decode"); GLuint var_framebuffer = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glIsFramebuffer: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsFramebuffer(var_framebuffer); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsFramebuffer"); android::base::endTrace(); break; } case OP_glIsProgram: { android::base::beginTrace("glIsProgram decode"); GLuint var_program = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glIsProgram: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsProgram_dec(this, var_program); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsProgram"); android::base::endTrace(); break; } case OP_glIsRenderbuffer: { android::base::beginTrace("glIsRenderbuffer decode"); GLuint var_renderbuffer = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glIsRenderbuffer: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsRenderbuffer(var_renderbuffer); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsRenderbuffer"); android::base::endTrace(); break; } case OP_glIsShader: { android::base::beginTrace("glIsShader decode"); GLuint var_shader = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glIsShader: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsShader_dec(this, var_shader); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsShader"); android::base::endTrace(); break; } case OP_glIsTexture: { android::base::beginTrace("glIsTexture decode"); GLuint var_texture = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glIsTexture: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsTexture(var_texture); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsTexture"); android::base::endTrace(); break; } case OP_glLineWidth: { android::base::beginTrace("glLineWidth decode"); GLfloat var_width = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glLineWidth: GL checksumCalculator failure\n"); } this->glLineWidth(var_width); SET_LASTCALL("glLineWidth"); android::base::endTrace(); break; } case OP_glLinkProgram: { android::base::beginTrace("glLinkProgram decode"); GLuint var_program = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glLinkProgram: GL checksumCalculator failure\n"); } this->glLinkProgram_dec(this, var_program); SET_LASTCALL("glLinkProgram"); android::base::endTrace(); break; } case OP_glPixelStorei: { android::base::beginTrace("glPixelStorei decode"); GLenum var_pname = Unpack(ptr + 8); GLint var_param = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glPixelStorei: GL checksumCalculator failure\n"); } this->glPixelStorei(var_pname, var_param); SET_LASTCALL("glPixelStorei"); android::base::endTrace(); break; } case OP_glPolygonOffset: { android::base::beginTrace("glPolygonOffset decode"); GLfloat var_factor = Unpack(ptr + 8); GLfloat var_units = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glPolygonOffset: GL checksumCalculator failure\n"); } this->glPolygonOffset(var_factor, var_units); SET_LASTCALL("glPolygonOffset"); android::base::endTrace(); break; } case OP_glReadPixels: { android::base::beginTrace("glReadPixels decode"); GLint var_x = Unpack(ptr + 8); GLint var_y = Unpack(ptr + 8 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); uint32_t size_pixels __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glReadPixels: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_pixels; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_pixels(&tmpBuf[0], size_pixels); this->glReadPixels(var_x, var_y, var_width, var_height, var_format, var_type, (GLvoid*)(outptr_pixels.get())); outptr_pixels.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glReadPixels"); android::base::endTrace(); break; } case OP_glReleaseShaderCompiler: { android::base::beginTrace("glReleaseShaderCompiler decode"); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glReleaseShaderCompiler: GL checksumCalculator failure\n"); } this->glReleaseShaderCompiler(); SET_LASTCALL("glReleaseShaderCompiler"); android::base::endTrace(); break; } case OP_glRenderbufferStorage: { android::base::beginTrace("glRenderbufferStorage decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_internalformat = Unpack(ptr + 8 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glRenderbufferStorage: GL checksumCalculator failure\n"); } this->glRenderbufferStorage(var_target, var_internalformat, var_width, var_height); SET_LASTCALL("glRenderbufferStorage"); android::base::endTrace(); break; } case OP_glSampleCoverage: { android::base::beginTrace("glSampleCoverage decode"); GLclampf var_value = Unpack(ptr + 8); GLboolean var_invert = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 1, ptr + 8 + 4 + 1, checksumSize, "gles2_decoder_context_t::decode, OP_glSampleCoverage: GL checksumCalculator failure\n"); } this->glSampleCoverage(var_value, var_invert); SET_LASTCALL("glSampleCoverage"); android::base::endTrace(); break; } case OP_glScissor: { android::base::beginTrace("glScissor decode"); GLint var_x = Unpack(ptr + 8); GLint var_y = Unpack(ptr + 8 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glScissor: GL checksumCalculator failure\n"); } this->glScissor(var_x, var_y, var_width, var_height); SET_LASTCALL("glScissor"); android::base::endTrace(); break; } case OP_glShaderBinary: { android::base::beginTrace("glShaderBinary decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_shaders __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_shaders(ptr + 8 + 4 + 4, size_shaders); GLenum var_binaryformat = Unpack(ptr + 8 + 4 + 4 + size_shaders); uint32_t size_binary __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + size_shaders + 4); InputBuffer inptr_binary(ptr + 8 + 4 + 4 + size_shaders + 4 + 4, size_binary); GLsizei var_length = Unpack(ptr + 8 + 4 + 4 + size_shaders + 4 + 4 + size_binary); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_shaders + 4 + 4 + size_binary + 4, ptr + 8 + 4 + 4 + size_shaders + 4 + 4 + size_binary + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glShaderBinary: GL checksumCalculator failure\n"); } this->glShaderBinary(var_n, (const GLuint*)(inptr_shaders.get()), var_binaryformat, (const GLvoid*)(inptr_binary.get()), var_length); SET_LASTCALL("glShaderBinary"); android::base::endTrace(); break; } case OP_glShaderSource: { android::base::beginTrace("glShaderSource decode"); GLuint var_shader = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_string __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_string(ptr + 8 + 4 + 4 + 4, size_string); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + size_string); InputBuffer inptr_length(ptr + 8 + 4 + 4 + 4 + size_string + 4, size_length); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_string + 4 + size_length, ptr + 8 + 4 + 4 + 4 + size_string + 4 + size_length, checksumSize, "gles2_decoder_context_t::decode, OP_glShaderSource: GL checksumCalculator failure\n"); } this->glShaderSource(var_shader, var_count, (const GLchar* const*)(inptr_string.get()), (const GLint*)(inptr_length.get())); SET_LASTCALL("glShaderSource"); android::base::endTrace(); break; } case OP_glStencilFunc: { android::base::beginTrace("glStencilFunc decode"); GLenum var_func = Unpack(ptr + 8); GLint var_ref = Unpack(ptr + 8 + 4); GLuint var_mask = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glStencilFunc: GL checksumCalculator failure\n"); } this->glStencilFunc(var_func, var_ref, var_mask); SET_LASTCALL("glStencilFunc"); android::base::endTrace(); break; } case OP_glStencilFuncSeparate: { android::base::beginTrace("glStencilFuncSeparate decode"); GLenum var_face = Unpack(ptr + 8); GLenum var_func = Unpack(ptr + 8 + 4); GLint var_ref = Unpack(ptr + 8 + 4 + 4); GLuint var_mask = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glStencilFuncSeparate: GL checksumCalculator failure\n"); } this->glStencilFuncSeparate(var_face, var_func, var_ref, var_mask); SET_LASTCALL("glStencilFuncSeparate"); android::base::endTrace(); break; } case OP_glStencilMask: { android::base::beginTrace("glStencilMask decode"); GLuint var_mask = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glStencilMask: GL checksumCalculator failure\n"); } this->glStencilMask(var_mask); SET_LASTCALL("glStencilMask"); android::base::endTrace(); break; } case OP_glStencilMaskSeparate: { android::base::beginTrace("glStencilMaskSeparate decode"); GLenum var_face = Unpack(ptr + 8); GLuint var_mask = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glStencilMaskSeparate: GL checksumCalculator failure\n"); } this->glStencilMaskSeparate(var_face, var_mask); SET_LASTCALL("glStencilMaskSeparate"); android::base::endTrace(); break; } case OP_glStencilOp: { android::base::beginTrace("glStencilOp decode"); GLenum var_fail = Unpack(ptr + 8); GLenum var_zfail = Unpack(ptr + 8 + 4); GLenum var_zpass = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glStencilOp: GL checksumCalculator failure\n"); } this->glStencilOp(var_fail, var_zfail, var_zpass); SET_LASTCALL("glStencilOp"); android::base::endTrace(); break; } case OP_glStencilOpSeparate: { android::base::beginTrace("glStencilOpSeparate decode"); GLenum var_face = Unpack(ptr + 8); GLenum var_fail = Unpack(ptr + 8 + 4); GLenum var_zfail = Unpack(ptr + 8 + 4 + 4); GLenum var_zpass = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glStencilOpSeparate: GL checksumCalculator failure\n"); } this->glStencilOpSeparate(var_face, var_fail, var_zfail, var_zpass); SET_LASTCALL("glStencilOpSeparate"); android::base::endTrace(); break; } case OP_glTexImage2D: { android::base::beginTrace("glTexImage2D decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_internalformat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLint var_border = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); uint32_t size_pixels __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_pixels(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_pixels); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, checksumSize, "gles2_decoder_context_t::decode, OP_glTexImage2D: GL checksumCalculator failure\n"); } this->glTexImage2D(var_target, var_level, var_internalformat, var_width, var_height, var_border, var_format, var_type, size_pixels == 0 ? nullptr : (const GLvoid*)(inptr_pixels.get())); SET_LASTCALL("glTexImage2D"); android::base::endTrace(); break; } case OP_glTexParameterf: { android::base::beginTrace("glTexParameterf decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); GLfloat var_param = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glTexParameterf: GL checksumCalculator failure\n"); } this->glTexParameterf(var_target, var_pname, var_param); SET_LASTCALL("glTexParameterf"); android::base::endTrace(); break; } case OP_glTexParameterfv: { android::base::beginTrace("glTexParameterfv decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_params(ptr + 8 + 4 + 4 + 4, size_params); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + 4 + size_params, checksumSize, "gles2_decoder_context_t::decode, OP_glTexParameterfv: GL checksumCalculator failure\n"); } this->glTexParameterfv(var_target, var_pname, (const GLfloat*)(inptr_params.get())); SET_LASTCALL("glTexParameterfv"); android::base::endTrace(); break; } case OP_glTexParameteri: { android::base::beginTrace("glTexParameteri decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); GLint var_param = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glTexParameteri: GL checksumCalculator failure\n"); } this->glTexParameteri(var_target, var_pname, var_param); SET_LASTCALL("glTexParameteri"); android::base::endTrace(); break; } case OP_glTexParameteriv: { android::base::beginTrace("glTexParameteriv decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_params(ptr + 8 + 4 + 4 + 4, size_params); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + 4 + size_params, checksumSize, "gles2_decoder_context_t::decode, OP_glTexParameteriv: GL checksumCalculator failure\n"); } this->glTexParameteriv(var_target, var_pname, (const GLint*)(inptr_params.get())); SET_LASTCALL("glTexParameteriv"); android::base::endTrace(); break; } case OP_glTexSubImage2D: { android::base::beginTrace("glTexSubImage2D decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_xoffset = Unpack(ptr + 8 + 4 + 4); GLint var_yoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); uint32_t size_pixels __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_pixels(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_pixels); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, checksumSize, "gles2_decoder_context_t::decode, OP_glTexSubImage2D: GL checksumCalculator failure\n"); } this->glTexSubImage2D(var_target, var_level, var_xoffset, var_yoffset, var_width, var_height, var_format, var_type, size_pixels == 0 ? nullptr : (const GLvoid*)(inptr_pixels.get())); SET_LASTCALL("glTexSubImage2D"); android::base::endTrace(); break; } case OP_glUniform1f: { android::base::beginTrace("glUniform1f decode"); GLint var_location = Unpack(ptr + 8); GLfloat var_x = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform1f: GL checksumCalculator failure\n"); } this->glUniform1f(var_location, var_x); SET_LASTCALL("glUniform1f"); android::base::endTrace(); break; } case OP_glUniform1fv: { android::base::beginTrace("glUniform1fv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_v __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform1fv: GL checksumCalculator failure\n"); } this->glUniform1fv(var_location, var_count, (const GLfloat*)(inptr_v.get())); SET_LASTCALL("glUniform1fv"); android::base::endTrace(); break; } case OP_glUniform1i: { android::base::beginTrace("glUniform1i decode"); GLint var_location = Unpack(ptr + 8); GLint var_x = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform1i: GL checksumCalculator failure\n"); } this->glUniform1i(var_location, var_x); SET_LASTCALL("glUniform1i"); android::base::endTrace(); break; } case OP_glUniform1iv: { android::base::beginTrace("glUniform1iv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_v __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform1iv: GL checksumCalculator failure\n"); } this->glUniform1iv(var_location, var_count, (const GLint*)(inptr_v.get())); SET_LASTCALL("glUniform1iv"); android::base::endTrace(); break; } case OP_glUniform2f: { android::base::beginTrace("glUniform2f decode"); GLint var_location = Unpack(ptr + 8); GLfloat var_x = Unpack(ptr + 8 + 4); GLfloat var_y = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform2f: GL checksumCalculator failure\n"); } this->glUniform2f(var_location, var_x, var_y); SET_LASTCALL("glUniform2f"); android::base::endTrace(); break; } case OP_glUniform2fv: { android::base::beginTrace("glUniform2fv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_v __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform2fv: GL checksumCalculator failure\n"); } this->glUniform2fv(var_location, var_count, (const GLfloat*)(inptr_v.get())); SET_LASTCALL("glUniform2fv"); android::base::endTrace(); break; } case OP_glUniform2i: { android::base::beginTrace("glUniform2i decode"); GLint var_location = Unpack(ptr + 8); GLint var_x = Unpack(ptr + 8 + 4); GLint var_y = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform2i: GL checksumCalculator failure\n"); } this->glUniform2i(var_location, var_x, var_y); SET_LASTCALL("glUniform2i"); android::base::endTrace(); break; } case OP_glUniform2iv: { android::base::beginTrace("glUniform2iv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_v __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform2iv: GL checksumCalculator failure\n"); } this->glUniform2iv(var_location, var_count, (const GLint*)(inptr_v.get())); SET_LASTCALL("glUniform2iv"); android::base::endTrace(); break; } case OP_glUniform3f: { android::base::beginTrace("glUniform3f decode"); GLint var_location = Unpack(ptr + 8); GLfloat var_x = Unpack(ptr + 8 + 4); GLfloat var_y = Unpack(ptr + 8 + 4 + 4); GLfloat var_z = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform3f: GL checksumCalculator failure\n"); } this->glUniform3f(var_location, var_x, var_y, var_z); SET_LASTCALL("glUniform3f"); android::base::endTrace(); break; } case OP_glUniform3fv: { android::base::beginTrace("glUniform3fv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_v __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform3fv: GL checksumCalculator failure\n"); } this->glUniform3fv(var_location, var_count, (const GLfloat*)(inptr_v.get())); SET_LASTCALL("glUniform3fv"); android::base::endTrace(); break; } case OP_glUniform3i: { android::base::beginTrace("glUniform3i decode"); GLint var_location = Unpack(ptr + 8); GLint var_x = Unpack(ptr + 8 + 4); GLint var_y = Unpack(ptr + 8 + 4 + 4); GLint var_z = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform3i: GL checksumCalculator failure\n"); } this->glUniform3i(var_location, var_x, var_y, var_z); SET_LASTCALL("glUniform3i"); android::base::endTrace(); break; } case OP_glUniform3iv: { android::base::beginTrace("glUniform3iv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_v __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform3iv: GL checksumCalculator failure\n"); } this->glUniform3iv(var_location, var_count, (const GLint*)(inptr_v.get())); SET_LASTCALL("glUniform3iv"); android::base::endTrace(); break; } case OP_glUniform4f: { android::base::beginTrace("glUniform4f decode"); GLint var_location = Unpack(ptr + 8); GLfloat var_x = Unpack(ptr + 8 + 4); GLfloat var_y = Unpack(ptr + 8 + 4 + 4); GLfloat var_z = Unpack(ptr + 8 + 4 + 4 + 4); GLfloat var_w = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform4f: GL checksumCalculator failure\n"); } this->glUniform4f(var_location, var_x, var_y, var_z, var_w); SET_LASTCALL("glUniform4f"); android::base::endTrace(); break; } case OP_glUniform4fv: { android::base::beginTrace("glUniform4fv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_v __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform4fv: GL checksumCalculator failure\n"); } this->glUniform4fv(var_location, var_count, (const GLfloat*)(inptr_v.get())); SET_LASTCALL("glUniform4fv"); android::base::endTrace(); break; } case OP_glUniform4i: { android::base::beginTrace("glUniform4i decode"); GLint var_location = Unpack(ptr + 8); GLint var_x = Unpack(ptr + 8 + 4); GLint var_y = Unpack(ptr + 8 + 4 + 4); GLint var_z = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_w = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform4i: GL checksumCalculator failure\n"); } this->glUniform4i(var_location, var_x, var_y, var_z, var_w); SET_LASTCALL("glUniform4i"); android::base::endTrace(); break; } case OP_glUniform4iv: { android::base::beginTrace("glUniform4iv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_v __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_v(ptr + 8 + 4 + 4 + 4, size_v); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + 4 + size_v, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform4iv: GL checksumCalculator failure\n"); } this->glUniform4iv(var_location, var_count, (const GLint*)(inptr_v.get())); SET_LASTCALL("glUniform4iv"); android::base::endTrace(); break; } case OP_glUniformMatrix2fv: { android::base::beginTrace("glUniformMatrix2fv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glUniformMatrix2fv: GL checksumCalculator failure\n"); } this->glUniformMatrix2fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glUniformMatrix2fv"); android::base::endTrace(); break; } case OP_glUniformMatrix3fv: { android::base::beginTrace("glUniformMatrix3fv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glUniformMatrix3fv: GL checksumCalculator failure\n"); } this->glUniformMatrix3fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glUniformMatrix3fv"); android::base::endTrace(); break; } case OP_glUniformMatrix4fv: { android::base::beginTrace("glUniformMatrix4fv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glUniformMatrix4fv: GL checksumCalculator failure\n"); } this->glUniformMatrix4fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glUniformMatrix4fv"); android::base::endTrace(); break; } case OP_glUseProgram: { android::base::beginTrace("glUseProgram decode"); GLuint var_program = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUseProgram: GL checksumCalculator failure\n"); } this->glUseProgram_dec(this, var_program); SET_LASTCALL("glUseProgram"); android::base::endTrace(); break; } case OP_glValidateProgram: { android::base::beginTrace("glValidateProgram decode"); GLuint var_program = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glValidateProgram: GL checksumCalculator failure\n"); } this->glValidateProgram_dec(this, var_program); SET_LASTCALL("glValidateProgram"); android::base::endTrace(); break; } case OP_glVertexAttrib1f: { android::base::beginTrace("glVertexAttrib1f decode"); GLuint var_indx = Unpack(ptr + 8); GLfloat var_x = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttrib1f: GL checksumCalculator failure\n"); } this->glVertexAttrib1f(var_indx, var_x); SET_LASTCALL("glVertexAttrib1f"); android::base::endTrace(); break; } case OP_glVertexAttrib1fv: { android::base::beginTrace("glVertexAttrib1fv decode"); GLuint var_indx = Unpack(ptr + 8); uint32_t size_values __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_values(ptr + 8 + 4 + 4, size_values); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_values, ptr + 8 + 4 + 4 + size_values, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttrib1fv: GL checksumCalculator failure\n"); } this->glVertexAttrib1fv(var_indx, (const GLfloat*)(inptr_values.get())); SET_LASTCALL("glVertexAttrib1fv"); android::base::endTrace(); break; } case OP_glVertexAttrib2f: { android::base::beginTrace("glVertexAttrib2f decode"); GLuint var_indx = Unpack(ptr + 8); GLfloat var_x = Unpack(ptr + 8 + 4); GLfloat var_y = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttrib2f: GL checksumCalculator failure\n"); } this->glVertexAttrib2f(var_indx, var_x, var_y); SET_LASTCALL("glVertexAttrib2f"); android::base::endTrace(); break; } case OP_glVertexAttrib2fv: { android::base::beginTrace("glVertexAttrib2fv decode"); GLuint var_indx = Unpack(ptr + 8); uint32_t size_values __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_values(ptr + 8 + 4 + 4, size_values); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_values, ptr + 8 + 4 + 4 + size_values, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttrib2fv: GL checksumCalculator failure\n"); } this->glVertexAttrib2fv(var_indx, (const GLfloat*)(inptr_values.get())); SET_LASTCALL("glVertexAttrib2fv"); android::base::endTrace(); break; } case OP_glVertexAttrib3f: { android::base::beginTrace("glVertexAttrib3f decode"); GLuint var_indx = Unpack(ptr + 8); GLfloat var_x = Unpack(ptr + 8 + 4); GLfloat var_y = Unpack(ptr + 8 + 4 + 4); GLfloat var_z = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttrib3f: GL checksumCalculator failure\n"); } this->glVertexAttrib3f(var_indx, var_x, var_y, var_z); SET_LASTCALL("glVertexAttrib3f"); android::base::endTrace(); break; } case OP_glVertexAttrib3fv: { android::base::beginTrace("glVertexAttrib3fv decode"); GLuint var_indx = Unpack(ptr + 8); uint32_t size_values __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_values(ptr + 8 + 4 + 4, size_values); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_values, ptr + 8 + 4 + 4 + size_values, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttrib3fv: GL checksumCalculator failure\n"); } this->glVertexAttrib3fv(var_indx, (const GLfloat*)(inptr_values.get())); SET_LASTCALL("glVertexAttrib3fv"); android::base::endTrace(); break; } case OP_glVertexAttrib4f: { android::base::beginTrace("glVertexAttrib4f decode"); GLuint var_indx = Unpack(ptr + 8); GLfloat var_x = Unpack(ptr + 8 + 4); GLfloat var_y = Unpack(ptr + 8 + 4 + 4); GLfloat var_z = Unpack(ptr + 8 + 4 + 4 + 4); GLfloat var_w = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttrib4f: GL checksumCalculator failure\n"); } this->glVertexAttrib4f(var_indx, var_x, var_y, var_z, var_w); SET_LASTCALL("glVertexAttrib4f"); android::base::endTrace(); break; } case OP_glVertexAttrib4fv: { android::base::beginTrace("glVertexAttrib4fv decode"); GLuint var_indx = Unpack(ptr + 8); uint32_t size_values __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_values(ptr + 8 + 4 + 4, size_values); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_values, ptr + 8 + 4 + 4 + size_values, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttrib4fv: GL checksumCalculator failure\n"); } this->glVertexAttrib4fv(var_indx, (const GLfloat*)(inptr_values.get())); SET_LASTCALL("glVertexAttrib4fv"); android::base::endTrace(); break; } case OP_glVertexAttribPointer: { android::base::beginTrace("glVertexAttribPointer decode"); GLuint var_indx = Unpack(ptr + 8); GLint var_size = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); GLboolean var_normalized = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_stride = Unpack(ptr + 8 + 4 + 4 + 4 + 1); uint32_t size_ptr __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 1 + 4); InputBuffer inptr_ptr(ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4, size_ptr); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + 4 + size_ptr, ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4 + size_ptr, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttribPointer: GL checksumCalculator failure\n"); } this->glVertexAttribPointer(var_indx, var_size, var_type, var_normalized, var_stride, (const GLvoid*)(inptr_ptr.get())); SET_LASTCALL("glVertexAttribPointer"); android::base::endTrace(); break; } case OP_glViewport: { android::base::beginTrace("glViewport decode"); GLint var_x = Unpack(ptr + 8); GLint var_y = Unpack(ptr + 8 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glViewport: GL checksumCalculator failure\n"); } this->glViewport(var_x, var_y, var_width, var_height); SET_LASTCALL("glViewport"); android::base::endTrace(); break; } case OP_glEGLImageTargetTexture2DOES: { android::base::beginTrace("glEGLImageTargetTexture2DOES decode"); GLenum var_target = Unpack(ptr + 8); GLeglImageOES var_image = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glEGLImageTargetTexture2DOES: GL checksumCalculator failure\n"); } this->glEGLImageTargetTexture2DOES(var_target, var_image); SET_LASTCALL("glEGLImageTargetTexture2DOES"); android::base::endTrace(); break; } case OP_glEGLImageTargetRenderbufferStorageOES: { android::base::beginTrace("glEGLImageTargetRenderbufferStorageOES decode"); GLenum var_target = Unpack(ptr + 8); GLeglImageOES var_image = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glEGLImageTargetRenderbufferStorageOES: GL checksumCalculator failure\n"); } this->glEGLImageTargetRenderbufferStorageOES(var_target, var_image); SET_LASTCALL("glEGLImageTargetRenderbufferStorageOES"); android::base::endTrace(); break; } case OP_glGetProgramBinaryOES: { android::base::beginTrace("glGetProgramBinaryOES decode"); GLuint var_program = Unpack(ptr + 8); GLsizei var_bufSize = Unpack(ptr + 8 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_length(ptr + 8 + 4 + 4 + 4, size_length); uint32_t size_binaryFormat __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + size_length); InputBuffer inptr_binaryFormat(ptr + 8 + 4 + 4 + 4 + size_length + 4, size_binaryFormat); uint32_t size_binary __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + size_length + 4 + size_binaryFormat); InputBuffer inptr_binary(ptr + 8 + 4 + 4 + 4 + size_length + 4 + size_binaryFormat + 4, size_binary); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_length + 4 + size_binaryFormat + 4 + size_binary, ptr + 8 + 4 + 4 + 4 + size_length + 4 + size_binaryFormat + 4 + size_binary, checksumSize, "gles2_decoder_context_t::decode, OP_glGetProgramBinaryOES: GL checksumCalculator failure\n"); } this->glGetProgramBinaryOES_dec(this, var_program, var_bufSize, (GLsizei*)(inptr_length.get()), (GLenum*)(inptr_binaryFormat.get()), (GLvoid*)(inptr_binary.get())); SET_LASTCALL("glGetProgramBinaryOES"); android::base::endTrace(); break; } case OP_glProgramBinaryOES: { android::base::beginTrace("glProgramBinaryOES decode"); GLuint var_program = Unpack(ptr + 8); GLenum var_binaryFormat = Unpack(ptr + 8 + 4); uint32_t size_binary __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_binary(ptr + 8 + 4 + 4 + 4, size_binary); GLint var_length = Unpack(ptr + 8 + 4 + 4 + 4 + size_binary); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_binary + 4, ptr + 8 + 4 + 4 + 4 + size_binary + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramBinaryOES: GL checksumCalculator failure\n"); } this->glProgramBinaryOES_dec(this, var_program, var_binaryFormat, (const GLvoid*)(inptr_binary.get()), var_length); SET_LASTCALL("glProgramBinaryOES"); android::base::endTrace(); break; } case OP_glMapBufferOES: { android::base::beginTrace("glMapBufferOES decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_access = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glMapBufferOES: GL checksumCalculator failure\n"); } this->glMapBufferOES(var_target, var_access); SET_LASTCALL("glMapBufferOES"); android::base::endTrace(); break; } case OP_glUnmapBufferOES: { android::base::beginTrace("glUnmapBufferOES decode"); GLenum var_target = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUnmapBufferOES: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glUnmapBufferOES(var_target); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glUnmapBufferOES"); android::base::endTrace(); break; } case OP_glTexImage3DOES: { android::base::beginTrace("glTexImage3DOES decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLenum var_internalformat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_depth = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLint var_border = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); uint32_t size_pixels __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_pixels(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_pixels); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, checksumSize, "gles2_decoder_context_t::decode, OP_glTexImage3DOES: GL checksumCalculator failure\n"); } this->glTexImage3DOES(var_target, var_level, var_internalformat, var_width, var_height, var_depth, var_border, var_format, var_type, size_pixels == 0 ? nullptr : (const GLvoid*)(inptr_pixels.get())); SET_LASTCALL("glTexImage3DOES"); android::base::endTrace(); break; } case OP_glTexSubImage3DOES: { android::base::beginTrace("glTexSubImage3DOES decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_xoffset = Unpack(ptr + 8 + 4 + 4); GLint var_yoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_zoffset = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_depth = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); uint32_t size_pixels __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_pixels(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_pixels); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_pixels, checksumSize, "gles2_decoder_context_t::decode, OP_glTexSubImage3DOES: GL checksumCalculator failure\n"); } this->glTexSubImage3DOES(var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_type, size_pixels == 0 ? nullptr : (const GLvoid*)(inptr_pixels.get())); SET_LASTCALL("glTexSubImage3DOES"); android::base::endTrace(); break; } case OP_glCopyTexSubImage3DOES: { android::base::beginTrace("glCopyTexSubImage3DOES decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_xoffset = Unpack(ptr + 8 + 4 + 4); GLint var_yoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_zoffset = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLint var_x = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLint var_y = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCopyTexSubImage3DOES: GL checksumCalculator failure\n"); } this->glCopyTexSubImage3DOES(var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_x, var_y, var_width, var_height); SET_LASTCALL("glCopyTexSubImage3DOES"); android::base::endTrace(); break; } case OP_glCompressedTexImage3DOES: { android::base::beginTrace("glCompressedTexImage3DOES decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLenum var_internalformat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_depth = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLint var_border = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_imageSize = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize, "gles2_decoder_context_t::decode, OP_glCompressedTexImage3DOES: GL checksumCalculator failure\n"); } this->glCompressedTexImage3DOES(var_target, var_level, var_internalformat, var_width, var_height, var_depth, var_border, var_imageSize, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get())); SET_LASTCALL("glCompressedTexImage3DOES"); android::base::endTrace(); break; } case OP_glCompressedTexSubImage3DOES: { android::base::beginTrace("glCompressedTexSubImage3DOES decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_xoffset = Unpack(ptr + 8 + 4 + 4); GLint var_yoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_zoffset = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_depth = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_imageSize = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize, "gles2_decoder_context_t::decode, OP_glCompressedTexSubImage3DOES: GL checksumCalculator failure\n"); } this->glCompressedTexSubImage3DOES(var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_imageSize, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get())); SET_LASTCALL("glCompressedTexSubImage3DOES"); android::base::endTrace(); break; } case OP_glFramebufferTexture3DOES: { android::base::beginTrace("glFramebufferTexture3DOES decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_attachment = Unpack(ptr + 8 + 4); GLenum var_textarget = Unpack(ptr + 8 + 4 + 4); GLuint var_texture = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_level = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLint var_zoffset = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glFramebufferTexture3DOES: GL checksumCalculator failure\n"); } this->glFramebufferTexture3DOES(var_target, var_attachment, var_textarget, var_texture, var_level, var_zoffset); SET_LASTCALL("glFramebufferTexture3DOES"); android::base::endTrace(); break; } case OP_glBindVertexArrayOES: { android::base::beginTrace("glBindVertexArrayOES decode"); GLuint var_array = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBindVertexArrayOES: GL checksumCalculator failure\n"); } this->glBindVertexArrayOES(var_array); SET_LASTCALL("glBindVertexArrayOES"); android::base::endTrace(); break; } case OP_glDeleteVertexArraysOES: { android::base::beginTrace("glDeleteVertexArraysOES decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_arrays __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_arrays(ptr + 8 + 4 + 4, size_arrays); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_arrays, ptr + 8 + 4 + 4 + size_arrays, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteVertexArraysOES: GL checksumCalculator failure\n"); } this->glDeleteVertexArraysOES_dec(this, var_n, (const GLuint*)(inptr_arrays.get())); SET_LASTCALL("glDeleteVertexArraysOES"); android::base::endTrace(); break; } case OP_glGenVertexArraysOES: { android::base::beginTrace("glGenVertexArraysOES decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_arrays __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGenVertexArraysOES: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_arrays; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_arrays(&tmpBuf[0], size_arrays); this->glGenVertexArraysOES_dec(this, var_n, (GLuint*)(outptr_arrays.get())); outptr_arrays.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGenVertexArraysOES"); android::base::endTrace(); break; } case OP_glIsVertexArrayOES: { android::base::beginTrace("glIsVertexArrayOES decode"); GLuint var_array = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glIsVertexArrayOES: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsVertexArrayOES(var_array); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsVertexArrayOES"); android::base::endTrace(); break; } case OP_glDiscardFramebufferEXT: { android::base::beginTrace("glDiscardFramebufferEXT decode"); GLenum var_target = Unpack(ptr + 8); GLsizei var_numAttachments = Unpack(ptr + 8 + 4); uint32_t size_attachments __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_attachments(ptr + 8 + 4 + 4 + 4, size_attachments); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_attachments, ptr + 8 + 4 + 4 + 4 + size_attachments, checksumSize, "gles2_decoder_context_t::decode, OP_glDiscardFramebufferEXT: GL checksumCalculator failure\n"); } this->glDiscardFramebufferEXT(var_target, var_numAttachments, (const GLenum*)(inptr_attachments.get())); SET_LASTCALL("glDiscardFramebufferEXT"); android::base::endTrace(); break; } case OP_glMultiDrawArraysEXT: { android::base::beginTrace("glMultiDrawArraysEXT decode"); GLenum var_mode = Unpack(ptr + 8); uint32_t size_first __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_first(ptr + 8 + 4 + 4, size_first); uint32_t size_count __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + size_first); InputBuffer inptr_count(ptr + 8 + 4 + 4 + size_first + 4, size_count); GLsizei var_primcount = Unpack(ptr + 8 + 4 + 4 + size_first + 4 + size_count); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_first + 4 + size_count + 4, ptr + 8 + 4 + 4 + size_first + 4 + size_count + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glMultiDrawArraysEXT: GL checksumCalculator failure\n"); } this->glMultiDrawArraysEXT(var_mode, (const GLint*)(inptr_first.get()), (const GLsizei*)(inptr_count.get()), var_primcount); SET_LASTCALL("glMultiDrawArraysEXT"); android::base::endTrace(); break; } case OP_glMultiDrawElementsEXT: { android::base::beginTrace("glMultiDrawElementsEXT decode"); GLenum var_mode = Unpack(ptr + 8); uint32_t size_count __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_count(ptr + 8 + 4 + 4, size_count); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + size_count); uint32_t size_indices __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + size_count + 4); InputBuffer inptr_indices(ptr + 8 + 4 + 4 + size_count + 4 + 4, size_indices); GLsizei var_primcount = Unpack(ptr + 8 + 4 + 4 + size_count + 4 + 4 + size_indices); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_count + 4 + 4 + size_indices + 4, ptr + 8 + 4 + 4 + size_count + 4 + 4 + size_indices + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glMultiDrawElementsEXT: GL checksumCalculator failure\n"); } this->glMultiDrawElementsEXT(var_mode, (const GLsizei*)(inptr_count.get()), var_type, (const GLvoid* const*)(inptr_indices.get()), var_primcount); SET_LASTCALL("glMultiDrawElementsEXT"); android::base::endTrace(); break; } case OP_glGetPerfMonitorGroupsAMD: { android::base::beginTrace("glGetPerfMonitorGroupsAMD decode"); uint32_t size_numGroups __attribute__((unused)) = Unpack(ptr + 8); InputBuffer inptr_numGroups(ptr + 8 + 4, size_numGroups); GLsizei var_groupsSize = Unpack(ptr + 8 + 4 + size_numGroups); uint32_t size_groups __attribute__((unused)) = Unpack(ptr + 8 + 4 + size_numGroups + 4); InputBuffer inptr_groups(ptr + 8 + 4 + size_numGroups + 4 + 4, size_groups); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_numGroups + 4 + 4 + size_groups, ptr + 8 + 4 + size_numGroups + 4 + 4 + size_groups, checksumSize, "gles2_decoder_context_t::decode, OP_glGetPerfMonitorGroupsAMD: GL checksumCalculator failure\n"); } this->glGetPerfMonitorGroupsAMD((GLint*)(inptr_numGroups.get()), var_groupsSize, (GLuint*)(inptr_groups.get())); SET_LASTCALL("glGetPerfMonitorGroupsAMD"); android::base::endTrace(); break; } case OP_glGetPerfMonitorCountersAMD: { android::base::beginTrace("glGetPerfMonitorCountersAMD decode"); GLuint var_group = Unpack(ptr + 8); uint32_t size_numCounters __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_numCounters(ptr + 8 + 4 + 4, size_numCounters); uint32_t size_maxActiveCounters __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + size_numCounters); InputBuffer inptr_maxActiveCounters(ptr + 8 + 4 + 4 + size_numCounters + 4, size_maxActiveCounters); GLsizei var_counterSize = Unpack(ptr + 8 + 4 + 4 + size_numCounters + 4 + size_maxActiveCounters); uint32_t size_counters __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + size_numCounters + 4 + size_maxActiveCounters + 4); InputBuffer inptr_counters(ptr + 8 + 4 + 4 + size_numCounters + 4 + size_maxActiveCounters + 4 + 4, size_counters); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_numCounters + 4 + size_maxActiveCounters + 4 + 4 + size_counters, ptr + 8 + 4 + 4 + size_numCounters + 4 + size_maxActiveCounters + 4 + 4 + size_counters, checksumSize, "gles2_decoder_context_t::decode, OP_glGetPerfMonitorCountersAMD: GL checksumCalculator failure\n"); } this->glGetPerfMonitorCountersAMD(var_group, (GLint*)(inptr_numCounters.get()), (GLint*)(inptr_maxActiveCounters.get()), var_counterSize, (GLuint*)(inptr_counters.get())); SET_LASTCALL("glGetPerfMonitorCountersAMD"); android::base::endTrace(); break; } case OP_glGetPerfMonitorGroupStringAMD: { android::base::beginTrace("glGetPerfMonitorGroupStringAMD decode"); GLuint var_group = Unpack(ptr + 8); GLsizei var_bufSize = Unpack(ptr + 8 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_length(ptr + 8 + 4 + 4 + 4, size_length); uint32_t size_groupString __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + size_length); InputBuffer inptr_groupString(ptr + 8 + 4 + 4 + 4 + size_length + 4, size_groupString); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_length + 4 + size_groupString, ptr + 8 + 4 + 4 + 4 + size_length + 4 + size_groupString, checksumSize, "gles2_decoder_context_t::decode, OP_glGetPerfMonitorGroupStringAMD: GL checksumCalculator failure\n"); } this->glGetPerfMonitorGroupStringAMD(var_group, var_bufSize, (GLsizei*)(inptr_length.get()), (GLchar*)(inptr_groupString.get())); SET_LASTCALL("glGetPerfMonitorGroupStringAMD"); android::base::endTrace(); break; } case OP_glGetPerfMonitorCounterStringAMD: { android::base::beginTrace("glGetPerfMonitorCounterStringAMD decode"); GLuint var_group = Unpack(ptr + 8); GLuint var_counter = Unpack(ptr + 8 + 4); GLsizei var_bufSize = Unpack(ptr + 8 + 4 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_length(ptr + 8 + 4 + 4 + 4 + 4, size_length); uint32_t size_counterString __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + size_length); InputBuffer inptr_counterString(ptr + 8 + 4 + 4 + 4 + 4 + size_length + 4, size_counterString); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_length + 4 + size_counterString, ptr + 8 + 4 + 4 + 4 + 4 + size_length + 4 + size_counterString, checksumSize, "gles2_decoder_context_t::decode, OP_glGetPerfMonitorCounterStringAMD: GL checksumCalculator failure\n"); } this->glGetPerfMonitorCounterStringAMD(var_group, var_counter, var_bufSize, (GLsizei*)(inptr_length.get()), (GLchar*)(inptr_counterString.get())); SET_LASTCALL("glGetPerfMonitorCounterStringAMD"); android::base::endTrace(); break; } case OP_glGetPerfMonitorCounterInfoAMD: { android::base::beginTrace("glGetPerfMonitorCounterInfoAMD decode"); GLuint var_group = Unpack(ptr + 8); GLuint var_counter = Unpack(ptr + 8 + 4); GLenum var_pname = Unpack(ptr + 8 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4, size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + size_data, checksumSize, "gles2_decoder_context_t::decode, OP_glGetPerfMonitorCounterInfoAMD: GL checksumCalculator failure\n"); } this->glGetPerfMonitorCounterInfoAMD(var_group, var_counter, var_pname, (GLvoid*)(inptr_data.get())); SET_LASTCALL("glGetPerfMonitorCounterInfoAMD"); android::base::endTrace(); break; } case OP_glGenPerfMonitorsAMD: { android::base::beginTrace("glGenPerfMonitorsAMD decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_monitors __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_monitors(ptr + 8 + 4 + 4, size_monitors); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_monitors, ptr + 8 + 4 + 4 + size_monitors, checksumSize, "gles2_decoder_context_t::decode, OP_glGenPerfMonitorsAMD: GL checksumCalculator failure\n"); } this->glGenPerfMonitorsAMD(var_n, (GLuint*)(inptr_monitors.get())); SET_LASTCALL("glGenPerfMonitorsAMD"); android::base::endTrace(); break; } case OP_glDeletePerfMonitorsAMD: { android::base::beginTrace("glDeletePerfMonitorsAMD decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_monitors __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_monitors(ptr + 8 + 4 + 4, size_monitors); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_monitors, ptr + 8 + 4 + 4 + size_monitors, checksumSize, "gles2_decoder_context_t::decode, OP_glDeletePerfMonitorsAMD: GL checksumCalculator failure\n"); } this->glDeletePerfMonitorsAMD(var_n, (GLuint*)(inptr_monitors.get())); SET_LASTCALL("glDeletePerfMonitorsAMD"); android::base::endTrace(); break; } case OP_glSelectPerfMonitorCountersAMD: { android::base::beginTrace("glSelectPerfMonitorCountersAMD decode"); GLuint var_monitor = Unpack(ptr + 8); GLboolean var_enable = Unpack(ptr + 8 + 4); GLuint var_group = Unpack(ptr + 8 + 4 + 1); GLint var_numCounters = Unpack(ptr + 8 + 4 + 1 + 4); uint32_t size_countersList __attribute__((unused)) = Unpack(ptr + 8 + 4 + 1 + 4 + 4); InputBuffer inptr_countersList(ptr + 8 + 4 + 1 + 4 + 4 + 4, size_countersList); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 1 + 4 + 4 + 4 + size_countersList, ptr + 8 + 4 + 1 + 4 + 4 + 4 + size_countersList, checksumSize, "gles2_decoder_context_t::decode, OP_glSelectPerfMonitorCountersAMD: GL checksumCalculator failure\n"); } this->glSelectPerfMonitorCountersAMD(var_monitor, var_enable, var_group, var_numCounters, (GLuint*)(inptr_countersList.get())); SET_LASTCALL("glSelectPerfMonitorCountersAMD"); android::base::endTrace(); break; } case OP_glBeginPerfMonitorAMD: { android::base::beginTrace("glBeginPerfMonitorAMD decode"); GLuint var_monitor = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBeginPerfMonitorAMD: GL checksumCalculator failure\n"); } this->glBeginPerfMonitorAMD(var_monitor); SET_LASTCALL("glBeginPerfMonitorAMD"); android::base::endTrace(); break; } case OP_glEndPerfMonitorAMD: { android::base::beginTrace("glEndPerfMonitorAMD decode"); GLuint var_monitor = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glEndPerfMonitorAMD: GL checksumCalculator failure\n"); } this->glEndPerfMonitorAMD(var_monitor); SET_LASTCALL("glEndPerfMonitorAMD"); android::base::endTrace(); break; } case OP_glGetPerfMonitorCounterDataAMD: { android::base::beginTrace("glGetPerfMonitorCounterDataAMD decode"); GLuint var_monitor = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); GLsizei var_dataSize = Unpack(ptr + 8 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4, size_data); uint32_t size_bytesWritten __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + size_data); InputBuffer inptr_bytesWritten(ptr + 8 + 4 + 4 + 4 + 4 + size_data + 4, size_bytesWritten); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_data + 4 + size_bytesWritten, ptr + 8 + 4 + 4 + 4 + 4 + size_data + 4 + size_bytesWritten, checksumSize, "gles2_decoder_context_t::decode, OP_glGetPerfMonitorCounterDataAMD: GL checksumCalculator failure\n"); } this->glGetPerfMonitorCounterDataAMD(var_monitor, var_pname, var_dataSize, (GLuint*)(inptr_data.get()), (GLint*)(inptr_bytesWritten.get())); SET_LASTCALL("glGetPerfMonitorCounterDataAMD"); android::base::endTrace(); break; } case OP_glRenderbufferStorageMultisampleIMG: { android::base::beginTrace("glRenderbufferStorageMultisampleIMG decode"); GLenum var_target = Unpack(ptr + 8); GLsizei var_samples = Unpack(ptr + 8 + 4); GLenum var_internalformat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glRenderbufferStorageMultisampleIMG: GL checksumCalculator failure\n"); } this->glRenderbufferStorageMultisampleIMG(var_target, var_samples, var_internalformat, var_width, var_height); SET_LASTCALL("glRenderbufferStorageMultisampleIMG"); android::base::endTrace(); break; } case OP_glFramebufferTexture2DMultisampleIMG: { android::base::beginTrace("glFramebufferTexture2DMultisampleIMG decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_attachment = Unpack(ptr + 8 + 4); GLenum var_textarget = Unpack(ptr + 8 + 4 + 4); GLuint var_texture = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_level = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_samples = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glFramebufferTexture2DMultisampleIMG: GL checksumCalculator failure\n"); } this->glFramebufferTexture2DMultisampleIMG(var_target, var_attachment, var_textarget, var_texture, var_level, var_samples); SET_LASTCALL("glFramebufferTexture2DMultisampleIMG"); android::base::endTrace(); break; } case OP_glDeleteFencesNV: { android::base::beginTrace("glDeleteFencesNV decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_fences __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_fences(ptr + 8 + 4 + 4, size_fences); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_fences, ptr + 8 + 4 + 4 + size_fences, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteFencesNV: GL checksumCalculator failure\n"); } this->glDeleteFencesNV(var_n, (const GLuint*)(inptr_fences.get())); SET_LASTCALL("glDeleteFencesNV"); android::base::endTrace(); break; } case OP_glGenFencesNV: { android::base::beginTrace("glGenFencesNV decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_fences __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_fences(ptr + 8 + 4 + 4, size_fences); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_fences, ptr + 8 + 4 + 4 + size_fences, checksumSize, "gles2_decoder_context_t::decode, OP_glGenFencesNV: GL checksumCalculator failure\n"); } this->glGenFencesNV(var_n, (GLuint*)(inptr_fences.get())); SET_LASTCALL("glGenFencesNV"); android::base::endTrace(); break; } case OP_glIsFenceNV: { android::base::beginTrace("glIsFenceNV decode"); GLuint var_fence = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glIsFenceNV: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsFenceNV(var_fence); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsFenceNV"); android::base::endTrace(); break; } case OP_glTestFenceNV: { android::base::beginTrace("glTestFenceNV decode"); GLuint var_fence = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glTestFenceNV: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glTestFenceNV(var_fence); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glTestFenceNV"); android::base::endTrace(); break; } case OP_glGetFenceivNV: { android::base::beginTrace("glGetFenceivNV decode"); GLuint var_fence = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_params(ptr + 8 + 4 + 4 + 4, size_params); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + 4 + size_params, checksumSize, "gles2_decoder_context_t::decode, OP_glGetFenceivNV: GL checksumCalculator failure\n"); } this->glGetFenceivNV(var_fence, var_pname, (GLint*)(inptr_params.get())); SET_LASTCALL("glGetFenceivNV"); android::base::endTrace(); break; } case OP_glFinishFenceNV: { android::base::beginTrace("glFinishFenceNV decode"); GLuint var_fence = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glFinishFenceNV: GL checksumCalculator failure\n"); } this->glFinishFenceNV(var_fence); SET_LASTCALL("glFinishFenceNV"); android::base::endTrace(); break; } case OP_glSetFenceNV: { android::base::beginTrace("glSetFenceNV decode"); GLuint var_fence = Unpack(ptr + 8); GLenum var_condition = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glSetFenceNV: GL checksumCalculator failure\n"); } this->glSetFenceNV(var_fence, var_condition); SET_LASTCALL("glSetFenceNV"); android::base::endTrace(); break; } case OP_glCoverageMaskNV: { android::base::beginTrace("glCoverageMaskNV decode"); GLboolean var_mask = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 1, ptr + 8 + 1, checksumSize, "gles2_decoder_context_t::decode, OP_glCoverageMaskNV: GL checksumCalculator failure\n"); } this->glCoverageMaskNV(var_mask); SET_LASTCALL("glCoverageMaskNV"); android::base::endTrace(); break; } case OP_glCoverageOperationNV: { android::base::beginTrace("glCoverageOperationNV decode"); GLenum var_operation = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCoverageOperationNV: GL checksumCalculator failure\n"); } this->glCoverageOperationNV(var_operation); SET_LASTCALL("glCoverageOperationNV"); android::base::endTrace(); break; } case OP_glGetDriverControlsQCOM: { android::base::beginTrace("glGetDriverControlsQCOM decode"); uint32_t size_num __attribute__((unused)) = Unpack(ptr + 8); InputBuffer inptr_num(ptr + 8 + 4, size_num); GLsizei var_size = Unpack(ptr + 8 + 4 + size_num); uint32_t size_driverControls __attribute__((unused)) = Unpack(ptr + 8 + 4 + size_num + 4); InputBuffer inptr_driverControls(ptr + 8 + 4 + size_num + 4 + 4, size_driverControls); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_num + 4 + 4 + size_driverControls, ptr + 8 + 4 + size_num + 4 + 4 + size_driverControls, checksumSize, "gles2_decoder_context_t::decode, OP_glGetDriverControlsQCOM: GL checksumCalculator failure\n"); } this->glGetDriverControlsQCOM((GLint*)(inptr_num.get()), var_size, (GLuint*)(inptr_driverControls.get())); SET_LASTCALL("glGetDriverControlsQCOM"); android::base::endTrace(); break; } case OP_glGetDriverControlStringQCOM: { android::base::beginTrace("glGetDriverControlStringQCOM decode"); GLuint var_driverControl = Unpack(ptr + 8); GLsizei var_bufSize = Unpack(ptr + 8 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_length(ptr + 8 + 4 + 4 + 4, size_length); uint32_t size_driverControlString __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + size_length); InputBuffer inptr_driverControlString(ptr + 8 + 4 + 4 + 4 + size_length + 4, size_driverControlString); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_length + 4 + size_driverControlString, ptr + 8 + 4 + 4 + 4 + size_length + 4 + size_driverControlString, checksumSize, "gles2_decoder_context_t::decode, OP_glGetDriverControlStringQCOM: GL checksumCalculator failure\n"); } this->glGetDriverControlStringQCOM(var_driverControl, var_bufSize, (GLsizei*)(inptr_length.get()), (GLchar*)(inptr_driverControlString.get())); SET_LASTCALL("glGetDriverControlStringQCOM"); android::base::endTrace(); break; } case OP_glEnableDriverControlQCOM: { android::base::beginTrace("glEnableDriverControlQCOM decode"); GLuint var_driverControl = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glEnableDriverControlQCOM: GL checksumCalculator failure\n"); } this->glEnableDriverControlQCOM(var_driverControl); SET_LASTCALL("glEnableDriverControlQCOM"); android::base::endTrace(); break; } case OP_glDisableDriverControlQCOM: { android::base::beginTrace("glDisableDriverControlQCOM decode"); GLuint var_driverControl = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDisableDriverControlQCOM: GL checksumCalculator failure\n"); } this->glDisableDriverControlQCOM(var_driverControl); SET_LASTCALL("glDisableDriverControlQCOM"); android::base::endTrace(); break; } case OP_glExtGetTexturesQCOM: { android::base::beginTrace("glExtGetTexturesQCOM decode"); uint32_t size_textures __attribute__((unused)) = Unpack(ptr + 8); InputBuffer inptr_textures(ptr + 8 + 4, size_textures); GLint var_maxTextures = Unpack(ptr + 8 + 4 + size_textures); uint32_t size_numTextures __attribute__((unused)) = Unpack(ptr + 8 + 4 + size_textures + 4); InputBuffer inptr_numTextures(ptr + 8 + 4 + size_textures + 4 + 4, size_numTextures); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_textures + 4 + 4 + size_numTextures, ptr + 8 + 4 + size_textures + 4 + 4 + size_numTextures, checksumSize, "gles2_decoder_context_t::decode, OP_glExtGetTexturesQCOM: GL checksumCalculator failure\n"); } this->glExtGetTexturesQCOM((GLuint*)(inptr_textures.get()), var_maxTextures, (GLint*)(inptr_numTextures.get())); SET_LASTCALL("glExtGetTexturesQCOM"); android::base::endTrace(); break; } case OP_glExtGetBuffersQCOM: { android::base::beginTrace("glExtGetBuffersQCOM decode"); uint32_t size_buffers __attribute__((unused)) = Unpack(ptr + 8); InputBuffer inptr_buffers(ptr + 8 + 4, size_buffers); GLint var_maxBuffers = Unpack(ptr + 8 + 4 + size_buffers); uint32_t size_numBuffers __attribute__((unused)) = Unpack(ptr + 8 + 4 + size_buffers + 4); InputBuffer inptr_numBuffers(ptr + 8 + 4 + size_buffers + 4 + 4, size_numBuffers); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_buffers + 4 + 4 + size_numBuffers, ptr + 8 + 4 + size_buffers + 4 + 4 + size_numBuffers, checksumSize, "gles2_decoder_context_t::decode, OP_glExtGetBuffersQCOM: GL checksumCalculator failure\n"); } this->glExtGetBuffersQCOM((GLuint*)(inptr_buffers.get()), var_maxBuffers, (GLint*)(inptr_numBuffers.get())); SET_LASTCALL("glExtGetBuffersQCOM"); android::base::endTrace(); break; } case OP_glExtGetRenderbuffersQCOM: { android::base::beginTrace("glExtGetRenderbuffersQCOM decode"); uint32_t size_renderbuffers __attribute__((unused)) = Unpack(ptr + 8); InputBuffer inptr_renderbuffers(ptr + 8 + 4, size_renderbuffers); GLint var_maxRenderbuffers = Unpack(ptr + 8 + 4 + size_renderbuffers); uint32_t size_numRenderbuffers __attribute__((unused)) = Unpack(ptr + 8 + 4 + size_renderbuffers + 4); InputBuffer inptr_numRenderbuffers(ptr + 8 + 4 + size_renderbuffers + 4 + 4, size_numRenderbuffers); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_renderbuffers + 4 + 4 + size_numRenderbuffers, ptr + 8 + 4 + size_renderbuffers + 4 + 4 + size_numRenderbuffers, checksumSize, "gles2_decoder_context_t::decode, OP_glExtGetRenderbuffersQCOM: GL checksumCalculator failure\n"); } this->glExtGetRenderbuffersQCOM((GLuint*)(inptr_renderbuffers.get()), var_maxRenderbuffers, (GLint*)(inptr_numRenderbuffers.get())); SET_LASTCALL("glExtGetRenderbuffersQCOM"); android::base::endTrace(); break; } case OP_glExtGetFramebuffersQCOM: { android::base::beginTrace("glExtGetFramebuffersQCOM decode"); uint32_t size_framebuffers __attribute__((unused)) = Unpack(ptr + 8); InputBuffer inptr_framebuffers(ptr + 8 + 4, size_framebuffers); GLint var_maxFramebuffers = Unpack(ptr + 8 + 4 + size_framebuffers); uint32_t size_numFramebuffers __attribute__((unused)) = Unpack(ptr + 8 + 4 + size_framebuffers + 4); InputBuffer inptr_numFramebuffers(ptr + 8 + 4 + size_framebuffers + 4 + 4, size_numFramebuffers); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_framebuffers + 4 + 4 + size_numFramebuffers, ptr + 8 + 4 + size_framebuffers + 4 + 4 + size_numFramebuffers, checksumSize, "gles2_decoder_context_t::decode, OP_glExtGetFramebuffersQCOM: GL checksumCalculator failure\n"); } this->glExtGetFramebuffersQCOM((GLuint*)(inptr_framebuffers.get()), var_maxFramebuffers, (GLint*)(inptr_numFramebuffers.get())); SET_LASTCALL("glExtGetFramebuffersQCOM"); android::base::endTrace(); break; } case OP_glExtGetTexLevelParameterivQCOM: { android::base::beginTrace("glExtGetTexLevelParameterivQCOM decode"); GLuint var_texture = Unpack(ptr + 8); GLenum var_face = Unpack(ptr + 8 + 4); GLint var_level = Unpack(ptr + 8 + 4 + 4); GLenum var_pname = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); InputBuffer inptr_params(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_params); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_params, checksumSize, "gles2_decoder_context_t::decode, OP_glExtGetTexLevelParameterivQCOM: GL checksumCalculator failure\n"); } this->glExtGetTexLevelParameterivQCOM(var_texture, var_face, var_level, var_pname, (GLint*)(inptr_params.get())); SET_LASTCALL("glExtGetTexLevelParameterivQCOM"); android::base::endTrace(); break; } case OP_glExtTexObjectStateOverrideiQCOM: { android::base::beginTrace("glExtTexObjectStateOverrideiQCOM decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); GLint var_param = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glExtTexObjectStateOverrideiQCOM: GL checksumCalculator failure\n"); } this->glExtTexObjectStateOverrideiQCOM(var_target, var_pname, var_param); SET_LASTCALL("glExtTexObjectStateOverrideiQCOM"); android::base::endTrace(); break; } case OP_glExtGetTexSubImageQCOM: { android::base::beginTrace("glExtGetTexSubImageQCOM decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_xoffset = Unpack(ptr + 8 + 4 + 4); GLint var_yoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_zoffset = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_depth = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); uint32_t size_texels __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_texels(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_texels); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_texels, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_texels, checksumSize, "gles2_decoder_context_t::decode, OP_glExtGetTexSubImageQCOM: GL checksumCalculator failure\n"); } this->glExtGetTexSubImageQCOM(var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_type, (GLvoid*)(inptr_texels.get())); SET_LASTCALL("glExtGetTexSubImageQCOM"); android::base::endTrace(); break; } case OP_glExtGetBufferPointervQCOM: { android::base::beginTrace("glExtGetBufferPointervQCOM decode"); GLenum var_target = Unpack(ptr + 8); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_params(ptr + 8 + 4 + 4, size_params); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + size_params, checksumSize, "gles2_decoder_context_t::decode, OP_glExtGetBufferPointervQCOM: GL checksumCalculator failure\n"); } this->glExtGetBufferPointervQCOM(var_target, (GLvoidptr*)(inptr_params.get())); SET_LASTCALL("glExtGetBufferPointervQCOM"); android::base::endTrace(); break; } case OP_glExtGetShadersQCOM: { android::base::beginTrace("glExtGetShadersQCOM decode"); uint32_t size_shaders __attribute__((unused)) = Unpack(ptr + 8); InputBuffer inptr_shaders(ptr + 8 + 4, size_shaders); GLint var_maxShaders = Unpack(ptr + 8 + 4 + size_shaders); uint32_t size_numShaders __attribute__((unused)) = Unpack(ptr + 8 + 4 + size_shaders + 4); InputBuffer inptr_numShaders(ptr + 8 + 4 + size_shaders + 4 + 4, size_numShaders); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_shaders + 4 + 4 + size_numShaders, ptr + 8 + 4 + size_shaders + 4 + 4 + size_numShaders, checksumSize, "gles2_decoder_context_t::decode, OP_glExtGetShadersQCOM: GL checksumCalculator failure\n"); } this->glExtGetShadersQCOM((GLuint*)(inptr_shaders.get()), var_maxShaders, (GLint*)(inptr_numShaders.get())); SET_LASTCALL("glExtGetShadersQCOM"); android::base::endTrace(); break; } case OP_glExtGetProgramsQCOM: { android::base::beginTrace("glExtGetProgramsQCOM decode"); uint32_t size_programs __attribute__((unused)) = Unpack(ptr + 8); InputBuffer inptr_programs(ptr + 8 + 4, size_programs); GLint var_maxPrograms = Unpack(ptr + 8 + 4 + size_programs); uint32_t size_numPrograms __attribute__((unused)) = Unpack(ptr + 8 + 4 + size_programs + 4); InputBuffer inptr_numPrograms(ptr + 8 + 4 + size_programs + 4 + 4, size_numPrograms); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_programs + 4 + 4 + size_numPrograms, ptr + 8 + 4 + size_programs + 4 + 4 + size_numPrograms, checksumSize, "gles2_decoder_context_t::decode, OP_glExtGetProgramsQCOM: GL checksumCalculator failure\n"); } this->glExtGetProgramsQCOM((GLuint*)(inptr_programs.get()), var_maxPrograms, (GLint*)(inptr_numPrograms.get())); SET_LASTCALL("glExtGetProgramsQCOM"); android::base::endTrace(); break; } case OP_glExtIsProgramBinaryQCOM: { android::base::beginTrace("glExtIsProgramBinaryQCOM decode"); GLuint var_program = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glExtIsProgramBinaryQCOM: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glExtIsProgramBinaryQCOM(var_program); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glExtIsProgramBinaryQCOM"); android::base::endTrace(); break; } case OP_glExtGetProgramBinarySourceQCOM: { android::base::beginTrace("glExtGetProgramBinarySourceQCOM decode"); GLuint var_program = Unpack(ptr + 8); GLenum var_shadertype = Unpack(ptr + 8 + 4); uint32_t size_source __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_source(ptr + 8 + 4 + 4 + 4, size_source); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + size_source); InputBuffer inptr_length(ptr + 8 + 4 + 4 + 4 + size_source + 4, size_length); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_source + 4 + size_length, ptr + 8 + 4 + 4 + 4 + size_source + 4 + size_length, checksumSize, "gles2_decoder_context_t::decode, OP_glExtGetProgramBinarySourceQCOM: GL checksumCalculator failure\n"); } this->glExtGetProgramBinarySourceQCOM(var_program, var_shadertype, (GLchar*)(inptr_source.get()), (GLint*)(inptr_length.get())); SET_LASTCALL("glExtGetProgramBinarySourceQCOM"); android::base::endTrace(); break; } case OP_glStartTilingQCOM: { android::base::beginTrace("glStartTilingQCOM decode"); GLuint var_x = Unpack(ptr + 8); GLuint var_y = Unpack(ptr + 8 + 4); GLuint var_width = Unpack(ptr + 8 + 4 + 4); GLuint var_height = Unpack(ptr + 8 + 4 + 4 + 4); GLbitfield var_preserveMask = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glStartTilingQCOM: GL checksumCalculator failure\n"); } this->glStartTilingQCOM(var_x, var_y, var_width, var_height, var_preserveMask); SET_LASTCALL("glStartTilingQCOM"); android::base::endTrace(); break; } case OP_glEndTilingQCOM: { android::base::beginTrace("glEndTilingQCOM decode"); GLbitfield var_preserveMask = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glEndTilingQCOM: GL checksumCalculator failure\n"); } this->glEndTilingQCOM(var_preserveMask); SET_LASTCALL("glEndTilingQCOM"); android::base::endTrace(); break; } case OP_glVertexAttribPointerData: { android::base::beginTrace("glVertexAttribPointerData decode"); GLuint var_indx = Unpack(ptr + 8); GLint var_size = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); GLboolean var_normalized = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_stride = Unpack(ptr + 8 + 4 + 4 + 4 + 1); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 1 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4, size_data); GLuint var_datalen = Unpack(ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4 + size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + 4 + size_data + 4, ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4 + size_data + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttribPointerData: GL checksumCalculator failure\n"); } this->glVertexAttribPointerData(this, var_indx, var_size, var_type, var_normalized, var_stride, (void*)(inptr_data.get()), var_datalen); SET_LASTCALL("glVertexAttribPointerData"); android::base::endTrace(); break; } case OP_glVertexAttribPointerOffset: { android::base::beginTrace("glVertexAttribPointerOffset decode"); GLuint var_indx = Unpack(ptr + 8); GLint var_size = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); GLboolean var_normalized = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_stride = Unpack(ptr + 8 + 4 + 4 + 4 + 1); GLuint var_offset = Unpack(ptr + 8 + 4 + 4 + 4 + 1 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttribPointerOffset: GL checksumCalculator failure\n"); } this->glVertexAttribPointerOffset(this, var_indx, var_size, var_type, var_normalized, var_stride, var_offset); SET_LASTCALL("glVertexAttribPointerOffset"); android::base::endTrace(); break; } case OP_glDrawElementsOffset: { android::base::beginTrace("glDrawElementsOffset decode"); GLenum var_mode = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); GLuint var_offset = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawElementsOffset: GL checksumCalculator failure\n"); } this->glDrawElementsOffset(this, var_mode, var_count, var_type, var_offset); SET_LASTCALL("glDrawElementsOffset"); android::base::endTrace(); break; } case OP_glDrawElementsData: { android::base::beginTrace("glDrawElementsData decode"); GLenum var_mode = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4, size_data); GLuint var_datalen = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_data + 4, ptr + 8 + 4 + 4 + 4 + 4 + size_data + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawElementsData: GL checksumCalculator failure\n"); } this->glDrawElementsData(this, var_mode, var_count, var_type, (void*)(inptr_data.get()), var_datalen); SET_LASTCALL("glDrawElementsData"); android::base::endTrace(); break; } case OP_glGetCompressedTextureFormats: { android::base::beginTrace("glGetCompressedTextureFormats decode"); int var_count = Unpack(ptr + 8); uint32_t size_formats __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetCompressedTextureFormats: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_formats; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_formats(&tmpBuf[0], size_formats); this->glGetCompressedTextureFormats(this, var_count, (GLint*)(outptr_formats.get())); outptr_formats.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetCompressedTextureFormats"); android::base::endTrace(); break; } case OP_glShaderString: { android::base::beginTrace("glShaderString decode"); GLuint var_shader = Unpack(ptr + 8); uint32_t size_string __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_string(ptr + 8 + 4 + 4, size_string); GLsizei var_len = Unpack(ptr + 8 + 4 + 4 + size_string); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_string + 4, ptr + 8 + 4 + 4 + size_string + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glShaderString: GL checksumCalculator failure\n"); } this->glShaderString(this, var_shader, (const GLchar*)(inptr_string.get()), var_len); SET_LASTCALL("glShaderString"); android::base::endTrace(); break; } case OP_glFinishRoundTrip: { android::base::beginTrace("glFinishRoundTrip decode"); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glFinishRoundTrip: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(int); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(int *)(&tmpBuf[0]) = this->glFinishRoundTrip(this); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glFinishRoundTrip"); android::base::endTrace(); break; } case OP_glGenVertexArrays: { android::base::beginTrace("glGenVertexArrays decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_arrays __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGenVertexArrays: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_arrays; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_arrays(&tmpBuf[0], size_arrays); this->glGenVertexArrays_dec(this, var_n, (GLuint*)(outptr_arrays.get())); outptr_arrays.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGenVertexArrays"); android::base::endTrace(); break; } case OP_glBindVertexArray: { android::base::beginTrace("glBindVertexArray decode"); GLuint var_array = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBindVertexArray: GL checksumCalculator failure\n"); } this->glBindVertexArray(var_array); SET_LASTCALL("glBindVertexArray"); android::base::endTrace(); break; } case OP_glDeleteVertexArrays: { android::base::beginTrace("glDeleteVertexArrays decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_arrays __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_arrays(ptr + 8 + 4 + 4, size_arrays); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_arrays, ptr + 8 + 4 + 4 + size_arrays, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteVertexArrays: GL checksumCalculator failure\n"); } this->glDeleteVertexArrays_dec(this, var_n, (const GLuint*)(inptr_arrays.get())); SET_LASTCALL("glDeleteVertexArrays"); android::base::endTrace(); break; } case OP_glIsVertexArray: { android::base::beginTrace("glIsVertexArray decode"); GLuint var_array = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glIsVertexArray: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsVertexArray(var_array); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsVertexArray"); android::base::endTrace(); break; } case OP_glMapBufferRange: { android::base::beginTrace("glMapBufferRange decode"); GLenum var_target = Unpack(ptr + 8); GLintptr var_offset = Unpack(ptr + 8 + 4); GLsizeiptr var_length = Unpack(ptr + 8 + 4 + 4); GLbitfield var_access = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glMapBufferRange: GL checksumCalculator failure\n"); } this->glMapBufferRange(var_target, var_offset, var_length, var_access); SET_LASTCALL("glMapBufferRange"); android::base::endTrace(); break; } case OP_glUnmapBuffer: { android::base::beginTrace("glUnmapBuffer decode"); GLenum var_target = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUnmapBuffer: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glUnmapBuffer(var_target); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glUnmapBuffer"); android::base::endTrace(); break; } case OP_glFlushMappedBufferRange: { android::base::beginTrace("glFlushMappedBufferRange decode"); GLenum var_target = Unpack(ptr + 8); GLintptr var_offset = Unpack(ptr + 8 + 4); GLsizeiptr var_length = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glFlushMappedBufferRange: GL checksumCalculator failure\n"); } this->glFlushMappedBufferRange(var_target, var_offset, var_length); SET_LASTCALL("glFlushMappedBufferRange"); android::base::endTrace(); break; } case OP_glMapBufferRangeAEMU: { android::base::beginTrace("glMapBufferRangeAEMU decode"); GLenum var_target = Unpack(ptr + 8); GLintptr var_offset = Unpack(ptr + 8 + 4); GLsizeiptr var_length = Unpack(ptr + 8 + 4 + 4); GLbitfield var_access = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_mapped __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glMapBufferRangeAEMU: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_mapped; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_mapped(&tmpBuf[0], size_mapped); this->glMapBufferRangeAEMU(this, var_target, var_offset, var_length, var_access, size_mapped == 0 ? nullptr : (void*)(outptr_mapped.get())); outptr_mapped.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glMapBufferRangeAEMU"); android::base::endTrace(); break; } case OP_glUnmapBufferAEMU: { android::base::beginTrace("glUnmapBufferAEMU decode"); GLenum var_target = Unpack(ptr + 8); GLintptr var_offset = Unpack(ptr + 8 + 4); GLsizeiptr var_length = Unpack(ptr + 8 + 4 + 4); GLbitfield var_access = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_guest_buffer __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); InputBuffer inptr_guest_buffer(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_guest_buffer); uint32_t size_out_res __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUnmapBufferAEMU: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_out_res; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_out_res(&tmpBuf[0], size_out_res); this->glUnmapBufferAEMU(this, var_target, var_offset, var_length, var_access, size_guest_buffer == 0 ? nullptr : (void*)(inptr_guest_buffer.get()), (GLboolean*)(outptr_out_res.get())); outptr_out_res.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glUnmapBufferAEMU"); android::base::endTrace(); break; } case OP_glFlushMappedBufferRangeAEMU: { android::base::beginTrace("glFlushMappedBufferRangeAEMU decode"); GLenum var_target = Unpack(ptr + 8); GLintptr var_offset = Unpack(ptr + 8 + 4); GLsizeiptr var_length = Unpack(ptr + 8 + 4 + 4); GLbitfield var_access = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_guest_buffer __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); InputBuffer inptr_guest_buffer(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_guest_buffer); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer, checksumSize, "gles2_decoder_context_t::decode, OP_glFlushMappedBufferRangeAEMU: GL checksumCalculator failure\n"); } this->glFlushMappedBufferRangeAEMU(this, var_target, var_offset, var_length, var_access, size_guest_buffer == 0 ? nullptr : (void*)(inptr_guest_buffer.get())); SET_LASTCALL("glFlushMappedBufferRangeAEMU"); android::base::endTrace(); break; } case OP_glReadPixelsOffsetAEMU: { android::base::beginTrace("glReadPixelsOffsetAEMU decode"); GLint var_x = Unpack(ptr + 8); GLint var_y = Unpack(ptr + 8 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLuint var_offset = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glReadPixelsOffsetAEMU: GL checksumCalculator failure\n"); } this->glReadPixelsOffsetAEMU(this, var_x, var_y, var_width, var_height, var_format, var_type, var_offset); SET_LASTCALL("glReadPixelsOffsetAEMU"); android::base::endTrace(); break; } case OP_glCompressedTexImage2DOffsetAEMU: { android::base::beginTrace("glCompressedTexImage2DOffsetAEMU decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLenum var_internalformat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLint var_border = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLsizei var_imageSize = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLuint var_offset = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCompressedTexImage2DOffsetAEMU: GL checksumCalculator failure\n"); } this->glCompressedTexImage2DOffsetAEMU(this, var_target, var_level, var_internalformat, var_width, var_height, var_border, var_imageSize, var_offset); SET_LASTCALL("glCompressedTexImage2DOffsetAEMU"); android::base::endTrace(); break; } case OP_glCompressedTexSubImage2DOffsetAEMU: { android::base::beginTrace("glCompressedTexSubImage2DOffsetAEMU decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_xoffset = Unpack(ptr + 8 + 4 + 4); GLint var_yoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_imageSize = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLuint var_offset = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCompressedTexSubImage2DOffsetAEMU: GL checksumCalculator failure\n"); } this->glCompressedTexSubImage2DOffsetAEMU(this, var_target, var_level, var_xoffset, var_yoffset, var_width, var_height, var_format, var_imageSize, var_offset); SET_LASTCALL("glCompressedTexSubImage2DOffsetAEMU"); android::base::endTrace(); break; } case OP_glTexImage2DOffsetAEMU: { android::base::beginTrace("glTexImage2DOffsetAEMU decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_internalformat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLint var_border = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLuint var_offset = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glTexImage2DOffsetAEMU: GL checksumCalculator failure\n"); } this->glTexImage2DOffsetAEMU(this, var_target, var_level, var_internalformat, var_width, var_height, var_border, var_format, var_type, var_offset); SET_LASTCALL("glTexImage2DOffsetAEMU"); android::base::endTrace(); break; } case OP_glTexSubImage2DOffsetAEMU: { android::base::beginTrace("glTexSubImage2DOffsetAEMU decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_xoffset = Unpack(ptr + 8 + 4 + 4); GLint var_yoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLuint var_offset = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glTexSubImage2DOffsetAEMU: GL checksumCalculator failure\n"); } this->glTexSubImage2DOffsetAEMU(this, var_target, var_level, var_xoffset, var_yoffset, var_width, var_height, var_format, var_type, var_offset); SET_LASTCALL("glTexSubImage2DOffsetAEMU"); android::base::endTrace(); break; } case OP_glBindBufferRange: { android::base::beginTrace("glBindBufferRange decode"); GLenum var_target = Unpack(ptr + 8); GLuint var_index = Unpack(ptr + 8 + 4); GLuint var_buffer = Unpack(ptr + 8 + 4 + 4); GLintptr var_offset = Unpack(ptr + 8 + 4 + 4 + 4); GLsizeiptr var_size = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBindBufferRange: GL checksumCalculator failure\n"); } this->glBindBufferRange(var_target, var_index, var_buffer, var_offset, var_size); SET_LASTCALL("glBindBufferRange"); android::base::endTrace(); break; } case OP_glBindBufferBase: { android::base::beginTrace("glBindBufferBase decode"); GLenum var_target = Unpack(ptr + 8); GLuint var_index = Unpack(ptr + 8 + 4); GLuint var_buffer = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBindBufferBase: GL checksumCalculator failure\n"); } this->glBindBufferBase(var_target, var_index, var_buffer); SET_LASTCALL("glBindBufferBase"); android::base::endTrace(); break; } case OP_glCopyBufferSubData: { android::base::beginTrace("glCopyBufferSubData decode"); GLenum var_readtarget = Unpack(ptr + 8); GLenum var_writetarget = Unpack(ptr + 8 + 4); GLintptr var_readoffset = Unpack(ptr + 8 + 4 + 4); GLintptr var_writeoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLsizeiptr var_size = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCopyBufferSubData: GL checksumCalculator failure\n"); } this->glCopyBufferSubData(var_readtarget, var_writetarget, var_readoffset, var_writeoffset, var_size); SET_LASTCALL("glCopyBufferSubData"); android::base::endTrace(); break; } case OP_glClearBufferiv: { android::base::beginTrace("glClearBufferiv decode"); GLenum var_buffer = Unpack(ptr + 8); GLint var_drawBuffer = Unpack(ptr + 8 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glClearBufferiv: GL checksumCalculator failure\n"); } this->glClearBufferiv(var_buffer, var_drawBuffer, (const GLint*)(inptr_value.get())); SET_LASTCALL("glClearBufferiv"); android::base::endTrace(); break; } case OP_glClearBufferuiv: { android::base::beginTrace("glClearBufferuiv decode"); GLenum var_buffer = Unpack(ptr + 8); GLint var_drawBuffer = Unpack(ptr + 8 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glClearBufferuiv: GL checksumCalculator failure\n"); } this->glClearBufferuiv(var_buffer, var_drawBuffer, (const GLuint*)(inptr_value.get())); SET_LASTCALL("glClearBufferuiv"); android::base::endTrace(); break; } case OP_glClearBufferfv: { android::base::beginTrace("glClearBufferfv decode"); GLenum var_buffer = Unpack(ptr + 8); GLint var_drawBuffer = Unpack(ptr + 8 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glClearBufferfv: GL checksumCalculator failure\n"); } this->glClearBufferfv(var_buffer, var_drawBuffer, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glClearBufferfv"); android::base::endTrace(); break; } case OP_glClearBufferfi: { android::base::beginTrace("glClearBufferfi decode"); GLenum var_buffer = Unpack(ptr + 8); GLint var_drawBuffer = Unpack(ptr + 8 + 4); GLfloat var_depth = Unpack(ptr + 8 + 4 + 4); GLint var_stencil = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glClearBufferfi: GL checksumCalculator failure\n"); } this->glClearBufferfi(var_buffer, var_drawBuffer, var_depth, var_stencil); SET_LASTCALL("glClearBufferfi"); android::base::endTrace(); break; } case OP_glGetBufferParameteri64v: { android::base::beginTrace("glGetBufferParameteri64v decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_value = Unpack(ptr + 8 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4, size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + size_data, checksumSize, "gles2_decoder_context_t::decode, OP_glGetBufferParameteri64v: GL checksumCalculator failure\n"); } this->glGetBufferParameteri64v(var_target, var_value, (GLint64*)(inptr_data.get())); SET_LASTCALL("glGetBufferParameteri64v"); android::base::endTrace(); break; } case OP_glGetBufferPointerv: { android::base::beginTrace("glGetBufferPointerv decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_params(ptr + 8 + 4 + 4 + 4, size_params); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + 4 + size_params, checksumSize, "gles2_decoder_context_t::decode, OP_glGetBufferPointerv: GL checksumCalculator failure\n"); } this->glGetBufferPointerv(var_target, var_pname, (GLvoid**)(inptr_params.get())); SET_LASTCALL("glGetBufferPointerv"); android::base::endTrace(); break; } case OP_glUniformBlockBinding: { android::base::beginTrace("glUniformBlockBinding decode"); GLuint var_program = Unpack(ptr + 8); GLuint var_uniformBlockIndex = Unpack(ptr + 8 + 4); GLuint var_uniformBlockBinding = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUniformBlockBinding: GL checksumCalculator failure\n"); } this->glUniformBlockBinding_dec(this, var_program, var_uniformBlockIndex, var_uniformBlockBinding); SET_LASTCALL("glUniformBlockBinding"); android::base::endTrace(); break; } case OP_glGetUniformBlockIndex: { android::base::beginTrace("glGetUniformBlockIndex decode"); GLuint var_program = Unpack(ptr + 8); uint32_t size_uniformBlockName __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_uniformBlockName(ptr + 8 + 4 + 4, size_uniformBlockName); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_uniformBlockName, ptr + 8 + 4 + 4 + size_uniformBlockName, checksumSize, "gles2_decoder_context_t::decode, OP_glGetUniformBlockIndex: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLuint); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLuint *)(&tmpBuf[0]) = this->glGetUniformBlockIndex_dec(this, var_program, (const GLchar*)(inptr_uniformBlockName.get())); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetUniformBlockIndex"); android::base::endTrace(); break; } case OP_glGetUniformIndices: { android::base::beginTrace("glGetUniformIndices decode"); GLuint var_program = Unpack(ptr + 8); GLsizei var_uniformCount = Unpack(ptr + 8 + 4); uint32_t size_uniformNames __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_uniformNames(ptr + 8 + 4 + 4 + 4, size_uniformNames); uint32_t size_uniformIndices __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + size_uniformNames); InputBuffer inptr_uniformIndices(ptr + 8 + 4 + 4 + 4 + size_uniformNames + 4, size_uniformIndices); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_uniformNames + 4 + size_uniformIndices, ptr + 8 + 4 + 4 + 4 + size_uniformNames + 4 + size_uniformIndices, checksumSize, "gles2_decoder_context_t::decode, OP_glGetUniformIndices: GL checksumCalculator failure\n"); } this->glGetUniformIndices(var_program, var_uniformCount, (const GLchar**)(inptr_uniformNames.get()), (GLuint*)(inptr_uniformIndices.get())); SET_LASTCALL("glGetUniformIndices"); android::base::endTrace(); break; } case OP_glGetUniformIndicesAEMU: { android::base::beginTrace("glGetUniformIndicesAEMU decode"); GLuint var_program = Unpack(ptr + 8); GLsizei var_uniformCount = Unpack(ptr + 8 + 4); uint32_t size_packedUniformNames __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_packedUniformNames(ptr + 8 + 4 + 4 + 4, size_packedUniformNames); GLsizei var_packedLen = Unpack(ptr + 8 + 4 + 4 + 4 + size_packedUniformNames); uint32_t size_uniformIndices __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + size_packedUniformNames + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_packedUniformNames + 4 + 4, ptr + 8 + 4 + 4 + 4 + size_packedUniformNames + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetUniformIndicesAEMU: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_uniformIndices; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_uniformIndices(&tmpBuf[0], size_uniformIndices); this->glGetUniformIndicesAEMU(this, var_program, var_uniformCount, (const GLchar*)(inptr_packedUniformNames.get()), var_packedLen, (GLuint*)(outptr_uniformIndices.get())); outptr_uniformIndices.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetUniformIndicesAEMU"); android::base::endTrace(); break; } case OP_glGetActiveUniformBlockiv: { android::base::beginTrace("glGetActiveUniformBlockiv decode"); GLuint var_program = Unpack(ptr + 8); GLuint var_uniformBlockIndex = Unpack(ptr + 8 + 4); GLenum var_pname = Unpack(ptr + 8 + 4 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetActiveUniformBlockiv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetActiveUniformBlockiv_dec(this, var_program, var_uniformBlockIndex, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetActiveUniformBlockiv"); android::base::endTrace(); break; } case OP_glGetActiveUniformBlockName: { android::base::beginTrace("glGetActiveUniformBlockName decode"); GLuint var_program = Unpack(ptr + 8); GLuint var_uniformBlockIndex = Unpack(ptr + 8 + 4); GLsizei var_bufSize = Unpack(ptr + 8 + 4 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_uniformBlockName __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetActiveUniformBlockName: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_length; totalTmpSize += size_uniformBlockName; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_length(&tmpBuf[0], size_length); OutputBuffer outptr_uniformBlockName(&tmpBuf[0 + size_length], size_uniformBlockName); this->glGetActiveUniformBlockName_dec(this, var_program, var_uniformBlockIndex, var_bufSize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), size_uniformBlockName == 0 ? nullptr : (GLchar*)(outptr_uniformBlockName.get())); outptr_length.flush(); outptr_uniformBlockName.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetActiveUniformBlockName"); android::base::endTrace(); break; } case OP_glUniform1ui: { android::base::beginTrace("glUniform1ui decode"); GLint var_location = Unpack(ptr + 8); GLuint var_v0 = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform1ui: GL checksumCalculator failure\n"); } this->glUniform1ui(var_location, var_v0); SET_LASTCALL("glUniform1ui"); android::base::endTrace(); break; } case OP_glUniform2ui: { android::base::beginTrace("glUniform2ui decode"); GLint var_location = Unpack(ptr + 8); GLuint var_v0 = Unpack(ptr + 8 + 4); GLuint var_v1 = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform2ui: GL checksumCalculator failure\n"); } this->glUniform2ui(var_location, var_v0, var_v1); SET_LASTCALL("glUniform2ui"); android::base::endTrace(); break; } case OP_glUniform3ui: { android::base::beginTrace("glUniform3ui decode"); GLint var_location = Unpack(ptr + 8); GLuint var_v0 = Unpack(ptr + 8 + 4); GLuint var_v1 = Unpack(ptr + 8 + 4 + 4); GLuint var_v2 = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform3ui: GL checksumCalculator failure\n"); } this->glUniform3ui(var_location, var_v0, var_v1, var_v2); SET_LASTCALL("glUniform3ui"); android::base::endTrace(); break; } case OP_glUniform4ui: { android::base::beginTrace("glUniform4ui decode"); GLint var_location = Unpack(ptr + 8); GLint var_v0 = Unpack(ptr + 8 + 4); GLuint var_v1 = Unpack(ptr + 8 + 4 + 4); GLuint var_v2 = Unpack(ptr + 8 + 4 + 4 + 4); GLuint var_v3 = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform4ui: GL checksumCalculator failure\n"); } this->glUniform4ui(var_location, var_v0, var_v1, var_v2, var_v3); SET_LASTCALL("glUniform4ui"); android::base::endTrace(); break; } case OP_glUniform1uiv: { android::base::beginTrace("glUniform1uiv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform1uiv: GL checksumCalculator failure\n"); } this->glUniform1uiv(var_location, var_count, (const GLuint*)(inptr_value.get())); SET_LASTCALL("glUniform1uiv"); android::base::endTrace(); break; } case OP_glUniform2uiv: { android::base::beginTrace("glUniform2uiv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform2uiv: GL checksumCalculator failure\n"); } this->glUniform2uiv(var_location, var_count, (const GLuint*)(inptr_value.get())); SET_LASTCALL("glUniform2uiv"); android::base::endTrace(); break; } case OP_glUniform3uiv: { android::base::beginTrace("glUniform3uiv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform3uiv: GL checksumCalculator failure\n"); } this->glUniform3uiv(var_location, var_count, (const GLuint*)(inptr_value.get())); SET_LASTCALL("glUniform3uiv"); android::base::endTrace(); break; } case OP_glUniform4uiv: { android::base::beginTrace("glUniform4uiv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glUniform4uiv: GL checksumCalculator failure\n"); } this->glUniform4uiv(var_location, var_count, (const GLuint*)(inptr_value.get())); SET_LASTCALL("glUniform4uiv"); android::base::endTrace(); break; } case OP_glUniformMatrix2x3fv: { android::base::beginTrace("glUniformMatrix2x3fv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glUniformMatrix2x3fv: GL checksumCalculator failure\n"); } this->glUniformMatrix2x3fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glUniformMatrix2x3fv"); android::base::endTrace(); break; } case OP_glUniformMatrix3x2fv: { android::base::beginTrace("glUniformMatrix3x2fv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glUniformMatrix3x2fv: GL checksumCalculator failure\n"); } this->glUniformMatrix3x2fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glUniformMatrix3x2fv"); android::base::endTrace(); break; } case OP_glUniformMatrix2x4fv: { android::base::beginTrace("glUniformMatrix2x4fv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glUniformMatrix2x4fv: GL checksumCalculator failure\n"); } this->glUniformMatrix2x4fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glUniformMatrix2x4fv"); android::base::endTrace(); break; } case OP_glUniformMatrix4x2fv: { android::base::beginTrace("glUniformMatrix4x2fv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glUniformMatrix4x2fv: GL checksumCalculator failure\n"); } this->glUniformMatrix4x2fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glUniformMatrix4x2fv"); android::base::endTrace(); break; } case OP_glUniformMatrix3x4fv: { android::base::beginTrace("glUniformMatrix3x4fv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glUniformMatrix3x4fv: GL checksumCalculator failure\n"); } this->glUniformMatrix3x4fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glUniformMatrix3x4fv"); android::base::endTrace(); break; } case OP_glUniformMatrix4x3fv: { android::base::beginTrace("glUniformMatrix4x3fv decode"); GLint var_location = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glUniformMatrix4x3fv: GL checksumCalculator failure\n"); } this->glUniformMatrix4x3fv(var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glUniformMatrix4x3fv"); android::base::endTrace(); break; } case OP_glGetUniformuiv: { android::base::beginTrace("glGetUniformuiv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetUniformuiv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetUniformuiv_dec(this, var_program, var_location, (GLuint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetUniformuiv"); android::base::endTrace(); break; } case OP_glGetActiveUniformsiv: { android::base::beginTrace("glGetActiveUniformsiv decode"); GLuint var_program = Unpack(ptr + 8); GLsizei var_uniformCount = Unpack(ptr + 8 + 4); uint32_t size_uniformIndices __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_uniformIndices(ptr + 8 + 4 + 4 + 4, size_uniformIndices); GLenum var_pname = Unpack(ptr + 8 + 4 + 4 + 4 + size_uniformIndices); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + size_uniformIndices + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_uniformIndices + 4 + 4, ptr + 8 + 4 + 4 + 4 + size_uniformIndices + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetActiveUniformsiv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetActiveUniformsiv_dec(this, var_program, var_uniformCount, (const GLuint*)(inptr_uniformIndices.get()), var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetActiveUniformsiv"); android::base::endTrace(); break; } case OP_glVertexAttribI4i: { android::base::beginTrace("glVertexAttribI4i decode"); GLuint var_index = Unpack(ptr + 8); GLint var_v0 = Unpack(ptr + 8 + 4); GLint var_v1 = Unpack(ptr + 8 + 4 + 4); GLint var_v2 = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_v3 = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttribI4i: GL checksumCalculator failure\n"); } this->glVertexAttribI4i(var_index, var_v0, var_v1, var_v2, var_v3); SET_LASTCALL("glVertexAttribI4i"); android::base::endTrace(); break; } case OP_glVertexAttribI4ui: { android::base::beginTrace("glVertexAttribI4ui decode"); GLuint var_index = Unpack(ptr + 8); GLuint var_v0 = Unpack(ptr + 8 + 4); GLuint var_v1 = Unpack(ptr + 8 + 4 + 4); GLuint var_v2 = Unpack(ptr + 8 + 4 + 4 + 4); GLuint var_v3 = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttribI4ui: GL checksumCalculator failure\n"); } this->glVertexAttribI4ui(var_index, var_v0, var_v1, var_v2, var_v3); SET_LASTCALL("glVertexAttribI4ui"); android::base::endTrace(); break; } case OP_glVertexAttribI4iv: { android::base::beginTrace("glVertexAttribI4iv decode"); GLuint var_index = Unpack(ptr + 8); uint32_t size_v __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_v(ptr + 8 + 4 + 4, size_v); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + size_v, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttribI4iv: GL checksumCalculator failure\n"); } this->glVertexAttribI4iv(var_index, (const GLint*)(inptr_v.get())); SET_LASTCALL("glVertexAttribI4iv"); android::base::endTrace(); break; } case OP_glVertexAttribI4uiv: { android::base::beginTrace("glVertexAttribI4uiv decode"); GLuint var_index = Unpack(ptr + 8); uint32_t size_v __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_v(ptr + 8 + 4 + 4, size_v); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_v, ptr + 8 + 4 + 4 + size_v, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttribI4uiv: GL checksumCalculator failure\n"); } this->glVertexAttribI4uiv(var_index, (const GLuint*)(inptr_v.get())); SET_LASTCALL("glVertexAttribI4uiv"); android::base::endTrace(); break; } case OP_glVertexAttribIPointer: { android::base::beginTrace("glVertexAttribIPointer decode"); GLuint var_index = Unpack(ptr + 8); GLint var_size = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); GLsizei var_stride = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_pointer __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); InputBuffer inptr_pointer(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_pointer); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_pointer, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_pointer, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttribIPointer: GL checksumCalculator failure\n"); } this->glVertexAttribIPointer(var_index, var_size, var_type, var_stride, (const GLvoid*)(inptr_pointer.get())); SET_LASTCALL("glVertexAttribIPointer"); android::base::endTrace(); break; } case OP_glVertexAttribIPointerOffsetAEMU: { android::base::beginTrace("glVertexAttribIPointerOffsetAEMU decode"); GLuint var_index = Unpack(ptr + 8); GLint var_size = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); GLsizei var_stride = Unpack(ptr + 8 + 4 + 4 + 4); GLuint var_offset = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttribIPointerOffsetAEMU: GL checksumCalculator failure\n"); } this->glVertexAttribIPointerOffsetAEMU(this, var_index, var_size, var_type, var_stride, var_offset); SET_LASTCALL("glVertexAttribIPointerOffsetAEMU"); android::base::endTrace(); break; } case OP_glVertexAttribIPointerDataAEMU: { android::base::beginTrace("glVertexAttribIPointerDataAEMU decode"); GLuint var_index = Unpack(ptr + 8); GLint var_size = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); GLsizei var_stride = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_data); GLuint var_datalen = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_data + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_data + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttribIPointerDataAEMU: GL checksumCalculator failure\n"); } this->glVertexAttribIPointerDataAEMU(this, var_index, var_size, var_type, var_stride, (void*)(inptr_data.get()), var_datalen); SET_LASTCALL("glVertexAttribIPointerDataAEMU"); android::base::endTrace(); break; } case OP_glGetVertexAttribIiv: { android::base::beginTrace("glGetVertexAttribIiv decode"); GLuint var_index = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetVertexAttribIiv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetVertexAttribIiv(var_index, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetVertexAttribIiv"); android::base::endTrace(); break; } case OP_glGetVertexAttribIuiv: { android::base::beginTrace("glGetVertexAttribIuiv decode"); GLuint var_index = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetVertexAttribIuiv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetVertexAttribIuiv(var_index, var_pname, (GLuint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetVertexAttribIuiv"); android::base::endTrace(); break; } case OP_glVertexAttribDivisor: { android::base::beginTrace("glVertexAttribDivisor decode"); GLuint var_index = Unpack(ptr + 8); GLuint var_divisor = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttribDivisor: GL checksumCalculator failure\n"); } this->glVertexAttribDivisor(var_index, var_divisor); SET_LASTCALL("glVertexAttribDivisor"); android::base::endTrace(); break; } case OP_glDrawArraysInstanced: { android::base::beginTrace("glDrawArraysInstanced decode"); GLenum var_mode = Unpack(ptr + 8); GLint var_first = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); GLsizei var_primcount = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawArraysInstanced: GL checksumCalculator failure\n"); } this->glDrawArraysInstanced(var_mode, var_first, var_count, var_primcount); SET_LASTCALL("glDrawArraysInstanced"); android::base::endTrace(); break; } case OP_glDrawElementsInstanced: { android::base::beginTrace("glDrawElementsInstanced decode"); GLenum var_mode = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); uint32_t size_indices __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_indices(ptr + 8 + 4 + 4 + 4 + 4, size_indices); GLsizei var_primcount = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + size_indices); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_indices + 4, ptr + 8 + 4 + 4 + 4 + 4 + size_indices + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawElementsInstanced: GL checksumCalculator failure\n"); } this->glDrawElementsInstanced(var_mode, var_count, var_type, (const void*)(inptr_indices.get()), var_primcount); SET_LASTCALL("glDrawElementsInstanced"); android::base::endTrace(); break; } case OP_glDrawElementsInstancedDataAEMU: { android::base::beginTrace("glDrawElementsInstancedDataAEMU decode"); GLenum var_mode = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); uint32_t size_indices __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_indices(ptr + 8 + 4 + 4 + 4 + 4, size_indices); GLsizei var_primcount = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + size_indices); GLsizei var_datalen = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + size_indices + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_indices + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + size_indices + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawElementsInstancedDataAEMU: GL checksumCalculator failure\n"); } this->glDrawElementsInstancedDataAEMU(this, var_mode, var_count, var_type, (const void*)(inptr_indices.get()), var_primcount, var_datalen); SET_LASTCALL("glDrawElementsInstancedDataAEMU"); android::base::endTrace(); break; } case OP_glDrawElementsInstancedOffsetAEMU: { android::base::beginTrace("glDrawElementsInstancedOffsetAEMU decode"); GLenum var_mode = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); GLuint var_offset = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_primcount = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawElementsInstancedOffsetAEMU: GL checksumCalculator failure\n"); } this->glDrawElementsInstancedOffsetAEMU(this, var_mode, var_count, var_type, var_offset, var_primcount); SET_LASTCALL("glDrawElementsInstancedOffsetAEMU"); android::base::endTrace(); break; } case OP_glDrawRangeElements: { android::base::beginTrace("glDrawRangeElements decode"); GLenum var_mode = Unpack(ptr + 8); GLuint var_start = Unpack(ptr + 8 + 4); GLuint var_end = Unpack(ptr + 8 + 4 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4); uint32_t size_indices __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_indices(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, size_indices); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + size_indices, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + size_indices, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawRangeElements: GL checksumCalculator failure\n"); } this->glDrawRangeElements(var_mode, var_start, var_end, var_count, var_type, (const GLvoid*)(inptr_indices.get())); SET_LASTCALL("glDrawRangeElements"); android::base::endTrace(); break; } case OP_glDrawRangeElementsDataAEMU: { android::base::beginTrace("glDrawRangeElementsDataAEMU decode"); GLenum var_mode = Unpack(ptr + 8); GLuint var_start = Unpack(ptr + 8 + 4); GLuint var_end = Unpack(ptr + 8 + 4 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4); uint32_t size_indices __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_indices(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, size_indices); GLsizei var_datalen = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + size_indices); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + size_indices + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + size_indices + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawRangeElementsDataAEMU: GL checksumCalculator failure\n"); } this->glDrawRangeElementsDataAEMU(this, var_mode, var_start, var_end, var_count, var_type, (const GLvoid*)(inptr_indices.get()), var_datalen); SET_LASTCALL("glDrawRangeElementsDataAEMU"); android::base::endTrace(); break; } case OP_glDrawRangeElementsOffsetAEMU: { android::base::beginTrace("glDrawRangeElementsOffsetAEMU decode"); GLenum var_mode = Unpack(ptr + 8); GLuint var_start = Unpack(ptr + 8 + 4); GLuint var_end = Unpack(ptr + 8 + 4 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLuint var_offset = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawRangeElementsOffsetAEMU: GL checksumCalculator failure\n"); } this->glDrawRangeElementsOffsetAEMU(this, var_mode, var_start, var_end, var_count, var_type, var_offset); SET_LASTCALL("glDrawRangeElementsOffsetAEMU"); android::base::endTrace(); break; } case OP_glFenceSync: { android::base::beginTrace("glFenceSync decode"); GLenum var_condition = Unpack(ptr + 8); GLbitfield var_flags = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glFenceSync: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLsync); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLsync *)(&tmpBuf[0]) = this->glFenceSync(var_condition, var_flags); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glFenceSync"); android::base::endTrace(); break; } case OP_glClientWaitSync: { android::base::beginTrace("glClientWaitSync decode"); GLsync var_wait_on = Unpack(ptr + 8); GLbitfield var_flags = Unpack(ptr + 8 + 8); GLuint64 var_timeout = Unpack(ptr + 8 + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 8, ptr + 8 + 8 + 4 + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glClientWaitSync: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLenum); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLenum *)(&tmpBuf[0]) = this->glClientWaitSync(var_wait_on, var_flags, var_timeout); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glClientWaitSync"); android::base::endTrace(); break; } case OP_glWaitSync: { android::base::beginTrace("glWaitSync decode"); GLsync var_wait_on = Unpack(ptr + 8); GLbitfield var_flags = Unpack(ptr + 8 + 8); GLuint64 var_timeout = Unpack(ptr + 8 + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 8, ptr + 8 + 8 + 4 + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glWaitSync: GL checksumCalculator failure\n"); } this->glWaitSync(var_wait_on, var_flags, var_timeout); SET_LASTCALL("glWaitSync"); android::base::endTrace(); break; } case OP_glDeleteSync: { android::base::beginTrace("glDeleteSync decode"); GLsync var_to_delete = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteSync: GL checksumCalculator failure\n"); } this->glDeleteSync(var_to_delete); SET_LASTCALL("glDeleteSync"); android::base::endTrace(); break; } case OP_glIsSync: { android::base::beginTrace("glIsSync decode"); GLsync var_sync = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glIsSync: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsSync(var_sync); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsSync"); android::base::endTrace(); break; } case OP_glGetSynciv: { android::base::beginTrace("glGetSynciv decode"); GLsync var_sync = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 8); GLsizei var_bufSize = Unpack(ptr + 8 + 8 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 8 + 4 + 4); InputBuffer inptr_length(ptr + 8 + 8 + 4 + 4 + 4, size_length); uint32_t size_values __attribute__((unused)) = Unpack(ptr + 8 + 8 + 4 + 4 + 4 + size_length); InputBuffer inptr_values(ptr + 8 + 8 + 4 + 4 + 4 + size_length + 4, size_values); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 4 + 4 + size_length + 4 + size_values, ptr + 8 + 8 + 4 + 4 + 4 + size_length + 4 + size_values, checksumSize, "gles2_decoder_context_t::decode, OP_glGetSynciv: GL checksumCalculator failure\n"); } this->glGetSynciv(var_sync, var_pname, var_bufSize, (GLsizei*)(inptr_length.get()), (GLint*)(inptr_values.get())); SET_LASTCALL("glGetSynciv"); android::base::endTrace(); break; } case OP_glFenceSyncAEMU: { android::base::beginTrace("glFenceSyncAEMU decode"); GLenum var_condition = Unpack(ptr + 8); GLbitfield var_flags = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glFenceSyncAEMU: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(uint64_t); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(uint64_t *)(&tmpBuf[0]) = this->glFenceSyncAEMU(this, var_condition, var_flags); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glFenceSyncAEMU"); android::base::endTrace(); break; } case OP_glClientWaitSyncAEMU: { android::base::beginTrace("glClientWaitSyncAEMU decode"); uint64_t var_wait_on = Unpack(ptr + 8); GLbitfield var_flags = Unpack(ptr + 8 + 8); GLuint64 var_timeout = Unpack(ptr + 8 + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 8, ptr + 8 + 8 + 4 + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glClientWaitSyncAEMU: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLenum); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLenum *)(&tmpBuf[0]) = this->glClientWaitSyncAEMU(this, var_wait_on, var_flags, var_timeout); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glClientWaitSyncAEMU"); android::base::endTrace(); break; } case OP_glWaitSyncAEMU: { android::base::beginTrace("glWaitSyncAEMU decode"); uint64_t var_wait_on = Unpack(ptr + 8); GLbitfield var_flags = Unpack(ptr + 8 + 8); GLuint64 var_timeout = Unpack(ptr + 8 + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 8, ptr + 8 + 8 + 4 + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glWaitSyncAEMU: GL checksumCalculator failure\n"); } this->glWaitSyncAEMU(this, var_wait_on, var_flags, var_timeout); SET_LASTCALL("glWaitSyncAEMU"); android::base::endTrace(); break; } case OP_glDeleteSyncAEMU: { android::base::beginTrace("glDeleteSyncAEMU decode"); uint64_t var_to_delete = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteSyncAEMU: GL checksumCalculator failure\n"); } this->glDeleteSyncAEMU(this, var_to_delete); SET_LASTCALL("glDeleteSyncAEMU"); android::base::endTrace(); break; } case OP_glIsSyncAEMU: { android::base::beginTrace("glIsSyncAEMU decode"); uint64_t var_sync = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glIsSyncAEMU: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsSyncAEMU(this, var_sync); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsSyncAEMU"); android::base::endTrace(); break; } case OP_glGetSyncivAEMU: { android::base::beginTrace("glGetSyncivAEMU decode"); uint64_t var_sync = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 8); GLsizei var_bufSize = Unpack(ptr + 8 + 8 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 8 + 4 + 4); uint32_t size_values __attribute__((unused)) = Unpack(ptr + 8 + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 4 + 4 + 4, ptr + 8 + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetSyncivAEMU: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_length; totalTmpSize += size_values; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_length(&tmpBuf[0], size_length); OutputBuffer outptr_values(&tmpBuf[0 + size_length], size_values); this->glGetSyncivAEMU(this, var_sync, var_pname, var_bufSize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLint*)(outptr_values.get())); outptr_length.flush(); outptr_values.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetSyncivAEMU"); android::base::endTrace(); break; } case OP_glDrawBuffers: { android::base::beginTrace("glDrawBuffers decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_bufs __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_bufs(ptr + 8 + 4 + 4, size_bufs); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_bufs, ptr + 8 + 4 + 4 + size_bufs, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawBuffers: GL checksumCalculator failure\n"); } this->glDrawBuffers(var_n, (const GLenum*)(inptr_bufs.get())); SET_LASTCALL("glDrawBuffers"); android::base::endTrace(); break; } case OP_glReadBuffer: { android::base::beginTrace("glReadBuffer decode"); GLenum var_src = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glReadBuffer: GL checksumCalculator failure\n"); } this->glReadBuffer(var_src); SET_LASTCALL("glReadBuffer"); android::base::endTrace(); break; } case OP_glBlitFramebuffer: { android::base::beginTrace("glBlitFramebuffer decode"); GLint var_srcX0 = Unpack(ptr + 8); GLint var_srcY0 = Unpack(ptr + 8 + 4); GLint var_srcX1 = Unpack(ptr + 8 + 4 + 4); GLint var_srcY1 = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_dstX0 = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLint var_dstY0 = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLint var_dstX1 = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLint var_dstY1 = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLbitfield var_mask = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_filter = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBlitFramebuffer: GL checksumCalculator failure\n"); } this->glBlitFramebuffer(var_srcX0, var_srcY0, var_srcX1, var_srcY1, var_dstX0, var_dstY0, var_dstX1, var_dstY1, var_mask, var_filter); SET_LASTCALL("glBlitFramebuffer"); android::base::endTrace(); break; } case OP_glInvalidateFramebuffer: { android::base::beginTrace("glInvalidateFramebuffer decode"); GLenum var_target = Unpack(ptr + 8); GLsizei var_numAttachments = Unpack(ptr + 8 + 4); uint32_t size_attachments __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_attachments(ptr + 8 + 4 + 4 + 4, size_attachments); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_attachments, ptr + 8 + 4 + 4 + 4 + size_attachments, checksumSize, "gles2_decoder_context_t::decode, OP_glInvalidateFramebuffer: GL checksumCalculator failure\n"); } this->glInvalidateFramebuffer(var_target, var_numAttachments, (const GLenum*)(inptr_attachments.get())); SET_LASTCALL("glInvalidateFramebuffer"); android::base::endTrace(); break; } case OP_glInvalidateSubFramebuffer: { android::base::beginTrace("glInvalidateSubFramebuffer decode"); GLenum var_target = Unpack(ptr + 8); GLsizei var_numAttachments = Unpack(ptr + 8 + 4); uint32_t size_attachments __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_attachments(ptr + 8 + 4 + 4 + 4, size_attachments); GLint var_x = Unpack(ptr + 8 + 4 + 4 + 4 + size_attachments); GLint var_y = Unpack(ptr + 8 + 4 + 4 + 4 + size_attachments + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + size_attachments + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + size_attachments + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_attachments + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + size_attachments + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glInvalidateSubFramebuffer: GL checksumCalculator failure\n"); } this->glInvalidateSubFramebuffer(var_target, var_numAttachments, (const GLenum*)(inptr_attachments.get()), var_x, var_y, var_width, var_height); SET_LASTCALL("glInvalidateSubFramebuffer"); android::base::endTrace(); break; } case OP_glFramebufferTextureLayer: { android::base::beginTrace("glFramebufferTextureLayer decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_attachment = Unpack(ptr + 8 + 4); GLuint var_texture = Unpack(ptr + 8 + 4 + 4); GLint var_level = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_layer = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glFramebufferTextureLayer: GL checksumCalculator failure\n"); } this->glFramebufferTextureLayer(var_target, var_attachment, var_texture, var_level, var_layer); SET_LASTCALL("glFramebufferTextureLayer"); android::base::endTrace(); break; } case OP_glRenderbufferStorageMultisample: { android::base::beginTrace("glRenderbufferStorageMultisample decode"); GLenum var_target = Unpack(ptr + 8); GLsizei var_samples = Unpack(ptr + 8 + 4); GLenum var_internalformat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glRenderbufferStorageMultisample: GL checksumCalculator failure\n"); } this->glRenderbufferStorageMultisample(var_target, var_samples, var_internalformat, var_width, var_height); SET_LASTCALL("glRenderbufferStorageMultisample"); android::base::endTrace(); break; } case OP_glTexStorage2D: { android::base::beginTrace("glTexStorage2D decode"); GLenum var_target = Unpack(ptr + 8); GLsizei var_levels = Unpack(ptr + 8 + 4); GLenum var_internalformat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glTexStorage2D: GL checksumCalculator failure\n"); } this->glTexStorage2D(var_target, var_levels, var_internalformat, var_width, var_height); SET_LASTCALL("glTexStorage2D"); android::base::endTrace(); break; } case OP_glGetInternalformativ: { android::base::beginTrace("glGetInternalformativ decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_internalformat = Unpack(ptr + 8 + 4); GLenum var_pname = Unpack(ptr + 8 + 4 + 4); GLsizei var_bufSize = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetInternalformativ: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetInternalformativ(var_target, var_internalformat, var_pname, var_bufSize, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetInternalformativ"); android::base::endTrace(); break; } case OP_glBeginTransformFeedback: { android::base::beginTrace("glBeginTransformFeedback decode"); GLenum var_primitiveMode = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBeginTransformFeedback: GL checksumCalculator failure\n"); } this->glBeginTransformFeedback(var_primitiveMode); SET_LASTCALL("glBeginTransformFeedback"); android::base::endTrace(); break; } case OP_glEndTransformFeedback: { android::base::beginTrace("glEndTransformFeedback decode"); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glEndTransformFeedback: GL checksumCalculator failure\n"); } this->glEndTransformFeedback(); SET_LASTCALL("glEndTransformFeedback"); android::base::endTrace(); break; } case OP_glGenTransformFeedbacks: { android::base::beginTrace("glGenTransformFeedbacks decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_ids __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGenTransformFeedbacks: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_ids; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_ids(&tmpBuf[0], size_ids); this->glGenTransformFeedbacks_dec(this, var_n, (GLuint*)(outptr_ids.get())); outptr_ids.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGenTransformFeedbacks"); android::base::endTrace(); break; } case OP_glDeleteTransformFeedbacks: { android::base::beginTrace("glDeleteTransformFeedbacks decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_ids __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_ids(ptr + 8 + 4 + 4, size_ids); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_ids, ptr + 8 + 4 + 4 + size_ids, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteTransformFeedbacks: GL checksumCalculator failure\n"); } this->glDeleteTransformFeedbacks_dec(this, var_n, (const GLuint*)(inptr_ids.get())); SET_LASTCALL("glDeleteTransformFeedbacks"); android::base::endTrace(); break; } case OP_glBindTransformFeedback: { android::base::beginTrace("glBindTransformFeedback decode"); GLenum var_target = Unpack(ptr + 8); GLuint var_id = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBindTransformFeedback: GL checksumCalculator failure\n"); } this->glBindTransformFeedback(var_target, var_id); SET_LASTCALL("glBindTransformFeedback"); android::base::endTrace(); break; } case OP_glPauseTransformFeedback: { android::base::beginTrace("glPauseTransformFeedback decode"); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glPauseTransformFeedback: GL checksumCalculator failure\n"); } this->glPauseTransformFeedback(); SET_LASTCALL("glPauseTransformFeedback"); android::base::endTrace(); break; } case OP_glResumeTransformFeedback: { android::base::beginTrace("glResumeTransformFeedback decode"); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glResumeTransformFeedback: GL checksumCalculator failure\n"); } this->glResumeTransformFeedback(); SET_LASTCALL("glResumeTransformFeedback"); android::base::endTrace(); break; } case OP_glIsTransformFeedback: { android::base::beginTrace("glIsTransformFeedback decode"); GLuint var_id = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glIsTransformFeedback: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsTransformFeedback(var_id); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsTransformFeedback"); android::base::endTrace(); break; } case OP_glTransformFeedbackVaryings: { android::base::beginTrace("glTransformFeedbackVaryings decode"); GLuint var_program = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_varyings __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_varyings(ptr + 8 + 4 + 4 + 4, size_varyings); GLenum var_bufferMode = Unpack(ptr + 8 + 4 + 4 + 4 + size_varyings); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_varyings + 4, ptr + 8 + 4 + 4 + 4 + size_varyings + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glTransformFeedbackVaryings: GL checksumCalculator failure\n"); } this->glTransformFeedbackVaryings_dec(this, var_program, var_count, (const char**)(inptr_varyings.get()), var_bufferMode); SET_LASTCALL("glTransformFeedbackVaryings"); android::base::endTrace(); break; } case OP_glTransformFeedbackVaryingsAEMU: { android::base::beginTrace("glTransformFeedbackVaryingsAEMU decode"); GLuint var_program = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_packedVaryings __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_packedVaryings(ptr + 8 + 4 + 4 + 4, size_packedVaryings); GLuint var_packedVaryingsLen = Unpack(ptr + 8 + 4 + 4 + 4 + size_packedVaryings); GLenum var_bufferMode = Unpack(ptr + 8 + 4 + 4 + 4 + size_packedVaryings + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_packedVaryings + 4 + 4, ptr + 8 + 4 + 4 + 4 + size_packedVaryings + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glTransformFeedbackVaryingsAEMU: GL checksumCalculator failure\n"); } this->glTransformFeedbackVaryingsAEMU(this, var_program, var_count, (const char*)(inptr_packedVaryings.get()), var_packedVaryingsLen, var_bufferMode); SET_LASTCALL("glTransformFeedbackVaryingsAEMU"); android::base::endTrace(); break; } case OP_glGetTransformFeedbackVarying: { android::base::beginTrace("glGetTransformFeedbackVarying decode"); GLuint var_program = Unpack(ptr + 8); GLuint var_index = Unpack(ptr + 8 + 4); GLsizei var_bufSize = Unpack(ptr + 8 + 4 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_size __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); uint32_t size_type __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); uint32_t size_name __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetTransformFeedbackVarying: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_length; totalTmpSize += size_size; totalTmpSize += size_type; totalTmpSize += size_name; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_length(&tmpBuf[0], size_length); OutputBuffer outptr_size(&tmpBuf[0 + size_length], size_size); OutputBuffer outptr_type(&tmpBuf[0 + size_length + size_size], size_type); OutputBuffer outptr_name(&tmpBuf[0 + size_length + size_size + size_type], size_name); this->glGetTransformFeedbackVarying_dec(this, var_program, var_index, var_bufSize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLsizei*)(outptr_size.get()), size_type == 0 ? nullptr : (GLenum*)(outptr_type.get()), size_name == 0 ? nullptr : (char*)(outptr_name.get())); outptr_length.flush(); outptr_size.flush(); outptr_type.flush(); outptr_name.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetTransformFeedbackVarying"); android::base::endTrace(); break; } case OP_glGenSamplers: { android::base::beginTrace("glGenSamplers decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_samplers __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGenSamplers: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_samplers; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_samplers(&tmpBuf[0], size_samplers); this->glGenSamplers_dec(this, var_n, (GLuint*)(outptr_samplers.get())); outptr_samplers.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGenSamplers"); android::base::endTrace(); break; } case OP_glDeleteSamplers: { android::base::beginTrace("glDeleteSamplers decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_samplers __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_samplers(ptr + 8 + 4 + 4, size_samplers); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_samplers, ptr + 8 + 4 + 4 + size_samplers, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteSamplers: GL checksumCalculator failure\n"); } this->glDeleteSamplers_dec(this, var_n, (const GLuint*)(inptr_samplers.get())); SET_LASTCALL("glDeleteSamplers"); android::base::endTrace(); break; } case OP_glBindSampler: { android::base::beginTrace("glBindSampler decode"); GLuint var_unit = Unpack(ptr + 8); GLuint var_sampler = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBindSampler: GL checksumCalculator failure\n"); } this->glBindSampler(var_unit, var_sampler); SET_LASTCALL("glBindSampler"); android::base::endTrace(); break; } case OP_glSamplerParameterf: { android::base::beginTrace("glSamplerParameterf decode"); GLuint var_sampler = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); GLfloat var_param = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glSamplerParameterf: GL checksumCalculator failure\n"); } this->glSamplerParameterf(var_sampler, var_pname, var_param); SET_LASTCALL("glSamplerParameterf"); android::base::endTrace(); break; } case OP_glSamplerParameteri: { android::base::beginTrace("glSamplerParameteri decode"); GLuint var_sampler = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); GLint var_param = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glSamplerParameteri: GL checksumCalculator failure\n"); } this->glSamplerParameteri(var_sampler, var_pname, var_param); SET_LASTCALL("glSamplerParameteri"); android::base::endTrace(); break; } case OP_glSamplerParameterfv: { android::base::beginTrace("glSamplerParameterfv decode"); GLuint var_sampler = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_params(ptr + 8 + 4 + 4 + 4, size_params); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + 4 + size_params, checksumSize, "gles2_decoder_context_t::decode, OP_glSamplerParameterfv: GL checksumCalculator failure\n"); } this->glSamplerParameterfv(var_sampler, var_pname, (const GLfloat*)(inptr_params.get())); SET_LASTCALL("glSamplerParameterfv"); android::base::endTrace(); break; } case OP_glSamplerParameteriv: { android::base::beginTrace("glSamplerParameteriv decode"); GLuint var_sampler = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_params(ptr + 8 + 4 + 4 + 4, size_params); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_params, ptr + 8 + 4 + 4 + 4 + size_params, checksumSize, "gles2_decoder_context_t::decode, OP_glSamplerParameteriv: GL checksumCalculator failure\n"); } this->glSamplerParameteriv(var_sampler, var_pname, (const GLint*)(inptr_params.get())); SET_LASTCALL("glSamplerParameteriv"); android::base::endTrace(); break; } case OP_glGetSamplerParameterfv: { android::base::beginTrace("glGetSamplerParameterfv decode"); GLuint var_sampler = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetSamplerParameterfv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetSamplerParameterfv(var_sampler, var_pname, (GLfloat*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetSamplerParameterfv"); android::base::endTrace(); break; } case OP_glGetSamplerParameteriv: { android::base::beginTrace("glGetSamplerParameteriv decode"); GLuint var_sampler = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetSamplerParameteriv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetSamplerParameteriv(var_sampler, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetSamplerParameteriv"); android::base::endTrace(); break; } case OP_glIsSampler: { android::base::beginTrace("glIsSampler decode"); GLuint var_sampler = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glIsSampler: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsSampler(var_sampler); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsSampler"); android::base::endTrace(); break; } case OP_glGenQueries: { android::base::beginTrace("glGenQueries decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_queries __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGenQueries: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_queries; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_queries(&tmpBuf[0], size_queries); this->glGenQueries_dec(this, var_n, (GLuint*)(outptr_queries.get())); outptr_queries.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGenQueries"); android::base::endTrace(); break; } case OP_glDeleteQueries: { android::base::beginTrace("glDeleteQueries decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_queries __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_queries(ptr + 8 + 4 + 4, size_queries); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_queries, ptr + 8 + 4 + 4 + size_queries, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteQueries: GL checksumCalculator failure\n"); } this->glDeleteQueries_dec(this, var_n, (const GLuint*)(inptr_queries.get())); SET_LASTCALL("glDeleteQueries"); android::base::endTrace(); break; } case OP_glBeginQuery: { android::base::beginTrace("glBeginQuery decode"); GLenum var_target = Unpack(ptr + 8); GLuint var_query = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBeginQuery: GL checksumCalculator failure\n"); } this->glBeginQuery(var_target, var_query); SET_LASTCALL("glBeginQuery"); android::base::endTrace(); break; } case OP_glEndQuery: { android::base::beginTrace("glEndQuery decode"); GLenum var_target = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glEndQuery: GL checksumCalculator failure\n"); } this->glEndQuery(var_target); SET_LASTCALL("glEndQuery"); android::base::endTrace(); break; } case OP_glGetQueryiv: { android::base::beginTrace("glGetQueryiv decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetQueryiv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetQueryiv(var_target, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetQueryiv"); android::base::endTrace(); break; } case OP_glGetQueryObjectuiv: { android::base::beginTrace("glGetQueryObjectuiv decode"); GLuint var_query = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetQueryObjectuiv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetQueryObjectuiv(var_query, var_pname, (GLuint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetQueryObjectuiv"); android::base::endTrace(); break; } case OP_glIsQuery: { android::base::beginTrace("glIsQuery decode"); GLuint var_query = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glIsQuery: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsQuery(var_query); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsQuery"); android::base::endTrace(); break; } case OP_glProgramParameteri: { android::base::beginTrace("glProgramParameteri decode"); GLuint var_program = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); GLint var_value = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramParameteri: GL checksumCalculator failure\n"); } this->glProgramParameteri_dec(this, var_program, var_pname, var_value); SET_LASTCALL("glProgramParameteri"); android::base::endTrace(); break; } case OP_glProgramBinary: { android::base::beginTrace("glProgramBinary decode"); GLuint var_program = Unpack(ptr + 8); GLenum var_binaryFormat = Unpack(ptr + 8 + 4); uint32_t size_binary __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_binary(ptr + 8 + 4 + 4 + 4, size_binary); GLsizei var_length = Unpack(ptr + 8 + 4 + 4 + 4 + size_binary); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_binary + 4, ptr + 8 + 4 + 4 + 4 + size_binary + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramBinary: GL checksumCalculator failure\n"); } this->glProgramBinary_dec(this, var_program, var_binaryFormat, (const void*)(inptr_binary.get()), var_length); SET_LASTCALL("glProgramBinary"); android::base::endTrace(); break; } case OP_glGetProgramBinary: { android::base::beginTrace("glGetProgramBinary decode"); GLuint var_program = Unpack(ptr + 8); GLsizei var_bufSize = Unpack(ptr + 8 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); uint32_t size_binaryFormat __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_binary __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetProgramBinary: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_length; totalTmpSize += size_binaryFormat; totalTmpSize += size_binary; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_length(&tmpBuf[0], size_length); OutputBuffer outptr_binaryFormat(&tmpBuf[0 + size_length], size_binaryFormat); OutputBuffer outptr_binary(&tmpBuf[0 + size_length + size_binaryFormat], size_binary); this->glGetProgramBinary_dec(this, var_program, var_bufSize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLenum*)(outptr_binaryFormat.get()), (void*)(outptr_binary.get())); outptr_length.flush(); outptr_binaryFormat.flush(); outptr_binary.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetProgramBinary"); android::base::endTrace(); break; } case OP_glGetFragDataLocation: { android::base::beginTrace("glGetFragDataLocation decode"); GLuint var_program = Unpack(ptr + 8); uint32_t size_name __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_name(ptr + 8 + 4 + 4, size_name); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_name, ptr + 8 + 4 + 4 + size_name, checksumSize, "gles2_decoder_context_t::decode, OP_glGetFragDataLocation: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLint); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLint *)(&tmpBuf[0]) = this->glGetFragDataLocation_dec(this, var_program, (const char*)(inptr_name.get())); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetFragDataLocation"); android::base::endTrace(); break; } case OP_glGetInteger64v: { android::base::beginTrace("glGetInteger64v decode"); GLenum var_pname = Unpack(ptr + 8); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetInteger64v: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_data; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_data(&tmpBuf[0], size_data); this->glGetInteger64v(var_pname, (GLint64*)(outptr_data.get())); outptr_data.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetInteger64v"); android::base::endTrace(); break; } case OP_glGetIntegeri_v: { android::base::beginTrace("glGetIntegeri_v decode"); GLenum var_target = Unpack(ptr + 8); GLuint var_index = Unpack(ptr + 8 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetIntegeri_v: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_data; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_data(&tmpBuf[0], size_data); this->glGetIntegeri_v(var_target, var_index, (GLint*)(outptr_data.get())); outptr_data.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetIntegeri_v"); android::base::endTrace(); break; } case OP_glGetInteger64i_v: { android::base::beginTrace("glGetInteger64i_v decode"); GLenum var_target = Unpack(ptr + 8); GLuint var_index = Unpack(ptr + 8 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetInteger64i_v: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_data; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_data(&tmpBuf[0], size_data); this->glGetInteger64i_v(var_target, var_index, (GLint64*)(outptr_data.get())); outptr_data.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetInteger64i_v"); android::base::endTrace(); break; } case OP_glTexImage3D: { android::base::beginTrace("glTexImage3D decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_internalFormat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_depth = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLint var_border = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize, "gles2_decoder_context_t::decode, OP_glTexImage3D: GL checksumCalculator failure\n"); } this->glTexImage3D(var_target, var_level, var_internalFormat, var_width, var_height, var_depth, var_border, var_format, var_type, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get())); SET_LASTCALL("glTexImage3D"); android::base::endTrace(); break; } case OP_glTexImage3DOffsetAEMU: { android::base::beginTrace("glTexImage3DOffsetAEMU decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_internalFormat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_depth = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLint var_border = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLuint var_offset = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glTexImage3DOffsetAEMU: GL checksumCalculator failure\n"); } this->glTexImage3DOffsetAEMU(this, var_target, var_level, var_internalFormat, var_width, var_height, var_depth, var_border, var_format, var_type, var_offset); SET_LASTCALL("glTexImage3DOffsetAEMU"); android::base::endTrace(); break; } case OP_glTexStorage3D: { android::base::beginTrace("glTexStorage3D decode"); GLenum var_target = Unpack(ptr + 8); GLsizei var_levels = Unpack(ptr + 8 + 4); GLenum var_internalformat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_depth = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glTexStorage3D: GL checksumCalculator failure\n"); } this->glTexStorage3D(var_target, var_levels, var_internalformat, var_width, var_height, var_depth); SET_LASTCALL("glTexStorage3D"); android::base::endTrace(); break; } case OP_glTexSubImage3D: { android::base::beginTrace("glTexSubImage3D decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_xoffset = Unpack(ptr + 8 + 4 + 4); GLint var_yoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_zoffset = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_depth = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize, "gles2_decoder_context_t::decode, OP_glTexSubImage3D: GL checksumCalculator failure\n"); } this->glTexSubImage3D(var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_type, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get())); SET_LASTCALL("glTexSubImage3D"); android::base::endTrace(); break; } case OP_glTexSubImage3DOffsetAEMU: { android::base::beginTrace("glTexSubImage3DOffsetAEMU decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_xoffset = Unpack(ptr + 8 + 4 + 4); GLint var_yoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_zoffset = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_depth = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLuint var_offset = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glTexSubImage3DOffsetAEMU: GL checksumCalculator failure\n"); } this->glTexSubImage3DOffsetAEMU(this, var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_type, var_offset); SET_LASTCALL("glTexSubImage3DOffsetAEMU"); android::base::endTrace(); break; } case OP_glCompressedTexImage3D: { android::base::beginTrace("glCompressedTexImage3D decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLenum var_internalformat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_depth = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLint var_border = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_imageSize = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize, "gles2_decoder_context_t::decode, OP_glCompressedTexImage3D: GL checksumCalculator failure\n"); } this->glCompressedTexImage3D(var_target, var_level, var_internalformat, var_width, var_height, var_depth, var_border, var_imageSize, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get())); SET_LASTCALL("glCompressedTexImage3D"); android::base::endTrace(); break; } case OP_glCompressedTexImage3DOffsetAEMU: { android::base::beginTrace("glCompressedTexImage3DOffsetAEMU decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLenum var_internalformat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_depth = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLint var_border = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_imageSize = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLuint var_offset = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCompressedTexImage3DOffsetAEMU: GL checksumCalculator failure\n"); } this->glCompressedTexImage3DOffsetAEMU(this, var_target, var_level, var_internalformat, var_width, var_height, var_depth, var_border, var_imageSize, var_offset); SET_LASTCALL("glCompressedTexImage3DOffsetAEMU"); android::base::endTrace(); break; } case OP_glCompressedTexSubImage3D: { android::base::beginTrace("glCompressedTexSubImage3D decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_xoffset = Unpack(ptr + 8 + 4 + 4); GLint var_yoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_zoffset = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_depth = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_imageSize = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + size_data, checksumSize, "gles2_decoder_context_t::decode, OP_glCompressedTexSubImage3D: GL checksumCalculator failure\n"); } this->glCompressedTexSubImage3D(var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_imageSize, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get())); SET_LASTCALL("glCompressedTexSubImage3D"); android::base::endTrace(); break; } case OP_glCompressedTexSubImage3DOffsetAEMU: { android::base::beginTrace("glCompressedTexSubImage3DOffsetAEMU decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_xoffset = Unpack(ptr + 8 + 4 + 4); GLint var_yoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_zoffset = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_depth = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_imageSize = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLuint var_data = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCompressedTexSubImage3DOffsetAEMU: GL checksumCalculator failure\n"); } this->glCompressedTexSubImage3DOffsetAEMU(this, var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_width, var_height, var_depth, var_format, var_imageSize, var_data); SET_LASTCALL("glCompressedTexSubImage3DOffsetAEMU"); android::base::endTrace(); break; } case OP_glCopyTexSubImage3D: { android::base::beginTrace("glCopyTexSubImage3D decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLint var_xoffset = Unpack(ptr + 8 + 4 + 4); GLint var_yoffset = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_zoffset = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLint var_x = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLint var_y = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCopyTexSubImage3D: GL checksumCalculator failure\n"); } this->glCopyTexSubImage3D(var_target, var_level, var_xoffset, var_yoffset, var_zoffset, var_x, var_y, var_width, var_height); SET_LASTCALL("glCopyTexSubImage3D"); android::base::endTrace(); break; } case OP_glGetStringi: { android::base::beginTrace("glGetStringi decode"); GLenum var_name = Unpack(ptr + 8); GLuint var_index = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetStringi: GL checksumCalculator failure\n"); } this->glGetStringi(var_name, var_index); SET_LASTCALL("glGetStringi"); android::base::endTrace(); break; } case OP_glGetBooleani_v: { android::base::beginTrace("glGetBooleani_v decode"); GLenum var_target = Unpack(ptr + 8); GLuint var_index = Unpack(ptr + 8 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetBooleani_v: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_data; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_data(&tmpBuf[0], size_data); this->glGetBooleani_v(var_target, var_index, (GLboolean*)(outptr_data.get())); outptr_data.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetBooleani_v"); android::base::endTrace(); break; } case OP_glMemoryBarrier: { android::base::beginTrace("glMemoryBarrier decode"); GLbitfield var_barriers = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glMemoryBarrier: GL checksumCalculator failure\n"); } this->glMemoryBarrier(var_barriers); SET_LASTCALL("glMemoryBarrier"); android::base::endTrace(); break; } case OP_glMemoryBarrierByRegion: { android::base::beginTrace("glMemoryBarrierByRegion decode"); GLbitfield var_barriers = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glMemoryBarrierByRegion: GL checksumCalculator failure\n"); } this->glMemoryBarrierByRegion(var_barriers); SET_LASTCALL("glMemoryBarrierByRegion"); android::base::endTrace(); break; } case OP_glGenProgramPipelines: { android::base::beginTrace("glGenProgramPipelines decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_pipelines __attribute__((unused)) = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGenProgramPipelines: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_pipelines; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_pipelines(&tmpBuf[0], size_pipelines); this->glGenProgramPipelines_dec(this, var_n, (GLuint*)(outptr_pipelines.get())); outptr_pipelines.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGenProgramPipelines"); android::base::endTrace(); break; } case OP_glDeleteProgramPipelines: { android::base::beginTrace("glDeleteProgramPipelines decode"); GLsizei var_n = Unpack(ptr + 8); uint32_t size_pipelines __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_pipelines(ptr + 8 + 4 + 4, size_pipelines); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_pipelines, ptr + 8 + 4 + 4 + size_pipelines, checksumSize, "gles2_decoder_context_t::decode, OP_glDeleteProgramPipelines: GL checksumCalculator failure\n"); } this->glDeleteProgramPipelines_dec(this, var_n, (const GLuint*)(inptr_pipelines.get())); SET_LASTCALL("glDeleteProgramPipelines"); android::base::endTrace(); break; } case OP_glBindProgramPipeline: { android::base::beginTrace("glBindProgramPipeline decode"); GLuint var_pipeline = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBindProgramPipeline: GL checksumCalculator failure\n"); } this->glBindProgramPipeline(var_pipeline); SET_LASTCALL("glBindProgramPipeline"); android::base::endTrace(); break; } case OP_glGetProgramPipelineiv: { android::base::beginTrace("glGetProgramPipelineiv decode"); GLuint var_pipeline = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetProgramPipelineiv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetProgramPipelineiv(var_pipeline, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetProgramPipelineiv"); android::base::endTrace(); break; } case OP_glGetProgramPipelineInfoLog: { android::base::beginTrace("glGetProgramPipelineInfoLog decode"); GLuint var_pipeline = Unpack(ptr + 8); GLsizei var_bufSize = Unpack(ptr + 8 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); uint32_t size_infoLog __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetProgramPipelineInfoLog: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_length; totalTmpSize += size_infoLog; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_length(&tmpBuf[0], size_length); OutputBuffer outptr_infoLog(&tmpBuf[0 + size_length], size_infoLog); this->glGetProgramPipelineInfoLog(var_pipeline, var_bufSize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLchar*)(outptr_infoLog.get())); outptr_length.flush(); outptr_infoLog.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetProgramPipelineInfoLog"); android::base::endTrace(); break; } case OP_glValidateProgramPipeline: { android::base::beginTrace("glValidateProgramPipeline decode"); GLuint var_pipeline = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glValidateProgramPipeline: GL checksumCalculator failure\n"); } this->glValidateProgramPipeline(var_pipeline); SET_LASTCALL("glValidateProgramPipeline"); android::base::endTrace(); break; } case OP_glIsProgramPipeline: { android::base::beginTrace("glIsProgramPipeline decode"); GLuint var_pipeline = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glIsProgramPipeline: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glIsProgramPipeline(var_pipeline); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glIsProgramPipeline"); android::base::endTrace(); break; } case OP_glUseProgramStages: { android::base::beginTrace("glUseProgramStages decode"); GLuint var_pipeline = Unpack(ptr + 8); GLbitfield var_stages = Unpack(ptr + 8 + 4); GLuint var_program = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUseProgramStages: GL checksumCalculator failure\n"); } this->glUseProgramStages_dec(this, var_pipeline, var_stages, var_program); SET_LASTCALL("glUseProgramStages"); android::base::endTrace(); break; } case OP_glActiveShaderProgram: { android::base::beginTrace("glActiveShaderProgram decode"); GLuint var_pipeline = Unpack(ptr + 8); GLuint var_program = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glActiveShaderProgram: GL checksumCalculator failure\n"); } this->glActiveShaderProgram_dec(this, var_pipeline, var_program); SET_LASTCALL("glActiveShaderProgram"); android::base::endTrace(); break; } case OP_glCreateShaderProgramv: { android::base::beginTrace("glCreateShaderProgramv decode"); GLenum var_type = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_strings __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_strings(ptr + 8 + 4 + 4 + 4, size_strings); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_strings, ptr + 8 + 4 + 4 + 4 + size_strings, checksumSize, "gles2_decoder_context_t::decode, OP_glCreateShaderProgramv: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLuint); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLuint *)(&tmpBuf[0]) = this->glCreateShaderProgramv(var_type, var_count, (const char**)(inptr_strings.get())); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glCreateShaderProgramv"); android::base::endTrace(); break; } case OP_glCreateShaderProgramvAEMU: { android::base::beginTrace("glCreateShaderProgramvAEMU decode"); GLenum var_type = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); uint32_t size_packedStrings __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_packedStrings(ptr + 8 + 4 + 4 + 4, size_packedStrings); GLuint var_packedLen = Unpack(ptr + 8 + 4 + 4 + 4 + size_packedStrings); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_packedStrings + 4, ptr + 8 + 4 + 4 + 4 + size_packedStrings + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glCreateShaderProgramvAEMU: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLuint); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLuint *)(&tmpBuf[0]) = this->glCreateShaderProgramvAEMU(this, var_type, var_count, (const char*)(inptr_packedStrings.get()), var_packedLen); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glCreateShaderProgramvAEMU"); android::base::endTrace(); break; } case OP_glProgramUniform1f: { android::base::beginTrace("glProgramUniform1f decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLfloat var_v0 = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform1f: GL checksumCalculator failure\n"); } this->glProgramUniform1f_dec(this, var_program, var_location, var_v0); SET_LASTCALL("glProgramUniform1f"); android::base::endTrace(); break; } case OP_glProgramUniform2f: { android::base::beginTrace("glProgramUniform2f decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLfloat var_v0 = Unpack(ptr + 8 + 4 + 4); GLfloat var_v1 = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform2f: GL checksumCalculator failure\n"); } this->glProgramUniform2f_dec(this, var_program, var_location, var_v0, var_v1); SET_LASTCALL("glProgramUniform2f"); android::base::endTrace(); break; } case OP_glProgramUniform3f: { android::base::beginTrace("glProgramUniform3f decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLfloat var_v0 = Unpack(ptr + 8 + 4 + 4); GLfloat var_v1 = Unpack(ptr + 8 + 4 + 4 + 4); GLfloat var_v2 = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform3f: GL checksumCalculator failure\n"); } this->glProgramUniform3f_dec(this, var_program, var_location, var_v0, var_v1, var_v2); SET_LASTCALL("glProgramUniform3f"); android::base::endTrace(); break; } case OP_glProgramUniform4f: { android::base::beginTrace("glProgramUniform4f decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLfloat var_v0 = Unpack(ptr + 8 + 4 + 4); GLfloat var_v1 = Unpack(ptr + 8 + 4 + 4 + 4); GLfloat var_v2 = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLfloat var_v3 = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform4f: GL checksumCalculator failure\n"); } this->glProgramUniform4f_dec(this, var_program, var_location, var_v0, var_v1, var_v2, var_v3); SET_LASTCALL("glProgramUniform4f"); android::base::endTrace(); break; } case OP_glProgramUniform1i: { android::base::beginTrace("glProgramUniform1i decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLint var_v0 = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform1i: GL checksumCalculator failure\n"); } this->glProgramUniform1i_dec(this, var_program, var_location, var_v0); SET_LASTCALL("glProgramUniform1i"); android::base::endTrace(); break; } case OP_glProgramUniform2i: { android::base::beginTrace("glProgramUniform2i decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLint var_v0 = Unpack(ptr + 8 + 4 + 4); GLint var_v1 = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform2i: GL checksumCalculator failure\n"); } this->glProgramUniform2i_dec(this, var_program, var_location, var_v0, var_v1); SET_LASTCALL("glProgramUniform2i"); android::base::endTrace(); break; } case OP_glProgramUniform3i: { android::base::beginTrace("glProgramUniform3i decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLint var_v0 = Unpack(ptr + 8 + 4 + 4); GLint var_v1 = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_v2 = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform3i: GL checksumCalculator failure\n"); } this->glProgramUniform3i_dec(this, var_program, var_location, var_v0, var_v1, var_v2); SET_LASTCALL("glProgramUniform3i"); android::base::endTrace(); break; } case OP_glProgramUniform4i: { android::base::beginTrace("glProgramUniform4i decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLint var_v0 = Unpack(ptr + 8 + 4 + 4); GLint var_v1 = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_v2 = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLint var_v3 = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform4i: GL checksumCalculator failure\n"); } this->glProgramUniform4i_dec(this, var_program, var_location, var_v0, var_v1, var_v2, var_v3); SET_LASTCALL("glProgramUniform4i"); android::base::endTrace(); break; } case OP_glProgramUniform1ui: { android::base::beginTrace("glProgramUniform1ui decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLuint var_v0 = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform1ui: GL checksumCalculator failure\n"); } this->glProgramUniform1ui_dec(this, var_program, var_location, var_v0); SET_LASTCALL("glProgramUniform1ui"); android::base::endTrace(); break; } case OP_glProgramUniform2ui: { android::base::beginTrace("glProgramUniform2ui decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLint var_v0 = Unpack(ptr + 8 + 4 + 4); GLuint var_v1 = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform2ui: GL checksumCalculator failure\n"); } this->glProgramUniform2ui_dec(this, var_program, var_location, var_v0, var_v1); SET_LASTCALL("glProgramUniform2ui"); android::base::endTrace(); break; } case OP_glProgramUniform3ui: { android::base::beginTrace("glProgramUniform3ui decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLint var_v0 = Unpack(ptr + 8 + 4 + 4); GLint var_v1 = Unpack(ptr + 8 + 4 + 4 + 4); GLuint var_v2 = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform3ui: GL checksumCalculator failure\n"); } this->glProgramUniform3ui_dec(this, var_program, var_location, var_v0, var_v1, var_v2); SET_LASTCALL("glProgramUniform3ui"); android::base::endTrace(); break; } case OP_glProgramUniform4ui: { android::base::beginTrace("glProgramUniform4ui decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLint var_v0 = Unpack(ptr + 8 + 4 + 4); GLint var_v1 = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_v2 = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLuint var_v3 = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform4ui: GL checksumCalculator failure\n"); } this->glProgramUniform4ui_dec(this, var_program, var_location, var_v0, var_v1, var_v2, var_v3); SET_LASTCALL("glProgramUniform4ui"); android::base::endTrace(); break; } case OP_glProgramUniform1fv: { android::base::beginTrace("glProgramUniform1fv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform1fv: GL checksumCalculator failure\n"); } this->glProgramUniform1fv_dec(this, var_program, var_location, var_count, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glProgramUniform1fv"); android::base::endTrace(); break; } case OP_glProgramUniform2fv: { android::base::beginTrace("glProgramUniform2fv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform2fv: GL checksumCalculator failure\n"); } this->glProgramUniform2fv_dec(this, var_program, var_location, var_count, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glProgramUniform2fv"); android::base::endTrace(); break; } case OP_glProgramUniform3fv: { android::base::beginTrace("glProgramUniform3fv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform3fv: GL checksumCalculator failure\n"); } this->glProgramUniform3fv_dec(this, var_program, var_location, var_count, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glProgramUniform3fv"); android::base::endTrace(); break; } case OP_glProgramUniform4fv: { android::base::beginTrace("glProgramUniform4fv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform4fv: GL checksumCalculator failure\n"); } this->glProgramUniform4fv_dec(this, var_program, var_location, var_count, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glProgramUniform4fv"); android::base::endTrace(); break; } case OP_glProgramUniform1iv: { android::base::beginTrace("glProgramUniform1iv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform1iv: GL checksumCalculator failure\n"); } this->glProgramUniform1iv_dec(this, var_program, var_location, var_count, (const GLint*)(inptr_value.get())); SET_LASTCALL("glProgramUniform1iv"); android::base::endTrace(); break; } case OP_glProgramUniform2iv: { android::base::beginTrace("glProgramUniform2iv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform2iv: GL checksumCalculator failure\n"); } this->glProgramUniform2iv_dec(this, var_program, var_location, var_count, (const GLint*)(inptr_value.get())); SET_LASTCALL("glProgramUniform2iv"); android::base::endTrace(); break; } case OP_glProgramUniform3iv: { android::base::beginTrace("glProgramUniform3iv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform3iv: GL checksumCalculator failure\n"); } this->glProgramUniform3iv_dec(this, var_program, var_location, var_count, (const GLint*)(inptr_value.get())); SET_LASTCALL("glProgramUniform3iv"); android::base::endTrace(); break; } case OP_glProgramUniform4iv: { android::base::beginTrace("glProgramUniform4iv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform4iv: GL checksumCalculator failure\n"); } this->glProgramUniform4iv_dec(this, var_program, var_location, var_count, (const GLint*)(inptr_value.get())); SET_LASTCALL("glProgramUniform4iv"); android::base::endTrace(); break; } case OP_glProgramUniform1uiv: { android::base::beginTrace("glProgramUniform1uiv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform1uiv: GL checksumCalculator failure\n"); } this->glProgramUniform1uiv_dec(this, var_program, var_location, var_count, (const GLuint*)(inptr_value.get())); SET_LASTCALL("glProgramUniform1uiv"); android::base::endTrace(); break; } case OP_glProgramUniform2uiv: { android::base::beginTrace("glProgramUniform2uiv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform2uiv: GL checksumCalculator failure\n"); } this->glProgramUniform2uiv_dec(this, var_program, var_location, var_count, (const GLuint*)(inptr_value.get())); SET_LASTCALL("glProgramUniform2uiv"); android::base::endTrace(); break; } case OP_glProgramUniform3uiv: { android::base::beginTrace("glProgramUniform3uiv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform3uiv: GL checksumCalculator failure\n"); } this->glProgramUniform3uiv_dec(this, var_program, var_location, var_count, (const GLuint*)(inptr_value.get())); SET_LASTCALL("glProgramUniform3uiv"); android::base::endTrace(); break; } case OP_glProgramUniform4uiv: { android::base::beginTrace("glProgramUniform4uiv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniform4uiv: GL checksumCalculator failure\n"); } this->glProgramUniform4uiv_dec(this, var_program, var_location, var_count, (const GLuint*)(inptr_value.get())); SET_LASTCALL("glProgramUniform4uiv"); android::base::endTrace(); break; } case OP_glProgramUniformMatrix2fv: { android::base::beginTrace("glProgramUniformMatrix2fv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix2fv: GL checksumCalculator failure\n"); } this->glProgramUniformMatrix2fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glProgramUniformMatrix2fv"); android::base::endTrace(); break; } case OP_glProgramUniformMatrix3fv: { android::base::beginTrace("glProgramUniformMatrix3fv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix3fv: GL checksumCalculator failure\n"); } this->glProgramUniformMatrix3fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glProgramUniformMatrix3fv"); android::base::endTrace(); break; } case OP_glProgramUniformMatrix4fv: { android::base::beginTrace("glProgramUniformMatrix4fv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix4fv: GL checksumCalculator failure\n"); } this->glProgramUniformMatrix4fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glProgramUniformMatrix4fv"); android::base::endTrace(); break; } case OP_glProgramUniformMatrix2x3fv: { android::base::beginTrace("glProgramUniformMatrix2x3fv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix2x3fv: GL checksumCalculator failure\n"); } this->glProgramUniformMatrix2x3fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glProgramUniformMatrix2x3fv"); android::base::endTrace(); break; } case OP_glProgramUniformMatrix3x2fv: { android::base::beginTrace("glProgramUniformMatrix3x2fv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix3x2fv: GL checksumCalculator failure\n"); } this->glProgramUniformMatrix3x2fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glProgramUniformMatrix3x2fv"); android::base::endTrace(); break; } case OP_glProgramUniformMatrix2x4fv: { android::base::beginTrace("glProgramUniformMatrix2x4fv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix2x4fv: GL checksumCalculator failure\n"); } this->glProgramUniformMatrix2x4fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glProgramUniformMatrix2x4fv"); android::base::endTrace(); break; } case OP_glProgramUniformMatrix4x2fv: { android::base::beginTrace("glProgramUniformMatrix4x2fv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix4x2fv: GL checksumCalculator failure\n"); } this->glProgramUniformMatrix4x2fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glProgramUniformMatrix4x2fv"); android::base::endTrace(); break; } case OP_glProgramUniformMatrix3x4fv: { android::base::beginTrace("glProgramUniformMatrix3x4fv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix3x4fv: GL checksumCalculator failure\n"); } this->glProgramUniformMatrix3x4fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glProgramUniformMatrix3x4fv"); android::base::endTrace(); break; } case OP_glProgramUniformMatrix4x3fv: { android::base::beginTrace("glProgramUniformMatrix4x3fv decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); GLboolean var_transpose = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_value __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 1); InputBuffer inptr_value(ptr + 8 + 4 + 4 + 4 + 1 + 4, size_value); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + size_value, ptr + 8 + 4 + 4 + 4 + 1 + 4 + size_value, checksumSize, "gles2_decoder_context_t::decode, OP_glProgramUniformMatrix4x3fv: GL checksumCalculator failure\n"); } this->glProgramUniformMatrix4x3fv_dec(this, var_program, var_location, var_count, var_transpose, (const GLfloat*)(inptr_value.get())); SET_LASTCALL("glProgramUniformMatrix4x3fv"); android::base::endTrace(); break; } case OP_glGetProgramInterfaceiv: { android::base::beginTrace("glGetProgramInterfaceiv decode"); GLuint var_program = Unpack(ptr + 8); GLenum var_programInterface = Unpack(ptr + 8 + 4); GLenum var_pname = Unpack(ptr + 8 + 4 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetProgramInterfaceiv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetProgramInterfaceiv_dec(this, var_program, var_programInterface, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetProgramInterfaceiv"); android::base::endTrace(); break; } case OP_glGetProgramResourceiv: { android::base::beginTrace("glGetProgramResourceiv decode"); GLuint var_program = Unpack(ptr + 8); GLenum var_programInterface = Unpack(ptr + 8 + 4); GLuint var_index = Unpack(ptr + 8 + 4 + 4); GLsizei var_propCount = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_props __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); InputBuffer inptr_props(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_props); GLsizei var_bufSize = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_props); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_props + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_props + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_props + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_props + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetProgramResourceiv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_length; totalTmpSize += size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_length(&tmpBuf[0], size_length); OutputBuffer outptr_params(&tmpBuf[0 + size_length], size_params); this->glGetProgramResourceiv_dec(this, var_program, var_programInterface, var_index, var_propCount, (const GLenum*)(inptr_props.get()), var_bufSize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (GLint*)(outptr_params.get())); outptr_length.flush(); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetProgramResourceiv"); android::base::endTrace(); break; } case OP_glGetProgramResourceIndex: { android::base::beginTrace("glGetProgramResourceIndex decode"); GLuint var_program = Unpack(ptr + 8); GLenum var_programInterface = Unpack(ptr + 8 + 4); uint32_t size_name __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_name(ptr + 8 + 4 + 4 + 4, size_name); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_name, ptr + 8 + 4 + 4 + 4 + size_name, checksumSize, "gles2_decoder_context_t::decode, OP_glGetProgramResourceIndex: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLuint); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLuint *)(&tmpBuf[0]) = this->glGetProgramResourceIndex_dec(this, var_program, var_programInterface, (const char*)(inptr_name.get())); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetProgramResourceIndex"); android::base::endTrace(); break; } case OP_glGetProgramResourceLocation: { android::base::beginTrace("glGetProgramResourceLocation decode"); GLuint var_program = Unpack(ptr + 8); GLenum var_programInterface = Unpack(ptr + 8 + 4); uint32_t size_name __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_name(ptr + 8 + 4 + 4 + 4, size_name); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_name, ptr + 8 + 4 + 4 + 4 + size_name, checksumSize, "gles2_decoder_context_t::decode, OP_glGetProgramResourceLocation: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLint); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLint *)(&tmpBuf[0]) = this->glGetProgramResourceLocation_dec(this, var_program, var_programInterface, (const char*)(inptr_name.get())); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetProgramResourceLocation"); android::base::endTrace(); break; } case OP_glGetProgramResourceName: { android::base::beginTrace("glGetProgramResourceName decode"); GLuint var_program = Unpack(ptr + 8); GLenum var_programInterface = Unpack(ptr + 8 + 4); GLuint var_index = Unpack(ptr + 8 + 4 + 4); GLsizei var_bufSize = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_length __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); uint32_t size_name __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetProgramResourceName: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_length; totalTmpSize += size_name; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_length(&tmpBuf[0], size_length); OutputBuffer outptr_name(&tmpBuf[0 + size_length], size_name); this->glGetProgramResourceName_dec(this, var_program, var_programInterface, var_index, var_bufSize, size_length == 0 ? nullptr : (GLsizei*)(outptr_length.get()), (char*)(outptr_name.get())); outptr_length.flush(); outptr_name.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetProgramResourceName"); android::base::endTrace(); break; } case OP_glBindImageTexture: { android::base::beginTrace("glBindImageTexture decode"); GLuint var_unit = Unpack(ptr + 8); GLuint var_texture = Unpack(ptr + 8 + 4); GLint var_level = Unpack(ptr + 8 + 4 + 4); GLboolean var_layered = Unpack(ptr + 8 + 4 + 4 + 4); GLint var_layer = Unpack(ptr + 8 + 4 + 4 + 4 + 1); GLenum var_access = Unpack(ptr + 8 + 4 + 4 + 4 + 1 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 1 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBindImageTexture: GL checksumCalculator failure\n"); } this->glBindImageTexture(var_unit, var_texture, var_level, var_layered, var_layer, var_access, var_format); SET_LASTCALL("glBindImageTexture"); android::base::endTrace(); break; } case OP_glDispatchCompute: { android::base::beginTrace("glDispatchCompute decode"); GLuint var_num_groups_x = Unpack(ptr + 8); GLuint var_num_groups_y = Unpack(ptr + 8 + 4); GLuint var_num_groups_z = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDispatchCompute: GL checksumCalculator failure\n"); } this->glDispatchCompute(var_num_groups_x, var_num_groups_y, var_num_groups_z); SET_LASTCALL("glDispatchCompute"); android::base::endTrace(); break; } case OP_glDispatchComputeIndirect: { android::base::beginTrace("glDispatchComputeIndirect decode"); GLintptr var_indirect = Unpack(ptr + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDispatchComputeIndirect: GL checksumCalculator failure\n"); } this->glDispatchComputeIndirect(var_indirect); SET_LASTCALL("glDispatchComputeIndirect"); android::base::endTrace(); break; } case OP_glBindVertexBuffer: { android::base::beginTrace("glBindVertexBuffer decode"); GLuint var_bindingindex = Unpack(ptr + 8); GLuint var_buffer = Unpack(ptr + 8 + 4); GLintptr var_offset = Unpack(ptr + 8 + 4 + 4); GLintptr var_stride = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBindVertexBuffer: GL checksumCalculator failure\n"); } this->glBindVertexBuffer(var_bindingindex, var_buffer, var_offset, var_stride); SET_LASTCALL("glBindVertexBuffer"); android::base::endTrace(); break; } case OP_glVertexAttribBinding: { android::base::beginTrace("glVertexAttribBinding decode"); GLuint var_attribindex = Unpack(ptr + 8); GLuint var_bindingindex = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttribBinding: GL checksumCalculator failure\n"); } this->glVertexAttribBinding(var_attribindex, var_bindingindex); SET_LASTCALL("glVertexAttribBinding"); android::base::endTrace(); break; } case OP_glVertexAttribFormat: { android::base::beginTrace("glVertexAttribFormat decode"); GLuint var_attribindex = Unpack(ptr + 8); GLint var_size = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); GLboolean var_normalized = Unpack(ptr + 8 + 4 + 4 + 4); GLuint var_relativeoffset = Unpack(ptr + 8 + 4 + 4 + 4 + 1); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 1 + 4, ptr + 8 + 4 + 4 + 4 + 1 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttribFormat: GL checksumCalculator failure\n"); } this->glVertexAttribFormat(var_attribindex, var_size, var_type, var_normalized, var_relativeoffset); SET_LASTCALL("glVertexAttribFormat"); android::base::endTrace(); break; } case OP_glVertexAttribIFormat: { android::base::beginTrace("glVertexAttribIFormat decode"); GLuint var_attribindex = Unpack(ptr + 8); GLint var_size = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); GLuint var_relativeoffset = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexAttribIFormat: GL checksumCalculator failure\n"); } this->glVertexAttribIFormat(var_attribindex, var_size, var_type, var_relativeoffset); SET_LASTCALL("glVertexAttribIFormat"); android::base::endTrace(); break; } case OP_glVertexBindingDivisor: { android::base::beginTrace("glVertexBindingDivisor decode"); GLuint var_bindingindex = Unpack(ptr + 8); GLuint var_divisor = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glVertexBindingDivisor: GL checksumCalculator failure\n"); } this->glVertexBindingDivisor(var_bindingindex, var_divisor); SET_LASTCALL("glVertexBindingDivisor"); android::base::endTrace(); break; } case OP_glDrawArraysIndirect: { android::base::beginTrace("glDrawArraysIndirect decode"); GLenum var_mode = Unpack(ptr + 8); uint32_t size_indirect __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_indirect(ptr + 8 + 4 + 4, size_indirect); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_indirect, ptr + 8 + 4 + 4 + size_indirect, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawArraysIndirect: GL checksumCalculator failure\n"); } this->glDrawArraysIndirect(var_mode, (const void*)(inptr_indirect.get())); SET_LASTCALL("glDrawArraysIndirect"); android::base::endTrace(); break; } case OP_glDrawArraysIndirectDataAEMU: { android::base::beginTrace("glDrawArraysIndirectDataAEMU decode"); GLenum var_mode = Unpack(ptr + 8); uint32_t size_indirect __attribute__((unused)) = Unpack(ptr + 8 + 4); InputBuffer inptr_indirect(ptr + 8 + 4 + 4, size_indirect); GLuint var_datalen = Unpack(ptr + 8 + 4 + 4 + size_indirect); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + size_indirect + 4, ptr + 8 + 4 + 4 + size_indirect + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawArraysIndirectDataAEMU: GL checksumCalculator failure\n"); } this->glDrawArraysIndirectDataAEMU(this, var_mode, (const void*)(inptr_indirect.get()), var_datalen); SET_LASTCALL("glDrawArraysIndirectDataAEMU"); android::base::endTrace(); break; } case OP_glDrawArraysIndirectOffsetAEMU: { android::base::beginTrace("glDrawArraysIndirectOffsetAEMU decode"); GLenum var_mode = Unpack(ptr + 8); GLuint var_offset = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawArraysIndirectOffsetAEMU: GL checksumCalculator failure\n"); } this->glDrawArraysIndirectOffsetAEMU(this, var_mode, var_offset); SET_LASTCALL("glDrawArraysIndirectOffsetAEMU"); android::base::endTrace(); break; } case OP_glDrawElementsIndirect: { android::base::beginTrace("glDrawElementsIndirect decode"); GLenum var_mode = Unpack(ptr + 8); GLenum var_type = Unpack(ptr + 8 + 4); uint32_t size_indirect __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_indirect(ptr + 8 + 4 + 4 + 4, size_indirect); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_indirect, ptr + 8 + 4 + 4 + 4 + size_indirect, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawElementsIndirect: GL checksumCalculator failure\n"); } this->glDrawElementsIndirect(var_mode, var_type, (const void*)(inptr_indirect.get())); SET_LASTCALL("glDrawElementsIndirect"); android::base::endTrace(); break; } case OP_glDrawElementsIndirectDataAEMU: { android::base::beginTrace("glDrawElementsIndirectDataAEMU decode"); GLenum var_mode = Unpack(ptr + 8); GLenum var_type = Unpack(ptr + 8 + 4); uint32_t size_indirect __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_indirect(ptr + 8 + 4 + 4 + 4, size_indirect); GLuint var_datalen = Unpack(ptr + 8 + 4 + 4 + 4 + size_indirect); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_indirect + 4, ptr + 8 + 4 + 4 + 4 + size_indirect + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawElementsIndirectDataAEMU: GL checksumCalculator failure\n"); } this->glDrawElementsIndirectDataAEMU(this, var_mode, var_type, (const void*)(inptr_indirect.get()), var_datalen); SET_LASTCALL("glDrawElementsIndirectDataAEMU"); android::base::endTrace(); break; } case OP_glDrawElementsIndirectOffsetAEMU: { android::base::beginTrace("glDrawElementsIndirectOffsetAEMU decode"); GLenum var_mode = Unpack(ptr + 8); GLenum var_type = Unpack(ptr + 8 + 4); GLuint var_offset = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawElementsIndirectOffsetAEMU: GL checksumCalculator failure\n"); } this->glDrawElementsIndirectOffsetAEMU(this, var_mode, var_type, var_offset); SET_LASTCALL("glDrawElementsIndirectOffsetAEMU"); android::base::endTrace(); break; } case OP_glTexStorage2DMultisample: { android::base::beginTrace("glTexStorage2DMultisample decode"); GLenum var_target = Unpack(ptr + 8); GLsizei var_samples = Unpack(ptr + 8 + 4); GLenum var_internalformat = Unpack(ptr + 8 + 4 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLboolean var_fixedsamplelocations = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 1, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 1, checksumSize, "gles2_decoder_context_t::decode, OP_glTexStorage2DMultisample: GL checksumCalculator failure\n"); } this->glTexStorage2DMultisample(var_target, var_samples, var_internalformat, var_width, var_height, var_fixedsamplelocations); SET_LASTCALL("glTexStorage2DMultisample"); android::base::endTrace(); break; } case OP_glSampleMaski: { android::base::beginTrace("glSampleMaski decode"); GLuint var_maskNumber = Unpack(ptr + 8); GLbitfield var_mask = Unpack(ptr + 8 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glSampleMaski: GL checksumCalculator failure\n"); } this->glSampleMaski(var_maskNumber, var_mask); SET_LASTCALL("glSampleMaski"); android::base::endTrace(); break; } case OP_glGetMultisamplefv: { android::base::beginTrace("glGetMultisamplefv decode"); GLenum var_pname = Unpack(ptr + 8); GLuint var_index = Unpack(ptr + 8 + 4); uint32_t size_val __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetMultisamplefv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_val; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_val(&tmpBuf[0], size_val); this->glGetMultisamplefv(var_pname, var_index, (GLfloat*)(outptr_val.get())); outptr_val.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetMultisamplefv"); android::base::endTrace(); break; } case OP_glFramebufferParameteri: { android::base::beginTrace("glFramebufferParameteri decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); GLint var_param = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glFramebufferParameteri: GL checksumCalculator failure\n"); } this->glFramebufferParameteri(var_target, var_pname, var_param); SET_LASTCALL("glFramebufferParameteri"); android::base::endTrace(); break; } case OP_glGetFramebufferParameteriv: { android::base::beginTrace("glGetFramebufferParameteriv decode"); GLenum var_target = Unpack(ptr + 8); GLenum var_pname = Unpack(ptr + 8 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetFramebufferParameteriv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetFramebufferParameteriv(var_target, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetFramebufferParameteriv"); android::base::endTrace(); break; } case OP_glGetTexLevelParameterfv: { android::base::beginTrace("glGetTexLevelParameterfv decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLenum var_pname = Unpack(ptr + 8 + 4 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetTexLevelParameterfv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetTexLevelParameterfv(var_target, var_level, var_pname, (GLfloat*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetTexLevelParameterfv"); android::base::endTrace(); break; } case OP_glGetTexLevelParameteriv: { android::base::beginTrace("glGetTexLevelParameteriv decode"); GLenum var_target = Unpack(ptr + 8); GLint var_level = Unpack(ptr + 8 + 4); GLenum var_pname = Unpack(ptr + 8 + 4 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetTexLevelParameteriv: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetTexLevelParameteriv(var_target, var_level, var_pname, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetTexLevelParameteriv"); android::base::endTrace(); break; } case OP_glMapBufferRangeDMA: { android::base::beginTrace("glMapBufferRangeDMA decode"); GLenum var_target = Unpack(ptr + 8); GLintptr var_offset = Unpack(ptr + 8 + 4); GLsizeiptr var_length = Unpack(ptr + 8 + 4 + 4); GLbitfield var_access = Unpack(ptr + 8 + 4 + 4 + 4); uint64_t var_paddr = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 8, ptr + 8 + 4 + 4 + 4 + 4 + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glMapBufferRangeDMA: GL checksumCalculator failure\n"); } this->glMapBufferRangeDMA(this, var_target, var_offset, var_length, var_access, var_paddr); SET_LASTCALL("glMapBufferRangeDMA"); android::base::endTrace(); break; } case OP_glUnmapBufferDMA: { android::base::beginTrace("glUnmapBufferDMA decode"); GLenum var_target = Unpack(ptr + 8); GLintptr var_offset = Unpack(ptr + 8 + 4); GLsizeiptr var_length = Unpack(ptr + 8 + 4 + 4); GLbitfield var_access = Unpack(ptr + 8 + 4 + 4 + 4); uint64_t var_paddr = Unpack(ptr + 8 + 4 + 4 + 4 + 4); uint32_t size_out_res __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 8 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUnmapBufferDMA: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_out_res; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_out_res(&tmpBuf[0], size_out_res); this->glUnmapBufferDMA(this, var_target, var_offset, var_length, var_access, var_paddr, (GLboolean*)(outptr_out_res.get())); outptr_out_res.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glUnmapBufferDMA"); android::base::endTrace(); break; } case OP_glMapBufferRangeDirect: { android::base::beginTrace("glMapBufferRangeDirect decode"); GLenum var_target = Unpack(ptr + 8); GLintptr var_offset = Unpack(ptr + 8 + 4); GLsizeiptr var_length = Unpack(ptr + 8 + 4 + 4); GLbitfield var_access = Unpack(ptr + 8 + 4 + 4 + 4); uint64_t var_paddr = Unpack(ptr + 8 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 8, ptr + 8 + 4 + 4 + 4 + 4 + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glMapBufferRangeDirect: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(uint64_t); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(uint64_t *)(&tmpBuf[0]) = this->glMapBufferRangeDirect(this, var_target, var_offset, var_length, var_access, var_paddr); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glMapBufferRangeDirect"); android::base::endTrace(); break; } case OP_glUnmapBufferDirect: { android::base::beginTrace("glUnmapBufferDirect decode"); GLenum var_target = Unpack(ptr + 8); GLintptr var_offset = Unpack(ptr + 8 + 4); GLsizeiptr var_length = Unpack(ptr + 8 + 4 + 4); GLbitfield var_access = Unpack(ptr + 8 + 4 + 4 + 4); uint64_t var_paddr = Unpack(ptr + 8 + 4 + 4 + 4 + 4); uint64_t var_guest_ptr = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 8); uint32_t size_out_res __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 8 + 8); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 8 + 8 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 8 + 8 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glUnmapBufferDirect: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_out_res; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_out_res(&tmpBuf[0], size_out_res); this->glUnmapBufferDirect(this, var_target, var_offset, var_length, var_access, var_paddr, var_guest_ptr, (GLboolean*)(outptr_out_res.get())); outptr_out_res.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glUnmapBufferDirect"); android::base::endTrace(); break; } case OP_glFlushMappedBufferRangeDirect: { android::base::beginTrace("glFlushMappedBufferRangeDirect decode"); GLenum var_target = Unpack(ptr + 8); GLintptr var_offset = Unpack(ptr + 8 + 4); GLsizeiptr var_length = Unpack(ptr + 8 + 4 + 4); GLbitfield var_access = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glFlushMappedBufferRangeDirect: GL checksumCalculator failure\n"); } this->glFlushMappedBufferRangeDirect(this, var_target, var_offset, var_length, var_access); SET_LASTCALL("glFlushMappedBufferRangeDirect"); android::base::endTrace(); break; } case OP_glGetGraphicsResetStatusEXT: { android::base::beginTrace("glGetGraphicsResetStatusEXT decode"); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8, ptr + 8, checksumSize, "gles2_decoder_context_t::decode, OP_glGetGraphicsResetStatusEXT: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLenum); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLenum *)(&tmpBuf[0]) = this->glGetGraphicsResetStatusEXT(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetGraphicsResetStatusEXT"); android::base::endTrace(); break; } case OP_glReadnPixelsEXT: { android::base::beginTrace("glReadnPixelsEXT decode"); GLint var_x = Unpack(ptr + 8); GLint var_y = Unpack(ptr + 8 + 4); GLsizei var_width = Unpack(ptr + 8 + 4 + 4); GLsizei var_height = Unpack(ptr + 8 + 4 + 4 + 4); GLenum var_format = Unpack(ptr + 8 + 4 + 4 + 4 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4); GLsizei var_bufSize = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glReadnPixelsEXT: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_data; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_data(&tmpBuf[0], size_data); this->glReadnPixelsEXT(var_x, var_y, var_width, var_height, var_format, var_type, var_bufSize, (GLvoid*)(outptr_data.get())); outptr_data.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glReadnPixelsEXT"); android::base::endTrace(); break; } case OP_glGetnUniformfvEXT: { android::base::beginTrace("glGetnUniformfvEXT decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_bufSize = Unpack(ptr + 8 + 4 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetnUniformfvEXT: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetnUniformfvEXT(var_program, var_location, var_bufSize, (GLfloat*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetnUniformfvEXT"); android::base::endTrace(); break; } case OP_glGetnUniformivEXT: { android::base::beginTrace("glGetnUniformivEXT decode"); GLuint var_program = Unpack(ptr + 8); GLint var_location = Unpack(ptr + 8 + 4); GLsizei var_bufSize = Unpack(ptr + 8 + 4 + 4); uint32_t size_params __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glGetnUniformivEXT: GL checksumCalculator failure\n"); } size_t totalTmpSize = size_params; totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); OutputBuffer outptr_params(&tmpBuf[0], size_params); this->glGetnUniformivEXT(var_program, var_location, var_bufSize, (GLint*)(outptr_params.get())); outptr_params.flush(); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glGetnUniformivEXT"); android::base::endTrace(); break; } case OP_glDrawArraysNullAEMU: { android::base::beginTrace("glDrawArraysNullAEMU decode"); GLenum var_mode = Unpack(ptr + 8); GLint var_first = Unpack(ptr + 8 + 4); GLsizei var_count = Unpack(ptr + 8 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawArraysNullAEMU: GL checksumCalculator failure\n"); } this->glDrawArraysNullAEMU(var_mode, var_first, var_count); SET_LASTCALL("glDrawArraysNullAEMU"); android::base::endTrace(); break; } case OP_glDrawElementsNullAEMU: { android::base::beginTrace("glDrawElementsNullAEMU decode"); GLenum var_mode = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); uint32_t size_indices __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_indices(ptr + 8 + 4 + 4 + 4 + 4, size_indices); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_indices, ptr + 8 + 4 + 4 + 4 + 4 + size_indices, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawElementsNullAEMU: GL checksumCalculator failure\n"); } this->glDrawElementsNullAEMU(var_mode, var_count, var_type, (const GLvoid*)(inptr_indices.get())); SET_LASTCALL("glDrawElementsNullAEMU"); android::base::endTrace(); break; } case OP_glDrawElementsOffsetNullAEMU: { android::base::beginTrace("glDrawElementsOffsetNullAEMU decode"); GLenum var_mode = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); GLuint var_offset = Unpack(ptr + 8 + 4 + 4 + 4); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4, ptr + 8 + 4 + 4 + 4 + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawElementsOffsetNullAEMU: GL checksumCalculator failure\n"); } this->glDrawElementsOffsetNullAEMU(this, var_mode, var_count, var_type, var_offset); SET_LASTCALL("glDrawElementsOffsetNullAEMU"); android::base::endTrace(); break; } case OP_glDrawElementsDataNullAEMU: { android::base::beginTrace("glDrawElementsDataNullAEMU decode"); GLenum var_mode = Unpack(ptr + 8); GLsizei var_count = Unpack(ptr + 8 + 4); GLenum var_type = Unpack(ptr + 8 + 4 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4 + 4, size_data); GLuint var_datalen = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + size_data + 4, ptr + 8 + 4 + 4 + 4 + 4 + size_data + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glDrawElementsDataNullAEMU: GL checksumCalculator failure\n"); } this->glDrawElementsDataNullAEMU(this, var_mode, var_count, var_type, (void*)(inptr_data.get()), var_datalen); SET_LASTCALL("glDrawElementsDataNullAEMU"); android::base::endTrace(); break; } case OP_glUnmapBufferAsyncAEMU: { android::base::beginTrace("glUnmapBufferAsyncAEMU decode"); GLenum var_target = Unpack(ptr + 8); GLintptr var_offset = Unpack(ptr + 8 + 4); GLsizeiptr var_length = Unpack(ptr + 8 + 4 + 4); GLbitfield var_access = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_guest_buffer __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); InputBuffer inptr_guest_buffer(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_guest_buffer); uint32_t size_out_res __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer); InputBuffer inptr_out_res(ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer + 4, size_out_res); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer + 4 + size_out_res, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer + 4 + size_out_res, checksumSize, "gles2_decoder_context_t::decode, OP_glUnmapBufferAsyncAEMU: GL checksumCalculator failure\n"); } this->glUnmapBufferAEMU(this, var_target, var_offset, var_length, var_access, size_guest_buffer == 0 ? nullptr : (void*)(inptr_guest_buffer.get()), (GLboolean*)(inptr_out_res.get())); SET_LASTCALL("glUnmapBufferAsyncAEMU"); android::base::endTrace(); break; } case OP_glFlushMappedBufferRangeAEMU2: { android::base::beginTrace("glFlushMappedBufferRangeAEMU2 decode"); GLenum var_target = Unpack(ptr + 8); GLintptr var_offset = Unpack(ptr + 8 + 4); GLsizeiptr var_length = Unpack(ptr + 8 + 4 + 4); GLbitfield var_access = Unpack(ptr + 8 + 4 + 4 + 4); uint32_t size_guest_buffer __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4 + 4 + 4); InputBuffer inptr_guest_buffer(ptr + 8 + 4 + 4 + 4 + 4 + 4, size_guest_buffer); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer, ptr + 8 + 4 + 4 + 4 + 4 + 4 + size_guest_buffer, checksumSize, "gles2_decoder_context_t::decode, OP_glFlushMappedBufferRangeAEMU2: GL checksumCalculator failure\n"); } this->glFlushMappedBufferRangeAEMU(this, var_target, var_offset, var_length, var_access, size_guest_buffer == 0 ? nullptr : (void*)(inptr_guest_buffer.get())); SET_LASTCALL("glFlushMappedBufferRangeAEMU2"); android::base::endTrace(); break; } case OP_glBufferDataSyncAEMU: { android::base::beginTrace("glBufferDataSyncAEMU decode"); GLenum var_target = Unpack(ptr + 8); GLsizeiptr var_size = Unpack(ptr + 8 + 4); uint32_t size_data __attribute__((unused)) = Unpack(ptr + 8 + 4 + 4); InputBuffer inptr_data(ptr + 8 + 4 + 4 + 4, size_data); GLenum var_usage = Unpack(ptr + 8 + 4 + 4 + 4 + size_data); if (useChecksum) { ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4 + 4 + size_data + 4, ptr + 8 + 4 + 4 + 4 + size_data + 4, checksumSize, "gles2_decoder_context_t::decode, OP_glBufferDataSyncAEMU: GL checksumCalculator failure\n"); } size_t totalTmpSize = sizeof(GLboolean); totalTmpSize += checksumSize; unsigned char *tmpBuf = stream->alloc(totalTmpSize); *(GLboolean *)(&tmpBuf[0]) = this->glBufferDataSyncAEMU(this, var_target, var_size, size_data == 0 ? nullptr : (const GLvoid*)(inptr_data.get()), var_usage); if (useChecksum) { ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize); } stream->flush(); SET_LASTCALL("glBufferDataSyncAEMU"); android::base::endTrace(); break; } default: return ptr - (unsigned char*)buf; } //switch #ifdef CHECK_GL_ERRORS GLint err = this->glGetError(); if (err) fprintf(stderr, "gles2 Error (post-call): 0x%X in %s\n", err, lastCall); #endif ptr += packetLen; } // while return ptr - (unsigned char*)buf; }