1b85b2756d1e247f8314bb591700fb175d7346631keunyoung// Generated Code - DO NOT EDIT !!
2b85b2756d1e247f8314bb591700fb175d7346631keunyoung// generated by 'emugen'
3b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5b85b2756d1e247f8314bb591700fb175d7346631keunyoung#include <string.h>
6b85b2756d1e247f8314bb591700fb175d7346631keunyoung#include "gl_opcodes.h"
7b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8b85b2756d1e247f8314bb591700fb175d7346631keunyoung#include "gl_enc.h"
9b85b2756d1e247f8314bb591700fb175d7346631keunyoung
10b85b2756d1e247f8314bb591700fb175d7346631keunyoung
11b85b2756d1e247f8314bb591700fb175d7346631keunyoung#include <stdio.h>
124f91c8e9a9023d0cc07bc7db985a80a212294461David 'Digit' Turner
134f91c8e9a9023d0cc07bc7db985a80a212294461David 'Digit' Turnernamespace {
144f91c8e9a9023d0cc07bc7db985a80a212294461David 'Digit' Turner
154f91c8e9a9023d0cc07bc7db985a80a212294461David 'Digit' Turnervoid enc_unsupported()
16b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
17b85b2756d1e247f8314bb591700fb175d7346631keunyoung	ALOGE("Function is unsupported\n");
18b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
19b85b2756d1e247f8314bb591700fb175d7346631keunyoung
20b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glAlphaFunc_enc(void *self , GLenum func, GLclampf ref)
21b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
22b85b2756d1e247f8314bb591700fb175d7346631keunyoung
23b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
24b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
25b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
26e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
27b85b2756d1e247f8314bb591700fb175d7346631keunyoung
28b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
29b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
30b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
31b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
32b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
33b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
34b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
35b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glAlphaFunc;memcpy(ptr, &tmp, 4); ptr += 4;
36b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
37b85b2756d1e247f8314bb591700fb175d7346631keunyoung
38b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &func, 4); ptr += 4;
39b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &ref, 4); ptr += 4;
40b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
41e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
42e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
43e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
44b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
45b85b2756d1e247f8314bb591700fb175d7346631keunyoung
46b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
47b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
48b85b2756d1e247f8314bb591700fb175d7346631keunyoung
49b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
50b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
51b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
52e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
53b85b2756d1e247f8314bb591700fb175d7346631keunyoung
54b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
55b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
56b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
57b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
58b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
59b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
60b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
61b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClearColor;memcpy(ptr, &tmp, 4); ptr += 4;
62b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
63b85b2756d1e247f8314bb591700fb175d7346631keunyoung
64b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &red, 4); ptr += 4;
65b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &green, 4); ptr += 4;
66b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &blue, 4); ptr += 4;
67b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &alpha, 4); ptr += 4;
68b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
69e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
70e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
71e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
72b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
73b85b2756d1e247f8314bb591700fb175d7346631keunyoung
74b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClearDepthf_enc(void *self , GLclampf depth)
75b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
76b85b2756d1e247f8314bb591700fb175d7346631keunyoung
77b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
78b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
79b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
80e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
81b85b2756d1e247f8314bb591700fb175d7346631keunyoung
82b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
83b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
84b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
85b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
86b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
87b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
88b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
89b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClearDepthf;memcpy(ptr, &tmp, 4); ptr += 4;
90b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
91b85b2756d1e247f8314bb591700fb175d7346631keunyoung
92b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &depth, 4); ptr += 4;
93b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
94e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
95e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
96e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
97b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
98b85b2756d1e247f8314bb591700fb175d7346631keunyoung
99b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClipPlanef_enc(void *self , GLenum plane, const GLfloat* equation)
100b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
101b85b2756d1e247f8314bb591700fb175d7346631keunyoung
102b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
103b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
104b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
105e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
106b85b2756d1e247f8314bb591700fb175d7346631keunyoung
107b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_equation =  (4 * sizeof(float));
108b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
109b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
110b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_equation + 1*4;
111b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
112b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
113b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
114b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
115b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClipPlanef;memcpy(ptr, &tmp, 4); ptr += 4;
116b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
117b85b2756d1e247f8314bb591700fb175d7346631keunyoung
118b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &plane, 4); ptr += 4;
119b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_equation; ptr += 4;
120b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, equation, __size_equation);ptr += __size_equation;
121b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
122e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
123e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
124e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
125b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
126b85b2756d1e247f8314bb591700fb175d7346631keunyoung
127b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glColor4f_enc(void *self , GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
128b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
129b85b2756d1e247f8314bb591700fb175d7346631keunyoung
130b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
131b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
132b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
133e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
134b85b2756d1e247f8314bb591700fb175d7346631keunyoung
135b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
136b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
137b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
138b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
139b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
140b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
141b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
142b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glColor4f;memcpy(ptr, &tmp, 4); ptr += 4;
143b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
144b85b2756d1e247f8314bb591700fb175d7346631keunyoung
145b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &red, 4); ptr += 4;
146b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &green, 4); ptr += 4;
147b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &blue, 4); ptr += 4;
148b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &alpha, 4); ptr += 4;
149b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
150e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
151e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
152e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
153b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
154b85b2756d1e247f8314bb591700fb175d7346631keunyoung
155b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar)
156b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
157b85b2756d1e247f8314bb591700fb175d7346631keunyoung
158b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
159b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
160b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
161e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
162b85b2756d1e247f8314bb591700fb175d7346631keunyoung
163b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
164b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
165b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
166b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
167b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
168b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
169b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
170b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDepthRangef;memcpy(ptr, &tmp, 4); ptr += 4;
171b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
172b85b2756d1e247f8314bb591700fb175d7346631keunyoung
173b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zNear, 4); ptr += 4;
174b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zFar, 4); ptr += 4;
175b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
176e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
177e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
178e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
179b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
180b85b2756d1e247f8314bb591700fb175d7346631keunyoung
181b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFogf_enc(void *self , GLenum pname, GLfloat param)
182b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
183b85b2756d1e247f8314bb591700fb175d7346631keunyoung
184b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
185b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
186b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
187e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
188b85b2756d1e247f8314bb591700fb175d7346631keunyoung
189b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
190b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
191b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
192b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
193b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
194b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
195b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
196b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFogf;memcpy(ptr, &tmp, 4); ptr += 4;
197b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
198b85b2756d1e247f8314bb591700fb175d7346631keunyoung
199b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
200b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
201b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
202e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
203e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
204e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
205b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
206b85b2756d1e247f8314bb591700fb175d7346631keunyoung
207b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFogfv_enc(void *self , GLenum pname, const GLfloat* params)
208b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
209b85b2756d1e247f8314bb591700fb175d7346631keunyoung
210b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
211b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
212b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
213e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
214b85b2756d1e247f8314bb591700fb175d7346631keunyoung
215b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
216b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
217b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
218b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
219b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
220b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
221b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
222b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
223b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFogfv;memcpy(ptr, &tmp, 4); ptr += 4;
224b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
225b85b2756d1e247f8314bb591700fb175d7346631keunyoung
226b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
227b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
228b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
229b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
230e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
231e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
232e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
233b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
234b85b2756d1e247f8314bb591700fb175d7346631keunyoung
235b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFrustumf_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
236b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
237b85b2756d1e247f8314bb591700fb175d7346631keunyoung
238b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
239b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
240b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
241e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
242b85b2756d1e247f8314bb591700fb175d7346631keunyoung
243b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
244b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
245b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
246b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
247b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
248b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
249b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
250b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFrustumf;memcpy(ptr, &tmp, 4); ptr += 4;
251b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
252b85b2756d1e247f8314bb591700fb175d7346631keunyoung
253b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &left, 4); ptr += 4;
254b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &right, 4); ptr += 4;
255b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &bottom, 4); ptr += 4;
256b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &top, 4); ptr += 4;
257b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zNear, 4); ptr += 4;
258b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zFar, 4); ptr += 4;
259b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
260e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
261e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
262e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
263b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
264b85b2756d1e247f8314bb591700fb175d7346631keunyoung
265b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetClipPlanef_enc(void *self , GLenum pname, GLfloat* eqn)
266b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
267b85b2756d1e247f8314bb591700fb175d7346631keunyoung
268b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
269b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
270b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
271e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
272b85b2756d1e247f8314bb591700fb175d7346631keunyoung
273b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_eqn =  (4 * sizeof(GLfloat));
274b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
275b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2761d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
277b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
278b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
279b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
280b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
281b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetClipPlanef;memcpy(ptr, &tmp, 4); ptr += 4;
282b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
283b85b2756d1e247f8314bb591700fb175d7346631keunyoung
284b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
285b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
286b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
287e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
288e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
289e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
290b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(eqn, __size_eqn);
291e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(eqn, __size_eqn);
292e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
293a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
2941d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
295a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
296a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
297a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
298e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetClipPlanef: GL communication error, please report this issue to b.android.com.\n");
299e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
300e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
301e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
302b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
303b85b2756d1e247f8314bb591700fb175d7346631keunyoung
304b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetFloatv_enc(void *self , GLenum pname, GLfloat* params)
305b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
306b85b2756d1e247f8314bb591700fb175d7346631keunyoung
307b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
308b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
309b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
310e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
311b85b2756d1e247f8314bb591700fb175d7346631keunyoung
312b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
313b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
314b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3151d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
316b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
317b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
318b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
319b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
320b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetFloatv;memcpy(ptr, &tmp, 4); ptr += 4;
321b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
322b85b2756d1e247f8314bb591700fb175d7346631keunyoung
323b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
324b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
325b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
326e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
327e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
328e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
329b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
330e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
331e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
332a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
3331d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
334a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
335a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
336a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
337e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetFloatv: GL communication error, please report this issue to b.android.com.\n");
338e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
339e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
340e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
341b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
342b85b2756d1e247f8314bb591700fb175d7346631keunyoung
343b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetLightfv_enc(void *self , GLenum light, GLenum pname, GLfloat* params)
344b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
345b85b2756d1e247f8314bb591700fb175d7346631keunyoung
346b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
347b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
348b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
349e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
350b85b2756d1e247f8314bb591700fb175d7346631keunyoung
351b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
352b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
353b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3541d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
355b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
356b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
357b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
358b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
359b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetLightfv;memcpy(ptr, &tmp, 4); ptr += 4;
360b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
361b85b2756d1e247f8314bb591700fb175d7346631keunyoung
362b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &light, 4); ptr += 4;
363b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
364b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
365b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
366e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
367e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
368e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
369b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
370e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
371e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
372a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
3731d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
374a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
375a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
376a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
377e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetLightfv: GL communication error, please report this issue to b.android.com.\n");
378e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
379e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
380e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
381b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
382b85b2756d1e247f8314bb591700fb175d7346631keunyoung
383b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetMaterialfv_enc(void *self , GLenum face, GLenum pname, GLfloat* params)
384b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
385b85b2756d1e247f8314bb591700fb175d7346631keunyoung
386b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
387b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
388b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
389e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
390b85b2756d1e247f8314bb591700fb175d7346631keunyoung
391b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
392b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
393b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3941d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
395b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
396b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
397b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
398b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
399b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetMaterialfv;memcpy(ptr, &tmp, 4); ptr += 4;
400b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
401b85b2756d1e247f8314bb591700fb175d7346631keunyoung
402b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &face, 4); ptr += 4;
403b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
404b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
405b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
406e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
407e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
408e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
409b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
410e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
411e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
412a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
4131d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
414a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
415a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
416a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
417e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetMaterialfv: GL communication error, please report this issue to b.android.com.\n");
418e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
419e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
420e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
421b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
422b85b2756d1e247f8314bb591700fb175d7346631keunyoung
423b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetTexEnvfv_enc(void *self , GLenum env, GLenum pname, GLfloat* params)
424b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
425b85b2756d1e247f8314bb591700fb175d7346631keunyoung
426b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
427b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
428b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
429e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
430b85b2756d1e247f8314bb591700fb175d7346631keunyoung
431b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
432b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
433b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4341d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
435b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
436b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
437b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
438b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
439b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetTexEnvfv;memcpy(ptr, &tmp, 4); ptr += 4;
440b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
441b85b2756d1e247f8314bb591700fb175d7346631keunyoung
442b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &env, 4); ptr += 4;
443b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
444b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
445b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
446e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
447e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
448e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
449b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
450e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
451e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
452a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
4531d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
454a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
455a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
456a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
457e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetTexEnvfv: GL communication error, please report this issue to b.android.com.\n");
458e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
459e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
460e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
461b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
462b85b2756d1e247f8314bb591700fb175d7346631keunyoung
463b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* params)
464b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
465b85b2756d1e247f8314bb591700fb175d7346631keunyoung
466b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
467b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
468b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
469e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
470b85b2756d1e247f8314bb591700fb175d7346631keunyoung
471b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
472b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
473b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4741d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
475b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
476b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
477b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
478b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
479b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
480b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
481b85b2756d1e247f8314bb591700fb175d7346631keunyoung
482b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
483b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
484b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
485b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
486e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
487e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
488e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
489b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
490e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
491e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
492a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
4931d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
494a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
495a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
496a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
497e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetTexParameterfv: GL communication error, please report this issue to b.android.com.\n");
498e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
499e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
500e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
501b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
502b85b2756d1e247f8314bb591700fb175d7346631keunyoung
503b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLightModelf_enc(void *self , GLenum pname, GLfloat param)
504b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
505b85b2756d1e247f8314bb591700fb175d7346631keunyoung
506b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
507b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
508b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
509e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
510b85b2756d1e247f8314bb591700fb175d7346631keunyoung
511b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
512b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
513b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
514b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
515b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
516b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
517b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
518b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLightModelf;memcpy(ptr, &tmp, 4); ptr += 4;
519b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
520b85b2756d1e247f8314bb591700fb175d7346631keunyoung
521b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
522b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
523b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
524e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
525e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
526e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
527b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
528b85b2756d1e247f8314bb591700fb175d7346631keunyoung
529b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLightModelfv_enc(void *self , GLenum pname, const GLfloat* params)
530b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
531b85b2756d1e247f8314bb591700fb175d7346631keunyoung
532b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
533b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
534b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
535e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
536b85b2756d1e247f8314bb591700fb175d7346631keunyoung
537b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
538b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
539b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
540b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
541b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
542b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
543b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
544b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
545b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLightModelfv;memcpy(ptr, &tmp, 4); ptr += 4;
546b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
547b85b2756d1e247f8314bb591700fb175d7346631keunyoung
548b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
549b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
550b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
551b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
552e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
553e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
554e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
555b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
556b85b2756d1e247f8314bb591700fb175d7346631keunyoung
557b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLightf_enc(void *self , GLenum light, GLenum pname, GLfloat param)
558b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
559b85b2756d1e247f8314bb591700fb175d7346631keunyoung
560b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
561b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
562b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
563e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
564b85b2756d1e247f8314bb591700fb175d7346631keunyoung
565b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
566b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
567b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
568b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
569b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
570b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
571b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
572b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLightf;memcpy(ptr, &tmp, 4); ptr += 4;
573b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
574b85b2756d1e247f8314bb591700fb175d7346631keunyoung
575b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &light, 4); ptr += 4;
576b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
577b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
578b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
579e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
580e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
581e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
582b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
583b85b2756d1e247f8314bb591700fb175d7346631keunyoung
584b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLightfv_enc(void *self , GLenum light, GLenum pname, const GLfloat* params)
585b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
586b85b2756d1e247f8314bb591700fb175d7346631keunyoung
587b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
588b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
589b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
590e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
591b85b2756d1e247f8314bb591700fb175d7346631keunyoung
592b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
593b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
594b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
595b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
596b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
597b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
598b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
599b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
600b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLightfv;memcpy(ptr, &tmp, 4); ptr += 4;
601b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
602b85b2756d1e247f8314bb591700fb175d7346631keunyoung
603b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &light, 4); ptr += 4;
604b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
605b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
606b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
607b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
608e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
609e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
610e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
611b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
612b85b2756d1e247f8314bb591700fb175d7346631keunyoung
613b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLineWidth_enc(void *self , GLfloat width)
614b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
615b85b2756d1e247f8314bb591700fb175d7346631keunyoung
616b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
617b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
618b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
619e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
620b85b2756d1e247f8314bb591700fb175d7346631keunyoung
621b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
622b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
623b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
624b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
625b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
626b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
627b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
628b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLineWidth;memcpy(ptr, &tmp, 4); ptr += 4;
629b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
630b85b2756d1e247f8314bb591700fb175d7346631keunyoung
631b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
632b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
633e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
634e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
635e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
636b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
637b85b2756d1e247f8314bb591700fb175d7346631keunyoung
638b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLoadMatrixf_enc(void *self , const GLfloat* m)
639b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
640b85b2756d1e247f8314bb591700fb175d7346631keunyoung
641b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
642b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
643b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
644e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
645b85b2756d1e247f8314bb591700fb175d7346631keunyoung
646b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_m =  (16 * sizeof(GLfloat));
647b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
648b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
649b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + __size_m + 1*4;
650b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
651b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
652b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
653b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
654b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLoadMatrixf;memcpy(ptr, &tmp, 4); ptr += 4;
655b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
656b85b2756d1e247f8314bb591700fb175d7346631keunyoung
657b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_m; ptr += 4;
658b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, m, __size_m);ptr += __size_m;
659b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
660e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
661e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
662e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
663b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
664b85b2756d1e247f8314bb591700fb175d7346631keunyoung
665b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMaterialf_enc(void *self , GLenum face, GLenum pname, GLfloat param)
666b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
667b85b2756d1e247f8314bb591700fb175d7346631keunyoung
668b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
669b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
670b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
671e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
672b85b2756d1e247f8314bb591700fb175d7346631keunyoung
673b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
674b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
675b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
676b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
677b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
678b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
679b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
680b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMaterialf;memcpy(ptr, &tmp, 4); ptr += 4;
681b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
682b85b2756d1e247f8314bb591700fb175d7346631keunyoung
683b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &face, 4); ptr += 4;
684b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
685b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
686b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
687e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
688e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
689e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
690b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
691b85b2756d1e247f8314bb591700fb175d7346631keunyoung
692b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMaterialfv_enc(void *self , GLenum face, GLenum pname, const GLfloat* params)
693b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
694b85b2756d1e247f8314bb591700fb175d7346631keunyoung
695b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
696b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
697b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
698e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
699b85b2756d1e247f8314bb591700fb175d7346631keunyoung
700b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
701b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
702b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
703b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
704b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
705b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
706b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
707b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
708b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMaterialfv;memcpy(ptr, &tmp, 4); ptr += 4;
709b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
710b85b2756d1e247f8314bb591700fb175d7346631keunyoung
711b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &face, 4); ptr += 4;
712b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
713b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
714b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
715b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
716e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
717e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
718e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
719b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
720b85b2756d1e247f8314bb591700fb175d7346631keunyoung
721b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMultMatrixf_enc(void *self , const GLfloat* m)
722b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
723b85b2756d1e247f8314bb591700fb175d7346631keunyoung
724b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
725b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
726b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
727e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
728b85b2756d1e247f8314bb591700fb175d7346631keunyoung
729b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_m =  (16 * sizeof(GLfloat));
730b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
731b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
732b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + __size_m + 1*4;
733b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
734b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
735b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
736b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
737b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMultMatrixf;memcpy(ptr, &tmp, 4); ptr += 4;
738b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
739b85b2756d1e247f8314bb591700fb175d7346631keunyoung
740b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_m; ptr += 4;
741b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, m, __size_m);ptr += __size_m;
742b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
743e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
744e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
745e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
746b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
747b85b2756d1e247f8314bb591700fb175d7346631keunyoung
748b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMultiTexCoord4f_enc(void *self , GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
749b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
750b85b2756d1e247f8314bb591700fb175d7346631keunyoung
751b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
752b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
753b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
754e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
755b85b2756d1e247f8314bb591700fb175d7346631keunyoung
756b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
757b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
758b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
759b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
760b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
761b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
762b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
763b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMultiTexCoord4f;memcpy(ptr, &tmp, 4); ptr += 4;
764b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
765b85b2756d1e247f8314bb591700fb175d7346631keunyoung
766b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
767b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &s, 4); ptr += 4;
768b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &t, 4); ptr += 4;
769b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &r, 4); ptr += 4;
770b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &q, 4); ptr += 4;
771b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
772e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
773e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
774e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
775b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
776b85b2756d1e247f8314bb591700fb175d7346631keunyoung
777b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glNormal3f_enc(void *self , GLfloat nx, GLfloat ny, GLfloat nz)
778b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
779b85b2756d1e247f8314bb591700fb175d7346631keunyoung
780b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
781b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
782b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
783e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
784b85b2756d1e247f8314bb591700fb175d7346631keunyoung
785b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
786b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
787b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
788b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
789b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
790b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
791b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
792b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glNormal3f;memcpy(ptr, &tmp, 4); ptr += 4;
793b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
794b85b2756d1e247f8314bb591700fb175d7346631keunyoung
795b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &nx, 4); ptr += 4;
796b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &ny, 4); ptr += 4;
797b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &nz, 4); ptr += 4;
798b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
799e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
800e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
801e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
802b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
803b85b2756d1e247f8314bb591700fb175d7346631keunyoung
804b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glOrthof_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
805b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
806b85b2756d1e247f8314bb591700fb175d7346631keunyoung
807b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
808b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
809b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
810e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
811b85b2756d1e247f8314bb591700fb175d7346631keunyoung
812b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
813b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
814b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
815b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
816b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
817b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
818b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
819b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glOrthof;memcpy(ptr, &tmp, 4); ptr += 4;
820b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
821b85b2756d1e247f8314bb591700fb175d7346631keunyoung
822b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &left, 4); ptr += 4;
823b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &right, 4); ptr += 4;
824b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &bottom, 4); ptr += 4;
825b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &top, 4); ptr += 4;
826b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zNear, 4); ptr += 4;
827b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zFar, 4); ptr += 4;
828b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
829e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
830e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
831e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
832b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
833b85b2756d1e247f8314bb591700fb175d7346631keunyoung
834b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPointParameterf_enc(void *self , GLenum pname, GLfloat param)
835b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
836b85b2756d1e247f8314bb591700fb175d7346631keunyoung
837b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
838b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
839b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
840e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
841b85b2756d1e247f8314bb591700fb175d7346631keunyoung
842b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
843b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
844b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
845b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
846b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
847b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
848b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
849b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPointParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
850b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
851b85b2756d1e247f8314bb591700fb175d7346631keunyoung
852b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
853b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
854b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
855e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
856e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
857e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
858b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
859b85b2756d1e247f8314bb591700fb175d7346631keunyoung
860b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPointParameterfv_enc(void *self , GLenum pname, const GLfloat* params)
861b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
862b85b2756d1e247f8314bb591700fb175d7346631keunyoung
863b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
864b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
865b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
866e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
867b85b2756d1e247f8314bb591700fb175d7346631keunyoung
868b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
869b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
870b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
871b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
872b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
873b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
874b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
875b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
876b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPointParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
877b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
878b85b2756d1e247f8314bb591700fb175d7346631keunyoung
879b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
880b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
881b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
882b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
883e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
884e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
885e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
886b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
887b85b2756d1e247f8314bb591700fb175d7346631keunyoung
888b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPointSize_enc(void *self , GLfloat size)
889b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
890b85b2756d1e247f8314bb591700fb175d7346631keunyoung
891b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
892b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
893b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
894e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
895b85b2756d1e247f8314bb591700fb175d7346631keunyoung
896b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
897b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
898b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
899b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
900b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
901b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
902b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
903b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPointSize;memcpy(ptr, &tmp, 4); ptr += 4;
904b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
905b85b2756d1e247f8314bb591700fb175d7346631keunyoung
906b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
907b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
908e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
909e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
910e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
911b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
912b85b2756d1e247f8314bb591700fb175d7346631keunyoung
913b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units)
914b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
915b85b2756d1e247f8314bb591700fb175d7346631keunyoung
916b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
917b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
918b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
919e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
920b85b2756d1e247f8314bb591700fb175d7346631keunyoung
921b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
922b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
923b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
924b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
925b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
926b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
927b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
928b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPolygonOffset;memcpy(ptr, &tmp, 4); ptr += 4;
929b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
930b85b2756d1e247f8314bb591700fb175d7346631keunyoung
931b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &factor, 4); ptr += 4;
932b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &units, 4); ptr += 4;
933b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
934e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
935e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
936e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
937b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
938b85b2756d1e247f8314bb591700fb175d7346631keunyoung
939b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glRotatef_enc(void *self , GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
940b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
941b85b2756d1e247f8314bb591700fb175d7346631keunyoung
942b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
943b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
944b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
945e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
946b85b2756d1e247f8314bb591700fb175d7346631keunyoung
947b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
948b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
949b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
950b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
951b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
952b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
953b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
954b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glRotatef;memcpy(ptr, &tmp, 4); ptr += 4;
955b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
956b85b2756d1e247f8314bb591700fb175d7346631keunyoung
957b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &angle, 4); ptr += 4;
958b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
959b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
960b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &z, 4); ptr += 4;
961b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
962e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
963e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
964e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
965b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
966b85b2756d1e247f8314bb591700fb175d7346631keunyoung
967b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glScalef_enc(void *self , GLfloat x, GLfloat y, GLfloat z)
968b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
969b85b2756d1e247f8314bb591700fb175d7346631keunyoung
970b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
971b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
972b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
973e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
974b85b2756d1e247f8314bb591700fb175d7346631keunyoung
975b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
976b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
977b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
978b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
979b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
980b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
981b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
982b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glScalef;memcpy(ptr, &tmp, 4); ptr += 4;
983b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
984b85b2756d1e247f8314bb591700fb175d7346631keunyoung
985b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
986b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
987b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &z, 4); ptr += 4;
988b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
989e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
990e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
991e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
992b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
993b85b2756d1e247f8314bb591700fb175d7346631keunyoung
994b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexEnvf_enc(void *self , GLenum target, GLenum pname, GLfloat param)
995b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
996b85b2756d1e247f8314bb591700fb175d7346631keunyoung
997b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
998b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
999b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1000e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1001b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1002b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1003b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1004b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
1005b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1006b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1007b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1008b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1009b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexEnvf;memcpy(ptr, &tmp, 4); ptr += 4;
1010b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1011b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1012b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
1013b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
1014b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
1015b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1016e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1017e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1018e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1019b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1020b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1021b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexEnvfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params)
1022b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1023b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1024b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1025b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1026b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1027e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1028b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1029b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
1030b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1031b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1032b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
1033b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1034b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1035b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1036b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1037b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexEnvfv;memcpy(ptr, &tmp, 4); ptr += 4;
1038b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1039b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1040b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
1041b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
1042b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
1043b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
1044b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1045e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1046e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1047e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1048b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1049b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1050b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param)
1051b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1052b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1053b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1054b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1055b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1056e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1057b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1058b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1059b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1060b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
1061b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1062b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1063b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1064b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1065b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
1066b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1067b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1068b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
1069b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
1070b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
1071b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1072e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1073e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1074e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1075b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1076b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1077b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params)
1078b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1079b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1080b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1081b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1082b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1083e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1084b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1085b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
1086b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1087b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1088b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
1089b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1090b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1091b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1092b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1093b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
1094b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1095b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1096b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
1097b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
1098b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
1099b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
1100b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1101e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1102e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1103e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1104b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1105b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1106b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTranslatef_enc(void *self , GLfloat x, GLfloat y, GLfloat z)
1107b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1108b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1109b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1110b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1111b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1112e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1113b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1114b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1115b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1116b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
1117b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1118b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1119b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1120b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1121b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTranslatef;memcpy(ptr, &tmp, 4); ptr += 4;
1122b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1123b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1124b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
1125b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
1126b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &z, 4); ptr += 4;
1127b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1128e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1129e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1130e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1131b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1132b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1133b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glActiveTexture_enc(void *self , GLenum texture)
1134b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1135b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1136b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1137b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1138b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1139e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1140b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1141b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1142b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1143b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
1144b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1145b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1146b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1147b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1148b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glActiveTexture;memcpy(ptr, &tmp, 4); ptr += 4;
1149b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1150b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1151b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &texture, 4); ptr += 4;
1152b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1153e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1154e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1155e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1156b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1157b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1158b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glAlphaFuncx_enc(void *self , GLenum func, GLclampx ref)
1159b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1160b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1161b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1162b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1163b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1164e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1165b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1166b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1167b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1168b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1169b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1170b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1171b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1172b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1173b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glAlphaFuncx;memcpy(ptr, &tmp, 4); ptr += 4;
1174b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1175b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1176b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &func, 4); ptr += 4;
1177b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &ref, 4); ptr += 4;
1178b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1179e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1180e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1181e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1182b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1183b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1184b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glBindBuffer_enc(void *self , GLenum target, GLuint buffer)
1185b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1186b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1187b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1188b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1189b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1190e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1191b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1192b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1193b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1194b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1195b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1196b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1197b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1198b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1199b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glBindBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
1200b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1201b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1202b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
1203b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &buffer, 4); ptr += 4;
1204b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1205e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1206e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1207e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1208b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1209b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1210b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glBindTexture_enc(void *self , GLenum target, GLuint texture)
1211b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1212b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1213b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1214b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1215b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1216e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1217b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1218b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1219b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1220b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1221b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1222b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1223b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1224b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1225b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glBindTexture;memcpy(ptr, &tmp, 4); ptr += 4;
1226b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1227b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1228b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
1229b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &texture, 4); ptr += 4;
1230b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1231e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1232e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1233e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1234b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1235b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1236b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor)
1237b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1238b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1239b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1240b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1241b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1242e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1243b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1244b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1245b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1246b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1247b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1248b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1249b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1250b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1251b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glBlendFunc;memcpy(ptr, &tmp, 4); ptr += 4;
1252b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1253b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1254b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &sfactor, 4); ptr += 4;
1255b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &dfactor, 4); ptr += 4;
1256b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1257e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1258e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1259e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1260b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1261b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1262b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
1263b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1264b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1265b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1266b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1267b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1268e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1269b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1270268e85cdbb1122531013598b2638c25b839191eeYahan Zhou	const unsigned int __size_data = ((data != NULL) ?  size : 0);
1271b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1272b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1273b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
1274b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1275b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1276b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1277b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1278b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glBufferData;memcpy(ptr, &tmp, 4); ptr += 4;
1279b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1280b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1281b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
1282b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
1283b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_data; ptr += 4;
1284268e85cdbb1122531013598b2638c25b839191eeYahan Zhou	if (data != NULL) memcpy(ptr, data, __size_data);ptr += __size_data;
1285b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &usage, 4); ptr += 4;
1286b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1287e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1288e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1289e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1290b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1291b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1292b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
1293b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1294b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1295b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1296b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1297b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1298e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1299b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1300268e85cdbb1122531013598b2638c25b839191eeYahan Zhou	const unsigned int __size_data = ((data != NULL) ?  size : 0);
1301b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1302b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1303b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 1*4;
1304b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1305b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1306b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1307b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1308b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
1309b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1310b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1311b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
1312b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &offset, 4); ptr += 4;
1313b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
1314b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_data; ptr += 4;
1315268e85cdbb1122531013598b2638c25b839191eeYahan Zhou	if (data != NULL) memcpy(ptr, data, __size_data);ptr += __size_data;
1316b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1317e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1318e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1319e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1320b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1321b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1322b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClear_enc(void *self , GLbitfield mask)
1323b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1324b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1325b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1326b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1327b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1328e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1329b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1330b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1331b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1332b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
1333b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1334b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1335b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1336b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1337b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClear;memcpy(ptr, &tmp, 4); ptr += 4;
1338b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1339b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1340b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &mask, 4); ptr += 4;
1341b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1342e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1343e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1344e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1345b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1346b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1347b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClearColorx_enc(void *self , GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
1348b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1349b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1350b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1351b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1352b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1353e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1354b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1355b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1356b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1357b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
1358b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1359b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1360b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1361b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1362b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClearColorx;memcpy(ptr, &tmp, 4); ptr += 4;
1363b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1364b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1365b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &red, 4); ptr += 4;
1366b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &green, 4); ptr += 4;
1367b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &blue, 4); ptr += 4;
1368b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &alpha, 4); ptr += 4;
1369b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1370e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1371e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1372e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1373b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1374b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1375b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClearDepthx_enc(void *self , GLclampx depth)
1376b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1377b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1378b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1379b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1380b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1381e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1382b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1383b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1384b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1385b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
1386b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1387b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1388b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1389b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1390b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClearDepthx;memcpy(ptr, &tmp, 4); ptr += 4;
1391b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1392b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1393b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &depth, 4); ptr += 4;
1394b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1395e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1396e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1397e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1398b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1399b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1400b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClearStencil_enc(void *self , GLint s)
1401b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1402b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1403b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1404b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1405b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1406e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1407b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1408b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1409b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1410b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
1411b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1412b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1413b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1414b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1415b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClearStencil;memcpy(ptr, &tmp, 4); ptr += 4;
1416b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1417b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1418b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &s, 4); ptr += 4;
1419b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1420e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1421e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1422e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1423b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1424b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1425b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClientActiveTexture_enc(void *self , GLenum texture)
1426b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1427b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1428b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1429b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1430b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1431e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1432b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1433b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1434b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1435b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
1436b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1437b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1438b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1439b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1440b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClientActiveTexture;memcpy(ptr, &tmp, 4); ptr += 4;
1441b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1442b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1443b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &texture, 4); ptr += 4;
1444b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1445e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1446e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1447e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1448b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1449b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1450b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glColor4ub_enc(void *self , GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
1451b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1452b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1453b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1454b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1455b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1456e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1457b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1458b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1459b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1460b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 1 + 1 + 1 + 1;
1461b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1462b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1463b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1464b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1465b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glColor4ub;memcpy(ptr, &tmp, 4); ptr += 4;
1466b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1467b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1468b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &red, 1); ptr += 1;
1469b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &green, 1); ptr += 1;
1470b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &blue, 1); ptr += 1;
1471b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &alpha, 1); ptr += 1;
1472b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1473e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1474e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1475e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1476b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1477b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1478b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glColor4x_enc(void *self , GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
1479b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1480b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1481b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1482b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1483b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1484e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1485b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1486b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1487b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1488b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
1489b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1490b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1491b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1492b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1493b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glColor4x;memcpy(ptr, &tmp, 4); ptr += 4;
1494b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1495b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1496b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &red, 4); ptr += 4;
1497b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &green, 4); ptr += 4;
1498b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &blue, 4); ptr += 4;
1499b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &alpha, 4); ptr += 4;
1500b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1501e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1502e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1503e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1504b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1505b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1506b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
1507b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1508b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1509b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1510b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1511b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1512e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1513b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1514b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1515b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1516b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 1 + 1 + 1 + 1;
1517b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1518b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1519b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1520b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1521b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glColorMask;memcpy(ptr, &tmp, 4); ptr += 4;
1522b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1523b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1524b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &red, 1); ptr += 1;
1525b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &green, 1); ptr += 1;
1526b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &blue, 1); ptr += 1;
1527b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &alpha, 1); ptr += 1;
1528b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1529e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1530e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1531e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1532b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1533b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1534b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
1535b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1536b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1537b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1538b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1539b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1540e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1541b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1542b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
1543b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1544b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1545b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
1546b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1547b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1548b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1549b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1550b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glCompressedTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
1551b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1552b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1553b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
1554b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &level, 4); ptr += 4;
1555b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &internalformat, 4); ptr += 4;
1556b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
1557b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
1558b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &border, 4); ptr += 4;
1559b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &imageSize, 4); ptr += 4;
1560b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_data; ptr += 4;
1561b85b2756d1e247f8314bb591700fb175d7346631keunyoung	if (data != NULL) memcpy(ptr, data, __size_data);ptr += __size_data;
1562b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1563e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1564e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1565e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1566b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1567b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1568b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
1569b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1570b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1571b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1572b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1573b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1574e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1575b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1576268e85cdbb1122531013598b2638c25b839191eeYahan Zhou	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
1577b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1578b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1579b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
1580b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1581b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1582b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1583b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1584b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glCompressedTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
1585b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1586b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1587b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
1588b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &level, 4); ptr += 4;
1589b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &xoffset, 4); ptr += 4;
1590b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &yoffset, 4); ptr += 4;
1591b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
1592b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
1593b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &format, 4); ptr += 4;
1594b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &imageSize, 4); ptr += 4;
1595b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_data; ptr += 4;
1596268e85cdbb1122531013598b2638c25b839191eeYahan Zhou	if (data != NULL) memcpy(ptr, data, __size_data);ptr += __size_data;
1597b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1598e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1599e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1600e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1601b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1602b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1603b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
1604b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1605b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1606b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1607b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1608b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1609e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1610b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1611b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1612b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1613b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
1614b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1615b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1616b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1617b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1618b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glCopyTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
1619b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1620b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1621b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
1622b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &level, 4); ptr += 4;
1623b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &internalformat, 4); ptr += 4;
1624b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
1625b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
1626b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
1627b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
1628b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &border, 4); ptr += 4;
1629b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1630e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1631e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1632e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1633b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1634b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1635b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
1636b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1637b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1638b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1639b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1640b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1641e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1642b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1643b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1644b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1645b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
1646b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1647b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1648b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1649b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1650b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glCopyTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
1651b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1652b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1653b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
1654b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &level, 4); ptr += 4;
1655b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &xoffset, 4); ptr += 4;
1656b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &yoffset, 4); ptr += 4;
1657b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
1658b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
1659b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
1660b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
1661b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1662e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1663e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1664e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1665b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1666b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1667b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glCullFace_enc(void *self , GLenum mode)
1668b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1669b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1670b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1671b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1672b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1673e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1674b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1675b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1676b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1677b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
1678b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1679b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1680b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1681b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1682b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glCullFace;memcpy(ptr, &tmp, 4); ptr += 4;
1683b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1684b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1685b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &mode, 4); ptr += 4;
1686b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1687e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1688e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1689e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1690b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1691b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1692b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers)
1693b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1694b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1695b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1696b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1697b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1698e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1699b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1700b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_buffers =  (n * sizeof(GLuint));
1701b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1702b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1703b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_buffers + 1*4;
1704b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1705b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1706b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1707b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1708b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDeleteBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
1709b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1710b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1711b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &n, 4); ptr += 4;
1712b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
1713b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, buffers, __size_buffers);ptr += __size_buffers;
1714b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1715e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1716e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1717e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1718b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1719b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1720b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures)
1721b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1722b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1723b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1724b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1725b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1726e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1727b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1728b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_textures =  (n * sizeof(GLuint));
1729b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1730b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1731b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_textures + 1*4;
1732b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1733b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1734b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1735b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1736b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDeleteTextures;memcpy(ptr, &tmp, 4); ptr += 4;
1737b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1738b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1739b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &n, 4); ptr += 4;
1740b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_textures; ptr += 4;
1741b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, textures, __size_textures);ptr += __size_textures;
1742b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1743e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1744e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1745e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1746b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1747b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1748b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDepthFunc_enc(void *self , GLenum func)
1749b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1750b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1751b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1752b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1753b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1754e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1755b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1756b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1757b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1758b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
1759b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1760b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1761b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1762b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1763b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDepthFunc;memcpy(ptr, &tmp, 4); ptr += 4;
1764b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1765b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1766b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &func, 4); ptr += 4;
1767b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1768e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1769e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1770e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1771b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1772b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1773b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDepthMask_enc(void *self , GLboolean flag)
1774b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1775b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1776b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1777b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1778b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1779e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1780b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1781b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1782b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1783b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 1;
1784b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1785b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1786b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1787b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1788b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDepthMask;memcpy(ptr, &tmp, 4); ptr += 4;
1789b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1790b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1791b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &flag, 1); ptr += 1;
1792b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1793e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1794e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1795e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1796b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1797b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1798b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDepthRangex_enc(void *self , GLclampx zNear, GLclampx zFar)
1799b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1800b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1801b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1802b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1803b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1804e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1805b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1806b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1807b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1808b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
1809b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1810b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1811b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1812b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1813b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDepthRangex;memcpy(ptr, &tmp, 4); ptr += 4;
1814b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1815b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1816b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zNear, 4); ptr += 4;
1817b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zFar, 4); ptr += 4;
1818b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1819e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1820e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1821e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1822b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1823b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1824b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDisable_enc(void *self , GLenum cap)
1825b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1826b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1827b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1828b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1829b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1830e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1831b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1832b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1833b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1834b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
1835b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1836b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1837b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1838b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1839b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDisable;memcpy(ptr, &tmp, 4); ptr += 4;
1840b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1841b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1842b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &cap, 4); ptr += 4;
1843b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1844e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1845e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1846e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1847b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1848b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1849b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDisableClientState_enc(void *self , GLenum array)
1850b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1851b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1852b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1853b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1854b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1855e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1856b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1857b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1858b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1859b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
1860b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1861b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1862b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1863b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1864b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDisableClientState;memcpy(ptr, &tmp, 4); ptr += 4;
1865b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1866b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1867b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &array, 4); ptr += 4;
1868b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1869e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1870e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1871e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1872b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1873b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1874b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count)
1875b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1876b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1877b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1878b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1879b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1880e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1881b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1882b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1883b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1884b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
1885b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1886b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1887b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1888b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1889b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDrawArrays;memcpy(ptr, &tmp, 4); ptr += 4;
1890b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1891b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1892b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &mode, 4); ptr += 4;
1893b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &first, 4); ptr += 4;
1894b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &count, 4); ptr += 4;
1895b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1896e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1897e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1898e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1899b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1900b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1901b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glEnable_enc(void *self , GLenum cap)
1902b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1903b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1904b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1905b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1906b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1907e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1908b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1909b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1910b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1911b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
1912b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1913b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1914b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1915b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1916b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glEnable;memcpy(ptr, &tmp, 4); ptr += 4;
1917b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1918b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1919b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &cap, 4); ptr += 4;
1920b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1921e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1922e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1923e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1924b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1925b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1926b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glEnableClientState_enc(void *self , GLenum array)
1927b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1928b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1929b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1930b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1931b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1932e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1933b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1934b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1935b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1936b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
1937b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1938b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1939b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1940b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1941b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glEnableClientState;memcpy(ptr, &tmp, 4); ptr += 4;
1942b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1943b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1944b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &array, 4); ptr += 4;
1945b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1946e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1947e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1948e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1949b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1950b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1951b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFinish_enc(void *self )
1952b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1953b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1954b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1955b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1956b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1957e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1958b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1959b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1960b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1961b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8;
1962b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1963b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1964b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1965b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1966b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFinish;memcpy(ptr, &tmp, 4); ptr += 4;
1967b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1968b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1969b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1970e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1971e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1972e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1973b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1974b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1975b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFlush_enc(void *self )
1976b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
1977b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1978b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
1979b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
1980b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
1981e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
1982b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1983b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
1984b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
1985b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8;
1986b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
1987b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
1988b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
1989b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
1990b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFlush;memcpy(ptr, &tmp, 4); ptr += 4;
1991b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
1992b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1993b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
1994e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
1995e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
1996e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
1997b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
1998b85b2756d1e247f8314bb591700fb175d7346631keunyoung
1999b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFogx_enc(void *self , GLenum pname, GLfixed param)
2000b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2001b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2002b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2003b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2004b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2005e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2006b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2007b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2008b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2009b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
2010b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2011b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2012b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2013b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2014b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFogx;memcpy(ptr, &tmp, 4); ptr += 4;
2015b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2016b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2017b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2018b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
2019b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2020e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2021e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2022e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2023b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2024b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2025b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFogxv_enc(void *self , GLenum pname, const GLfixed* params)
2026b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2027b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2028b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2029b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2030b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2031e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2032b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2033b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
2034b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2035b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2036b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
2037b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2038b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2039b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2040b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2041b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFogxv;memcpy(ptr, &tmp, 4); ptr += 4;
2042b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2043b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2044b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2045b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2046b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
2047b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2048e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2049e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2050e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2051b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2052b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2053b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFrontFace_enc(void *self , GLenum mode)
2054b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2055b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2056b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2057b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2058b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2059e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2060b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2061b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2062b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2063b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
2064b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2065b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2066b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2067b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2068b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFrontFace;memcpy(ptr, &tmp, 4); ptr += 4;
2069b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2070b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2071b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &mode, 4); ptr += 4;
2072b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2073e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2074e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2075e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2076b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2077b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2078b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFrustumx_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
2079b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2080b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2081b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2082b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2083b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2084e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2085b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2086b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2087b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2088b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
2089b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2090b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2091b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2092b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2093b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFrustumx;memcpy(ptr, &tmp, 4); ptr += 4;
2094b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2095b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2096b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &left, 4); ptr += 4;
2097b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &right, 4); ptr += 4;
2098b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &bottom, 4); ptr += 4;
2099b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &top, 4); ptr += 4;
2100b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zNear, 4); ptr += 4;
2101b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zFar, 4); ptr += 4;
2102b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2103e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2104e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2105e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2106b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2107b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2108b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params)
2109b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2110b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2111b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2112b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2113b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2114e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2115b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2116b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLboolean));
2117b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2118b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
21191d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
2120b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2121b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2122b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2123b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2124b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetBooleanv;memcpy(ptr, &tmp, 4); ptr += 4;
2125b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2126b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2127b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2128b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2129b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2130e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2131e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2132e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2133b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
2134e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2135e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2136a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
21371d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2138a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2139a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2140a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2141e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetBooleanv: GL communication error, please report this issue to b.android.com.\n");
2142e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2143e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2144e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2145b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2146b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2147b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
2148b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2149b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2150b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2151b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2152b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2153e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2154b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2155b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (sizeof(GLint));
2156b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2157b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
21581d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2159b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2160b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2161b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2162b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2163b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetBufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2164b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2165b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2166b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
2167b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2168b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2169b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2170e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2171e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2172e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2173b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
2174e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2175e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2176a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
21771d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2178a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2179a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2180a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2181e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetBufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
2182e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2183e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2184e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2185b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2186b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2187b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClipPlanex_enc(void *self , GLenum pname, const GLfixed* eqn)
2188b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2189b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2190b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2191b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2192b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2193e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2194b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2195b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_eqn =  (4 * sizeof(GLfixed));
2196b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2197b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2198b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_eqn + 1*4;
2199b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2200b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2201b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2202b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2203b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClipPlanex;memcpy(ptr, &tmp, 4); ptr += 4;
2204b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2205b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2206b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2207b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
2208b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, eqn, __size_eqn);ptr += __size_eqn;
2209b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2210e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2211e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2212e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2213b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2214b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2215b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers)
2216b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2217b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2218b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2219b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2220b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2221e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2222b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2223b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_buffers =  (n * sizeof(GLuint));
2224b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2225b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
22261d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
2227b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2228b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2229b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2230b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2231b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGenBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
2232b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2233b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2234b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &n, 4); ptr += 4;
2235b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
2236b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2237e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2238e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2239e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2240b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(buffers, __size_buffers);
2241e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buffers, __size_buffers);
2242e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2243a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
22441d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2245a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2246a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2247a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2248e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGenBuffers: GL communication error, please report this issue to b.android.com.\n");
2249e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2250e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2251e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2252b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2253b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2254b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGenTextures_enc(void *self , GLsizei n, GLuint* textures)
2255b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2256b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2257b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2258b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2259b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2260e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2261b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2262b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_textures =  (n * sizeof(GLuint));
2263b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2264b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
22651d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
2266b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2267b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2268b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2269b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2270b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGenTextures;memcpy(ptr, &tmp, 4); ptr += 4;
2271b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2272b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2273b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &n, 4); ptr += 4;
2274b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_textures; ptr += 4;
2275b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2276e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2277e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2278e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2279b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(textures, __size_textures);
2280e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(textures, __size_textures);
2281e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2282a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
22831d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2284a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2285a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2286a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2287e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGenTextures: GL communication error, please report this issue to b.android.com.\n");
2288e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2289e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2290e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2291b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2292b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2293b85b2756d1e247f8314bb591700fb175d7346631keunyoungGLenum glGetError_enc(void *self )
2294b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2295b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2296b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2297b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2298b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2299e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2300b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2301b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2302b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2303b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8;
2304b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2305b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2306b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2307b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2308b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetError;memcpy(ptr, &tmp, 4); ptr += 4;
2309b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2310b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2311b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2312e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2313e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2314e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2315b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2316b85b2756d1e247f8314bb591700fb175d7346631keunyoung	GLenum retval;
2317b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(&retval, 4);
2318e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
2319e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2320a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
23211d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2322a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2323a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2324a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2325e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetError: GL communication error, please report this issue to b.android.com.\n");
2326e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2327e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2328e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2329b85b2756d1e247f8314bb591700fb175d7346631keunyoung	return retval;
2330b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2331b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2332b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetFixedv_enc(void *self , GLenum pname, GLfixed* params)
2333b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2334b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2335b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2336b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2337b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2338e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2339b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2340b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
2341b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2342b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
23431d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
2344b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2345b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2346b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2347b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2348b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetFixedv;memcpy(ptr, &tmp, 4); ptr += 4;
2349b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2350b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2351b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2352b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2353b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2354e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2355e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2356e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2357b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
2358e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2359e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2360a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
23611d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2362a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2363a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2364a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2365e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetFixedv: GL communication error, please report this issue to b.android.com.\n");
2366e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2367e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2368e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2369b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2370b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2371b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetIntegerv_enc(void *self , GLenum pname, GLint* params)
2372b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2373b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2374b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2375b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2376b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2377e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2378b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2379b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
2380b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2381b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
23821d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
2383b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2384b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2385b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2386b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2387b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetIntegerv;memcpy(ptr, &tmp, 4); ptr += 4;
2388b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2389b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2390b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2391b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2392b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2393e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2394e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2395e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2396b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
2397e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2398e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2399a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
24001d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2401a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2402a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2403a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2404e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetIntegerv: GL communication error, please report this issue to b.android.com.\n");
2405e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2406e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2407e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2408b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2409b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2410b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetLightxv_enc(void *self , GLenum light, GLenum pname, GLfixed* params)
2411b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2412b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2413b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2414b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2415b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2416e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2417b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2418b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
2419b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2420b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
24211d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2422b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2423b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2424b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2425b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2426b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetLightxv;memcpy(ptr, &tmp, 4); ptr += 4;
2427b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2428b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2429b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &light, 4); ptr += 4;
2430b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2431b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2432b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2433e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2434e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2435e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2436b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
2437e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2438e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2439a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
24401d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2441a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2442a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2443a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2444e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetLightxv: GL communication error, please report this issue to b.android.com.\n");
2445e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2446e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2447e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2448b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2449b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2450b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetMaterialxv_enc(void *self , GLenum face, GLenum pname, GLfixed* params)
2451b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2452b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2453b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2454b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2455b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2456e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2457b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2458b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
2459b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2460b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
24611d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2462b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2463b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2464b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2465b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2466b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetMaterialxv;memcpy(ptr, &tmp, 4); ptr += 4;
2467b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2468b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2469b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &face, 4); ptr += 4;
2470b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2471b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2472b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2473e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2474e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2475e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2476b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
2477e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2478e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2479a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
24801d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2481a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2482a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2483a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2484e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetMaterialxv: GL communication error, please report this issue to b.android.com.\n");
2485e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2486e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2487e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2488b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2489b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2490b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetTexEnviv_enc(void *self , GLenum env, GLenum pname, GLint* params)
2491b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2492b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2493b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2494b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2495b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2496e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2497b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2498b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
2499b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2500b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
25011d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2502b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2503b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2504b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2505b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2506b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetTexEnviv;memcpy(ptr, &tmp, 4); ptr += 4;
2507b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2508b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2509b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &env, 4); ptr += 4;
2510b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2511b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2512b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2513e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2514e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2515e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2516b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
2517e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2518e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2519a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
25201d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2521a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2522a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2523a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2524e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetTexEnviv: GL communication error, please report this issue to b.android.com.\n");
2525e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2526e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2527e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2528b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2529b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2530b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetTexEnvxv_enc(void *self , GLenum env, GLenum pname, GLfixed* params)
2531b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2532b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2533b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2534b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2535b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2536e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2537b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2538b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
2539b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2540b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
25411d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2542b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2543b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2544b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2545b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2546b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetTexEnvxv;memcpy(ptr, &tmp, 4); ptr += 4;
2547b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2548b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2549b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &env, 4); ptr += 4;
2550b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2551b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2552b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2553e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2554e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2555e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2556b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
2557e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2558e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2559a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
25601d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2561a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2562a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2563a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2564e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetTexEnvxv: GL communication error, please report this issue to b.android.com.\n");
2565e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2566e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2567e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2568b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2569b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2570b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
2571b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2572b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2573b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2574b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2575b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2576e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2577b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2578b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (sizeof(GLint));
2579b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2580b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
25811d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2582b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2583b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2584b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2585b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2586b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
2587b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2588b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2589b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
2590b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2591b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2592b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2593e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2594e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2595e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2596b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
2597e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2598e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2599a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
26001d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2601a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2602a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2603a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2604e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetTexParameteriv: GL communication error, please report this issue to b.android.com.\n");
2605e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2606e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2607e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2608b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2609b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2610b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetTexParameterxv_enc(void *self , GLenum target, GLenum pname, GLfixed* params)
2611b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2612b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2613b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2614b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2615b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2616e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2617b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2618b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (sizeof(GLfixed));
2619b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2620b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
26211d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
2622b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2623b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2624b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2625b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2626b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetTexParameterxv;memcpy(ptr, &tmp, 4); ptr += 4;
2627b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2628b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2629b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
2630b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2631b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2632b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2633e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2634e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2635e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2636b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
2637e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
2638e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2639a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
26401d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2641a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2642a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2643a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2644e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetTexParameterxv: GL communication error, please report this issue to b.android.com.\n");
2645e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2646e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2647e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2648b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2649b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2650b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glHint_enc(void *self , GLenum target, GLenum mode)
2651b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2652b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2653b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2654b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2655b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2656e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2657b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2658b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2659b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2660b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
2661b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2662b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2663b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2664b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2665b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glHint;memcpy(ptr, &tmp, 4); ptr += 4;
2666b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2667b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2668b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
2669b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &mode, 4); ptr += 4;
2670b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2671e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2672e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2673e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2674b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2675b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2676b85b2756d1e247f8314bb591700fb175d7346631keunyoungGLboolean glIsBuffer_enc(void *self , GLuint buffer)
2677b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2678b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2679b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2680b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2681b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2682e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2683b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2684b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2685b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2686b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
2687b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2688b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2689b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2690b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2691b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glIsBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
2692b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2693b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2694b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &buffer, 4); ptr += 4;
2695b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2696e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2697e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2698e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2699b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2700b85b2756d1e247f8314bb591700fb175d7346631keunyoung	GLboolean retval;
2701b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(&retval, 1);
2702e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2703e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2704a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
27051d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2706a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2707a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2708a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2709e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glIsBuffer: GL communication error, please report this issue to b.android.com.\n");
2710e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2711e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2712e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2713b85b2756d1e247f8314bb591700fb175d7346631keunyoung	return retval;
2714b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2715b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2716b85b2756d1e247f8314bb591700fb175d7346631keunyoungGLboolean glIsEnabled_enc(void *self , GLenum cap)
2717b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2718b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2719b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2720b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2721b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2722e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2723b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2724b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2725b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2726b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
2727b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2728b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2729b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2730b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2731b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glIsEnabled;memcpy(ptr, &tmp, 4); ptr += 4;
2732b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2733b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2734b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &cap, 4); ptr += 4;
2735b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2736e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2737e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2738e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2739b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2740b85b2756d1e247f8314bb591700fb175d7346631keunyoung	GLboolean retval;
2741b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(&retval, 1);
2742e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2743e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2744a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
27451d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2746a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2747a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2748a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2749e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glIsEnabled: GL communication error, please report this issue to b.android.com.\n");
2750e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2751e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2752e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2753b85b2756d1e247f8314bb591700fb175d7346631keunyoung	return retval;
2754b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2755b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2756b85b2756d1e247f8314bb591700fb175d7346631keunyoungGLboolean glIsTexture_enc(void *self , GLuint texture)
2757b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2758b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2759b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2760b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2761b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2762e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2763b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2764b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2765b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2766b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
2767b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2768b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2769b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2770b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2771b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glIsTexture;memcpy(ptr, &tmp, 4); ptr += 4;
2772b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2773b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2774b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &texture, 4); ptr += 4;
2775b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2776e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2777e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2778e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2779b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2780b85b2756d1e247f8314bb591700fb175d7346631keunyoung	GLboolean retval;
2781b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(&retval, 1);
2782e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
2783e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
2784a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
27851d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
2786a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
2787a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
2788a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
2789e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glIsTexture: GL communication error, please report this issue to b.android.com.\n");
2790e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
2791e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
2792e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
2793b85b2756d1e247f8314bb591700fb175d7346631keunyoung	return retval;
2794b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2795b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2796b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLightModelx_enc(void *self , GLenum pname, GLfixed param)
2797b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2798b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2799b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2800b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2801b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2802e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2803b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2804b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2805b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2806b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
2807b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2808b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2809b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2810b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2811b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLightModelx;memcpy(ptr, &tmp, 4); ptr += 4;
2812b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2813b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2814b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2815b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
2816b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2817e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2818e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2819e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2820b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2821b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2822b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLightModelxv_enc(void *self , GLenum pname, const GLfixed* params)
2823b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2824b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2825b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2826b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2827b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2828e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2829b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2830b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
2831b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2832b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2833b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
2834b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2835b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2836b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2837b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2838b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLightModelxv;memcpy(ptr, &tmp, 4); ptr += 4;
2839b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2840b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2841b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2842b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2843b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
2844b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2845e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2846e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2847e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2848b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2849b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2850b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLightx_enc(void *self , GLenum light, GLenum pname, GLfixed param)
2851b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2852b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2853b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2854b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2855b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2856e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2857b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2858b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2859b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2860b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
2861b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2862b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2863b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2864b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2865b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLightx;memcpy(ptr, &tmp, 4); ptr += 4;
2866b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2867b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2868b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &light, 4); ptr += 4;
2869b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2870b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
2871b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2872e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2873e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2874e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2875b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2876b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2877b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLightxv_enc(void *self , GLenum light, GLenum pname, const GLfixed* params)
2878b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2879b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2880b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2881b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2882b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2883e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2884b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2885b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
2886b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2887b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2888b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
2889b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2890b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2891b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2892b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2893b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLightxv;memcpy(ptr, &tmp, 4); ptr += 4;
2894b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2895b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2896b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &light, 4); ptr += 4;
2897b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
2898b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
2899b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
2900b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2901e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2902e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2903e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2904b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2905b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2906b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLineWidthx_enc(void *self , GLfixed width)
2907b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2908b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2909b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2910b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2911b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2912e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2913b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2914b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2915b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2916b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
2917b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2918b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2919b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2920b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2921b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLineWidthx;memcpy(ptr, &tmp, 4); ptr += 4;
2922b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2923b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2924b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
2925b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2926e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2927e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2928e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2929b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2930b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2931b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLoadIdentity_enc(void *self )
2932b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2933b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2934b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2935b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2936b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2937e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2938b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2939b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2940b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2941b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8;
2942b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2943b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2944b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2945b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2946b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLoadIdentity;memcpy(ptr, &tmp, 4); ptr += 4;
2947b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2948b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2949b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2950e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2951e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2952e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2953b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2954b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2955b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLoadMatrixx_enc(void *self , const GLfixed* m)
2956b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2957b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2958b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2959b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2960b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2961e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2962b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2963b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_m =  (16 * sizeof(GLfixed));
2964b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2965b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2966b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + __size_m + 1*4;
2967b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2968b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2969b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2970b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2971b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLoadMatrixx;memcpy(ptr, &tmp, 4); ptr += 4;
2972b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2973b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2974b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_m; ptr += 4;
2975b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, m, __size_m);ptr += __size_m;
2976b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
2977e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
2978e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
2979e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
2980b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
2981b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2982b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLogicOp_enc(void *self , GLenum opcode)
2983b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
2984b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2985b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
2986b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
2987b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
2988e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
2989b85b2756d1e247f8314bb591700fb175d7346631keunyoung
2990b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
2991b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
2992b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
2993b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
2994b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
2995b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
2996b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
2997b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLogicOp;memcpy(ptr, &tmp, 4); ptr += 4;
2998b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
2999b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3000b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &opcode, 4); ptr += 4;
3001b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3002e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3003e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3004e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3005b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3006b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3007b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMaterialx_enc(void *self , GLenum face, GLenum pname, GLfixed param)
3008b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3009b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3010b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3011b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3012b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3013e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3014b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3015b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3016b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3017b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3018b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3019b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3020b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3021b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3022b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMaterialx;memcpy(ptr, &tmp, 4); ptr += 4;
3023b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3024b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3025b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &face, 4); ptr += 4;
3026b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
3027b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
3028b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3029e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3030e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3031e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3032b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3033b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3034b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMaterialxv_enc(void *self , GLenum face, GLenum pname, const GLfixed* params)
3035b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3036b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3037b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3038b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3039b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3040e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3041b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3042b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
3043b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3044b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3045b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
3046b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3047b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3048b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3049b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3050b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMaterialxv;memcpy(ptr, &tmp, 4); ptr += 4;
3051b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3052b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3053b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &face, 4); ptr += 4;
3054b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
3055b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
3056b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
3057b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3058e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3059e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3060e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3061b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3062b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3063b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMatrixMode_enc(void *self , GLenum mode)
3064b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3065b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3066b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3067b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3068b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3069e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3070b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3071b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3072b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3073b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
3074b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3075b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3076b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3077b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3078b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMatrixMode;memcpy(ptr, &tmp, 4); ptr += 4;
3079b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3080b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3081b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &mode, 4); ptr += 4;
3082b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3083e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3084e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3085e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3086b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3087b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3088b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMultMatrixx_enc(void *self , const GLfixed* m)
3089b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3090b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3091b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3092b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3093b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3094e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3095b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3096b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_m =  (16 * sizeof(GLfixed));
3097b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3098b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3099b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + __size_m + 1*4;
3100b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3101b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3102b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3103b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3104b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMultMatrixx;memcpy(ptr, &tmp, 4); ptr += 4;
3105b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3106b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3107b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_m; ptr += 4;
3108b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, m, __size_m);ptr += __size_m;
3109b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3110e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3111e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3112e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3113b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3114b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3115b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMultiTexCoord4x_enc(void *self , GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
3116b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3117b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3118b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3119b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3120b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3121e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3122b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3123b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3124b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3125b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
3126b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3127b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3128b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3129b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3130b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMultiTexCoord4x;memcpy(ptr, &tmp, 4); ptr += 4;
3131b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3132b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3133b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
3134b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &s, 4); ptr += 4;
3135b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &t, 4); ptr += 4;
3136b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &r, 4); ptr += 4;
3137b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &q, 4); ptr += 4;
3138b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3139e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3140e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3141e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3142b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3143b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3144b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glNormal3x_enc(void *self , GLfixed nx, GLfixed ny, GLfixed nz)
3145b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3146b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3147b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3148b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3149b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3150e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3151b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3152b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3153b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3154b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3155b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3156b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3157b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3158b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3159b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glNormal3x;memcpy(ptr, &tmp, 4); ptr += 4;
3160b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3161b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3162b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &nx, 4); ptr += 4;
3163b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &ny, 4); ptr += 4;
3164b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &nz, 4); ptr += 4;
3165b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3166e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3167e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3168e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3169b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3170b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3171b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glOrthox_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
3172b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3173b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3174b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3175b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3176b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3177e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3178b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3179b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3180b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3181b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
3182b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3183b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3184b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3185b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3186b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glOrthox;memcpy(ptr, &tmp, 4); ptr += 4;
3187b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3188b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3189b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &left, 4); ptr += 4;
3190b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &right, 4); ptr += 4;
3191b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &bottom, 4); ptr += 4;
3192b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &top, 4); ptr += 4;
3193b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zNear, 4); ptr += 4;
3194b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zFar, 4); ptr += 4;
3195b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3196e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3197e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3198e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3199b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3200b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3201b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPixelStorei_enc(void *self , GLenum pname, GLint param)
3202b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3203b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3204b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3205b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3206b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3207e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3208b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3209b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3210b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3211b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3212b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3213b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3214b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3215b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3216b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPixelStorei;memcpy(ptr, &tmp, 4); ptr += 4;
3217b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3218b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3219b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
3220b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
3221b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3222e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3223e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3224e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3225b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3226b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3227b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPointParameterx_enc(void *self , GLenum pname, GLfixed param)
3228b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3229b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3230b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3231b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3232b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3233e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3234b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3235b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3236b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3237b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3238b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3239b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3240b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3241b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3242b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPointParameterx;memcpy(ptr, &tmp, 4); ptr += 4;
3243b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3244b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3245b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
3246b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
3247b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3248e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3249e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3250e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3251b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3252b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3253b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPointParameterxv_enc(void *self , GLenum pname, const GLfixed* params)
3254b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3255b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3256b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3257b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3258b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3259e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3260b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3261b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
3262b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3263b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3264b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
3265b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3266b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3267b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3268b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3269b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPointParameterxv;memcpy(ptr, &tmp, 4); ptr += 4;
3270b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3271b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3272b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
3273b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
3274b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
3275b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3276e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3277e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3278e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3279b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3280b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3281b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPointSizex_enc(void *self , GLfixed size)
3282b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3283b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3284b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3285b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3286b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3287e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3288b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3289b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3290b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3291b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
3292b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3293b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3294b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3295b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3296b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPointSizex;memcpy(ptr, &tmp, 4); ptr += 4;
3297b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3298b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3299b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
3300b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3301e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3302e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3303e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3304b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3305b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3306b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPolygonOffsetx_enc(void *self , GLfixed factor, GLfixed units)
3307b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3308b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3309b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3310b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3311b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3312e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3313b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3314b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3315b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3316b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
3317b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3318b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3319b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3320b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3321b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPolygonOffsetx;memcpy(ptr, &tmp, 4); ptr += 4;
3322b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3323b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3324b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &factor, 4); ptr += 4;
3325b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &units, 4); ptr += 4;
3326b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3327e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3328e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3329e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3330b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3331b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3332b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPopMatrix_enc(void *self )
3333b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3334b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3335b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3336b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3337b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3338e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3339b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3340b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3341b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3342b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8;
3343b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3344b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3345b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3346b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3347b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPopMatrix;memcpy(ptr, &tmp, 4); ptr += 4;
3348b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3349b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3350b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3351e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3352e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3353e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3354b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3355b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3356b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPushMatrix_enc(void *self )
3357b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3358b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3359b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3360b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3361b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3362e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3363b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3364b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3365b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3366b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8;
3367b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3368b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3369b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3370b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3371b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPushMatrix;memcpy(ptr, &tmp, 4); ptr += 4;
3372b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3373b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3374b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3375e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3376e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3377e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3378b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3379b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3380b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
3381b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3382b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3383b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3384b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3385b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3386e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3387b85b2756d1e247f8314bb591700fb175d7346631keunyoung
33880f788d82239c1a9a1922bd8fc140464058cc52e7David 'Digit' Turner	const unsigned int __size_pixels =  glesv1_enc::pixelDataSize(self, width, height, format, type, 1);
3389b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3390b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
33911d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 0 + 1*4;
3392b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3393b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3394b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3395b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3396b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glReadPixels;memcpy(ptr, &tmp, 4); ptr += 4;
3397b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3398b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3399b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
3400b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
3401b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
3402b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
3403b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &format, 4); ptr += 4;
3404b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
3405b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_pixels; ptr += 4;
3406b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3407e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3408e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3409e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3410b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(pixels, __size_pixels);
3411e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3412e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
3413a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
34141d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
3415a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
3416a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
3417a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
3418e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glReadPixels: GL communication error, please report this issue to b.android.com.\n");
3419e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
3420e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
3421e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
3422b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3423b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3424b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glRotatex_enc(void *self , GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
3425b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3426b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3427b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3428b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3429b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3430e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3431b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3432b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3433b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3434b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3435b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3436b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3437b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3438b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3439b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glRotatex;memcpy(ptr, &tmp, 4); ptr += 4;
3440b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3441b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3442b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &angle, 4); ptr += 4;
3443b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
3444b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
3445b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &z, 4); ptr += 4;
3446b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3447e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3448e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3449e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3450b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3451b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3452b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert)
3453b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3454b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3455b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3456b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3457b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3458e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3459b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3460b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3461b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3462b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 1;
3463b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3464b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3465b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3466b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3467b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glSampleCoverage;memcpy(ptr, &tmp, 4); ptr += 4;
3468b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3469b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3470b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &value, 4); ptr += 4;
3471b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &invert, 1); ptr += 1;
3472b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3473e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3474e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3475e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3476b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3477b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3478b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glSampleCoveragex_enc(void *self , GLclampx value, GLboolean invert)
3479b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3480b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3481b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3482b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3483b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3484e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3485b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3486b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3487b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3488b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 1;
3489b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3490b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3491b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3492b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3493b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glSampleCoveragex;memcpy(ptr, &tmp, 4); ptr += 4;
3494b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3495b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3496b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &value, 4); ptr += 4;
3497b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &invert, 1); ptr += 1;
3498b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3499e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3500e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3501e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3502b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3503b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3504b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glScalex_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
3505b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3506b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3507b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3508b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3509b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3510e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3511b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3512b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3513b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3514b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3515b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3516b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3517b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3518b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3519b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glScalex;memcpy(ptr, &tmp, 4); ptr += 4;
3520b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3521b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3522b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
3523b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
3524b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &z, 4); ptr += 4;
3525b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3526e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3527e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3528e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3529b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3530b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3531b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
3532b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3533b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3534b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3535b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3536b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3537e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3538b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3539b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3540b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3541b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
3542b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3543b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3544b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3545b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3546b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glScissor;memcpy(ptr, &tmp, 4); ptr += 4;
3547b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3548b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3549b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
3550b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
3551b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
3552b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
3553b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3554e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3555e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3556e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3557b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3558b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3559b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glShadeModel_enc(void *self , GLenum mode)
3560b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3561b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3562b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3563b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3564b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3565e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3566b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3567b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3568b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3569b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
3570b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3571b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3572b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3573b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3574b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glShadeModel;memcpy(ptr, &tmp, 4); ptr += 4;
3575b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3576b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3577b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &mode, 4); ptr += 4;
3578b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3579e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3580e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3581e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3582b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3583b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3584b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask)
3585b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3586b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3587b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3588b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3589b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3590e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3591b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3592b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3593b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3594b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3595b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3596b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3597b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3598b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3599b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glStencilFunc;memcpy(ptr, &tmp, 4); ptr += 4;
3600b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3601b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3602b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &func, 4); ptr += 4;
3603b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &ref, 4); ptr += 4;
3604b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &mask, 4); ptr += 4;
3605b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3606e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3607e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3608e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3609b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3610b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3611b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glStencilMask_enc(void *self , GLuint mask)
3612b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3613b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3614b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3615b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3616b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3617e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3618b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3619b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3620b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3621b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
3622b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3623b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3624b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3625b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3626b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glStencilMask;memcpy(ptr, &tmp, 4); ptr += 4;
3627b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3628b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3629b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &mask, 4); ptr += 4;
3630b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3631e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3632e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3633e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3634b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3635b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3636b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass)
3637b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3638b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3639b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3640b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3641b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3642e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3643b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3644b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3645b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3646b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3647b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3648b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3649b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3650b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3651b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glStencilOp;memcpy(ptr, &tmp, 4); ptr += 4;
3652b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3653b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3654b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &fail, 4); ptr += 4;
3655b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zfail, 4); ptr += 4;
3656b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zpass, 4); ptr += 4;
3657b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3658e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3659e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3660e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3661b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3662b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3663b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexEnvi_enc(void *self , GLenum target, GLenum pname, GLint param)
3664b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3665b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3666b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3667b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3668b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3669e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3670b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3671b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3672b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3673b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3674b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3675b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3676b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3677b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3678b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexEnvi;memcpy(ptr, &tmp, 4); ptr += 4;
3679b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3680b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3681b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
3682b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
3683b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
3684b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3685e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3686e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3687e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3688b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3689b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3690b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexEnvx_enc(void *self , GLenum target, GLenum pname, GLfixed param)
3691b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3692b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3693b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3694b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3695b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3696e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3697b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3698b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3699b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3700b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3701b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3702b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3703b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3704b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3705b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexEnvx;memcpy(ptr, &tmp, 4); ptr += 4;
3706b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3707b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3708b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
3709b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
3710b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
3711b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3712e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3713e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3714e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3715b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3716b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3717b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexEnviv_enc(void *self , GLenum target, GLenum pname, const GLint* params)
3718b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3719b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3720b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3721b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3722b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3723e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3724b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3725b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
3726b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3727b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3728b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
3729b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3730b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3731b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3732b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3733b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexEnviv;memcpy(ptr, &tmp, 4); ptr += 4;
3734b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3735b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3736b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
3737b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
3738b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
3739b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
3740b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3741e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3742e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3743e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3744b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3745b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3746b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexEnvxv_enc(void *self , GLenum target, GLenum pname, const GLfixed* params)
3747b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3748b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3749b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3750b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3751b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3752e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3753b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3754b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
3755b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3756b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3757b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
3758b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3759b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3760b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3761b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3762b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexEnvxv;memcpy(ptr, &tmp, 4); ptr += 4;
3763b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3764b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3765b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
3766b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
3767b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
3768b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
3769b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3770e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3771e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3772e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3773b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3774b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3775b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
3776b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3777b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3778b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3779b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3780b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3781e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3782b85b2756d1e247f8314bb591700fb175d7346631keunyoung
37830f788d82239c1a9a1922bd8fc140464058cc52e7David 'Digit' Turner	const unsigned int __size_pixels = ((pixels != NULL) ?  glesv1_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
3784b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3785b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3786b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
3787b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3788b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3789b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3790b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3791b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
3792b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3793b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3794b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
3795b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &level, 4); ptr += 4;
3796b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &internalformat, 4); ptr += 4;
3797b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
3798b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
3799b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &border, 4); ptr += 4;
3800b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &format, 4); ptr += 4;
3801b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
3802b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3803e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3804b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->flush();
3805b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->writeFully(&__size_pixels,4);
3806e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
3807b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	if (pixels != NULL) {
3808b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou		stream->writeFully(pixels, __size_pixels);
3809e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3810b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	}
3811b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(checksumSize);
3812e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
3813e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3814b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3815b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3816b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
3817b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3818b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3819b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3820b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3821b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3822e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3823b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3824b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3825b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3826b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3827b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3828b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3829b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3830b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3831b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
3832b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3833b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3834b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
3835b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
3836b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
3837b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3838e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3839e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3840e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3841b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3842b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3843b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexParameterx_enc(void *self , GLenum target, GLenum pname, GLfixed param)
3844b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3845b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3846b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3847b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3848b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3849e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3850b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3851b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3852b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3853b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3854b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3855b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3856b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3857b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3858b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexParameterx;memcpy(ptr, &tmp, 4); ptr += 4;
3859b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3860b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3861b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
3862b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
3863b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
3864b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3865e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3866e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3867e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3868b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3869b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3870b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* params)
3871b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3872b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3873b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3874b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3875b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3876e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3877b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3878b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
3879b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3880b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3881b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
3882b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3883b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3884b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3885b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3886b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
3887b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3888b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3889b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
3890b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
3891b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
3892b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
3893b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3894e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3895e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3896e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3897b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3898b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3899b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexParameterxv_enc(void *self , GLenum target, GLenum pname, const GLfixed* params)
3900b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3901b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3902b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3903b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3904b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3905e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3906b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3907b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
3908b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3909b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3910b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
3911b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3912b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3913b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3914b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3915b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexParameterxv;memcpy(ptr, &tmp, 4); ptr += 4;
3916b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3917b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3918b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
3919b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
3920b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
3921b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
3922b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3923e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3924e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3925e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3926b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3927b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3928b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
3929b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3930b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3931b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3932b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3933b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3934e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3935b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3936268e85cdbb1122531013598b2638c25b839191eeYahan Zhou	const unsigned int __size_pixels = ((pixels != NULL) ?  glesv1_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
3937b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3938b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3939b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
3940b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3941b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3942b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
3943b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3944b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
3945b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3946b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3947b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
3948b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &level, 4); ptr += 4;
3949b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &xoffset, 4); ptr += 4;
3950b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &yoffset, 4); ptr += 4;
3951b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
3952b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
3953b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &format, 4); ptr += 4;
3954b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
3955b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3956e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3957b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->flush();
3958b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->writeFully(&__size_pixels,4);
3959e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
3960b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	if (pixels != NULL) {
3961b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou		stream->writeFully(pixels, __size_pixels);
3962e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
3963b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	}
3964b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(checksumSize);
3965e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
3966e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3967b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3968b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3969b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTranslatex_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
3970b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3971b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3972b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
3973b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
3974b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
3975e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
3976b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3977b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
3978b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
3979b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
3980b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
3981b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
3982b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
3983b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
3984b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTranslatex;memcpy(ptr, &tmp, 4); ptr += 4;
3985b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
3986b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3987b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
3988b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
3989b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &z, 4); ptr += 4;
3990b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
3991e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
3992e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
3993e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
3994b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
3995b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3996b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
3997b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
3998b85b2756d1e247f8314bb591700fb175d7346631keunyoung
3999b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4000b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4001b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4002e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4003b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4004b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4005b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4006b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4007b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4008b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4009b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4010b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4011b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glViewport;memcpy(ptr, &tmp, 4); ptr += 4;
4012b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4013b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4014b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
4015b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
4016b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
4017b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
4018b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4019e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4020e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4021e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4022b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4023b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4024b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glVertexPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
4025b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4026b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4027b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4028b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4029b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4030e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4031b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4032b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4033b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4034b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4035b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4036b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4037b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4038b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4039b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glVertexPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
4040b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4041b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4042b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
4043b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4044b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &stride, 4); ptr += 4;
4045b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &offset, 4); ptr += 4;
4046b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4047e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4048e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4049e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4050b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4051b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4052b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glColorPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
4053b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4054b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4055b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4056b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4057b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4058e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4059b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4060b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4061b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4062b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4063b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4064b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4065b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4066b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4067b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glColorPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
4068b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4069b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4070b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
4071b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4072b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &stride, 4); ptr += 4;
4073b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &offset, 4); ptr += 4;
4074b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4075e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4076e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4077e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4078b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4079b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4080b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glNormalPointerOffset_enc(void *self , GLenum type, GLsizei stride, GLuint offset)
4081b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4082b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4083b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4084b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4085b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4086e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4087b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4088b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4089b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4090b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
4091b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4092b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4093b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4094b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4095b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glNormalPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
4096b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4097b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4098b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4099b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &stride, 4); ptr += 4;
4100b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &offset, 4); ptr += 4;
4101b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4102e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4103e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4104e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4105b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4106b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4107b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPointSizePointerOffset_enc(void *self , GLenum type, GLsizei stride, GLuint offset)
4108b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4109b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4110b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4111b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4112b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4113e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4114b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4115b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4116b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4117b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
4118b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4119b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4120b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4121b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4122b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPointSizePointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
4123b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4124b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4125b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4126b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &stride, 4); ptr += 4;
4127b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &offset, 4); ptr += 4;
4128b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4129e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4130e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4131e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4132b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4133b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4134b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexCoordPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
4135b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4136b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4137b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4138b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4139b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4140e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4141b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4142b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4143b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4144b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4145b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4146b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4147b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4148b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4149b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexCoordPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
4150b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4151b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4152b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
4153b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4154b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &stride, 4); ptr += 4;
4155b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &offset, 4); ptr += 4;
4156b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4157e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4158e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4159e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4160b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4161b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4162b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glWeightPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
4163b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4164b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4165b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4166b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4167b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4168e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4169b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4170b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4171b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4172b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4173b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4174b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4175b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4176b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4177b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glWeightPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
4178b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4179b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4180b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
4181b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4182b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &stride, 4); ptr += 4;
4183b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &offset, 4); ptr += 4;
4184b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4185e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4186e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4187e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4188b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4189b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4190b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMatrixIndexPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
4191b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4192b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4193b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4194b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4195b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4196e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4197b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4198b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4199b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4200b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4201b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4202b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4203b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4204b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4205b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMatrixIndexPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
4206b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4207b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4208b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
4209b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4210b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &stride, 4); ptr += 4;
4211b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &offset, 4); ptr += 4;
4212b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4213e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4214e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4215e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4216b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4217b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4218b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glVertexPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
4219b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4220b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4221b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4222b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4223b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4224e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4225b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4226b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_data =  datalen;
4227b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4228b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4229b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
4230b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4231b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4232b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4233b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4234b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glVertexPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
4235b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4236b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4237b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
4238b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4239b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &stride, 4); ptr += 4;
4240b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_data; ptr += 4;
4241b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
4242b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &datalen, 4); ptr += 4;
4243b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4244e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4245e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4246e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4247b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4248b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4249b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glColorPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
4250b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4251b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4252b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4253b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4254b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4255e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4256b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4257b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_data =  datalen;
4258b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4259b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4260b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
4261b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4262b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4263b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4264b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4265b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glColorPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
4266b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4267b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4268b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
4269b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4270b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &stride, 4); ptr += 4;
4271b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_data; ptr += 4;
4272b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
4273b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &datalen, 4); ptr += 4;
4274b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4275e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4276e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4277e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4278b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4279b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4280b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glNormalPointerData_enc(void *self , GLenum type, GLsizei stride, void* data, GLuint datalen)
4281b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4282b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4283b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4284b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4285b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4286e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4287b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4288b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_data =  datalen;
4289b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4290b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4291b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
4292b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4293b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4294b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4295b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4296b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glNormalPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
4297b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4298b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4299b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4300b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &stride, 4); ptr += 4;
4301b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_data; ptr += 4;
4302b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, 3, type, stride, datalen);ptr += __size_data;
4303b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &datalen, 4); ptr += 4;
4304b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4305e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4306e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4307e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4308b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4309b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4310b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexCoordPointerData_enc(void *self , GLint unit, GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
4311b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4312b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4313b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4314b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4315b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4316e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4317b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4318b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_data =  datalen;
4319b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4320b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4321b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_data + 4 + 1*4;
4322b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4323b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4324b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4325b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4326b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexCoordPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
4327b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4328b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4329b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &unit, 4); ptr += 4;
4330b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
4331b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4332b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &stride, 4); ptr += 4;
4333b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_data; ptr += 4;
4334b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
4335b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &datalen, 4); ptr += 4;
4336b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4337e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4338e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4339e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4340b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4341b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4342b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPointSizePointerData_enc(void *self , GLenum type, GLsizei stride, void* data, GLuint datalen)
4343b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4344b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4345b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4346b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4347b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4348e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4349b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4350b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_data =  datalen;
4351b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4352b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4353b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
4354b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4355b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4356b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4357b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4358b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPointSizePointerData;memcpy(ptr, &tmp, 4); ptr += 4;
4359b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4360b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4361b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4362b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &stride, 4); ptr += 4;
4363b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_data; ptr += 4;
4364b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, 1, type, stride, datalen);ptr += __size_data;
4365b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &datalen, 4); ptr += 4;
4366b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4367e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4368e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4369e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4370b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4371b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4372b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glWeightPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
4373b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4374b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4375b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4376b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4377b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4378e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4379b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4380b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_data =  datalen;
4381b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4382b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4383b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
4384b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4385b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4386b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4387b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4388b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glWeightPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
4389b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4390b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4391b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
4392b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4393b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &stride, 4); ptr += 4;
4394b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_data; ptr += 4;
4395b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char*)data, size, type, stride, datalen);ptr += __size_data;
4396b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &datalen, 4); ptr += 4;
4397b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4398e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4399e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4400e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4401b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4402b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4403b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMatrixIndexPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
4404b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4405b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4406b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4407b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4408b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4409e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4410b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4411b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_data =  datalen;
4412b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4413b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4414b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
4415b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4416b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4417b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4418b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4419b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMatrixIndexPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
4420b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4421b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4422b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
4423b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4424b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &stride, 4); ptr += 4;
4425b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_data; ptr += 4;
4426b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char*)data, size, type, stride, datalen);ptr += __size_data;
4427b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &datalen, 4); ptr += 4;
4428b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4429e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4430e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4431e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4432b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4433b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4434b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset)
4435b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4436b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4437b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4438b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4439b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4440e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4441b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4442b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4443b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4444b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4445b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4446b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4447b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4448b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4449b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDrawElementsOffset;memcpy(ptr, &tmp, 4); ptr += 4;
4450b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4451b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4452b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &mode, 4); ptr += 4;
4453b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &count, 4); ptr += 4;
4454b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4455b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &offset, 4); ptr += 4;
4456b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4457e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4458e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4459e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4460b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4461b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4462b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
4463b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4464b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4465b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4466b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4467b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4468e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4469b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4470b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_data =  datalen;
4471b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4472b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4473b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
4474b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4475b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4476b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4477b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4478b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDrawElementsData;memcpy(ptr, &tmp, 4); ptr += 4;
4479b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4480b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4481b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &mode, 4); ptr += 4;
4482b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &count, 4); ptr += 4;
4483b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
4484b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_data; ptr += 4;
4485b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, data, __size_data);ptr += __size_data;
4486b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &datalen, 4); ptr += 4;
4487b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4488e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4489e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4490e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4491b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4492b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4493b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats)
4494b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4495b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4496b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4497b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4498b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4499e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4500b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4501b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_formats =  (count * sizeof(GLint));
4502b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4503b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
45041d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
4505b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4506b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4507b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4508b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4509b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetCompressedTextureFormats;memcpy(ptr, &tmp, 4); ptr += 4;
4510b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4511b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4512b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &count, 4); ptr += 4;
4513b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_formats; ptr += 4;
4514b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4515e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4516e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4517e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4518b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(formats, __size_formats);
4519e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(formats, __size_formats);
4520e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
4521a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
45221d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
4523a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
4524a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
4525a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
4526e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetCompressedTextureFormats: GL communication error, please report this issue to b.android.com.\n");
4527e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
4528e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
4529e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
4530b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4531b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4532b85b2756d1e247f8314bb591700fb175d7346631keunyoungint glFinishRoundTrip_enc(void *self )
4533b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4534b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4535b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4536b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4537b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4538e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4539b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4540b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4541b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4542b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8;
4543b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4544b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4545b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4546b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4547b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFinishRoundTrip;memcpy(ptr, &tmp, 4); ptr += 4;
4548b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4549b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4550b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4551e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4552e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4553e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4554b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4555b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int retval;
4556b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(&retval, 4);
4557e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
4558e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
4559a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
45601d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
4561a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
4562a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
4563a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
4564e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glFinishRoundTrip: GL communication error, please report this issue to b.android.com.\n");
4565e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
4566e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
4567e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
4568b85b2756d1e247f8314bb591700fb175d7346631keunyoung	return retval;
4569b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4570b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4571b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glBlendEquationSeparateOES_enc(void *self , GLenum modeRGB, GLenum modeAlpha)
4572b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4573b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4574b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4575b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4576b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4577e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4578b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4579b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4580b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4581b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4582b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4583b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4584b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4585b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4586b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glBlendEquationSeparateOES;memcpy(ptr, &tmp, 4); ptr += 4;
4587b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4588b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4589b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &modeRGB, 4); ptr += 4;
4590b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &modeAlpha, 4); ptr += 4;
4591b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4592e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4593e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4594e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4595b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4596b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4597b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glBlendFuncSeparateOES_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
4598b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4599b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4600b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4601b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4602b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4603e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4604b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4605b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4606b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4607b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4608b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4609b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4610b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4611b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4612b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glBlendFuncSeparateOES;memcpy(ptr, &tmp, 4); ptr += 4;
4613b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4614b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4615b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &srcRGB, 4); ptr += 4;
4616b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &dstRGB, 4); ptr += 4;
4617b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &srcAlpha, 4); ptr += 4;
4618b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &dstAlpha, 4); ptr += 4;
4619b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4620e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4621e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4622e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4623b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4624b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4625b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glBlendEquationOES_enc(void *self , GLenum mode)
4626b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4627b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4628b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4629b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4630b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4631e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4632b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4633b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4634b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4635b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
4636b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4637b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4638b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4639b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4640b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glBlendEquationOES;memcpy(ptr, &tmp, 4); ptr += 4;
4641b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4642b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4643b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &mode, 4); ptr += 4;
4644b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4645e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4646e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4647e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4648b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4649b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4650b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDrawTexsOES_enc(void *self , GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
4651b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4652b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4653b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4654b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4655b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4656e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4657b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4658b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4659b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4660b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 2 + 2 + 2 + 2 + 2;
4661b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4662b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4663b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4664b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4665b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDrawTexsOES;memcpy(ptr, &tmp, 4); ptr += 4;
4666b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4667b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4668b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 2); ptr += 2;
4669b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 2); ptr += 2;
4670b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &z, 2); ptr += 2;
4671b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 2); ptr += 2;
4672b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 2); ptr += 2;
4673b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4674e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4675e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4676e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4677b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4678b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4679b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDrawTexiOES_enc(void *self , GLint x, GLint y, GLint z, GLint width, GLint height)
4680b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4681b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4682b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4683b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4684b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4685e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4686b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4687b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4688b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4689b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4690b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4691b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4692b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4693b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4694b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDrawTexiOES;memcpy(ptr, &tmp, 4); ptr += 4;
4695b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4696b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4697b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
4698b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
4699b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &z, 4); ptr += 4;
4700b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
4701b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
4702b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4703e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4704e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4705e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4706b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4707b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4708b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDrawTexxOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
4709b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4710b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4711b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4712b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4713b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4714e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4715b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4716b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4717b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4718b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4719b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4720b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4721b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4722b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4723b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDrawTexxOES;memcpy(ptr, &tmp, 4); ptr += 4;
4724b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4725b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4726b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
4727b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
4728b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &z, 4); ptr += 4;
4729b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
4730b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
4731b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4732e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4733e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4734e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4735b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4736b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4737b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDrawTexsvOES_enc(void *self , const GLshort* coords)
4738b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4739b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4740b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4741b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4742b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4743e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4744b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4745b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_coords =  (5 * sizeof(GLshort));
4746b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4747b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4748b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + __size_coords + 1*4;
4749b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4750b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4751b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4752b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4753b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDrawTexsvOES;memcpy(ptr, &tmp, 4); ptr += 4;
4754b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4755b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4756b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_coords; ptr += 4;
4757b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, coords, __size_coords);ptr += __size_coords;
4758b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4759e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4760e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4761e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4762b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4763b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4764b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDrawTexivOES_enc(void *self , const GLint* coords)
4765b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4766b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4767b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4768b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4769b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4770e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4771b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4772b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_coords =  (5 * sizeof(GLint));
4773b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4774b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4775b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + __size_coords + 1*4;
4776b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4777b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4778b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4779b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4780b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDrawTexivOES;memcpy(ptr, &tmp, 4); ptr += 4;
4781b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4782b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4783b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_coords; ptr += 4;
4784b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, coords, __size_coords);ptr += __size_coords;
4785b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4786e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4787e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4788e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4789b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4790b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4791b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDrawTexxvOES_enc(void *self , const GLfixed* coords)
4792b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4793b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4794b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4795b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4796b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4797e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4798b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4799b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_coords =  (5 * sizeof(GLfixed));
4800b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4801b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4802b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + __size_coords + 1*4;
4803b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4804b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4805b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4806b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4807b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDrawTexxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
4808b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4809b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4810b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_coords; ptr += 4;
4811b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, coords, __size_coords);ptr += __size_coords;
4812b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4813e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4814e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4815e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4816b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4817b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4818b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDrawTexfOES_enc(void *self , GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
4819b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4820b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4821b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4822b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4823b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4824e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4825b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4826b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4827b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4828b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
4829b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4830b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4831b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4832b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4833b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDrawTexfOES;memcpy(ptr, &tmp, 4); ptr += 4;
4834b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4835b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4836b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
4837b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
4838b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &z, 4); ptr += 4;
4839b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
4840b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
4841b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4842e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4843e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4844e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4845b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4846b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4847b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDrawTexfvOES_enc(void *self , const GLfloat* coords)
4848b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4849b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4850b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4851b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4852b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4853e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4854b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4855b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_coords =  (5 * sizeof(GLfloat));
4856b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4857b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4858b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + __size_coords + 1*4;
4859b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4860b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4861b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4862b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4863b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDrawTexfvOES;memcpy(ptr, &tmp, 4); ptr += 4;
4864b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4865b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4866b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_coords; ptr += 4;
4867b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, coords, __size_coords);ptr += __size_coords;
4868b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4869e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4870e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4871e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4872b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4873b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4874b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES image)
4875b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4876b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4877b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4878b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4879b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4880e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4881b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4882b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4883b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4884b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4885b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4886b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4887b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4888b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4889b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glEGLImageTargetTexture2DOES;memcpy(ptr, &tmp, 4); ptr += 4;
4890b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4891b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4892b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
4893b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &image, 4); ptr += 4;
4894b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4895e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4896e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4897e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4898b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4899b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4900b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeglImageOES image)
4901b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4902b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4903b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4904b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4905b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4906e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4907b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4908b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4909b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4910b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4911b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4912b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4913b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4914b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4915b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glEGLImageTargetRenderbufferStorageOES;memcpy(ptr, &tmp, 4); ptr += 4;
4916b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4917b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4918b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
4919b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &image, 4); ptr += 4;
4920b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4921e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4922e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4923e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4924b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4925b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4926b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glAlphaFuncxOES_enc(void *self , GLenum func, GLclampx ref)
4927b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4928b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4929b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4930b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4931b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4932e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4933b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4934b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4935b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4936b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
4937b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4938b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4939b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4940b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4941b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glAlphaFuncxOES;memcpy(ptr, &tmp, 4); ptr += 4;
4942b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4943b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4944b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &func, 4); ptr += 4;
4945b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &ref, 4); ptr += 4;
4946b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4947e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4948e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4949e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4950b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4951b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4952b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClearColorxOES_enc(void *self , GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
4953b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4954b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4955b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4956b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4957b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4958e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4959b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4960b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4961b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4962b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
4963b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4964b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4965b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4966b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4967b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClearColorxOES;memcpy(ptr, &tmp, 4); ptr += 4;
4968b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4969b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4970b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &red, 4); ptr += 4;
4971b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &green, 4); ptr += 4;
4972b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &blue, 4); ptr += 4;
4973b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &alpha, 4); ptr += 4;
4974b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
4975e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
4976e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
4977e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
4978b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
4979b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4980b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClearDepthxOES_enc(void *self , GLclampx depth)
4981b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
4982b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4983b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
4984b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
4985b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
4986e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
4987b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4988b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
4989b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
4990b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
4991b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
4992b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
4993b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
4994b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
4995b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClearDepthxOES;memcpy(ptr, &tmp, 4); ptr += 4;
4996b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
4997b85b2756d1e247f8314bb591700fb175d7346631keunyoung
4998b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &depth, 4); ptr += 4;
4999b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5000e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5001e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5002e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5003b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5004b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5005b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClipPlanexOES_enc(void *self , GLenum plane, const GLfixed* equation)
5006b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5007b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5008b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5009b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5010b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5011e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5012b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5013b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_equation =  (4 * sizeof(GLfixed));
5014b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5015b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5016b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_equation + 1*4;
5017b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5018b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5019b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5020b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5021b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClipPlanexOES;memcpy(ptr, &tmp, 4); ptr += 4;
5022b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5023b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5024b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &plane, 4); ptr += 4;
5025b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_equation; ptr += 4;
5026b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, equation, __size_equation);ptr += __size_equation;
5027b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5028e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5029e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5030e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5031b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5032b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5033b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClipPlanexIMG_enc(void *self , GLenum plane, const GLfixed* equation)
5034b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5035b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5036b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5037b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5038b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5039e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5040b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5041b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_equation =  (4 * sizeof(GLfixed));
5042b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5043b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5044b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_equation + 1*4;
5045b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5046b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5047b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5048b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5049b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClipPlanexIMG;memcpy(ptr, &tmp, 4); ptr += 4;
5050b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5051b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5052b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &plane, 4); ptr += 4;
5053b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_equation; ptr += 4;
5054b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, equation, __size_equation);ptr += __size_equation;
5055b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5056e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5057e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5058e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5059b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5060b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5061b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glColor4xOES_enc(void *self , GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
5062b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5063b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5064b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5065b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5066b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5067e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5068b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5069b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5070b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5071b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
5072b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5073b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5074b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5075b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5076b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glColor4xOES;memcpy(ptr, &tmp, 4); ptr += 4;
5077b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5078b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5079b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &red, 4); ptr += 4;
5080b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &green, 4); ptr += 4;
5081b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &blue, 4); ptr += 4;
5082b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &alpha, 4); ptr += 4;
5083b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5084e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5085e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5086e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5087b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5088b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5089b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDepthRangexOES_enc(void *self , GLclampx zNear, GLclampx zFar)
5090b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5091b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5092b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5093b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5094b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5095e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5096b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5097b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5098b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5099b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
5100b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5101b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5102b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5103b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5104b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDepthRangexOES;memcpy(ptr, &tmp, 4); ptr += 4;
5105b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5106b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5107b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zNear, 4); ptr += 4;
5108b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zFar, 4); ptr += 4;
5109b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5110e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5111e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5112e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5113b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5114b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5115b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFogxOES_enc(void *self , GLenum pname, GLfixed param)
5116b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5117b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5118b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5119b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5120b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5121e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5122b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5123b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5124b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5125b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
5126b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5127b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5128b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5129b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5130b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFogxOES;memcpy(ptr, &tmp, 4); ptr += 4;
5131b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5132b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5133b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5134b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
5135b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5136e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5137e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5138e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5139b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5140b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5141b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFogxvOES_enc(void *self , GLenum pname, const GLfixed* params)
5142b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5143b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5144b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5145b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5146b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5147e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5148b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5149b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
5150b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5151b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5152b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
5153b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5154b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5155b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5156b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5157b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFogxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
5158b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5159b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5160b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5161b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
5162b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
5163b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5164e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5165e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5166e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5167b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5168b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5169b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFrustumxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
5170b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5171b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5172b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5173b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5174b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5175e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5176b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5177b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5178b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5179b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
5180b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5181b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5182b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5183b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5184b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFrustumxOES;memcpy(ptr, &tmp, 4); ptr += 4;
5185b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5186b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5187b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &left, 4); ptr += 4;
5188b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &right, 4); ptr += 4;
5189b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &bottom, 4); ptr += 4;
5190b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &top, 4); ptr += 4;
5191b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zNear, 4); ptr += 4;
5192b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zFar, 4); ptr += 4;
5193b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5194e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5195e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5196e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5197b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5198b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5199b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetClipPlanexOES_enc(void *self , GLenum pname, GLfixed* eqn)
5200b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5201b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5202b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5203b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5204b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5205e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5206b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5207b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_eqn =  (4 * sizeof(GLfixed));
5208b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5209b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
52101d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5211b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5212b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5213b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5214b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5215b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetClipPlanexOES;memcpy(ptr, &tmp, 4); ptr += 4;
5216b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5217b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5218b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5219b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
5220b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5221e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5222e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5223e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5224b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(eqn, __size_eqn);
5225e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(eqn, __size_eqn);
5226e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
5227a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
52281d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5229a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5230a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
5231a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5232e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetClipPlanexOES: GL communication error, please report this issue to b.android.com.\n");
5233e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
5234e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
5235e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
5236b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5237b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5238b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetClipPlanex_enc(void *self , GLenum pname, GLfixed* eqn)
5239b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5240b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5241b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5242b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5243b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5244e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5245b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5246b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_eqn =  (4 * sizeof(GLfixed));
5247b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5248b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
52491d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5250b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5251b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5252b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5253b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5254b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetClipPlanex;memcpy(ptr, &tmp, 4); ptr += 4;
5255b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5256b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5257b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5258b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
5259b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5260e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5261e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5262e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5263b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(eqn, __size_eqn);
5264e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(eqn, __size_eqn);
5265e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
5266a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
52671d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5268a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5269a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
5270a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5271e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetClipPlanex: GL communication error, please report this issue to b.android.com.\n");
5272e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
5273e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
5274e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
5275b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5276b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5277b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetFixedvOES_enc(void *self , GLenum pname, GLfixed* params)
5278b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5279b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5280b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5281b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5282b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5283e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5284b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5285b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
5286b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5287b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
52881d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
5289b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5290b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5291b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5292b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5293b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetFixedvOES;memcpy(ptr, &tmp, 4); ptr += 4;
5294b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5295b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5296b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5297b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
5298b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5299e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5300e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5301e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5302b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
5303e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
5304e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
5305a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
53061d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5307a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5308a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
5309a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5310e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetFixedvOES: GL communication error, please report this issue to b.android.com.\n");
5311e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
5312e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
5313e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
5314b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5315b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5316b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetLightxvOES_enc(void *self , GLenum light, GLenum pname, GLfixed* params)
5317b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5318b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5319b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5320b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5321b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5322e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5323b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5324b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
5325b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5326b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
53271d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
5328b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5329b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5330b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5331b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5332b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetLightxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
5333b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5334b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5335b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &light, 4); ptr += 4;
5336b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5337b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
5338b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5339e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5340e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5341e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5342b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
5343e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
5344e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
5345a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
53461d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5347a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5348a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
5349a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5350e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetLightxvOES: GL communication error, please report this issue to b.android.com.\n");
5351e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
5352e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
5353e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
5354b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5355b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5356b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetMaterialxvOES_enc(void *self , GLenum face, GLenum pname, GLfixed* params)
5357b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5358b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5359b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5360b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5361b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5362e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5363b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5364b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
5365b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5366b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
53671d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
5368b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5369b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5370b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5371b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5372b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetMaterialxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
5373b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5374b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5375b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &face, 4); ptr += 4;
5376b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5377b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
5378b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5379e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5380e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5381e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5382b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
5383e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
5384e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
5385a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
53861d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5387a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5388a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
5389a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5390e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetMaterialxvOES: GL communication error, please report this issue to b.android.com.\n");
5391e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
5392e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
5393e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
5394b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5395b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5396b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetTexEnvxvOES_enc(void *self , GLenum env, GLenum pname, GLfixed* params)
5397b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5398b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5399b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5400b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5401b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5402e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5403b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5404b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
5405b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5406b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
54071d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
5408b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5409b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5410b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5411b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5412b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetTexEnvxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
5413b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5414b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5415b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &env, 4); ptr += 4;
5416b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5417b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
5418b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5419e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5420e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5421e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5422b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
5423e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
5424e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
5425a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
54261d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5427a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5428a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
5429a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5430e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetTexEnvxvOES: GL communication error, please report this issue to b.android.com.\n");
5431e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
5432e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
5433e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
5434b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5435b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5436b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetTexParameterxvOES_enc(void *self , GLenum target, GLenum pname, GLfixed* params)
5437b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5438b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5439b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5440b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5441b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5442e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5443b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5444b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
5445b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5446b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
54471d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
5448b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5449b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5450b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5451b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5452b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetTexParameterxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
5453b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5454b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5455b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
5456b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5457b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
5458b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5459e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5460e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5461e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5462b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
5463e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
5464e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
5465a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
54661d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
5467a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
5468a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
5469a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
5470e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetTexParameterxvOES: GL communication error, please report this issue to b.android.com.\n");
5471e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
5472e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
5473e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
5474b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5475b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5476b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLightModelxOES_enc(void *self , GLenum pname, GLfixed param)
5477b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5478b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5479b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5480b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5481b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5482e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5483b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5484b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5485b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5486b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
5487b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5488b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5489b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5490b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5491b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLightModelxOES;memcpy(ptr, &tmp, 4); ptr += 4;
5492b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5493b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5494b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5495b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
5496b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5497e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5498e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5499e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5500b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5501b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5502b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLightModelxvOES_enc(void *self , GLenum pname, const GLfixed* params)
5503b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5504b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5505b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5506b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5507b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5508e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5509b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5510b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
5511b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5512b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5513b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
5514b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5515b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5516b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5517b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5518b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLightModelxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
5519b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5520b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5521b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5522b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
5523b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
5524b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5525e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5526e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5527e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5528b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5529b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5530b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLightxOES_enc(void *self , GLenum light, GLenum pname, GLfixed param)
5531b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5532b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5533b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5534b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5535b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5536e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5537b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5538b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5539b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5540b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
5541b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5542b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5543b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5544b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5545b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLightxOES;memcpy(ptr, &tmp, 4); ptr += 4;
5546b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5547b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5548b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &light, 4); ptr += 4;
5549b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5550b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
5551b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5552e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5553e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5554e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5555b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5556b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5557b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLightxvOES_enc(void *self , GLenum light, GLenum pname, const GLfixed* params)
5558b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5559b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5560b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5561b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5562b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5563e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5564b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5565b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
5566b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5567b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5568b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
5569b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5570b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5571b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5572b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5573b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLightxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
5574b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5575b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5576b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &light, 4); ptr += 4;
5577b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5578b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
5579b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
5580b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5581e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5582e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5583e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5584b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5585b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5586b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLineWidthxOES_enc(void *self , GLfixed width)
5587b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5588b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5589b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5590b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5591b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5592e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5593b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5594b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5595b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5596b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
5597b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5598b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5599b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5600b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5601b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLineWidthxOES;memcpy(ptr, &tmp, 4); ptr += 4;
5602b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5603b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5604b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
5605b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5606e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5607e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5608e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5609b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5610b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5611b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLoadMatrixxOES_enc(void *self , const GLfixed* m)
5612b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5613b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5614b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5615b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5616b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5617e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5618b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5619b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_m =  (16 * sizeof(GLfixed));
5620b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5621b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5622b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + __size_m + 1*4;
5623b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5624b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5625b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5626b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5627b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLoadMatrixxOES;memcpy(ptr, &tmp, 4); ptr += 4;
5628b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5629b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5630b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_m; ptr += 4;
5631b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, m, __size_m);ptr += __size_m;
5632b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5633e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5634e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5635e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5636b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5637b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5638b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMaterialxOES_enc(void *self , GLenum face, GLenum pname, GLfixed param)
5639b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5640b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5641b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5642b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5643b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5644e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5645b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5646b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5647b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5648b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
5649b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5650b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5651b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5652b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5653b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMaterialxOES;memcpy(ptr, &tmp, 4); ptr += 4;
5654b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5655b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5656b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &face, 4); ptr += 4;
5657b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5658b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
5659b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5660e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5661e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5662e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5663b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5664b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5665b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMaterialxvOES_enc(void *self , GLenum face, GLenum pname, const GLfixed* params)
5666b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5667b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5668b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5669b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5670b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5671e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5672b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5673b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
5674b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5675b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5676b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
5677b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5678b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5679b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5680b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5681b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMaterialxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
5682b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5683b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5684b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &face, 4); ptr += 4;
5685b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5686b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
5687b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
5688b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5689e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5690e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5691e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5692b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5693b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5694b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMultMatrixxOES_enc(void *self , const GLfixed* m)
5695b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5696b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5697b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5698b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5699b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5700e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5701b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5702b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_m =  (16 * sizeof(GLfixed));
5703b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5704b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5705b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + __size_m + 1*4;
5706b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5707b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5708b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5709b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5710b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMultMatrixxOES;memcpy(ptr, &tmp, 4); ptr += 4;
5711b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5712b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5713b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_m; ptr += 4;
5714b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, m, __size_m);ptr += __size_m;
5715b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5716e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5717e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5718e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5719b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5720b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5721b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glMultiTexCoord4xOES_enc(void *self , GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
5722b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5723b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5724b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5725b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5726b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5727e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5728b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5729b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5730b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5731b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
5732b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5733b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5734b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5735b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5736b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glMultiTexCoord4xOES;memcpy(ptr, &tmp, 4); ptr += 4;
5737b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5738b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5739b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
5740b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &s, 4); ptr += 4;
5741b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &t, 4); ptr += 4;
5742b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &r, 4); ptr += 4;
5743b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &q, 4); ptr += 4;
5744b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5745e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5746e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5747e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5748b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5749b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5750b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glNormal3xOES_enc(void *self , GLfixed nx, GLfixed ny, GLfixed nz)
5751b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5752b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5753b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5754b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5755b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5756e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5757b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5758b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5759b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5760b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
5761b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5762b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5763b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5764b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5765b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glNormal3xOES;memcpy(ptr, &tmp, 4); ptr += 4;
5766b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5767b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5768b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &nx, 4); ptr += 4;
5769b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &ny, 4); ptr += 4;
5770b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &nz, 4); ptr += 4;
5771b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5772e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5773e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5774e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5775b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5776b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5777b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glOrthoxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
5778b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5779b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5780b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5781b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5782b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5783e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5784b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5785b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5786b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5787b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
5788b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5789b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5790b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5791b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5792b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glOrthoxOES;memcpy(ptr, &tmp, 4); ptr += 4;
5793b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5794b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5795b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &left, 4); ptr += 4;
5796b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &right, 4); ptr += 4;
5797b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &bottom, 4); ptr += 4;
5798b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &top, 4); ptr += 4;
5799b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zNear, 4); ptr += 4;
5800b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zFar, 4); ptr += 4;
5801b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5802e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5803e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5804e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5805b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5806b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5807b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPointParameterxOES_enc(void *self , GLenum pname, GLfixed param)
5808b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5809b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5810b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5811b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5812b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5813e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5814b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5815b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5816b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5817b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
5818b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5819b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5820b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5821b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5822b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPointParameterxOES;memcpy(ptr, &tmp, 4); ptr += 4;
5823b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5824b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5825b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5826b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
5827b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5828e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5829e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5830e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5831b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5832b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5833b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPointParameterxvOES_enc(void *self , GLenum pname, const GLfixed* params)
5834b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5835b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5836b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5837b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5838b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5839e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5840b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5841b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
5842b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5843b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5844b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
5845b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5846b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5847b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5848b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5849b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPointParameterxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
5850b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5851b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5852b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
5853b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
5854b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
5855b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5856e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5857e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5858e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5859b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5860b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5861b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPointSizexOES_enc(void *self , GLfixed size)
5862b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5863b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5864b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5865b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5866b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5867e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5868b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5869b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5870b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5871b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
5872b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5873b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5874b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5875b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5876b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPointSizexOES;memcpy(ptr, &tmp, 4); ptr += 4;
5877b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5878b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5879b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
5880b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5881e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5882e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5883e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5884b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5885b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5886b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glPolygonOffsetxOES_enc(void *self , GLfixed factor, GLfixed units)
5887b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5888b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5889b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5890b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5891b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5892e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5893b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5894b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5895b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5896b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
5897b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5898b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5899b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5900b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5901b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glPolygonOffsetxOES;memcpy(ptr, &tmp, 4); ptr += 4;
5902b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5903b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5904b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &factor, 4); ptr += 4;
5905b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &units, 4); ptr += 4;
5906b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5907e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5908e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5909e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5910b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5911b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5912b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glRotatexOES_enc(void *self , GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
5913b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5914b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5915b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5916b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5917b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5918e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5919b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5920b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5921b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5922b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
5923b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5924b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5925b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5926b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5927b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glRotatexOES;memcpy(ptr, &tmp, 4); ptr += 4;
5928b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5929b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5930b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &angle, 4); ptr += 4;
5931b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
5932b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
5933b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &z, 4); ptr += 4;
5934b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5935e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5936e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5937e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5938b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5939b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5940b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glSampleCoveragexOES_enc(void *self , GLclampx value, GLboolean invert)
5941b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5942b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5943b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5944b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5945b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5946e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5947b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5948b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5949b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5950b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 1;
5951b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5952b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5953b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5954b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5955b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glSampleCoveragexOES;memcpy(ptr, &tmp, 4); ptr += 4;
5956b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5957b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5958b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &value, 4); ptr += 4;
5959b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &invert, 1); ptr += 1;
5960b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5961e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5962e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5963e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5964b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5965b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5966b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glScalexOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
5967b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5968b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5969b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5970b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5971b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5972e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
5973b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5974b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
5975b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
5976b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
5977b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
5978b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
5979b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
5980b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
5981b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glScalexOES;memcpy(ptr, &tmp, 4); ptr += 4;
5982b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
5983b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5984b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
5985b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
5986b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &z, 4); ptr += 4;
5987b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
5988e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
5989e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
5990e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
5991b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
5992b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5993b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexEnvxOES_enc(void *self , GLenum target, GLenum pname, GLfixed param)
5994b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
5995b85b2756d1e247f8314bb591700fb175d7346631keunyoung
5996b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
5997b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
5998b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
5999e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6000b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6001b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6002b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6003b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
6004b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6005b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6006b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6007b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6008b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexEnvxOES;memcpy(ptr, &tmp, 4); ptr += 4;
6009b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6010b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6011b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
6012b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
6013b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
6014b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6015e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6016e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6017e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6018b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6019b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6020b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexEnvxvOES_enc(void *self , GLenum target, GLenum pname, const GLfixed* params)
6021b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6022b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6023b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6024b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6025b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6026e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6027b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6028b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
6029b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6030b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6031b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
6032b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6033b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6034b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6035b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6036b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexEnvxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
6037b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6038b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6039b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
6040b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
6041b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
6042b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
6043b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6044e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6045e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6046e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6047b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6048b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6049b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexParameterxOES_enc(void *self , GLenum target, GLenum pname, GLfixed param)
6050b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6051b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6052b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6053b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6054b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6055e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6056b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6057b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6058b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6059b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
6060b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6061b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6062b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6063b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6064b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexParameterxOES;memcpy(ptr, &tmp, 4); ptr += 4;
6065b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6066b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6067b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
6068b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
6069b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
6070b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6071e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6072e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6073e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6074b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6075b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6076b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexParameterxvOES_enc(void *self , GLenum target, GLenum pname, const GLfixed* params)
6077b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6078b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6079b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6080b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6081b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6082e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6083b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6084b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
6085b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6086b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6087b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
6088b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6089b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6090b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6091b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6092b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexParameterxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
6093b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6094b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6095b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
6096b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
6097b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
6098b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
6099b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6100e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6101e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6102e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6103b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6104b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6105b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTranslatexOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
6106b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6107b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6108b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6109b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6110b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6111e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6112b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6113b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6114b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6115b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
6116b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6117b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6118b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6119b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6120b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTranslatexOES;memcpy(ptr, &tmp, 4); ptr += 4;
6121b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6122b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6123b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
6124b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
6125b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &z, 4); ptr += 4;
6126b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6127e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6128e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6129e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6130b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6131b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6132b85b2756d1e247f8314bb591700fb175d7346631keunyoungGLboolean glIsRenderbufferOES_enc(void *self , GLuint renderbuffer)
6133b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6134b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6135b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6136b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6137b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6138e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6139b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6140b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6141b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6142b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
6143b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6144b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6145b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6146b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6147b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glIsRenderbufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
6148b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6149b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6150b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &renderbuffer, 4); ptr += 4;
6151b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6152e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6153e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6154e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6155b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6156b85b2756d1e247f8314bb591700fb175d7346631keunyoung	GLboolean retval;
6157b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(&retval, 1);
6158e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
6159e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
6160a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
61611d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6162a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6163a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
6164a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6165e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glIsRenderbufferOES: GL communication error, please report this issue to b.android.com.\n");
6166e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
6167e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
6168e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
6169b85b2756d1e247f8314bb591700fb175d7346631keunyoung	return retval;
6170b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6171b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6172b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glBindRenderbufferOES_enc(void *self , GLenum target, GLuint renderbuffer)
6173b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6174b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6175b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6176b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6177b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6178e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6179b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6180b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6181b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6182b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
6183b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6184b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6185b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6186b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6187b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glBindRenderbufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
6188b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6189b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6190b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
6191b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &renderbuffer, 4); ptr += 4;
6192b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6193e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6194e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6195e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6196b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6197b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6198b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDeleteRenderbuffersOES_enc(void *self , GLsizei n, const GLuint* renderbuffers)
6199b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6200b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6201b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6202b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6203b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6204e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6205b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6206b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_renderbuffers =  (n * sizeof(GLuint));
6207b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6208b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6209b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_renderbuffers + 1*4;
6210b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6211b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6212b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6213b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6214b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDeleteRenderbuffersOES;memcpy(ptr, &tmp, 4); ptr += 4;
6215b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6216b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6217b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &n, 4); ptr += 4;
6218b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
6219b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, renderbuffers, __size_renderbuffers);ptr += __size_renderbuffers;
6220b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6221e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6222e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6223e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6224b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6225b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6226b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGenRenderbuffersOES_enc(void *self , GLsizei n, GLuint* renderbuffers)
6227b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6228b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6229b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6230b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6231b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6232e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6233b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6234b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_renderbuffers =  (n * sizeof(GLuint));
6235b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6236b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
62371d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
6238b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6239b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6240b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6241b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6242b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGenRenderbuffersOES;memcpy(ptr, &tmp, 4); ptr += 4;
6243b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6244b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6245b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &n, 4); ptr += 4;
6246b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
6247b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6248e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6249e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6250e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6251b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(renderbuffers, __size_renderbuffers);
6252e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(renderbuffers, __size_renderbuffers);
6253e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
6254a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
62551d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6256a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6257a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
6258a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6259e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGenRenderbuffersOES: GL communication error, please report this issue to b.android.com.\n");
6260e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
6261e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
6262e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
6263b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6264b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6265b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glRenderbufferStorageOES_enc(void *self , GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
6266b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6267b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6268b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6269b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6270b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6271e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6272b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6273b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6274b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6275b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
6276b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6277b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6278b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6279b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6280b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glRenderbufferStorageOES;memcpy(ptr, &tmp, 4); ptr += 4;
6281b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6282b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6283b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
6284b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &internalformat, 4); ptr += 4;
6285b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
6286b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
6287b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6288e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6289e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6290e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6291b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6292b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6293b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetRenderbufferParameterivOES_enc(void *self , GLenum target, GLenum pname, GLint* params)
6294b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6295b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6296b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6297b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6298b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6299e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6300b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6301b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
6302b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6303b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
63041d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
6305b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6306b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6307b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6308b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6309b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetRenderbufferParameterivOES;memcpy(ptr, &tmp, 4); ptr += 4;
6310b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6311b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6312b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
6313b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
6314b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
6315b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6316e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6317e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6318e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6319b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
6320e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6321e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
6322a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
63231d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6324a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6325a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
6326a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6327e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetRenderbufferParameterivOES: GL communication error, please report this issue to b.android.com.\n");
6328e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
6329e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
6330e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
6331b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6332b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6333b85b2756d1e247f8314bb591700fb175d7346631keunyoungGLboolean glIsFramebufferOES_enc(void *self , GLuint framebuffer)
6334b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6335b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6336b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6337b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6338b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6339e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6340b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6341b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6342b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6343b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
6344b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6345b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6346b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6347b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6348b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glIsFramebufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
6349b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6350b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6351b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &framebuffer, 4); ptr += 4;
6352b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6353e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6354e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6355e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6356b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6357b85b2756d1e247f8314bb591700fb175d7346631keunyoung	GLboolean retval;
6358b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(&retval, 1);
6359e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
6360e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
6361a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
63621d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6363a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6364a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
6365a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6366e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glIsFramebufferOES: GL communication error, please report this issue to b.android.com.\n");
6367e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
6368e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
6369e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
6370b85b2756d1e247f8314bb591700fb175d7346631keunyoung	return retval;
6371b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6372b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6373b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glBindFramebufferOES_enc(void *self , GLenum target, GLuint framebuffer)
6374b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6375b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6376b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6377b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6378b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6379e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6380b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6381b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6382b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6383b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
6384b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6385b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6386b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6387b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6388b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glBindFramebufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
6389b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6390b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6391b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
6392b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &framebuffer, 4); ptr += 4;
6393b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6394e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6395e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6396e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6397b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6398b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6399b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDeleteFramebuffersOES_enc(void *self , GLsizei n, const GLuint* framebuffers)
6400b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6401b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6402b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6403b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6404b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6405e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6406b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6407b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_framebuffers =  (n * sizeof(GLuint));
6408b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6409b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6410b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_framebuffers + 1*4;
6411b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6412b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6413b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6414b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6415b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDeleteFramebuffersOES;memcpy(ptr, &tmp, 4); ptr += 4;
6416b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6417b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6418b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &n, 4); ptr += 4;
6419b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
6420b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, framebuffers, __size_framebuffers);ptr += __size_framebuffers;
6421b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6422e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6423e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6424e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6425b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6426b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6427b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGenFramebuffersOES_enc(void *self , GLsizei n, GLuint* framebuffers)
6428b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6429b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6430b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6431b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6432b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6433e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6434b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6435b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_framebuffers =  (n * sizeof(GLuint));
6436b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6437b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
64381d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
6439b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6440b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6441b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6442b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6443b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGenFramebuffersOES;memcpy(ptr, &tmp, 4); ptr += 4;
6444b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6445b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6446b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &n, 4); ptr += 4;
6447b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
6448b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6449e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6450e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6451e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6452b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(framebuffers, __size_framebuffers);
6453e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(framebuffers, __size_framebuffers);
6454e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
6455a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
64561d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6457a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6458a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
6459a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6460e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGenFramebuffersOES: GL communication error, please report this issue to b.android.com.\n");
6461e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
6462e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
6463e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
6464b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6465b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6466b85b2756d1e247f8314bb591700fb175d7346631keunyoungGLenum glCheckFramebufferStatusOES_enc(void *self , GLenum target)
6467b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6468b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6469b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6470b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6471b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6472e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6473b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6474b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6475b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6476b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
6477b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6478b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6479b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6480b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6481b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glCheckFramebufferStatusOES;memcpy(ptr, &tmp, 4); ptr += 4;
6482b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6483b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6484b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
6485b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6486e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6487e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6488e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6489b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6490b85b2756d1e247f8314bb591700fb175d7346631keunyoung	GLenum retval;
6491b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(&retval, 4);
6492e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
6493e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
6494a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
64951d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6496a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6497a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
6498a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6499e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glCheckFramebufferStatusOES: GL communication error, please report this issue to b.android.com.\n");
6500e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
6501e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
6502e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
6503b85b2756d1e247f8314bb591700fb175d7346631keunyoung	return retval;
6504b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6505b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6506b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFramebufferRenderbufferOES_enc(void *self , GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
6507b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6508b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6509b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6510b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6511b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6512e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6513b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6514b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6515b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6516b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
6517b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6518b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6519b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6520b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6521b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFramebufferRenderbufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
6522b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6523b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6524b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
6525b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &attachment, 4); ptr += 4;
6526b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &renderbuffertarget, 4); ptr += 4;
6527b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &renderbuffer, 4); ptr += 4;
6528b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6529e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6530e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6531e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6532b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6533b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6534b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFramebufferTexture2DOES_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
6535b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6536b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6537b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6538b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6539b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6540e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6541b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6542b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6543b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6544b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
6545b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6546b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6547b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6548b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6549b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFramebufferTexture2DOES;memcpy(ptr, &tmp, 4); ptr += 4;
6550b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6551b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6552b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
6553b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &attachment, 4); ptr += 4;
6554b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &textarget, 4); ptr += 4;
6555b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &texture, 4); ptr += 4;
6556b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &level, 4); ptr += 4;
6557b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6558e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6559e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6560e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6561b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6562b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6563b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetFramebufferAttachmentParameterivOES_enc(void *self , GLenum target, GLenum attachment, GLenum pname, GLint* params)
6564b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6565b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6566b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6567b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6568b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6569e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6570b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6571b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
6572b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6573b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
65741d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 0 + 1*4;
6575b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6576b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6577b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6578b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6579b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetFramebufferAttachmentParameterivOES;memcpy(ptr, &tmp, 4); ptr += 4;
6580b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6581b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6582b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
6583b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &attachment, 4); ptr += 4;
6584b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
6585b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
6586b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6587e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6588e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6589e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6590b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
6591e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
6592e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
6593a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
65941d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6595a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6596a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
6597a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6598e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetFramebufferAttachmentParameterivOES: GL communication error, please report this issue to b.android.com.\n");
6599e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
6600e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
6601e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
6602b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6603b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6604b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGenerateMipmapOES_enc(void *self , GLenum target)
6605b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6606b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6607b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6608b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6609b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6610e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6611b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6612b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6613b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6614b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
6615b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6616b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6617b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6618b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6619b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGenerateMipmapOES;memcpy(ptr, &tmp, 4); ptr += 4;
6620b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6621b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6622b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
6623b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6624e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6625e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6626e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6627b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6628b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6629b85b2756d1e247f8314bb591700fb175d7346631keunyoungGLboolean glUnmapBufferOES_enc(void *self , GLenum target)
6630b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6631b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6632b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6633b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6634b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6635e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6636b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6637b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6638b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6639b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
6640b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6641b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6642b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6643b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6644b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glUnmapBufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
6645b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6646b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6647b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
6648b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6649e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6650e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6651e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6652b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6653b85b2756d1e247f8314bb591700fb175d7346631keunyoung	GLboolean retval;
6654b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(&retval, 1);
6655e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
6656e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
6657a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
66581d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6659a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6660a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
6661a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6662e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glUnmapBufferOES: GL communication error, please report this issue to b.android.com.\n");
6663e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
6664e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
6665e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
6666b85b2756d1e247f8314bb591700fb175d7346631keunyoung	return retval;
6667b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6668b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6669b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glCurrentPaletteMatrixOES_enc(void *self , GLuint matrixpaletteindex)
6670b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6671b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6672b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6673b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6674b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6675e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6676b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6677b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6678b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6679b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
6680b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6681b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6682b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6683b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6684b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glCurrentPaletteMatrixOES;memcpy(ptr, &tmp, 4); ptr += 4;
6685b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6686b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6687b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &matrixpaletteindex, 4); ptr += 4;
6688b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6689e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6690e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6691e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6692b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6693b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6694b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glLoadPaletteFromModelViewMatrixOES_enc(void *self )
6695b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6696b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6697b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6698b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6699b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6700e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6701b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6702b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6703b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6704b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8;
6705b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6706b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6707b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6708b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6709b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glLoadPaletteFromModelViewMatrixOES;memcpy(ptr, &tmp, 4); ptr += 4;
6710b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6711b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6712b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6713e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6714e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6715e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6716b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6717b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6718b85b2756d1e247f8314bb591700fb175d7346631keunyoungGLbitfield glQueryMatrixxOES_enc(void *self , GLfixed* mantissa, GLint* exponent)
6719b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6720b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6721b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6722b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6723b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6724e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6725b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6726b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_mantissa =  (16 * sizeof(GLfixed));
6727b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_exponent =  (16 * sizeof(GLfixed));
6728b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6729b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
67301d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 0 + 0 + 2*4;
6731b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6732b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6733b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6734b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6735b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glQueryMatrixxOES;memcpy(ptr, &tmp, 4); ptr += 4;
6736b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6737b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6738b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_mantissa; ptr += 4;
6739b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_exponent; ptr += 4;
6740b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6741e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6742e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6743e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6744b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(mantissa, __size_mantissa);
6745e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(mantissa, __size_mantissa);
6746b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(exponent, __size_exponent);
6747e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(exponent, __size_exponent);
6748b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6749b85b2756d1e247f8314bb591700fb175d7346631keunyoung	GLbitfield retval;
6750b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(&retval, 4);
6751e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
6752e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
6753a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
67541d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6755a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6756a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
6757a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6758e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glQueryMatrixxOES: GL communication error, please report this issue to b.android.com.\n");
6759e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
6760e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
6761e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
6762b85b2756d1e247f8314bb591700fb175d7346631keunyoung	return retval;
6763b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6764b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6765b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDepthRangefOES_enc(void *self , GLclampf zNear, GLclampf zFar)
6766b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6767b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6768b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6769b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6770b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6771e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6772b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6773b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6774b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6775b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
6776b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6777b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6778b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6779b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6780b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDepthRangefOES;memcpy(ptr, &tmp, 4); ptr += 4;
6781b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6782b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6783b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zNear, 4); ptr += 4;
6784b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zFar, 4); ptr += 4;
6785b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6786e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6787e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6788e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6789b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6790b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6791b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFrustumfOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
6792b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6793b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6794b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6795b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6796b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6797e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6798b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6799b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6800b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6801b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
6802b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6803b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6804b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6805b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6806b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFrustumfOES;memcpy(ptr, &tmp, 4); ptr += 4;
6807b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6808b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6809b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &left, 4); ptr += 4;
6810b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &right, 4); ptr += 4;
6811b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &bottom, 4); ptr += 4;
6812b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &top, 4); ptr += 4;
6813b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zNear, 4); ptr += 4;
6814b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zFar, 4); ptr += 4;
6815b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6816e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6817e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6818e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6819b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6820b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6821b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glOrthofOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
6822b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6823b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6824b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6825b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6826b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6827e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6828b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6829b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6830b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6831b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
6832b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6833b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6834b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6835b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6836b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glOrthofOES;memcpy(ptr, &tmp, 4); ptr += 4;
6837b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6838b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6839b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &left, 4); ptr += 4;
6840b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &right, 4); ptr += 4;
6841b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &bottom, 4); ptr += 4;
6842b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &top, 4); ptr += 4;
6843b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zNear, 4); ptr += 4;
6844b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zFar, 4); ptr += 4;
6845b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6846e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6847e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6848e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6849b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6850b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6851b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClipPlanefOES_enc(void *self , GLenum plane, const GLfloat* equation)
6852b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6853b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6854b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6855b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6856b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6857e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6858b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6859b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_equation =  (4 * sizeof(GLfloat));
6860b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6861b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6862b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_equation + 1*4;
6863b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6864b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6865b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6866b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6867b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClipPlanefOES;memcpy(ptr, &tmp, 4); ptr += 4;
6868b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6869b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6870b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &plane, 4); ptr += 4;
6871b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_equation; ptr += 4;
6872b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, equation, __size_equation);ptr += __size_equation;
6873b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6874e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6875e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6876e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6877b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6878b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6879b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClipPlanefIMG_enc(void *self , GLenum plane, const GLfloat* equation)
6880b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6881b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6882b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6883b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6884b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6885e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6886b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6887b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_equation =  (4 * sizeof(GLfloat));
6888b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6889b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6890b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_equation + 1*4;
6891b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6892b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6893b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6894b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6895b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClipPlanefIMG;memcpy(ptr, &tmp, 4); ptr += 4;
6896b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6897b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6898b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &plane, 4); ptr += 4;
6899b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_equation; ptr += 4;
6900b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, equation, __size_equation);ptr += __size_equation;
6901b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6902e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6903e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6904e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6905b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6906b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6907b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetClipPlanefOES_enc(void *self , GLenum pname, GLfloat* eqn)
6908b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6909b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6910b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6911b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6912b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6913e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6914b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6915b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_eqn =  (4 * sizeof(GLfloat));
6916b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6917b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
69181d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
6919b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6920b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6921b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6922b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6923b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetClipPlanefOES;memcpy(ptr, &tmp, 4); ptr += 4;
6924b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6925b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6926b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
6927b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
6928b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6929e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6930e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6931e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6932b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(eqn, __size_eqn);
6933e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(eqn, __size_eqn);
6934e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
6935a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
69361d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
6937a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
6938a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
6939a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
6940e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetClipPlanefOES: GL communication error, please report this issue to b.android.com.\n");
6941e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
6942e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
6943e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
6944b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6945b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6946b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glClearDepthfOES_enc(void *self , GLclampf depth)
6947b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6948b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6949b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6950b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6951b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6952e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6953b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6954b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6955b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6956b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
6957b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6958b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6959b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6960b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6961b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glClearDepthfOES;memcpy(ptr, &tmp, 4); ptr += 4;
6962b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6963b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6964b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &depth, 4); ptr += 4;
6965b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6966e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6967e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6968e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6969b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6970b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6971b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexGenfOES_enc(void *self , GLenum coord, GLenum pname, GLfloat param)
6972b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
6973b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6974b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
6975b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
6976b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
6977e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
6978b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6979b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
6980b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
6981b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
6982b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
6983b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
6984b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
6985b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
6986b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexGenfOES;memcpy(ptr, &tmp, 4); ptr += 4;
6987b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
6988b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6989b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &coord, 4); ptr += 4;
6990b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
6991b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
6992b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
6993e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
6994e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
6995e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
6996b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
6997b85b2756d1e247f8314bb591700fb175d7346631keunyoung
6998b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexGenfvOES_enc(void *self , GLenum coord, GLenum pname, const GLfloat* params)
6999b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7000b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7001b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7002b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7003b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7004e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7005b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7006b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
7007b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7008b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7009b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
7010b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7011b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7012b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7013b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7014b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexGenfvOES;memcpy(ptr, &tmp, 4); ptr += 4;
7015b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7016b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7017b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &coord, 4); ptr += 4;
7018b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
7019b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
7020b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
7021b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7022e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7023e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7024e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7025b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7026b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7027b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexGeniOES_enc(void *self , GLenum coord, GLenum pname, GLint param)
7028b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7029b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7030b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7031b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7032b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7033e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7034b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7035b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7036b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7037b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
7038b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7039b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7040b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7041b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7042b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexGeniOES;memcpy(ptr, &tmp, 4); ptr += 4;
7043b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7044b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7045b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &coord, 4); ptr += 4;
7046b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
7047b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
7048b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7049e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7050e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7051e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7052b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7053b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7054b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexGenivOES_enc(void *self , GLenum coord, GLenum pname, const GLint* params)
7055b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7056b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7057b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7058b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7059b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7060e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7061b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7062b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
7063b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7064b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7065b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
7066b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7067b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7068b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7069b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7070b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexGenivOES;memcpy(ptr, &tmp, 4); ptr += 4;
7071b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7072b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7073b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &coord, 4); ptr += 4;
7074b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
7075b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
7076b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
7077b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7078e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7079e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7080e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7081b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7082b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7083b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexGenxOES_enc(void *self , GLenum coord, GLenum pname, GLfixed param)
7084b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7085b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7086b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7087b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7088b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7089e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7090b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7091b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7092b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7093b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
7094b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7095b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7096b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7097b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7098b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexGenxOES;memcpy(ptr, &tmp, 4); ptr += 4;
7099b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7100b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7101b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &coord, 4); ptr += 4;
7102b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
7103b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
7104b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7105e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7106e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7107e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7108b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7109b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7110b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glTexGenxvOES_enc(void *self , GLenum coord, GLenum pname, const GLfixed* params)
7111b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7112b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7113b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7114b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7115b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7116e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7117b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7118b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
7119b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7120b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7121b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
7122b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7123b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7124b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7125b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7126b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTexGenxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
7127b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7128b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7129b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &coord, 4); ptr += 4;
7130b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
7131b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
7132b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
7133b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7134e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7135e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7136e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7137b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7138b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7139b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetTexGenfvOES_enc(void *self , GLenum coord, GLenum pname, GLfloat* params)
7140b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7141b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7142b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7143b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7144b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7145e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7146b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7147b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
7148b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7149b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7150b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
7151b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7152b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7153b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7154b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7155b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetTexGenfvOES;memcpy(ptr, &tmp, 4); ptr += 4;
7156b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7157b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7158b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &coord, 4); ptr += 4;
7159b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
7160b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
7161b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
7162b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7163e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7164e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7165e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7166b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7167b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7168b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetTexGenivOES_enc(void *self , GLenum coord, GLenum pname, GLint* params)
7169b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7170b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7171b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7172b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7173b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7174e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7175b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7176b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
7177b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7178b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7179b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
7180b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7181b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7182b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7183b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7184b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetTexGenivOES;memcpy(ptr, &tmp, 4); ptr += 4;
7185b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7186b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7187b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &coord, 4); ptr += 4;
7188b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
7189b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
7190b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
7191b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7192e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7193e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7194e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7195b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7196b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7197b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetTexGenxvOES_enc(void *self , GLenum coord, GLenum pname, GLfixed* params)
7198b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7199b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7200b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7201b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7202b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7203e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7204b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7205b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
7206b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7207b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7208b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
7209b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7210b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7211b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7212b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7213b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetTexGenxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
7214b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7215b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7216b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &coord, 4); ptr += 4;
7217b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
7218b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
7219b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, params, __size_params);ptr += __size_params;
7220b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7221e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7222e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7223e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7224b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7225b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7226b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glBindVertexArrayOES_enc(void *self , GLuint array)
7227b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7228b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7229b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7230b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7231b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7232e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7233b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7234b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7235b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7236b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
7237b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7238b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7239b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7240b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7241b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glBindVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
7242b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7243b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7244b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &array, 4); ptr += 4;
7245b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7246e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7247e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7248e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7249b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7250b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7251b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays)
7252b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7253b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7254b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7255b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7256b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7257e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7258b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7259b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_arrays =  (n * sizeof(GLuint));
7260b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7261b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7262b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
7263b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7264b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7265b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7266b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7267b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDeleteVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
7268b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7269b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7270b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &n, 4); ptr += 4;
7271b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_arrays; ptr += 4;
7272b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
7273b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7274e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7275e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7276e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7277b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7278b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7279b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays)
7280b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7281b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7282b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7283b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7284b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7285e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7286b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7287b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_arrays =  (n * sizeof(GLuint));
7288b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7289b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
72901d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 0 + 1*4;
7291b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7292b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7293b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7294b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7295b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGenVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
7296b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7297b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7298b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &n, 4); ptr += 4;
7299b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_arrays; ptr += 4;
7300b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7301e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7302e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7303e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7304b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(arrays, __size_arrays);
7305e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(arrays, __size_arrays);
7306e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
7307a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
73081d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7309a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7310a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
7311a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7312e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGenVertexArraysOES: GL communication error, please report this issue to b.android.com.\n");
7313e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
7314e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
7315e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
7316b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7317b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7318b85b2756d1e247f8314bb591700fb175d7346631keunyoungGLboolean glIsVertexArrayOES_enc(void *self , GLuint array)
7319b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7320b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7321b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7322b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7323b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7324e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7325b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7326b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7327b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7328b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
7329b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7330b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7331b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7332b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7333b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glIsVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
7334b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7335b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7336b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &array, 4); ptr += 4;
7337b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7338e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7339e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7340e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7341b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7342b85b2756d1e247f8314bb591700fb175d7346631keunyoung	GLboolean retval;
7343b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(&retval, 1);
7344e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
7345e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
7346a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
73471d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7348a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7349a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
7350a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7351e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glIsVertexArrayOES: GL communication error, please report this issue to b.android.com.\n");
7352e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
7353e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
7354e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
7355b85b2756d1e247f8314bb591700fb175d7346631keunyoung	return retval;
7356b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7357b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7358b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments)
7359b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7360b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7361b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7362b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7363b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7364e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7365b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7366b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_attachments =  (numAttachments * sizeof(const GLenum));
7367b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7368b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7369b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 1*4;
7370b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7371b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7372b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7373b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7374b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDiscardFramebufferEXT;memcpy(ptr, &tmp, 4); ptr += 4;
7375b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7376b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7377b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
7378b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &numAttachments, 4); ptr += 4;
7379b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_attachments; ptr += 4;
7380b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
7381b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7382e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7383e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7384e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7385b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7386b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7387b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glRenderbufferStorageMultisampleIMG_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
7388b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7389b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7390b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7391b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7392b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7393e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7394b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7395b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7396b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7397b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
7398b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7399b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7400b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7401b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7402b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glRenderbufferStorageMultisampleIMG;memcpy(ptr, &tmp, 4); ptr += 4;
7403b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7404b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7405b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
7406b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &samples, 4); ptr += 4;
7407b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &internalformat, 4); ptr += 4;
7408b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
7409b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
7410b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7411e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7412e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7413e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7414b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7415b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7416b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFramebufferTexture2DMultisampleIMG_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
7417b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7418b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7419b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7420b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7421b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7422e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7423b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7424b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7425b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7426b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
7427b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7428b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7429b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7430b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7431b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFramebufferTexture2DMultisampleIMG;memcpy(ptr, &tmp, 4); ptr += 4;
7432b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7433b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7434b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
7435b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &attachment, 4); ptr += 4;
7436b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &textarget, 4); ptr += 4;
7437b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &texture, 4); ptr += 4;
7438b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &level, 4); ptr += 4;
7439b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &samples, 4); ptr += 4;
7440b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7441e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7442e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7443e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7444b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7445b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7446b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDeleteFencesNV_enc(void *self , GLsizei n, const GLuint* fences)
7447b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7448b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7449b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7450b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7451b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7452e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7453b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7454b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_fences =  (n * sizeof(GLuint));
7455b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7456b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7457b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_fences + 1*4;
7458b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7459b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7460b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7461b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7462b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDeleteFencesNV;memcpy(ptr, &tmp, 4); ptr += 4;
7463b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7464b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7465b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &n, 4); ptr += 4;
7466b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_fences; ptr += 4;
7467b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, fences, __size_fences);ptr += __size_fences;
7468b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7469e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7470e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7471e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7472b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7473b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7474b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGenFencesNV_enc(void *self , GLsizei n, GLuint* fences)
7475b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7476b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7477b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7478b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7479b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7480e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7481b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7482b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_fences =  (n * sizeof(GLuint));
7483b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7484b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7485b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + __size_fences + 1*4;
7486b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7487b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7488b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7489b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7490b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGenFencesNV;memcpy(ptr, &tmp, 4); ptr += 4;
7491b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7492b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7493b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &n, 4); ptr += 4;
7494b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_fences; ptr += 4;
7495b85b2756d1e247f8314bb591700fb175d7346631keunyoung	memcpy(ptr, fences, __size_fences);ptr += __size_fences;
7496b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7497e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7498e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7499e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7500b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7501b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7502b85b2756d1e247f8314bb591700fb175d7346631keunyoungGLboolean glIsFenceNV_enc(void *self , GLuint fence)
7503b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7504b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7505b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7506b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7507b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7508e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7509b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7510b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7511b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7512b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
7513b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7514b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7515b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7516b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7517b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glIsFenceNV;memcpy(ptr, &tmp, 4); ptr += 4;
7518b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7519b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7520b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &fence, 4); ptr += 4;
7521b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7522e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7523e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7524e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7525b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7526b85b2756d1e247f8314bb591700fb175d7346631keunyoung	GLboolean retval;
7527b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(&retval, 1);
7528e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
7529e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
7530a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
75311d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7532a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7533a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
7534a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7535e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glIsFenceNV: GL communication error, please report this issue to b.android.com.\n");
7536e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
7537e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
7538e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
7539b85b2756d1e247f8314bb591700fb175d7346631keunyoung	return retval;
7540b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7541b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7542b85b2756d1e247f8314bb591700fb175d7346631keunyoungGLboolean glTestFenceNV_enc(void *self , GLuint fence)
7543b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7544b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7545b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7546b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7547b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7548e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7549b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7550b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7551b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7552b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
7553b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7554b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7555b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7556b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7557b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glTestFenceNV;memcpy(ptr, &tmp, 4); ptr += 4;
7558b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7559b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7560b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &fence, 4); ptr += 4;
7561b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7562e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7563e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7564e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7565b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7566b85b2756d1e247f8314bb591700fb175d7346631keunyoung	GLboolean retval;
7567b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(&retval, 1);
7568e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
7569e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
7570a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
75711d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7572a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7573a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
7574a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7575e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glTestFenceNV: GL communication error, please report this issue to b.android.com.\n");
7576e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
7577e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
7578e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
7579b85b2756d1e247f8314bb591700fb175d7346631keunyoung	return retval;
7580b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7581b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7582b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetFenceivNV_enc(void *self , GLuint fence, GLenum pname, GLint* params)
7583b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7584b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7585b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7586b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7587b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7588e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7589b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7590b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
7591b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7592b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
75931d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 1*4;
7594b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7595b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7596b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7597b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7598b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetFenceivNV;memcpy(ptr, &tmp, 4); ptr += 4;
7599b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7600b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7601b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &fence, 4); ptr += 4;
7602b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
7603b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
7604b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7605e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7606e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7607e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7608b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
7609e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
7610e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
7611a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
76121d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7613a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7614a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
7615a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7616e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetFenceivNV: GL communication error, please report this issue to b.android.com.\n");
7617e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
7618e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
7619e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
7620b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7621b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7622b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glFinishFenceNV_enc(void *self , GLuint fence)
7623b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7624b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7625b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7626b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7627b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7628e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7629b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7630b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7631b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7632b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
7633b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7634b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7635b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7636b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7637b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glFinishFenceNV;memcpy(ptr, &tmp, 4); ptr += 4;
7638b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7639b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7640b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &fence, 4); ptr += 4;
7641b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7642e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7643e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7644e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7645b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7646b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7647b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glSetFenceNV_enc(void *self , GLuint fence, GLenum condition)
7648b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7649b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7650b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7651b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7652b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7653e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7654b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7655b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7656b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7657b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4;
7658b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7659b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7660b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7661b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7662b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glSetFenceNV;memcpy(ptr, &tmp, 4); ptr += 4;
7663b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7664b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7665b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &fence, 4); ptr += 4;
7666b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &condition, 4); ptr += 4;
7667b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7668e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7669e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7670e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7671b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7672b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7673b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetDriverControlsQCOM_enc(void *self , GLint* num, GLsizei size, GLuint* driverControls)
7674b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7675b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7676b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7677b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7678b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7679e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7680b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7681b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_num =  (1 * sizeof(GLint));
7682b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_driverControls =  (size * sizeof(GLuint));
7683b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7684b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
76851d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 0 + 4 + 0 + 2*4;
7686b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7687b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7688b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7689b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7690b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetDriverControlsQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
7691b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7692b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7693b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_num; ptr += 4;
7694b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &size, 4); ptr += 4;
7695b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_driverControls; ptr += 4;
7696b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7697e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7698e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7699e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7700b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(num, __size_num);
7701e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(num, __size_num);
7702b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(driverControls, __size_driverControls);
7703e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(driverControls, __size_driverControls);
7704e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
7705a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
77061d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7707a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7708a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
7709a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7710e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetDriverControlsQCOM: GL communication error, please report this issue to b.android.com.\n");
7711e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
7712e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
7713e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
7714b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7715b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7716b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glGetDriverControlStringQCOM_enc(void *self , GLuint driverControl, GLsizei bufSize, GLsizei* length, GLchar* driverControlString)
7717b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7718b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7719b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7720b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7721b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7722e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7723b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7724b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_length =  (1 * sizeof(GLsizei));
7725b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_driverControlString =  (1 * sizeof(GLchar));
7726b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7727b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
77281d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 0 + 0 + 2*4;
7729b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7730b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7731b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7732b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7733b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glGetDriverControlStringQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
7734b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7735b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7736b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &driverControl, 4); ptr += 4;
7737b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &bufSize, 4); ptr += 4;
7738b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_length; ptr += 4;
7739b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_driverControlString; ptr += 4;
7740b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7741e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7742e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7743e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7744b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(length, __size_length);
7745e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
7746b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(driverControlString, __size_driverControlString);
7747e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(driverControlString, __size_driverControlString);
7748e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
7749a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
77501d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7751a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7752a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
7753a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7754e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glGetDriverControlStringQCOM: GL communication error, please report this issue to b.android.com.\n");
7755e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
7756e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
7757e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
7758b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7759b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7760b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glEnableDriverControlQCOM_enc(void *self , GLuint driverControl)
7761b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7762b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7763b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7764b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7765b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7766e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7767b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7768b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7769b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7770b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
7771b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7772b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7773b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7774b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7775b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glEnableDriverControlQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
7776b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7777b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7778b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &driverControl, 4); ptr += 4;
7779b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7780e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7781e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7782e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7783b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7784b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7785b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glDisableDriverControlQCOM_enc(void *self , GLuint driverControl)
7786b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7787b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7788b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7789b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7790b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7791e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7792b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7793b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7794b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
7795b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
7796b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7797b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7798b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7799b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7800b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glDisableDriverControlQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
7801b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7802b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7803b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &driverControl, 4); ptr += 4;
7804b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7805e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7806e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7807e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7808b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7809b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7810b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glExtGetTexturesQCOM_enc(void *self , GLuint* textures, GLint maxTextures, GLint* numTextures)
7811b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7812b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7813b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7814b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7815b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7816e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7817b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7818b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_textures =  (maxTextures * sizeof(GLuint));
7819b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_numTextures =  (1 * sizeof(GLint));
7820b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7821b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
78221d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 0 + 4 + 0 + 2*4;
7823b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7824b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7825b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7826b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7827b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glExtGetTexturesQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
7828b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7829b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7830b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_textures; ptr += 4;
7831b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &maxTextures, 4); ptr += 4;
7832b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_numTextures; ptr += 4;
7833b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7834e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7835e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7836e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7837b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(textures, __size_textures);
7838e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(textures, __size_textures);
7839b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(numTextures, __size_numTextures);
7840e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(numTextures, __size_numTextures);
7841e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
7842a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
78431d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7844a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7845a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
7846a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7847e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glExtGetTexturesQCOM: GL communication error, please report this issue to b.android.com.\n");
7848e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
7849e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
7850e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
7851b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7852b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7853b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glExtGetBuffersQCOM_enc(void *self , GLuint* buffers, GLint maxBuffers, GLint* numBuffers)
7854b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7855b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7856b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7857b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7858b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7859e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7860b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7861b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_buffers =  (maxBuffers * sizeof(GLuint));
7862b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_numBuffers =  (1 * sizeof(GLint));
7863b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7864b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
78651d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 0 + 4 + 0 + 2*4;
7866b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7867b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7868b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7869b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7870b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glExtGetBuffersQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
7871b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7872b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7873b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
7874b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &maxBuffers, 4); ptr += 4;
7875b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_numBuffers; ptr += 4;
7876b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7877e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7878e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7879e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7880b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(buffers, __size_buffers);
7881e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buffers, __size_buffers);
7882b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(numBuffers, __size_numBuffers);
7883e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(numBuffers, __size_numBuffers);
7884e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
7885a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
78861d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7887a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7888a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
7889a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7890e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glExtGetBuffersQCOM: GL communication error, please report this issue to b.android.com.\n");
7891e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
7892e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
7893e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
7894b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7895b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7896b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glExtGetRenderbuffersQCOM_enc(void *self , GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers)
7897b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7898b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7899b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7900b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7901b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7902e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7903b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7904b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_renderbuffers =  (maxRenderbuffers * sizeof(GLuint));
7905b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_numRenderbuffers =  (1 * sizeof(GLint));
7906b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7907b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
79081d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 0 + 4 + 0 + 2*4;
7909b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7910b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7911b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7912b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7913b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glExtGetRenderbuffersQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
7914b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7915b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7916b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
7917b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &maxRenderbuffers, 4); ptr += 4;
7918b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_numRenderbuffers; ptr += 4;
7919b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7920e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7921e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7922e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7923b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(renderbuffers, __size_renderbuffers);
7924e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(renderbuffers, __size_renderbuffers);
7925b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(numRenderbuffers, __size_numRenderbuffers);
7926e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(numRenderbuffers, __size_numRenderbuffers);
7927e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
7928a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
79291d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7930a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7931a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
7932a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7933e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glExtGetRenderbuffersQCOM: GL communication error, please report this issue to b.android.com.\n");
7934e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
7935e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
7936e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
7937b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7938b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7939b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glExtGetFramebuffersQCOM_enc(void *self , GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers)
7940b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7941b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7942b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7943b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7944b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7945e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7946b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7947b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_framebuffers =  (maxFramebuffers * sizeof(GLuint));
7948b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_numFramebuffers =  (1 * sizeof(GLint));
7949b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7950b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
79511d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 0 + 4 + 0 + 2*4;
7952b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7953b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7954b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7955b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7956b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glExtGetFramebuffersQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
7957b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
7958b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7959b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
7960b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &maxFramebuffers, 4); ptr += 4;
7961b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_numFramebuffers; ptr += 4;
7962b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
7963e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
7964e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
7965e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
7966b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(framebuffers, __size_framebuffers);
7967e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(framebuffers, __size_framebuffers);
7968b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(numFramebuffers, __size_numFramebuffers);
7969e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(numFramebuffers, __size_numFramebuffers);
7970e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
7971a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
79721d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
7973a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
7974a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
7975a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
7976e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glExtGetFramebuffersQCOM: GL communication error, please report this issue to b.android.com.\n");
7977e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
7978e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
7979e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
7980b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
7981b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7982b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glExtGetTexLevelParameterivQCOM_enc(void *self , GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params)
7983b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
7984b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7985b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
7986b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
7987b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
7988e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
7989b85b2756d1e247f8314bb591700fb175d7346631keunyoung
7990b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
7991b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
7992b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
79931d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 0 + 1*4;
7994b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
7995b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
7996b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
7997b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
7998b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glExtGetTexLevelParameterivQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
7999b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
8000b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8001b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &texture, 4); ptr += 4;
8002b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &face, 4); ptr += 4;
8003b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &level, 4); ptr += 4;
8004b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
8005b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_params; ptr += 4;
8006b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
8007e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8008e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8009e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
8010b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(params, __size_params);
8011e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
8012e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
8013a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
80141d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8015a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8016a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
8017a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8018e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glExtGetTexLevelParameterivQCOM: GL communication error, please report this issue to b.android.com.\n");
8019e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
8020e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
8021e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
8022b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
8023b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8024b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glExtTexObjectStateOverrideiQCOM_enc(void *self , GLenum target, GLenum pname, GLint param)
8025b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
8026b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8027b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
8028b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
8029b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8030e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
8031b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8032b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
8033b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
8034b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4;
8035b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8036b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8037b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
8038b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
8039b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glExtTexObjectStateOverrideiQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
8040b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
8041b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8042b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
8043b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &pname, 4); ptr += 4;
8044b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &param, 4); ptr += 4;
8045b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
8046e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8047e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8048e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
8049b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
8050b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8051b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glExtGetTexSubImageQCOM_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid* texels)
8052b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
8053b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8054b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
8055b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
8056b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8057e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
8058b85b2756d1e247f8314bb591700fb175d7346631keunyoung
80590f788d82239c1a9a1922bd8fc140464058cc52e7David 'Digit' Turner	const unsigned int __size_texels =  (depth * glesv1_enc::pixelDataSize(self, width, height, format, type, 0));
8060b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
8061b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
80621d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 0 + 1*4;
8063b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8064b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8065b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
8066b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
8067b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glExtGetTexSubImageQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
8068b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
8069b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8070b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &target, 4); ptr += 4;
8071b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &level, 4); ptr += 4;
8072b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &xoffset, 4); ptr += 4;
8073b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &yoffset, 4); ptr += 4;
8074b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &zoffset, 4); ptr += 4;
8075b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
8076b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
8077b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &depth, 4); ptr += 4;
8078b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &format, 4); ptr += 4;
8079b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &type, 4); ptr += 4;
8080b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_texels; ptr += 4;
8081b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
8082e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8083e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8084e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
8085b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(texels, __size_texels);
8086e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(texels, __size_texels);
8087e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
8088a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
80891d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8090a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8091a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
8092a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8093e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glExtGetTexSubImageQCOM: GL communication error, please report this issue to b.android.com.\n");
8094e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
8095e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
8096e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
8097b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
8098b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8099b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glExtGetShadersQCOM_enc(void *self , GLuint* shaders, GLint maxShaders, GLint* numShaders)
8100b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
8101b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8102b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
8103b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
8104b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8105e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
8106b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8107b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_shaders =  (maxShaders * sizeof(GLuint));
8108b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_numShaders =  (1 * sizeof(GLint));
8109b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
8110b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
81111d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 0 + 4 + 0 + 2*4;
8112b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8113b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8114b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
8115b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
8116b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glExtGetShadersQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
8117b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
8118b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8119b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_shaders; ptr += 4;
8120b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &maxShaders, 4); ptr += 4;
8121b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_numShaders; ptr += 4;
8122b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
8123e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8124e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8125e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
8126b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(shaders, __size_shaders);
8127e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(shaders, __size_shaders);
8128b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(numShaders, __size_numShaders);
8129e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(numShaders, __size_numShaders);
8130e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
8131a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
81321d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8133a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8134a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
8135a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8136e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glExtGetShadersQCOM: GL communication error, please report this issue to b.android.com.\n");
8137e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
8138e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
8139e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
8140b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
8141b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8142b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glExtGetProgramsQCOM_enc(void *self , GLuint* programs, GLint maxPrograms, GLint* numPrograms)
8143b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
8144b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8145b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
8146b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
8147b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8148e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
8149b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8150b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_programs =  (maxPrograms * sizeof(GLuint));
8151b85b2756d1e247f8314bb591700fb175d7346631keunyoung	const unsigned int __size_numPrograms =  (1 * sizeof(GLint));
8152b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
8153b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
81541d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi	 const size_t sizeWithoutChecksum = 8 + 0 + 4 + 0 + 2*4;
8155b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8156b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8157b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
8158b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
8159b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glExtGetProgramsQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
8160b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
8161b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8162b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_programs; ptr += 4;
8163b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &maxPrograms, 4); ptr += 4;
8164b85b2756d1e247f8314bb591700fb175d7346631keunyoung	*(unsigned int *)(ptr) = __size_numPrograms; ptr += 4;
8165b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
8166e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8167e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8168e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
8169b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(programs, __size_programs);
8170e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(programs, __size_programs);
8171b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(numPrograms, __size_numPrograms);
8172e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(numPrograms, __size_numPrograms);
8173e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
8174a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
81751d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8176a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8177a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
8178a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8179e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glExtGetProgramsQCOM: GL communication error, please report this issue to b.android.com.\n");
8180e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
8181e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
8182e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
8183b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
8184b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8185b85b2756d1e247f8314bb591700fb175d7346631keunyoungGLboolean glExtIsProgramBinaryQCOM_enc(void *self , GLuint program)
8186b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
8187b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8188b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
8189b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
8190b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8191e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
8192b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8193b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
8194b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
8195b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
8196b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8197b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8198b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
8199b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
8200b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glExtIsProgramBinaryQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
8201b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
8202b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8203b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &program, 4); ptr += 4;
8204b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8205e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8206e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8207e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
8208b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
8209b85b2756d1e247f8314bb591700fb175d7346631keunyoung	GLboolean retval;
8210b85b2756d1e247f8314bb591700fb175d7346631keunyoung	stream->readback(&retval, 1);
8211e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
8212e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) {
8213a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		unsigned char *checksumBufPtr = NULL;
82141d1fc8db52fe3e4e40ad7a260998d9947f75c3d0Yurii Zubrytskyi		unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize];
8215a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (checksumSize > 0) checksumBufPtr = &checksumBuf[0];
8216a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		stream->readback(checksumBufPtr, checksumSize);
8217a9aee9fd692df6f432b131f9468b48d7378b231cYahan Zhou		if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) {
8218e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			ALOGE("glExtIsProgramBinaryQCOM: GL communication error, please report this issue to b.android.com.\n");
8219e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou			abort();
8220e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou		}
8221e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	}
8222b85b2756d1e247f8314bb591700fb175d7346631keunyoung	return retval;
8223b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
8224b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8225b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glStartTilingQCOM_enc(void *self , GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask)
8226b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
8227b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8228b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
8229b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
8230b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8231e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
8232b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8233b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
8234b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
8235b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
8236b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8237b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8238b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
8239b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
8240b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glStartTilingQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
8241b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
8242b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8243b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &x, 4); ptr += 4;
8244b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &y, 4); ptr += 4;
8245b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &width, 4); ptr += 4;
8246b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &height, 4); ptr += 4;
8247b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &preserveMask, 4); ptr += 4;
8248b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
8249e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8250e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8251e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
8252b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
8253b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8254b85b2756d1e247f8314bb591700fb175d7346631keunyoungvoid glEndTilingQCOM_enc(void *self , GLbitfield preserveMask)
8255b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
8256b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8257b85b2756d1e247f8314bb591700fb175d7346631keunyoung	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
8258b85b2756d1e247f8314bb591700fb175d7346631keunyoung	IOStream *stream = ctx->m_stream;
8259b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
8260e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	bool useChecksum = checksumCalculator->getVersion() > 0;
8261b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8262b85b2756d1e247f8314bb591700fb175d7346631keunyoung	 unsigned char *ptr;
8263b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 unsigned char *buf;
8264b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t sizeWithoutChecksum = 8 + 4;
8265b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t checksumSize = checksumCalculator->checksumByteSize();
8266b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	 const size_t totalSize = sizeWithoutChecksum + checksumSize;
8267b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	buf = stream->alloc(totalSize);
8268b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	ptr = buf;
8269b85b2756d1e247f8314bb591700fb175d7346631keunyoung	int tmp = OP_glEndTilingQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
8270b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	memcpy(ptr, &totalSize, 4);  ptr += 4;
8271b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8272b85b2756d1e247f8314bb591700fb175d7346631keunyoung		memcpy(ptr, &preserveMask, 4); ptr += 4;
8273b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou
8274e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
8275e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou	if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
8276e222fd545669310b91ffb4603f1c6b16f847c077Yahan Zhou
8277b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
8278b85b2756d1e247f8314bb591700fb175d7346631keunyoung
82794f91c8e9a9023d0cc07bc7db985a80a212294461David 'Digit' Turner}  // namespace
82803372af9afa4a2a7e9d050eb27f39132ef0fbd156David 'Digit' Turner
8281b7f09089a7f736a070825d7130601d74b150d147Yahan Zhougl_encoder_context_t::gl_encoder_context_t(IOStream *stream, ChecksumCalculator *checksumCalculator)
8282b85b2756d1e247f8314bb591700fb175d7346631keunyoung{
8283b85b2756d1e247f8314bb591700fb175d7346631keunyoung	m_stream = stream;
8284b7f09089a7f736a070825d7130601d74b150d147Yahan Zhou	m_checksumCalculator = checksumCalculator;
8285b85b2756d1e247f8314bb591700fb175d7346631keunyoung
82863afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glAlphaFunc = &glAlphaFunc_enc;
82873afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClearColor = &glClearColor_enc;
82883afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClearDepthf = &glClearDepthf_enc;
82893afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClipPlanef = &glClipPlanef_enc;
82903afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glColor4f = &glColor4f_enc;
82913afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDepthRangef = &glDepthRangef_enc;
82923afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFogf = &glFogf_enc;
82933afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFogfv = &glFogfv_enc;
82943afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFrustumf = &glFrustumf_enc;
82953afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetClipPlanef = &glGetClipPlanef_enc;
82963afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetFloatv = &glGetFloatv_enc;
82973afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetLightfv = &glGetLightfv_enc;
82983afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetMaterialfv = &glGetMaterialfv_enc;
82993afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetTexEnvfv = &glGetTexEnvfv_enc;
83003afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetTexParameterfv = &glGetTexParameterfv_enc;
83013afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLightModelf = &glLightModelf_enc;
83023afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLightModelfv = &glLightModelfv_enc;
83033afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLightf = &glLightf_enc;
83043afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLightfv = &glLightfv_enc;
83053afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLineWidth = &glLineWidth_enc;
83063afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLoadMatrixf = &glLoadMatrixf_enc;
83073afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMaterialf = &glMaterialf_enc;
83083afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMaterialfv = &glMaterialfv_enc;
83093afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMultMatrixf = &glMultMatrixf_enc;
83103afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMultiTexCoord4f = &glMultiTexCoord4f_enc;
83113afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glNormal3f = &glNormal3f_enc;
83123afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glOrthof = &glOrthof_enc;
83133afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPointParameterf = &glPointParameterf_enc;
83143afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPointParameterfv = &glPointParameterfv_enc;
83153afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPointSize = &glPointSize_enc;
83163afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPolygonOffset = &glPolygonOffset_enc;
83173afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glRotatef = &glRotatef_enc;
83183afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glScalef = &glScalef_enc;
83193afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexEnvf = &glTexEnvf_enc;
83203afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexEnvfv = &glTexEnvfv_enc;
83213afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexParameterf = &glTexParameterf_enc;
83223afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexParameterfv = &glTexParameterfv_enc;
83233afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTranslatef = &glTranslatef_enc;
83243afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glActiveTexture = &glActiveTexture_enc;
83253afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glAlphaFuncx = &glAlphaFuncx_enc;
83263afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glBindBuffer = &glBindBuffer_enc;
83273afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glBindTexture = &glBindTexture_enc;
83283afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glBlendFunc = &glBlendFunc_enc;
83293afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glBufferData = &glBufferData_enc;
83303afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glBufferSubData = &glBufferSubData_enc;
83313afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClear = &glClear_enc;
83323afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClearColorx = &glClearColorx_enc;
83333afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClearDepthx = &glClearDepthx_enc;
83343afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClearStencil = &glClearStencil_enc;
83353afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClientActiveTexture = &glClientActiveTexture_enc;
83363afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glColor4ub = &glColor4ub_enc;
83373afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glColor4x = &glColor4x_enc;
83383afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glColorMask = &glColorMask_enc;
83393afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glColorPointer = (glColorPointer_client_proc_t) &enc_unsupported;
83403afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glCompressedTexImage2D = &glCompressedTexImage2D_enc;
83413afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glCompressedTexSubImage2D = &glCompressedTexSubImage2D_enc;
83423afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glCopyTexImage2D = &glCopyTexImage2D_enc;
83433afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glCopyTexSubImage2D = &glCopyTexSubImage2D_enc;
83443afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glCullFace = &glCullFace_enc;
83453afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDeleteBuffers = &glDeleteBuffers_enc;
83463afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDeleteTextures = &glDeleteTextures_enc;
83473afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDepthFunc = &glDepthFunc_enc;
83483afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDepthMask = &glDepthMask_enc;
83493afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDepthRangex = &glDepthRangex_enc;
83503afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDisable = &glDisable_enc;
83513afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDisableClientState = &glDisableClientState_enc;
83523afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDrawArrays = &glDrawArrays_enc;
83533afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDrawElements = (glDrawElements_client_proc_t) &enc_unsupported;
83543afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glEnable = &glEnable_enc;
83553afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glEnableClientState = &glEnableClientState_enc;
83563afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFinish = &glFinish_enc;
83573afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFlush = &glFlush_enc;
83583afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFogx = &glFogx_enc;
83593afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFogxv = &glFogxv_enc;
83603afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFrontFace = &glFrontFace_enc;
83613afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFrustumx = &glFrustumx_enc;
83623afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetBooleanv = &glGetBooleanv_enc;
83633afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetBufferParameteriv = &glGetBufferParameteriv_enc;
83643afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClipPlanex = &glClipPlanex_enc;
83653afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGenBuffers = &glGenBuffers_enc;
83663afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGenTextures = &glGenTextures_enc;
83673afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetError = &glGetError_enc;
83683afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetFixedv = &glGetFixedv_enc;
83693afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetIntegerv = &glGetIntegerv_enc;
83703afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetLightxv = &glGetLightxv_enc;
83713afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetMaterialxv = &glGetMaterialxv_enc;
83723afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetPointerv = (glGetPointerv_client_proc_t) &enc_unsupported;
83733afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetString = (glGetString_client_proc_t) &enc_unsupported;
83743afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetTexEnviv = &glGetTexEnviv_enc;
83753afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetTexEnvxv = &glGetTexEnvxv_enc;
83763afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetTexParameteriv = &glGetTexParameteriv_enc;
83773afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetTexParameterxv = &glGetTexParameterxv_enc;
83783afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glHint = &glHint_enc;
83793afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glIsBuffer = &glIsBuffer_enc;
83803afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glIsEnabled = &glIsEnabled_enc;
83813afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glIsTexture = &glIsTexture_enc;
83823afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLightModelx = &glLightModelx_enc;
83833afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLightModelxv = &glLightModelxv_enc;
83843afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLightx = &glLightx_enc;
83853afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLightxv = &glLightxv_enc;
83863afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLineWidthx = &glLineWidthx_enc;
83873afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLoadIdentity = &glLoadIdentity_enc;
83883afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLoadMatrixx = &glLoadMatrixx_enc;
83893afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLogicOp = &glLogicOp_enc;
83903afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMaterialx = &glMaterialx_enc;
83913afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMaterialxv = &glMaterialxv_enc;
83923afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMatrixMode = &glMatrixMode_enc;
83933afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMultMatrixx = &glMultMatrixx_enc;
83943afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMultiTexCoord4x = &glMultiTexCoord4x_enc;
83953afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glNormal3x = &glNormal3x_enc;
83963afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glNormalPointer = (glNormalPointer_client_proc_t) &enc_unsupported;
83973afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glOrthox = &glOrthox_enc;
83983afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPixelStorei = &glPixelStorei_enc;
83993afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPointParameterx = &glPointParameterx_enc;
84003afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPointParameterxv = &glPointParameterxv_enc;
84013afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPointSizex = &glPointSizex_enc;
84023afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPolygonOffsetx = &glPolygonOffsetx_enc;
84033afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPopMatrix = &glPopMatrix_enc;
84043afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPushMatrix = &glPushMatrix_enc;
84053afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glReadPixels = &glReadPixels_enc;
84063afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glRotatex = &glRotatex_enc;
84073afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glSampleCoverage = &glSampleCoverage_enc;
84083afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glSampleCoveragex = &glSampleCoveragex_enc;
84093afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glScalex = &glScalex_enc;
84103afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glScissor = &glScissor_enc;
84113afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glShadeModel = &glShadeModel_enc;
84123afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glStencilFunc = &glStencilFunc_enc;
84133afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glStencilMask = &glStencilMask_enc;
84143afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glStencilOp = &glStencilOp_enc;
84153afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexCoordPointer = (glTexCoordPointer_client_proc_t) &enc_unsupported;
84163afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexEnvi = &glTexEnvi_enc;
84173afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexEnvx = &glTexEnvx_enc;
84183afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexEnviv = &glTexEnviv_enc;
84193afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexEnvxv = &glTexEnvxv_enc;
84203afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexImage2D = &glTexImage2D_enc;
84213afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexParameteri = &glTexParameteri_enc;
84223afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexParameterx = &glTexParameterx_enc;
84233afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexParameteriv = &glTexParameteriv_enc;
84243afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexParameterxv = &glTexParameterxv_enc;
84253afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexSubImage2D = &glTexSubImage2D_enc;
84263afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTranslatex = &glTranslatex_enc;
84273afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glVertexPointer = (glVertexPointer_client_proc_t) &enc_unsupported;
84283afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glViewport = &glViewport_enc;
84293afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPointSizePointerOES = (glPointSizePointerOES_client_proc_t) &enc_unsupported;
84303afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glVertexPointerOffset = &glVertexPointerOffset_enc;
84313afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glColorPointerOffset = &glColorPointerOffset_enc;
84323afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glNormalPointerOffset = &glNormalPointerOffset_enc;
84333afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPointSizePointerOffset = &glPointSizePointerOffset_enc;
84343afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexCoordPointerOffset = &glTexCoordPointerOffset_enc;
84353afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glWeightPointerOffset = &glWeightPointerOffset_enc;
84363afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMatrixIndexPointerOffset = &glMatrixIndexPointerOffset_enc;
84373afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glVertexPointerData = &glVertexPointerData_enc;
84383afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glColorPointerData = &glColorPointerData_enc;
84393afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glNormalPointerData = &glNormalPointerData_enc;
84403afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexCoordPointerData = &glTexCoordPointerData_enc;
84413afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPointSizePointerData = &glPointSizePointerData_enc;
84423afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glWeightPointerData = &glWeightPointerData_enc;
84433afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMatrixIndexPointerData = &glMatrixIndexPointerData_enc;
84443afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDrawElementsOffset = &glDrawElementsOffset_enc;
84453afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDrawElementsData = &glDrawElementsData_enc;
84463afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetCompressedTextureFormats = &glGetCompressedTextureFormats_enc;
84473afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFinishRoundTrip = &glFinishRoundTrip_enc;
84483afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glBlendEquationSeparateOES = &glBlendEquationSeparateOES_enc;
84493afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glBlendFuncSeparateOES = &glBlendFuncSeparateOES_enc;
84503afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glBlendEquationOES = &glBlendEquationOES_enc;
84513afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDrawTexsOES = &glDrawTexsOES_enc;
84523afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDrawTexiOES = &glDrawTexiOES_enc;
84533afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDrawTexxOES = &glDrawTexxOES_enc;
84543afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDrawTexsvOES = &glDrawTexsvOES_enc;
84553afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDrawTexivOES = &glDrawTexivOES_enc;
84563afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDrawTexxvOES = &glDrawTexxvOES_enc;
84573afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDrawTexfOES = &glDrawTexfOES_enc;
84583afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDrawTexfvOES = &glDrawTexfvOES_enc;
84593afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glEGLImageTargetTexture2DOES = &glEGLImageTargetTexture2DOES_enc;
84603afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glEGLImageTargetRenderbufferStorageOES = &glEGLImageTargetRenderbufferStorageOES_enc;
84613afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glAlphaFuncxOES = &glAlphaFuncxOES_enc;
84623afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClearColorxOES = &glClearColorxOES_enc;
84633afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClearDepthxOES = &glClearDepthxOES_enc;
84643afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClipPlanexOES = &glClipPlanexOES_enc;
84653afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClipPlanexIMG = &glClipPlanexIMG_enc;
84663afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glColor4xOES = &glColor4xOES_enc;
84673afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDepthRangexOES = &glDepthRangexOES_enc;
84683afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFogxOES = &glFogxOES_enc;
84693afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFogxvOES = &glFogxvOES_enc;
84703afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFrustumxOES = &glFrustumxOES_enc;
84713afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetClipPlanexOES = &glGetClipPlanexOES_enc;
84723afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetClipPlanex = &glGetClipPlanex_enc;
84733afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetFixedvOES = &glGetFixedvOES_enc;
84743afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetLightxvOES = &glGetLightxvOES_enc;
84753afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetMaterialxvOES = &glGetMaterialxvOES_enc;
84763afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetTexEnvxvOES = &glGetTexEnvxvOES_enc;
84773afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetTexParameterxvOES = &glGetTexParameterxvOES_enc;
84783afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLightModelxOES = &glLightModelxOES_enc;
84793afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLightModelxvOES = &glLightModelxvOES_enc;
84803afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLightxOES = &glLightxOES_enc;
84813afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLightxvOES = &glLightxvOES_enc;
84823afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLineWidthxOES = &glLineWidthxOES_enc;
84833afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLoadMatrixxOES = &glLoadMatrixxOES_enc;
84843afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMaterialxOES = &glMaterialxOES_enc;
84853afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMaterialxvOES = &glMaterialxvOES_enc;
84863afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMultMatrixxOES = &glMultMatrixxOES_enc;
84873afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMultiTexCoord4xOES = &glMultiTexCoord4xOES_enc;
84883afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glNormal3xOES = &glNormal3xOES_enc;
84893afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glOrthoxOES = &glOrthoxOES_enc;
84903afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPointParameterxOES = &glPointParameterxOES_enc;
84913afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPointParameterxvOES = &glPointParameterxvOES_enc;
84923afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPointSizexOES = &glPointSizexOES_enc;
84933afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glPolygonOffsetxOES = &glPolygonOffsetxOES_enc;
84943afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glRotatexOES = &glRotatexOES_enc;
84953afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glSampleCoveragexOES = &glSampleCoveragexOES_enc;
84963afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glScalexOES = &glScalexOES_enc;
84973afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexEnvxOES = &glTexEnvxOES_enc;
84983afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexEnvxvOES = &glTexEnvxvOES_enc;
84993afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexParameterxOES = &glTexParameterxOES_enc;
85003afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexParameterxvOES = &glTexParameterxvOES_enc;
85013afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTranslatexOES = &glTranslatexOES_enc;
85023afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glIsRenderbufferOES = &glIsRenderbufferOES_enc;
85033afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glBindRenderbufferOES = &glBindRenderbufferOES_enc;
85043afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDeleteRenderbuffersOES = &glDeleteRenderbuffersOES_enc;
85053afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGenRenderbuffersOES = &glGenRenderbuffersOES_enc;
85063afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glRenderbufferStorageOES = &glRenderbufferStorageOES_enc;
85073afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetRenderbufferParameterivOES = &glGetRenderbufferParameterivOES_enc;
85083afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glIsFramebufferOES = &glIsFramebufferOES_enc;
85093afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glBindFramebufferOES = &glBindFramebufferOES_enc;
85103afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDeleteFramebuffersOES = &glDeleteFramebuffersOES_enc;
85113afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGenFramebuffersOES = &glGenFramebuffersOES_enc;
85123afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glCheckFramebufferStatusOES = &glCheckFramebufferStatusOES_enc;
85133afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFramebufferRenderbufferOES = &glFramebufferRenderbufferOES_enc;
85143afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFramebufferTexture2DOES = &glFramebufferTexture2DOES_enc;
85153afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetFramebufferAttachmentParameterivOES = &glGetFramebufferAttachmentParameterivOES_enc;
85163afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGenerateMipmapOES = &glGenerateMipmapOES_enc;
85173afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMapBufferOES = (glMapBufferOES_client_proc_t) &enc_unsupported;
85183afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glUnmapBufferOES = &glUnmapBufferOES_enc;
85193afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetBufferPointervOES = (glGetBufferPointervOES_client_proc_t) &enc_unsupported;
85203afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glCurrentPaletteMatrixOES = &glCurrentPaletteMatrixOES_enc;
85213afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glLoadPaletteFromModelViewMatrixOES = &glLoadPaletteFromModelViewMatrixOES_enc;
85223afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMatrixIndexPointerOES = (glMatrixIndexPointerOES_client_proc_t) &enc_unsupported;
85233afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glWeightPointerOES = (glWeightPointerOES_client_proc_t) &enc_unsupported;
85243afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glQueryMatrixxOES = &glQueryMatrixxOES_enc;
85253afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDepthRangefOES = &glDepthRangefOES_enc;
85263afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFrustumfOES = &glFrustumfOES_enc;
85273afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glOrthofOES = &glOrthofOES_enc;
85283afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClipPlanefOES = &glClipPlanefOES_enc;
85293afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClipPlanefIMG = &glClipPlanefIMG_enc;
85303afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetClipPlanefOES = &glGetClipPlanefOES_enc;
85313afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glClearDepthfOES = &glClearDepthfOES_enc;
85323afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexGenfOES = &glTexGenfOES_enc;
85333afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexGenfvOES = &glTexGenfvOES_enc;
85343afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexGeniOES = &glTexGeniOES_enc;
85353afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexGenivOES = &glTexGenivOES_enc;
85363afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexGenxOES = &glTexGenxOES_enc;
85373afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTexGenxvOES = &glTexGenxvOES_enc;
85383afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetTexGenfvOES = &glGetTexGenfvOES_enc;
85393afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetTexGenivOES = &glGetTexGenivOES_enc;
85403afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetTexGenxvOES = &glGetTexGenxvOES_enc;
85413afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glBindVertexArrayOES = &glBindVertexArrayOES_enc;
85423afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDeleteVertexArraysOES = &glDeleteVertexArraysOES_enc;
85433afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGenVertexArraysOES = &glGenVertexArraysOES_enc;
85443afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glIsVertexArrayOES = &glIsVertexArrayOES_enc;
85453afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDiscardFramebufferEXT = &glDiscardFramebufferEXT_enc;
85463afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMultiDrawArraysEXT = (glMultiDrawArraysEXT_client_proc_t) &enc_unsupported;
85473afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMultiDrawElementsEXT = (glMultiDrawElementsEXT_client_proc_t) &enc_unsupported;
85483afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMultiDrawArraysSUN = (glMultiDrawArraysSUN_client_proc_t) &enc_unsupported;
85493afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glMultiDrawElementsSUN = (glMultiDrawElementsSUN_client_proc_t) &enc_unsupported;
85503afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glRenderbufferStorageMultisampleIMG = &glRenderbufferStorageMultisampleIMG_enc;
85513afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFramebufferTexture2DMultisampleIMG = &glFramebufferTexture2DMultisampleIMG_enc;
85523afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDeleteFencesNV = &glDeleteFencesNV_enc;
85533afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGenFencesNV = &glGenFencesNV_enc;
85543afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glIsFenceNV = &glIsFenceNV_enc;
85553afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glTestFenceNV = &glTestFenceNV_enc;
85563afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetFenceivNV = &glGetFenceivNV_enc;
85573afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glFinishFenceNV = &glFinishFenceNV_enc;
85583afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glSetFenceNV = &glSetFenceNV_enc;
85593afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetDriverControlsQCOM = &glGetDriverControlsQCOM_enc;
85603afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glGetDriverControlStringQCOM = &glGetDriverControlStringQCOM_enc;
85613afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glEnableDriverControlQCOM = &glEnableDriverControlQCOM_enc;
85623afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glDisableDriverControlQCOM = &glDisableDriverControlQCOM_enc;
85633afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glExtGetTexturesQCOM = &glExtGetTexturesQCOM_enc;
85643afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glExtGetBuffersQCOM = &glExtGetBuffersQCOM_enc;
85653afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glExtGetRenderbuffersQCOM = &glExtGetRenderbuffersQCOM_enc;
85663afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glExtGetFramebuffersQCOM = &glExtGetFramebuffersQCOM_enc;
85673afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glExtGetTexLevelParameterivQCOM = &glExtGetTexLevelParameterivQCOM_enc;
85683afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glExtTexObjectStateOverrideiQCOM = &glExtTexObjectStateOverrideiQCOM_enc;
85693afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glExtGetTexSubImageQCOM = &glExtGetTexSubImageQCOM_enc;
85703afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glExtGetBufferPointervQCOM = (glExtGetBufferPointervQCOM_client_proc_t) &enc_unsupported;
85713afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glExtGetShadersQCOM = &glExtGetShadersQCOM_enc;
85723afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glExtGetProgramsQCOM = &glExtGetProgramsQCOM_enc;
85733afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glExtIsProgramBinaryQCOM = &glExtIsProgramBinaryQCOM_enc;
85743afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glExtGetProgramBinarySourceQCOM = (glExtGetProgramBinarySourceQCOM_client_proc_t) &enc_unsupported;
85753afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glStartTilingQCOM = &glStartTilingQCOM_enc;
85763afd44bdb52af3b26b2691e5f0164c16f2936e90David 'Digit' Turner	this->glEndTilingQCOM = &glEndTilingQCOM_enc;
8577b85b2756d1e247f8314bb591700fb175d7346631keunyoung}
8578b85b2756d1e247f8314bb591700fb175d7346631keunyoung
8579