OSDN Git Service

Revert "DO NOT MERGE ANYWHERE: Goldfish DMA-based gralloc"
[android-x86/device-generic-goldfish-opengl.git] / system / renderControl_enc / renderControl_enc.cpp
index 69dc031..6883117 100644 (file)
@@ -2,7 +2,6 @@
 // generated by 'emugen'
 
 
-#include <vector>
 #include <string.h>
 #include "renderControl_opcodes.h"
 
@@ -46,7 +45,7 @@ GLint rcGetRendererVersion_enc(void *self )
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -69,7 +68,7 @@ EGLint rcGetEGLVersion_enc(void *self , EGLint* major, EGLint* minor)
        const unsigned int __size_minor =  sizeof(EGLint);
         unsigned char *ptr;
         unsigned char *buf;
-        const size_t sizeWithoutChecksum = 8 + __size_major + __size_minor + 2*4;
+        const size_t sizeWithoutChecksum = 8 + 0 + 0 + 2*4;
         const size_t checksumSize = checksumCalculator->checksumByteSize();
         const size_t totalSize = sizeWithoutChecksum + checksumSize;
        buf = stream->alloc(totalSize);
@@ -93,7 +92,7 @@ EGLint rcGetEGLVersion_enc(void *self , EGLint* major, EGLint* minor)
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -115,7 +114,7 @@ EGLint rcQueryEGLString_enc(void *self , EGLenum name, void* buffer, EGLint buff
        const unsigned int __size_buffer =  bufferSize;
         unsigned char *ptr;
         unsigned char *buf;
-        const size_t sizeWithoutChecksum = 8 + 4 + __size_buffer + 4 + 1*4;
+        const size_t sizeWithoutChecksum = 8 + 4 + 0 + 4 + 1*4;
         const size_t checksumSize = checksumCalculator->checksumByteSize();
         const size_t totalSize = sizeWithoutChecksum + checksumSize;
        buf = stream->alloc(totalSize);
@@ -138,7 +137,7 @@ EGLint rcQueryEGLString_enc(void *self , EGLenum name, void* buffer, EGLint buff
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -160,7 +159,7 @@ EGLint rcGetGLString_enc(void *self , EGLenum name, void* buffer, EGLint bufferS
        const unsigned int __size_buffer =  bufferSize;
         unsigned char *ptr;
         unsigned char *buf;
-        const size_t sizeWithoutChecksum = 8 + 4 + __size_buffer + 4 + 1*4;
+        const size_t sizeWithoutChecksum = 8 + 4 + 0 + 4 + 1*4;
         const size_t checksumSize = checksumCalculator->checksumByteSize();
         const size_t totalSize = sizeWithoutChecksum + checksumSize;
        buf = stream->alloc(totalSize);
@@ -183,7 +182,7 @@ EGLint rcGetGLString_enc(void *self , EGLenum name, void* buffer, EGLint bufferS
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -205,7 +204,7 @@ EGLint rcGetNumConfigs_enc(void *self , uint32_t* numAttribs)
        const unsigned int __size_numAttribs =  sizeof(uint32_t);
         unsigned char *ptr;
         unsigned char *buf;
-        const size_t sizeWithoutChecksum = 8 + __size_numAttribs + 1*4;
+        const size_t sizeWithoutChecksum = 8 + 0 + 1*4;
         const size_t checksumSize = checksumCalculator->checksumByteSize();
         const size_t totalSize = sizeWithoutChecksum + checksumSize;
        buf = stream->alloc(totalSize);
@@ -226,7 +225,7 @@ EGLint rcGetNumConfigs_enc(void *self , uint32_t* numAttribs)
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -248,7 +247,7 @@ EGLint rcGetConfigs_enc(void *self , uint32_t bufSize, GLuint* buffer)
        const unsigned int __size_buffer =  bufSize;
         unsigned char *ptr;
         unsigned char *buf;
-        const size_t sizeWithoutChecksum = 8 + 4 + __size_buffer + 1*4;
+        const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
         const size_t checksumSize = checksumCalculator->checksumByteSize();
         const size_t totalSize = sizeWithoutChecksum + checksumSize;
        buf = stream->alloc(totalSize);
@@ -270,7 +269,7 @@ EGLint rcGetConfigs_enc(void *self , uint32_t bufSize, GLuint* buffer)
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -293,7 +292,7 @@ EGLint rcChooseConfig_enc(void *self , EGLint* attribs, uint32_t attribs_size, u
        const unsigned int __size_configs = ((configs != NULL) ?  configs_size*sizeof(uint32_t) : 0);
         unsigned char *ptr;
         unsigned char *buf;
-        const size_t sizeWithoutChecksum = 8 + __size_attribs + 4 + __size_configs + 4 + 2*4;
+        const size_t sizeWithoutChecksum = 8 + __size_attribs + 4 + 0 + 4 + 2*4;
         const size_t checksumSize = checksumCalculator->checksumByteSize();
         const size_t totalSize = sizeWithoutChecksum + checksumSize;
        buf = stream->alloc(totalSize);
@@ -320,7 +319,7 @@ EGLint rcChooseConfig_enc(void *self , EGLint* attribs, uint32_t attribs_size, u
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -360,7 +359,7 @@ EGLint rcGetFBParam_enc(void *self , EGLint param)
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -402,7 +401,7 @@ uint32_t rcCreateContext_enc(void *self , uint32_t config, uint32_t share, uint3
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -469,7 +468,7 @@ uint32_t rcCreateWindowSurface_enc(void *self , uint32_t config, uint32_t width,
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -536,7 +535,7 @@ uint32_t rcCreateColorBuffer_enc(void *self , uint32_t width, uint32_t height, G
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -653,7 +652,7 @@ int rcFlushWindowColorBuffer_enc(void *self , uint32_t windowSurface)
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -695,7 +694,7 @@ EGLint rcMakeCurrent_enc(void *self , uint32_t context, uint32_t drawSurf, uint3
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -837,7 +836,7 @@ EGLint rcColorBufferCacheFlush_enc(void *self , uint32_t colorbuffer, EGLint pos
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -859,7 +858,7 @@ void rcReadColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y,
        const unsigned int __size_pixels =  (((glUtilsPixelBitSize(format, type) * width) >> 3) * height);
         unsigned char *ptr;
         unsigned char *buf;
-        const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+        const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 0 + 1*4;
         const size_t checksumSize = checksumCalculator->checksumByteSize();
         const size_t totalSize = sizeWithoutChecksum + checksumSize;
        buf = stream->alloc(totalSize);
@@ -883,7 +882,7 @@ void rcReadColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y,
        if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -935,7 +934,7 @@ int rcUpdateColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y,
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -975,7 +974,7 @@ int rcOpenColorBuffer2_enc(void *self , uint32_t colorbuffer)
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -1017,7 +1016,7 @@ uint32_t rcCreateClientImage_enc(void *self , uint32_t context, EGLenum target,
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -1057,7 +1056,7 @@ int rcDestroyClientImage_enc(void *self , uint32_t image)
        if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
        if (useChecksum) {
                unsigned char *checksumBufPtr = NULL;
-               std::vector<unsigned char> checksumBuf(checksumSize);
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
                if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
                stream->readback(checksumBufPtr, checksumSize);
                if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
@@ -1094,6 +1093,186 @@ void rcSelectChecksumHelper_enc(void *self , uint32_t newProtocol, uint32_t rese
 
 }
 
+void rcCreateSyncKHR_enc(void *self , EGLenum type, EGLint* attribs, uint32_t num_attribs, int destroy_when_signaled, uint64_t* glsync_out, uint64_t* syncthread_out)
+{
+
+       renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+       IOStream *stream = ctx->m_stream;
+       ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+       bool useChecksum = checksumCalculator->getVersion() > 0;
+
+       const unsigned int __size_attribs =  num_attribs;
+       const unsigned int __size_glsync_out =  sizeof(uint64_t);
+       const unsigned int __size_syncthread_out =  sizeof(uint64_t);
+        unsigned char *ptr;
+        unsigned char *buf;
+        const size_t sizeWithoutChecksum = 8 + 4 + __size_attribs + 4 + 4 + 0 + 0 + 3*4;
+        const size_t checksumSize = checksumCalculator->checksumByteSize();
+        const size_t totalSize = sizeWithoutChecksum + checksumSize;
+       buf = stream->alloc(totalSize);
+       ptr = buf;
+       int tmp = OP_rcCreateSyncKHR;memcpy(ptr, &tmp, 4); ptr += 4;
+       memcpy(ptr, &totalSize, 4);  ptr += 4;
+
+               memcpy(ptr, &type, 4); ptr += 4;
+       *(unsigned int *)(ptr) = __size_attribs; ptr += 4;
+       memcpy(ptr, attribs, __size_attribs);ptr += __size_attribs;
+               memcpy(ptr, &num_attribs, 4); ptr += 4;
+               memcpy(ptr, &destroy_when_signaled, 4); ptr += 4;
+       *(unsigned int *)(ptr) = __size_glsync_out; ptr += 4;
+       *(unsigned int *)(ptr) = __size_syncthread_out; ptr += 4;
+
+       if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+       if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+       stream->readback(glsync_out, __size_glsync_out);
+       if (useChecksum) checksumCalculator->addBuffer(glsync_out, __size_glsync_out);
+       stream->readback(syncthread_out, __size_syncthread_out);
+       if (useChecksum) checksumCalculator->addBuffer(syncthread_out, __size_syncthread_out);
+       if (useChecksum) {
+               unsigned char *checksumBufPtr = NULL;
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
+               if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
+               stream->readback(checksumBufPtr, checksumSize);
+               if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
+                       ALOGE("rcCreateSyncKHR: GL communication error, please report this issue to b.android.com.\n");
+                       abort();
+               }
+       }
+}
+
+EGLint rcClientWaitSyncKHR_enc(void *self , uint64_t sync, EGLint flags, uint64_t timeout)
+{
+
+       renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+       IOStream *stream = ctx->m_stream;
+       ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+       bool useChecksum = checksumCalculator->getVersion() > 0;
+
+        unsigned char *ptr;
+        unsigned char *buf;
+        const size_t sizeWithoutChecksum = 8 + 8 + 4 + 8;
+        const size_t checksumSize = checksumCalculator->checksumByteSize();
+        const size_t totalSize = sizeWithoutChecksum + checksumSize;
+       buf = stream->alloc(totalSize);
+       ptr = buf;
+       int tmp = OP_rcClientWaitSyncKHR;memcpy(ptr, &tmp, 4); ptr += 4;
+       memcpy(ptr, &totalSize, 4);  ptr += 4;
+
+               memcpy(ptr, &sync, 8); ptr += 8;
+               memcpy(ptr, &flags, 4); ptr += 4;
+               memcpy(ptr, &timeout, 8); ptr += 8;
+
+       if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+       if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
+       EGLint retval;
+       stream->readback(&retval, 4);
+       if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+       if (useChecksum) {
+               unsigned char *checksumBufPtr = NULL;
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
+               if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
+               stream->readback(checksumBufPtr, checksumSize);
+               if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
+                       ALOGE("rcClientWaitSyncKHR: GL communication error, please report this issue to b.android.com.\n");
+                       abort();
+               }
+       }
+       return retval;
+}
+
+void rcFlushWindowColorBufferAsync_enc(void *self , uint32_t windowSurface)
+{
+
+       renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+       IOStream *stream = ctx->m_stream;
+       ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+       bool useChecksum = checksumCalculator->getVersion() > 0;
+
+        unsigned char *ptr;
+        unsigned char *buf;
+        const size_t sizeWithoutChecksum = 8 + 4;
+        const size_t checksumSize = checksumCalculator->checksumByteSize();
+        const size_t totalSize = sizeWithoutChecksum + checksumSize;
+       buf = stream->alloc(totalSize);
+       ptr = buf;
+       int tmp = OP_rcFlushWindowColorBufferAsync;memcpy(ptr, &tmp, 4); ptr += 4;
+       memcpy(ptr, &totalSize, 4);  ptr += 4;
+
+               memcpy(ptr, &windowSurface, 4); ptr += 4;
+
+       if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+       if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+}
+
+int rcDestroySyncKHR_enc(void *self , uint64_t sync)
+{
+
+       renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+       IOStream *stream = ctx->m_stream;
+       ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+       bool useChecksum = checksumCalculator->getVersion() > 0;
+
+        unsigned char *ptr;
+        unsigned char *buf;
+        const size_t sizeWithoutChecksum = 8 + 8;
+        const size_t checksumSize = checksumCalculator->checksumByteSize();
+        const size_t totalSize = sizeWithoutChecksum + checksumSize;
+       buf = stream->alloc(totalSize);
+       ptr = buf;
+       int tmp = OP_rcDestroySyncKHR;memcpy(ptr, &tmp, 4); ptr += 4;
+       memcpy(ptr, &totalSize, 4);  ptr += 4;
+
+               memcpy(ptr, &sync, 8); ptr += 8;
+
+       if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+       if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
+       int retval;
+       stream->readback(&retval, 4);
+       if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+       if (useChecksum) {
+               unsigned char *checksumBufPtr = NULL;
+               unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
+               if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
+               stream->readback(checksumBufPtr, checksumSize);
+               if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
+                       ALOGE("rcDestroySyncKHR: GL communication error, please report this issue to b.android.com.\n");
+                       abort();
+               }
+       }
+       return retval;
+}
+
+void rcSetPuid_enc(void *self , uint64_t puid)
+{
+
+       renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+       IOStream *stream = ctx->m_stream;
+       ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+       bool useChecksum = checksumCalculator->getVersion() > 0;
+
+        unsigned char *ptr;
+        unsigned char *buf;
+        const size_t sizeWithoutChecksum = 8 + 8;
+        const size_t checksumSize = checksumCalculator->checksumByteSize();
+        const size_t totalSize = sizeWithoutChecksum + checksumSize;
+       buf = stream->alloc(totalSize);
+       ptr = buf;
+       int tmp = OP_rcSetPuid;memcpy(ptr, &tmp, 4); ptr += 4;
+       memcpy(ptr, &totalSize, 4);  ptr += 4;
+
+               memcpy(ptr, &puid, 8); ptr += 8;
+
+       if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+       if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+}
+
 }  // namespace
 
 renderControl_encoder_context_t::renderControl_encoder_context_t(IOStream *stream, ChecksumCalculator *checksumCalculator)
@@ -1130,5 +1309,10 @@ renderControl_encoder_context_t::renderControl_encoder_context_t(IOStream *strea
        this->rcCreateClientImage = &rcCreateClientImage_enc;
        this->rcDestroyClientImage = &rcDestroyClientImage_enc;
        this->rcSelectChecksumHelper = &rcSelectChecksumHelper_enc;
+       this->rcCreateSyncKHR = &rcCreateSyncKHR_enc;
+       this->rcClientWaitSyncKHR = &rcClientWaitSyncKHR_enc;
+       this->rcFlushWindowColorBufferAsync = &rcFlushWindowColorBufferAsync_enc;
+       this->rcDestroySyncKHR = &rcDestroySyncKHR_enc;
+       this->rcSetPuid = &rcSetPuid_enc;
 }