1 // Generated Code - DO NOT EDIT !!
2 // generated by 'emugen'
3
4
5 #include <string.h>
6 #include "magma_opcodes.h"
7
8 #include "magma_dec.h"
9
10
11 #include "ProtocolUtils.h"
12
13 #include "ChecksumCalculatorThreadInfo.h"
14
15 #include "host-common/logging.h"
16
17 #include <stdio.h>
18
19 namespace gfxstream {
20
21 typedef unsigned int tsize_t; // Target "size_t", which is 32-bit for now. It may or may not be the same as host's size_t when emugen is compiled.
22
23 #ifdef CHECK_GL_ERRORS
24 # define SET_LASTCALL(name) sprintf(lastCall, #name)
25 #else
26 # define SET_LASTCALL(name)
27 #endif
decode(void * buf,size_t len,IOStream * stream,ChecksumCalculator * checksumCalc)28 size_t magma_decoder_context_t::decode(void *buf, size_t len, IOStream *stream, ChecksumCalculator* checksumCalc) {
29 if (len < 8) return 0;
30 #ifdef CHECK_GL_ERRORS
31 char lastCall[256] = {0};
32 #endif
33 unsigned char *ptr = (unsigned char *)buf;
34 const unsigned char* const end = (const unsigned char*)buf + len;
35 const size_t checksumSize = checksumCalc->checksumByteSize();
36 const bool useChecksum = checksumSize > 0;
37 while (end - ptr >= 8) {
38 uint32_t opcode = *(uint32_t *)ptr;
39 uint32_t packetLen = *(uint32_t *)(ptr + 4);
40 if (end - ptr < packetLen) return ptr - (unsigned char*)buf;
41 switch(opcode) {
42 case OP_magma_device_import: {
43 android::base::beginTrace("magma_device_import decode");
44 magma_handle_t var_device_channel = Unpack<magma_handle_t,uint32_t>(ptr + 8);
45 uint32_t size_device_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 4);
46 if (useChecksum) {
47 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + 4, ptr + 8 + 4 + 4, checksumSize,
48 "magma_decoder_context_t::decode, OP_magma_device_import: GL checksumCalculator failure\n");
49 }
50 size_t totalTmpSize = size_device_out;
51 totalTmpSize += sizeof(magma_status_t);
52 totalTmpSize += checksumSize;
53 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
54 OutputBuffer outptr_device_out(&tmpBuf[0], size_device_out);
55 DECODER_DEBUG_LOG("magma(%p): magma_device_import(device_channel:0x%x device_out:%p(%u) )", stream, var_device_channel, (magma_device_t*)(outptr_device_out.get()), size_device_out);
56 *(magma_status_t *)(&tmpBuf[0 + size_device_out]) = this->magma_device_import(var_device_channel, (magma_device_t*)(outptr_device_out.get()));
57 outptr_device_out.flush();
58 if (useChecksum) {
59 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
60 }
61 stream->flush();
62 SET_LASTCALL("magma_device_import");
63 android::base::endTrace();
64 break;
65 }
66 case OP_magma_device_release: {
67 android::base::beginTrace("magma_device_release decode");
68 magma_device_t var_device = Unpack<magma_device_t,uint64_t>(ptr + 8);
69 if (useChecksum) {
70 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize,
71 "magma_decoder_context_t::decode, OP_magma_device_release: GL checksumCalculator failure\n");
72 }
73 DECODER_DEBUG_LOG("magma(%p): magma_device_release(device:%lu )", stream, var_device);
74 this->magma_device_release(var_device);
75 SET_LASTCALL("magma_device_release");
76 android::base::endTrace();
77 break;
78 }
79 case OP_magma_device_query: {
80 android::base::beginTrace("magma_device_query decode");
81 magma_device_t var_device = Unpack<magma_device_t,uint64_t>(ptr + 8);
82 uint64_t var_id = Unpack<uint64_t,uint64_t>(ptr + 8 + 8);
83 uint32_t size_result_buffer_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 8);
84 uint32_t size_result_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 8 + 4);
85 if (useChecksum) {
86 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 8 + 4 + 4, ptr + 8 + 8 + 8 + 4 + 4, checksumSize,
87 "magma_decoder_context_t::decode, OP_magma_device_query: GL checksumCalculator failure\n");
88 }
89 size_t totalTmpSize = size_result_buffer_out;
90 totalTmpSize += size_result_out;
91 totalTmpSize += sizeof(magma_status_t);
92 totalTmpSize += checksumSize;
93 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
94 OutputBuffer outptr_result_buffer_out(&tmpBuf[0], size_result_buffer_out);
95 OutputBuffer outptr_result_out(&tmpBuf[0 + size_result_buffer_out], size_result_out);
96 DECODER_DEBUG_LOG("magma(%p): magma_device_query(device:%lu id:%lu result_buffer_out:%p(%u) result_out:%p(%u) )", stream, var_device, var_id, (magma_handle_t*)(outptr_result_buffer_out.get()), size_result_buffer_out, (uint64_t*)(outptr_result_out.get()), size_result_out);
97 *(magma_status_t *)(&tmpBuf[0 + size_result_buffer_out + size_result_out]) = this->magma_device_query(var_device, var_id, (magma_handle_t*)(outptr_result_buffer_out.get()), (uint64_t*)(outptr_result_out.get()));
98 outptr_result_buffer_out.flush();
99 outptr_result_out.flush();
100 if (useChecksum) {
101 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
102 }
103 stream->flush();
104 SET_LASTCALL("magma_device_query");
105 android::base::endTrace();
106 break;
107 }
108 case OP_magma_device_create_connection: {
109 android::base::beginTrace("magma_device_create_connection decode");
110 magma_device_t var_device = Unpack<magma_device_t,uint64_t>(ptr + 8);
111 uint32_t size_connection_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8);
112 if (useChecksum) {
113 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4, ptr + 8 + 8 + 4, checksumSize,
114 "magma_decoder_context_t::decode, OP_magma_device_create_connection: GL checksumCalculator failure\n");
115 }
116 size_t totalTmpSize = size_connection_out;
117 totalTmpSize += sizeof(magma_status_t);
118 totalTmpSize += checksumSize;
119 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
120 OutputBuffer outptr_connection_out(&tmpBuf[0], size_connection_out);
121 DECODER_DEBUG_LOG("magma(%p): magma_device_create_connection(device:%lu connection_out:%p(%u) )", stream, var_device, (magma_connection_t*)(outptr_connection_out.get()), size_connection_out);
122 *(magma_status_t *)(&tmpBuf[0 + size_connection_out]) = this->magma_device_create_connection(var_device, (magma_connection_t*)(outptr_connection_out.get()));
123 outptr_connection_out.flush();
124 if (useChecksum) {
125 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
126 }
127 stream->flush();
128 SET_LASTCALL("magma_device_create_connection");
129 android::base::endTrace();
130 break;
131 }
132 case OP_magma_connection_release: {
133 android::base::beginTrace("magma_connection_release decode");
134 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
135 if (useChecksum) {
136 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize,
137 "magma_decoder_context_t::decode, OP_magma_connection_release: GL checksumCalculator failure\n");
138 }
139 DECODER_DEBUG_LOG("magma(%p): magma_connection_release(connection:%lu )", stream, var_connection);
140 this->magma_connection_release(var_connection);
141 SET_LASTCALL("magma_connection_release");
142 android::base::endTrace();
143 break;
144 }
145 case OP_magma_connection_get_error: {
146 android::base::beginTrace("magma_connection_get_error decode");
147 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
148 if (useChecksum) {
149 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize,
150 "magma_decoder_context_t::decode, OP_magma_connection_get_error: GL checksumCalculator failure\n");
151 }
152 size_t totalTmpSize = sizeof(magma_status_t);
153 totalTmpSize += checksumSize;
154 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
155 DECODER_DEBUG_LOG("magma(%p): magma_connection_get_error(connection:%lu )", stream, var_connection);
156 *(magma_status_t *)(&tmpBuf[0]) = this->magma_connection_get_error(var_connection);
157 if (useChecksum) {
158 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
159 }
160 stream->flush();
161 SET_LASTCALL("magma_connection_get_error");
162 android::base::endTrace();
163 break;
164 }
165 case OP_magma_connection_create_context: {
166 android::base::beginTrace("magma_connection_create_context decode");
167 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
168 uint32_t size_context_id_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8);
169 if (useChecksum) {
170 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4, ptr + 8 + 8 + 4, checksumSize,
171 "magma_decoder_context_t::decode, OP_magma_connection_create_context: GL checksumCalculator failure\n");
172 }
173 size_t totalTmpSize = size_context_id_out;
174 totalTmpSize += sizeof(magma_status_t);
175 totalTmpSize += checksumSize;
176 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
177 OutputBuffer outptr_context_id_out(&tmpBuf[0], size_context_id_out);
178 DECODER_DEBUG_LOG("magma(%p): magma_connection_create_context(connection:%lu context_id_out:%p(%u) )", stream, var_connection, (uint32_t*)(outptr_context_id_out.get()), size_context_id_out);
179 *(magma_status_t *)(&tmpBuf[0 + size_context_id_out]) = this->magma_connection_create_context(var_connection, (uint32_t*)(outptr_context_id_out.get()));
180 outptr_context_id_out.flush();
181 if (useChecksum) {
182 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
183 }
184 stream->flush();
185 SET_LASTCALL("magma_connection_create_context");
186 android::base::endTrace();
187 break;
188 }
189 case OP_magma_connection_release_context: {
190 android::base::beginTrace("magma_connection_release_context decode");
191 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
192 uint32_t var_context_id = Unpack<uint32_t,uint32_t>(ptr + 8 + 8);
193 if (useChecksum) {
194 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4, ptr + 8 + 8 + 4, checksumSize,
195 "magma_decoder_context_t::decode, OP_magma_connection_release_context: GL checksumCalculator failure\n");
196 }
197 DECODER_DEBUG_LOG("magma(%p): magma_connection_release_context(connection:%lu context_id:%u )", stream, var_connection, var_context_id);
198 this->magma_connection_release_context(var_connection, var_context_id);
199 SET_LASTCALL("magma_connection_release_context");
200 android::base::endTrace();
201 break;
202 }
203 case OP_magma_connection_create_buffer: {
204 android::base::beginTrace("magma_connection_create_buffer decode");
205 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
206 uint64_t var_size = Unpack<uint64_t,uint64_t>(ptr + 8 + 8);
207 uint32_t size_size_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 8);
208 uint32_t size_buffer_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 8 + 4);
209 uint32_t size_id_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 8 + 4 + 4);
210 if (useChecksum) {
211 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 8 + 4 + 4 + 4, ptr + 8 + 8 + 8 + 4 + 4 + 4, checksumSize,
212 "magma_decoder_context_t::decode, OP_magma_connection_create_buffer: GL checksumCalculator failure\n");
213 }
214 size_t totalTmpSize = size_size_out;
215 totalTmpSize += size_buffer_out;
216 totalTmpSize += size_id_out;
217 totalTmpSize += sizeof(magma_status_t);
218 totalTmpSize += checksumSize;
219 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
220 OutputBuffer outptr_size_out(&tmpBuf[0], size_size_out);
221 OutputBuffer outptr_buffer_out(&tmpBuf[0 + size_size_out], size_buffer_out);
222 OutputBuffer outptr_id_out(&tmpBuf[0 + size_size_out + size_buffer_out], size_id_out);
223 DECODER_DEBUG_LOG("magma(%p): magma_connection_create_buffer(connection:%lu size:%lu size_out:%p(%u) buffer_out:%p(%u) id_out:%p(%u) )", stream, var_connection, var_size, (uint64_t*)(outptr_size_out.get()), size_size_out, (magma_buffer_t*)(outptr_buffer_out.get()), size_buffer_out, (magma_buffer_id_t*)(outptr_id_out.get()), size_id_out);
224 *(magma_status_t *)(&tmpBuf[0 + size_size_out + size_buffer_out + size_id_out]) = this->magma_connection_create_buffer(var_connection, var_size, (uint64_t*)(outptr_size_out.get()), (magma_buffer_t*)(outptr_buffer_out.get()), (magma_buffer_id_t*)(outptr_id_out.get()));
225 outptr_size_out.flush();
226 outptr_buffer_out.flush();
227 outptr_id_out.flush();
228 if (useChecksum) {
229 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
230 }
231 stream->flush();
232 SET_LASTCALL("magma_connection_create_buffer");
233 android::base::endTrace();
234 break;
235 }
236 case OP_magma_connection_release_buffer: {
237 android::base::beginTrace("magma_connection_release_buffer decode");
238 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
239 magma_buffer_t var_buffer = Unpack<magma_buffer_t,uint64_t>(ptr + 8 + 8);
240 if (useChecksum) {
241 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 8, ptr + 8 + 8 + 8, checksumSize,
242 "magma_decoder_context_t::decode, OP_magma_connection_release_buffer: GL checksumCalculator failure\n");
243 }
244 DECODER_DEBUG_LOG("magma(%p): magma_connection_release_buffer(connection:%lu buffer:%lu )", stream, var_connection, var_buffer);
245 this->magma_connection_release_buffer(var_connection, var_buffer);
246 SET_LASTCALL("magma_connection_release_buffer");
247 android::base::endTrace();
248 break;
249 }
250 case OP_magma_connection_import_buffer: {
251 android::base::beginTrace("magma_connection_import_buffer decode");
252 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
253 magma_handle_t var_buffer_handle = Unpack<magma_handle_t,uint32_t>(ptr + 8 + 8);
254 uint32_t size_size_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 4);
255 uint32_t size_buffer_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 4 + 4);
256 uint32_t size_id_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 4 + 4 + 4);
257 if (useChecksum) {
258 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 4 + 4 + 4, ptr + 8 + 8 + 4 + 4 + 4 + 4, checksumSize,
259 "magma_decoder_context_t::decode, OP_magma_connection_import_buffer: GL checksumCalculator failure\n");
260 }
261 size_t totalTmpSize = size_size_out;
262 totalTmpSize += size_buffer_out;
263 totalTmpSize += size_id_out;
264 totalTmpSize += sizeof(magma_status_t);
265 totalTmpSize += checksumSize;
266 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
267 OutputBuffer outptr_size_out(&tmpBuf[0], size_size_out);
268 OutputBuffer outptr_buffer_out(&tmpBuf[0 + size_size_out], size_buffer_out);
269 OutputBuffer outptr_id_out(&tmpBuf[0 + size_size_out + size_buffer_out], size_id_out);
270 DECODER_DEBUG_LOG("magma(%p): magma_connection_import_buffer(connection:%lu buffer_handle:0x%x size_out:%p(%u) buffer_out:%p(%u) id_out:%p(%u) )", stream, var_connection, var_buffer_handle, (uint64_t*)(outptr_size_out.get()), size_size_out, (magma_buffer_t*)(outptr_buffer_out.get()), size_buffer_out, (magma_buffer_id_t*)(outptr_id_out.get()), size_id_out);
271 *(magma_status_t *)(&tmpBuf[0 + size_size_out + size_buffer_out + size_id_out]) = this->magma_connection_import_buffer(var_connection, var_buffer_handle, (uint64_t*)(outptr_size_out.get()), (magma_buffer_t*)(outptr_buffer_out.get()), (magma_buffer_id_t*)(outptr_id_out.get()));
272 outptr_size_out.flush();
273 outptr_buffer_out.flush();
274 outptr_id_out.flush();
275 if (useChecksum) {
276 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
277 }
278 stream->flush();
279 SET_LASTCALL("magma_connection_import_buffer");
280 android::base::endTrace();
281 break;
282 }
283 case OP_magma_connection_create_semaphore: {
284 android::base::beginTrace("magma_connection_create_semaphore decode");
285 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
286 uint32_t size_semaphore_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8);
287 uint32_t size_id_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 4);
288 if (useChecksum) {
289 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 4, ptr + 8 + 8 + 4 + 4, checksumSize,
290 "magma_decoder_context_t::decode, OP_magma_connection_create_semaphore: GL checksumCalculator failure\n");
291 }
292 size_t totalTmpSize = size_semaphore_out;
293 totalTmpSize += size_id_out;
294 totalTmpSize += sizeof(magma_status_t);
295 totalTmpSize += checksumSize;
296 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
297 OutputBuffer outptr_semaphore_out(&tmpBuf[0], size_semaphore_out);
298 OutputBuffer outptr_id_out(&tmpBuf[0 + size_semaphore_out], size_id_out);
299 DECODER_DEBUG_LOG("magma(%p): magma_connection_create_semaphore(connection:%lu semaphore_out:%p(%u) id_out:%p(%u) )", stream, var_connection, (magma_semaphore_t*)(outptr_semaphore_out.get()), size_semaphore_out, (magma_semaphore_id_t*)(outptr_id_out.get()), size_id_out);
300 *(magma_status_t *)(&tmpBuf[0 + size_semaphore_out + size_id_out]) = this->magma_connection_create_semaphore(var_connection, (magma_semaphore_t*)(outptr_semaphore_out.get()), (magma_semaphore_id_t*)(outptr_id_out.get()));
301 outptr_semaphore_out.flush();
302 outptr_id_out.flush();
303 if (useChecksum) {
304 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
305 }
306 stream->flush();
307 SET_LASTCALL("magma_connection_create_semaphore");
308 android::base::endTrace();
309 break;
310 }
311 case OP_magma_connection_release_semaphore: {
312 android::base::beginTrace("magma_connection_release_semaphore decode");
313 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
314 magma_semaphore_t var_semaphore = Unpack<magma_semaphore_t,uint64_t>(ptr + 8 + 8);
315 if (useChecksum) {
316 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 8, ptr + 8 + 8 + 8, checksumSize,
317 "magma_decoder_context_t::decode, OP_magma_connection_release_semaphore: GL checksumCalculator failure\n");
318 }
319 DECODER_DEBUG_LOG("magma(%p): magma_connection_release_semaphore(connection:%lu semaphore:%lu )", stream, var_connection, var_semaphore);
320 this->magma_connection_release_semaphore(var_connection, var_semaphore);
321 SET_LASTCALL("magma_connection_release_semaphore");
322 android::base::endTrace();
323 break;
324 }
325 case OP_magma_connection_import_semaphore: {
326 android::base::beginTrace("magma_connection_import_semaphore decode");
327 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
328 magma_handle_t var_semaphore_handle = Unpack<magma_handle_t,uint32_t>(ptr + 8 + 8);
329 uint32_t size_semaphore_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 4);
330 uint32_t size_id_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 4 + 4);
331 if (useChecksum) {
332 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 4 + 4, ptr + 8 + 8 + 4 + 4 + 4, checksumSize,
333 "magma_decoder_context_t::decode, OP_magma_connection_import_semaphore: GL checksumCalculator failure\n");
334 }
335 size_t totalTmpSize = size_semaphore_out;
336 totalTmpSize += size_id_out;
337 totalTmpSize += sizeof(magma_status_t);
338 totalTmpSize += checksumSize;
339 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
340 OutputBuffer outptr_semaphore_out(&tmpBuf[0], size_semaphore_out);
341 OutputBuffer outptr_id_out(&tmpBuf[0 + size_semaphore_out], size_id_out);
342 DECODER_DEBUG_LOG("magma(%p): magma_connection_import_semaphore(connection:%lu semaphore_handle:0x%x semaphore_out:%p(%u) id_out:%p(%u) )", stream, var_connection, var_semaphore_handle, (magma_semaphore_t*)(outptr_semaphore_out.get()), size_semaphore_out, (magma_semaphore_id_t*)(outptr_id_out.get()), size_id_out);
343 *(magma_status_t *)(&tmpBuf[0 + size_semaphore_out + size_id_out]) = this->magma_connection_import_semaphore(var_connection, var_semaphore_handle, (magma_semaphore_t*)(outptr_semaphore_out.get()), (magma_semaphore_id_t*)(outptr_id_out.get()));
344 outptr_semaphore_out.flush();
345 outptr_id_out.flush();
346 if (useChecksum) {
347 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
348 }
349 stream->flush();
350 SET_LASTCALL("magma_connection_import_semaphore");
351 android::base::endTrace();
352 break;
353 }
354 case OP_magma_connection_perform_buffer_op: {
355 android::base::beginTrace("magma_connection_perform_buffer_op decode");
356 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
357 magma_buffer_t var_buffer = Unpack<magma_buffer_t,uint64_t>(ptr + 8 + 8);
358 uint32_t var_options = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 8);
359 uint64_t var_start_offset = Unpack<uint64_t,uint64_t>(ptr + 8 + 8 + 8 + 4);
360 uint64_t var_length = Unpack<uint64_t,uint64_t>(ptr + 8 + 8 + 8 + 4 + 8);
361 if (useChecksum) {
362 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 8 + 4 + 8 + 8, ptr + 8 + 8 + 8 + 4 + 8 + 8, checksumSize,
363 "magma_decoder_context_t::decode, OP_magma_connection_perform_buffer_op: GL checksumCalculator failure\n");
364 }
365 size_t totalTmpSize = sizeof(magma_status_t);
366 totalTmpSize += checksumSize;
367 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
368 DECODER_DEBUG_LOG("magma(%p): magma_connection_perform_buffer_op(connection:%lu buffer:%lu options:%u start_offset:%lu length:%lu )", stream, var_connection, var_buffer, var_options, var_start_offset, var_length);
369 *(magma_status_t *)(&tmpBuf[0]) = this->magma_connection_perform_buffer_op(var_connection, var_buffer, var_options, var_start_offset, var_length);
370 if (useChecksum) {
371 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
372 }
373 stream->flush();
374 SET_LASTCALL("magma_connection_perform_buffer_op");
375 android::base::endTrace();
376 break;
377 }
378 case OP_magma_connection_map_buffer: {
379 android::base::beginTrace("magma_connection_map_buffer decode");
380 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
381 uint64_t var_hw_va = Unpack<uint64_t,uint64_t>(ptr + 8 + 8);
382 magma_buffer_t var_buffer = Unpack<magma_buffer_t,uint64_t>(ptr + 8 + 8 + 8);
383 uint64_t var_offset = Unpack<uint64_t,uint64_t>(ptr + 8 + 8 + 8 + 8);
384 uint64_t var_length = Unpack<uint64_t,uint64_t>(ptr + 8 + 8 + 8 + 8 + 8);
385 uint64_t var_map_flags = Unpack<uint64_t,uint64_t>(ptr + 8 + 8 + 8 + 8 + 8 + 8);
386 if (useChecksum) {
387 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 8 + 8 + 8 + 8 + 8, ptr + 8 + 8 + 8 + 8 + 8 + 8 + 8, checksumSize,
388 "magma_decoder_context_t::decode, OP_magma_connection_map_buffer: GL checksumCalculator failure\n");
389 }
390 size_t totalTmpSize = sizeof(magma_status_t);
391 totalTmpSize += checksumSize;
392 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
393 DECODER_DEBUG_LOG("magma(%p): magma_connection_map_buffer(connection:%lu hw_va:%lu buffer:%lu offset:%lu length:%lu map_flags:%lu )", stream, var_connection, var_hw_va, var_buffer, var_offset, var_length, var_map_flags);
394 *(magma_status_t *)(&tmpBuf[0]) = this->magma_connection_map_buffer(var_connection, var_hw_va, var_buffer, var_offset, var_length, var_map_flags);
395 if (useChecksum) {
396 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
397 }
398 stream->flush();
399 SET_LASTCALL("magma_connection_map_buffer");
400 android::base::endTrace();
401 break;
402 }
403 case OP_magma_connection_unmap_buffer: {
404 android::base::beginTrace("magma_connection_unmap_buffer decode");
405 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
406 uint64_t var_hw_va = Unpack<uint64_t,uint64_t>(ptr + 8 + 8);
407 magma_buffer_t var_buffer = Unpack<magma_buffer_t,uint64_t>(ptr + 8 + 8 + 8);
408 if (useChecksum) {
409 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 8 + 8, ptr + 8 + 8 + 8 + 8, checksumSize,
410 "magma_decoder_context_t::decode, OP_magma_connection_unmap_buffer: GL checksumCalculator failure\n");
411 }
412 DECODER_DEBUG_LOG("magma(%p): magma_connection_unmap_buffer(connection:%lu hw_va:%lu buffer:%lu )", stream, var_connection, var_hw_va, var_buffer);
413 this->magma_connection_unmap_buffer(var_connection, var_hw_va, var_buffer);
414 SET_LASTCALL("magma_connection_unmap_buffer");
415 android::base::endTrace();
416 break;
417 }
418 case OP_magma_connection_execute_command: {
419 android::base::beginTrace("magma_connection_execute_command decode");
420 uint32_t size_parameters __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
421 InputBuffer inptr_parameters(ptr + 8 + 4, size_parameters);
422 uint64_t var_parameter_count = Unpack<uint64_t,uint64_t>(ptr + 8 + 4 + size_parameters);
423 if (useChecksum) {
424 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_parameters + 8, ptr + 8 + 4 + size_parameters + 8, checksumSize,
425 "magma_decoder_context_t::decode, OP_magma_connection_execute_command: GL checksumCalculator failure\n");
426 }
427 size_t totalTmpSize = size_parameters;
428 totalTmpSize += sizeof(magma_status_t);
429 totalTmpSize += checksumSize;
430 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
431 OutputBuffer outptr_parameters(&tmpBuf[0], size_parameters);
432 memcpy(outptr_parameters.get(), inptr_parameters.get(), size_parameters);
433 DECODER_DEBUG_LOG("magma(%p): magma_connection_execute_command(parameters:%p(%u) parameter_count:%lu )", stream, (uint64_t*)(outptr_parameters.get()), size_parameters, var_parameter_count);
434 *(magma_status_t *)(&tmpBuf[0 + size_parameters]) = this->magma_connection_execute_command((uint64_t*)(outptr_parameters.get()), var_parameter_count);
435 outptr_parameters.flush();
436 if (useChecksum) {
437 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
438 }
439 stream->flush();
440 SET_LASTCALL("magma_connection_execute_command");
441 android::base::endTrace();
442 break;
443 }
444 case OP_magma_connection_execute_immediate_commands: {
445 android::base::beginTrace("magma_connection_execute_immediate_commands decode");
446 uint32_t size_parameters __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
447 InputBuffer inptr_parameters(ptr + 8 + 4, size_parameters);
448 uint64_t var_parameter_count = Unpack<uint64_t,uint64_t>(ptr + 8 + 4 + size_parameters);
449 if (useChecksum) {
450 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_parameters + 8, ptr + 8 + 4 + size_parameters + 8, checksumSize,
451 "magma_decoder_context_t::decode, OP_magma_connection_execute_immediate_commands: GL checksumCalculator failure\n");
452 }
453 size_t totalTmpSize = size_parameters;
454 totalTmpSize += sizeof(magma_status_t);
455 totalTmpSize += checksumSize;
456 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
457 OutputBuffer outptr_parameters(&tmpBuf[0], size_parameters);
458 memcpy(outptr_parameters.get(), inptr_parameters.get(), size_parameters);
459 DECODER_DEBUG_LOG("magma(%p): magma_connection_execute_immediate_commands(parameters:%p(%u) parameter_count:%lu )", stream, (uint64_t*)(outptr_parameters.get()), size_parameters, var_parameter_count);
460 *(magma_status_t *)(&tmpBuf[0 + size_parameters]) = this->magma_connection_execute_immediate_commands((uint64_t*)(outptr_parameters.get()), var_parameter_count);
461 outptr_parameters.flush();
462 if (useChecksum) {
463 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
464 }
465 stream->flush();
466 SET_LASTCALL("magma_connection_execute_immediate_commands");
467 android::base::endTrace();
468 break;
469 }
470 case OP_magma_connection_flush: {
471 android::base::beginTrace("magma_connection_flush decode");
472 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
473 if (useChecksum) {
474 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize,
475 "magma_decoder_context_t::decode, OP_magma_connection_flush: GL checksumCalculator failure\n");
476 }
477 size_t totalTmpSize = sizeof(magma_status_t);
478 totalTmpSize += checksumSize;
479 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
480 DECODER_DEBUG_LOG("magma(%p): magma_connection_flush(connection:%lu )", stream, var_connection);
481 *(magma_status_t *)(&tmpBuf[0]) = this->magma_connection_flush(var_connection);
482 if (useChecksum) {
483 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
484 }
485 stream->flush();
486 SET_LASTCALL("magma_connection_flush");
487 android::base::endTrace();
488 break;
489 }
490 case OP_magma_connection_get_notification_channel_handle: {
491 android::base::beginTrace("magma_connection_get_notification_channel_handle decode");
492 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
493 if (useChecksum) {
494 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize,
495 "magma_decoder_context_t::decode, OP_magma_connection_get_notification_channel_handle: GL checksumCalculator failure\n");
496 }
497 size_t totalTmpSize = sizeof(magma_handle_t);
498 totalTmpSize += checksumSize;
499 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
500 DECODER_DEBUG_LOG("magma(%p): magma_connection_get_notification_channel_handle(connection:%lu )", stream, var_connection);
501 *(magma_handle_t *)(&tmpBuf[0]) = this->magma_connection_get_notification_channel_handle(var_connection);
502 if (useChecksum) {
503 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
504 }
505 stream->flush();
506 SET_LASTCALL("magma_connection_get_notification_channel_handle");
507 android::base::endTrace();
508 break;
509 }
510 case OP_magma_connection_read_notification_channel: {
511 android::base::beginTrace("magma_connection_read_notification_channel decode");
512 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
513 uint32_t size_buffer __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8);
514 uint64_t var_buffer_size = Unpack<uint64_t,uint64_t>(ptr + 8 + 8 + 4);
515 uint32_t size_buffer_size_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 4 + 8);
516 uint32_t size_more_data_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 4 + 8 + 4);
517 if (useChecksum) {
518 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 8 + 4 + 4, ptr + 8 + 8 + 4 + 8 + 4 + 4, checksumSize,
519 "magma_decoder_context_t::decode, OP_magma_connection_read_notification_channel: GL checksumCalculator failure\n");
520 }
521 size_t totalTmpSize = size_buffer;
522 totalTmpSize += size_buffer_size_out;
523 totalTmpSize += size_more_data_out;
524 totalTmpSize += sizeof(magma_status_t);
525 totalTmpSize += checksumSize;
526 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
527 OutputBuffer outptr_buffer(&tmpBuf[0], size_buffer);
528 OutputBuffer outptr_buffer_size_out(&tmpBuf[0 + size_buffer], size_buffer_size_out);
529 OutputBuffer outptr_more_data_out(&tmpBuf[0 + size_buffer + size_buffer_size_out], size_more_data_out);
530 DECODER_DEBUG_LOG("magma(%p): magma_connection_read_notification_channel(connection:%lu buffer:%p(%u) buffer_size:%lu buffer_size_out:%p(%u) more_data_out:%p(%u) )", stream, var_connection, (void*)(outptr_buffer.get()), size_buffer, var_buffer_size, (uint64_t*)(outptr_buffer_size_out.get()), size_buffer_size_out, (magma_bool_t*)(outptr_more_data_out.get()), size_more_data_out);
531 *(magma_status_t *)(&tmpBuf[0 + size_buffer + size_buffer_size_out + size_more_data_out]) = this->magma_connection_read_notification_channel(var_connection, (void*)(outptr_buffer.get()), var_buffer_size, (uint64_t*)(outptr_buffer_size_out.get()), (magma_bool_t*)(outptr_more_data_out.get()));
532 outptr_buffer.flush();
533 outptr_buffer_size_out.flush();
534 outptr_more_data_out.flush();
535 if (useChecksum) {
536 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
537 }
538 stream->flush();
539 SET_LASTCALL("magma_connection_read_notification_channel");
540 android::base::endTrace();
541 break;
542 }
543 case OP_magma_buffer_clean_cache: {
544 android::base::beginTrace("magma_buffer_clean_cache decode");
545 magma_buffer_t var_buffer = Unpack<magma_buffer_t,uint64_t>(ptr + 8);
546 uint64_t var_offset = Unpack<uint64_t,uint64_t>(ptr + 8 + 8);
547 uint64_t var_size = Unpack<uint64_t,uint64_t>(ptr + 8 + 8 + 8);
548 magma_cache_operation_t var_operation = Unpack<magma_cache_operation_t,uint32_t>(ptr + 8 + 8 + 8 + 8);
549 if (useChecksum) {
550 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 8 + 8 + 4, ptr + 8 + 8 + 8 + 8 + 4, checksumSize,
551 "magma_decoder_context_t::decode, OP_magma_buffer_clean_cache: GL checksumCalculator failure\n");
552 }
553 size_t totalTmpSize = sizeof(magma_status_t);
554 totalTmpSize += checksumSize;
555 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
556 DECODER_DEBUG_LOG("magma(%p): magma_buffer_clean_cache(buffer:%lu offset:%lu size:%lu operation:%d )", stream, var_buffer, var_offset, var_size, var_operation);
557 *(magma_status_t *)(&tmpBuf[0]) = this->magma_buffer_clean_cache(var_buffer, var_offset, var_size, var_operation);
558 if (useChecksum) {
559 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
560 }
561 stream->flush();
562 SET_LASTCALL("magma_buffer_clean_cache");
563 android::base::endTrace();
564 break;
565 }
566 case OP_magma_buffer_set_cache_policy: {
567 android::base::beginTrace("magma_buffer_set_cache_policy decode");
568 magma_buffer_t var_buffer = Unpack<magma_buffer_t,uint64_t>(ptr + 8);
569 magma_cache_policy_t var_policy = Unpack<magma_cache_policy_t,uint32_t>(ptr + 8 + 8);
570 if (useChecksum) {
571 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4, ptr + 8 + 8 + 4, checksumSize,
572 "magma_decoder_context_t::decode, OP_magma_buffer_set_cache_policy: GL checksumCalculator failure\n");
573 }
574 size_t totalTmpSize = sizeof(magma_status_t);
575 totalTmpSize += checksumSize;
576 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
577 DECODER_DEBUG_LOG("magma(%p): magma_buffer_set_cache_policy(buffer:%lu policy:%d )", stream, var_buffer, var_policy);
578 *(magma_status_t *)(&tmpBuf[0]) = this->magma_buffer_set_cache_policy(var_buffer, var_policy);
579 if (useChecksum) {
580 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
581 }
582 stream->flush();
583 SET_LASTCALL("magma_buffer_set_cache_policy");
584 android::base::endTrace();
585 break;
586 }
587 case OP_magma_buffer_get_cache_policy: {
588 android::base::beginTrace("magma_buffer_get_cache_policy decode");
589 magma_buffer_t var_buffer = Unpack<magma_buffer_t,uint64_t>(ptr + 8);
590 uint32_t size_cache_policy_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8);
591 if (useChecksum) {
592 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4, ptr + 8 + 8 + 4, checksumSize,
593 "magma_decoder_context_t::decode, OP_magma_buffer_get_cache_policy: GL checksumCalculator failure\n");
594 }
595 size_t totalTmpSize = size_cache_policy_out;
596 totalTmpSize += sizeof(magma_status_t);
597 totalTmpSize += checksumSize;
598 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
599 OutputBuffer outptr_cache_policy_out(&tmpBuf[0], size_cache_policy_out);
600 DECODER_DEBUG_LOG("magma(%p): magma_buffer_get_cache_policy(buffer:%lu cache_policy_out:%p(%u) )", stream, var_buffer, (magma_cache_policy_t*)(outptr_cache_policy_out.get()), size_cache_policy_out);
601 *(magma_status_t *)(&tmpBuf[0 + size_cache_policy_out]) = this->magma_buffer_get_cache_policy(var_buffer, (magma_cache_policy_t*)(outptr_cache_policy_out.get()));
602 outptr_cache_policy_out.flush();
603 if (useChecksum) {
604 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
605 }
606 stream->flush();
607 SET_LASTCALL("magma_buffer_get_cache_policy");
608 android::base::endTrace();
609 break;
610 }
611 case OP_magma_buffer_set_name: {
612 android::base::beginTrace("magma_buffer_set_name decode");
613 magma_buffer_t var_buffer = Unpack<magma_buffer_t,uint64_t>(ptr + 8);
614 uint32_t size_name __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8);
615 InputBuffer inptr_name(ptr + 8 + 8 + 4, size_name);
616 uint64_t var_name_size = Unpack<uint64_t,uint64_t>(ptr + 8 + 8 + 4 + size_name);
617 if (useChecksum) {
618 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + size_name + 8, ptr + 8 + 8 + 4 + size_name + 8, checksumSize,
619 "magma_decoder_context_t::decode, OP_magma_buffer_set_name: GL checksumCalculator failure\n");
620 }
621 size_t totalTmpSize = sizeof(magma_status_t);
622 totalTmpSize += checksumSize;
623 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
624 DECODER_DEBUG_LOG("magma(%p): magma_buffer_set_name(buffer:%lu name:%p(%u) name_size:%lu )", stream, var_buffer, (void*)(inptr_name.get()), size_name, var_name_size);
625 *(magma_status_t *)(&tmpBuf[0]) = this->magma_buffer_set_name(var_buffer, (void*)(inptr_name.get()), var_name_size);
626 if (useChecksum) {
627 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
628 }
629 stream->flush();
630 SET_LASTCALL("magma_buffer_set_name");
631 android::base::endTrace();
632 break;
633 }
634 case OP_magma_buffer_get_info: {
635 android::base::beginTrace("magma_buffer_get_info decode");
636 uint32_t size_parameters __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
637 InputBuffer inptr_parameters(ptr + 8 + 4, size_parameters);
638 uint64_t var_parameter_count = Unpack<uint64_t,uint64_t>(ptr + 8 + 4 + size_parameters);
639 if (useChecksum) {
640 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_parameters + 8, ptr + 8 + 4 + size_parameters + 8, checksumSize,
641 "magma_decoder_context_t::decode, OP_magma_buffer_get_info: GL checksumCalculator failure\n");
642 }
643 size_t totalTmpSize = size_parameters;
644 totalTmpSize += sizeof(magma_status_t);
645 totalTmpSize += checksumSize;
646 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
647 OutputBuffer outptr_parameters(&tmpBuf[0], size_parameters);
648 memcpy(outptr_parameters.get(), inptr_parameters.get(), size_parameters);
649 DECODER_DEBUG_LOG("magma(%p): magma_buffer_get_info(parameters:%p(%u) parameter_count:%lu )", stream, (uint64_t*)(outptr_parameters.get()), size_parameters, var_parameter_count);
650 *(magma_status_t *)(&tmpBuf[0 + size_parameters]) = this->magma_buffer_get_info((uint64_t*)(outptr_parameters.get()), var_parameter_count);
651 outptr_parameters.flush();
652 if (useChecksum) {
653 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
654 }
655 stream->flush();
656 SET_LASTCALL("magma_buffer_get_info");
657 android::base::endTrace();
658 break;
659 }
660 case OP_magma_buffer_get_handle: {
661 android::base::beginTrace("magma_buffer_get_handle decode");
662 magma_buffer_t var_buffer = Unpack<magma_buffer_t,uint64_t>(ptr + 8);
663 uint32_t size_handle_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8);
664 if (useChecksum) {
665 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4, ptr + 8 + 8 + 4, checksumSize,
666 "magma_decoder_context_t::decode, OP_magma_buffer_get_handle: GL checksumCalculator failure\n");
667 }
668 size_t totalTmpSize = size_handle_out;
669 totalTmpSize += sizeof(magma_status_t);
670 totalTmpSize += checksumSize;
671 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
672 OutputBuffer outptr_handle_out(&tmpBuf[0], size_handle_out);
673 DECODER_DEBUG_LOG("magma(%p): magma_buffer_get_handle(buffer:%lu handle_out:%p(%u) )", stream, var_buffer, (magma_handle_t*)(outptr_handle_out.get()), size_handle_out);
674 *(magma_status_t *)(&tmpBuf[0 + size_handle_out]) = this->magma_buffer_get_handle(var_buffer, (magma_handle_t*)(outptr_handle_out.get()));
675 outptr_handle_out.flush();
676 if (useChecksum) {
677 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
678 }
679 stream->flush();
680 SET_LASTCALL("magma_buffer_get_handle");
681 android::base::endTrace();
682 break;
683 }
684 case OP_magma_buffer_export: {
685 android::base::beginTrace("magma_buffer_export decode");
686 magma_buffer_t var_buffer = Unpack<magma_buffer_t,uint64_t>(ptr + 8);
687 uint32_t size_buffer_handle_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8);
688 if (useChecksum) {
689 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4, ptr + 8 + 8 + 4, checksumSize,
690 "magma_decoder_context_t::decode, OP_magma_buffer_export: GL checksumCalculator failure\n");
691 }
692 size_t totalTmpSize = size_buffer_handle_out;
693 totalTmpSize += sizeof(magma_status_t);
694 totalTmpSize += checksumSize;
695 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
696 OutputBuffer outptr_buffer_handle_out(&tmpBuf[0], size_buffer_handle_out);
697 DECODER_DEBUG_LOG("magma(%p): magma_buffer_export(buffer:%lu buffer_handle_out:%p(%u) )", stream, var_buffer, (magma_handle_t*)(outptr_buffer_handle_out.get()), size_buffer_handle_out);
698 *(magma_status_t *)(&tmpBuf[0 + size_buffer_handle_out]) = this->magma_buffer_export(var_buffer, (magma_handle_t*)(outptr_buffer_handle_out.get()));
699 outptr_buffer_handle_out.flush();
700 if (useChecksum) {
701 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
702 }
703 stream->flush();
704 SET_LASTCALL("magma_buffer_export");
705 android::base::endTrace();
706 break;
707 }
708 case OP_magma_semaphore_signal: {
709 android::base::beginTrace("magma_semaphore_signal decode");
710 magma_semaphore_t var_semaphore = Unpack<magma_semaphore_t,uint64_t>(ptr + 8);
711 if (useChecksum) {
712 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize,
713 "magma_decoder_context_t::decode, OP_magma_semaphore_signal: GL checksumCalculator failure\n");
714 }
715 DECODER_DEBUG_LOG("magma(%p): magma_semaphore_signal(semaphore:%lu )", stream, var_semaphore);
716 this->magma_semaphore_signal(var_semaphore);
717 SET_LASTCALL("magma_semaphore_signal");
718 android::base::endTrace();
719 break;
720 }
721 case OP_magma_semaphore_reset: {
722 android::base::beginTrace("magma_semaphore_reset decode");
723 magma_semaphore_t var_semaphore = Unpack<magma_semaphore_t,uint64_t>(ptr + 8);
724 if (useChecksum) {
725 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8, ptr + 8 + 8, checksumSize,
726 "magma_decoder_context_t::decode, OP_magma_semaphore_reset: GL checksumCalculator failure\n");
727 }
728 DECODER_DEBUG_LOG("magma(%p): magma_semaphore_reset(semaphore:%lu )", stream, var_semaphore);
729 this->magma_semaphore_reset(var_semaphore);
730 SET_LASTCALL("magma_semaphore_reset");
731 android::base::endTrace();
732 break;
733 }
734 case OP_magma_semaphore_export: {
735 android::base::beginTrace("magma_semaphore_export decode");
736 magma_semaphore_t var_semaphore = Unpack<magma_semaphore_t,uint64_t>(ptr + 8);
737 uint32_t size_semaphore_handle_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8);
738 if (useChecksum) {
739 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4, ptr + 8 + 8 + 4, checksumSize,
740 "magma_decoder_context_t::decode, OP_magma_semaphore_export: GL checksumCalculator failure\n");
741 }
742 size_t totalTmpSize = size_semaphore_handle_out;
743 totalTmpSize += sizeof(magma_status_t);
744 totalTmpSize += checksumSize;
745 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
746 OutputBuffer outptr_semaphore_handle_out(&tmpBuf[0], size_semaphore_handle_out);
747 DECODER_DEBUG_LOG("magma(%p): magma_semaphore_export(semaphore:%lu semaphore_handle_out:%p(%u) )", stream, var_semaphore, (magma_handle_t*)(outptr_semaphore_handle_out.get()), size_semaphore_handle_out);
748 *(magma_status_t *)(&tmpBuf[0 + size_semaphore_handle_out]) = this->magma_semaphore_export(var_semaphore, (magma_handle_t*)(outptr_semaphore_handle_out.get()));
749 outptr_semaphore_handle_out.flush();
750 if (useChecksum) {
751 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
752 }
753 stream->flush();
754 SET_LASTCALL("magma_semaphore_export");
755 android::base::endTrace();
756 break;
757 }
758 case OP_magma_poll: {
759 android::base::beginTrace("magma_poll decode");
760 uint32_t size_items __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
761 InputBuffer inptr_items(ptr + 8 + 4, size_items);
762 uint32_t var_count = Unpack<uint32_t,uint32_t>(ptr + 8 + 4 + size_items);
763 uint64_t var_timeout_ns = Unpack<uint64_t,uint64_t>(ptr + 8 + 4 + size_items + 4);
764 if (useChecksum) {
765 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_items + 4 + 8, ptr + 8 + 4 + size_items + 4 + 8, checksumSize,
766 "magma_decoder_context_t::decode, OP_magma_poll: GL checksumCalculator failure\n");
767 }
768 size_t totalTmpSize = size_items;
769 totalTmpSize += sizeof(magma_status_t);
770 totalTmpSize += checksumSize;
771 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
772 OutputBuffer outptr_items(&tmpBuf[0], size_items);
773 memcpy(outptr_items.get(), inptr_items.get(), size_items);
774 DECODER_DEBUG_LOG("magma(%p): magma_poll(items:%p(%u) count:%u timeout_ns:%lu )", stream, (magma_poll_item_t*)(outptr_items.get()), size_items, var_count, var_timeout_ns);
775 *(magma_status_t *)(&tmpBuf[0 + size_items]) = this->magma_poll((magma_poll_item_t*)(outptr_items.get()), var_count, var_timeout_ns);
776 outptr_items.flush();
777 if (useChecksum) {
778 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
779 }
780 stream->flush();
781 SET_LASTCALL("magma_poll");
782 android::base::endTrace();
783 break;
784 }
785 case OP_magma_initialize_tracing: {
786 android::base::beginTrace("magma_initialize_tracing decode");
787 magma_handle_t var_channel = Unpack<magma_handle_t,uint32_t>(ptr + 8);
788 if (useChecksum) {
789 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
790 "magma_decoder_context_t::decode, OP_magma_initialize_tracing: GL checksumCalculator failure\n");
791 }
792 size_t totalTmpSize = sizeof(magma_status_t);
793 totalTmpSize += checksumSize;
794 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
795 DECODER_DEBUG_LOG("magma(%p): magma_initialize_tracing(channel:0x%x )", stream, var_channel);
796 *(magma_status_t *)(&tmpBuf[0]) = this->magma_initialize_tracing(var_channel);
797 if (useChecksum) {
798 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
799 }
800 stream->flush();
801 SET_LASTCALL("magma_initialize_tracing");
802 android::base::endTrace();
803 break;
804 }
805 case OP_magma_initialize_logging: {
806 android::base::beginTrace("magma_initialize_logging decode");
807 magma_handle_t var_channel = Unpack<magma_handle_t,uint32_t>(ptr + 8);
808 if (useChecksum) {
809 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4, ptr + 8 + 4, checksumSize,
810 "magma_decoder_context_t::decode, OP_magma_initialize_logging: GL checksumCalculator failure\n");
811 }
812 size_t totalTmpSize = sizeof(magma_status_t);
813 totalTmpSize += checksumSize;
814 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
815 DECODER_DEBUG_LOG("magma(%p): magma_initialize_logging(channel:0x%x )", stream, var_channel);
816 *(magma_status_t *)(&tmpBuf[0]) = this->magma_initialize_logging(var_channel);
817 if (useChecksum) {
818 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
819 }
820 stream->flush();
821 SET_LASTCALL("magma_initialize_logging");
822 android::base::endTrace();
823 break;
824 }
825 case OP_magma_connection_enable_performance_counter_access: {
826 android::base::beginTrace("magma_connection_enable_performance_counter_access decode");
827 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
828 magma_handle_t var_channel = Unpack<magma_handle_t,uint32_t>(ptr + 8 + 8);
829 if (useChecksum) {
830 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4, ptr + 8 + 8 + 4, checksumSize,
831 "magma_decoder_context_t::decode, OP_magma_connection_enable_performance_counter_access: GL checksumCalculator failure\n");
832 }
833 size_t totalTmpSize = sizeof(magma_status_t);
834 totalTmpSize += checksumSize;
835 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
836 DECODER_DEBUG_LOG("magma(%p): magma_connection_enable_performance_counter_access(connection:%lu channel:0x%x )", stream, var_connection, var_channel);
837 *(magma_status_t *)(&tmpBuf[0]) = this->magma_connection_enable_performance_counter_access(var_connection, var_channel);
838 if (useChecksum) {
839 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
840 }
841 stream->flush();
842 SET_LASTCALL("magma_connection_enable_performance_counter_access");
843 android::base::endTrace();
844 break;
845 }
846 case OP_magma_connection_enable_performance_counters: {
847 android::base::beginTrace("magma_connection_enable_performance_counters decode");
848 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
849 uint32_t size_counters __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8);
850 InputBuffer inptr_counters(ptr + 8 + 8 + 4, size_counters);
851 uint64_t var_counters_count = Unpack<uint64_t,uint64_t>(ptr + 8 + 8 + 4 + size_counters);
852 if (useChecksum) {
853 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + size_counters + 8, ptr + 8 + 8 + 4 + size_counters + 8, checksumSize,
854 "magma_decoder_context_t::decode, OP_magma_connection_enable_performance_counters: GL checksumCalculator failure\n");
855 }
856 size_t totalTmpSize = sizeof(magma_status_t);
857 totalTmpSize += checksumSize;
858 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
859 DECODER_DEBUG_LOG("magma(%p): magma_connection_enable_performance_counters(connection:%lu counters:%p(%u) counters_count:%lu )", stream, var_connection, (uint64_t*)(inptr_counters.get()), size_counters, var_counters_count);
860 *(magma_status_t *)(&tmpBuf[0]) = this->magma_connection_enable_performance_counters(var_connection, (uint64_t*)(inptr_counters.get()), var_counters_count);
861 if (useChecksum) {
862 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
863 }
864 stream->flush();
865 SET_LASTCALL("magma_connection_enable_performance_counters");
866 android::base::endTrace();
867 break;
868 }
869 case OP_magma_connection_create_performance_counter_buffer_pool: {
870 android::base::beginTrace("magma_connection_create_performance_counter_buffer_pool decode");
871 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
872 uint32_t size_pool_id_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8);
873 uint32_t size_notification_handle_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 4);
874 if (useChecksum) {
875 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + 4, ptr + 8 + 8 + 4 + 4, checksumSize,
876 "magma_decoder_context_t::decode, OP_magma_connection_create_performance_counter_buffer_pool: GL checksumCalculator failure\n");
877 }
878 size_t totalTmpSize = size_pool_id_out;
879 totalTmpSize += size_notification_handle_out;
880 totalTmpSize += sizeof(magma_status_t);
881 totalTmpSize += checksumSize;
882 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
883 OutputBuffer outptr_pool_id_out(&tmpBuf[0], size_pool_id_out);
884 OutputBuffer outptr_notification_handle_out(&tmpBuf[0 + size_pool_id_out], size_notification_handle_out);
885 DECODER_DEBUG_LOG("magma(%p): magma_connection_create_performance_counter_buffer_pool(connection:%lu pool_id_out:%p(%u) notification_handle_out:%p(%u) )", stream, var_connection, (magma_perf_count_pool_t*)(outptr_pool_id_out.get()), size_pool_id_out, (magma_handle_t*)(outptr_notification_handle_out.get()), size_notification_handle_out);
886 *(magma_status_t *)(&tmpBuf[0 + size_pool_id_out + size_notification_handle_out]) = this->magma_connection_create_performance_counter_buffer_pool(var_connection, (magma_perf_count_pool_t*)(outptr_pool_id_out.get()), (magma_handle_t*)(outptr_notification_handle_out.get()));
887 outptr_pool_id_out.flush();
888 outptr_notification_handle_out.flush();
889 if (useChecksum) {
890 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
891 }
892 stream->flush();
893 SET_LASTCALL("magma_connection_create_performance_counter_buffer_pool");
894 android::base::endTrace();
895 break;
896 }
897 case OP_magma_connection_release_performance_counter_buffer_pool: {
898 android::base::beginTrace("magma_connection_release_performance_counter_buffer_pool decode");
899 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
900 magma_perf_count_pool_t var_pool_id = Unpack<magma_perf_count_pool_t,uint64_t>(ptr + 8 + 8);
901 if (useChecksum) {
902 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 8, ptr + 8 + 8 + 8, checksumSize,
903 "magma_decoder_context_t::decode, OP_magma_connection_release_performance_counter_buffer_pool: GL checksumCalculator failure\n");
904 }
905 size_t totalTmpSize = sizeof(magma_status_t);
906 totalTmpSize += checksumSize;
907 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
908 DECODER_DEBUG_LOG("magma(%p): magma_connection_release_performance_counter_buffer_pool(connection:%lu pool_id:%lu )", stream, var_connection, var_pool_id);
909 *(magma_status_t *)(&tmpBuf[0]) = this->magma_connection_release_performance_counter_buffer_pool(var_connection, var_pool_id);
910 if (useChecksum) {
911 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
912 }
913 stream->flush();
914 SET_LASTCALL("magma_connection_release_performance_counter_buffer_pool");
915 android::base::endTrace();
916 break;
917 }
918 case OP_magma_connection_add_performance_counter_buffer_offsets_to_pool: {
919 android::base::beginTrace("magma_connection_add_performance_counter_buffer_offsets_to_pool decode");
920 uint32_t size_parameters __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
921 InputBuffer inptr_parameters(ptr + 8 + 4, size_parameters);
922 uint64_t var_parameter_count = Unpack<uint64_t,uint64_t>(ptr + 8 + 4 + size_parameters);
923 if (useChecksum) {
924 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_parameters + 8, ptr + 8 + 4 + size_parameters + 8, checksumSize,
925 "magma_decoder_context_t::decode, OP_magma_connection_add_performance_counter_buffer_offsets_to_pool: GL checksumCalculator failure\n");
926 }
927 size_t totalTmpSize = size_parameters;
928 totalTmpSize += sizeof(magma_status_t);
929 totalTmpSize += checksumSize;
930 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
931 OutputBuffer outptr_parameters(&tmpBuf[0], size_parameters);
932 memcpy(outptr_parameters.get(), inptr_parameters.get(), size_parameters);
933 DECODER_DEBUG_LOG("magma(%p): magma_connection_add_performance_counter_buffer_offsets_to_pool(parameters:%p(%u) parameter_count:%lu )", stream, (uint64_t*)(outptr_parameters.get()), size_parameters, var_parameter_count);
934 *(magma_status_t *)(&tmpBuf[0 + size_parameters]) = this->magma_connection_add_performance_counter_buffer_offsets_to_pool((uint64_t*)(outptr_parameters.get()), var_parameter_count);
935 outptr_parameters.flush();
936 if (useChecksum) {
937 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
938 }
939 stream->flush();
940 SET_LASTCALL("magma_connection_add_performance_counter_buffer_offsets_to_pool");
941 android::base::endTrace();
942 break;
943 }
944 case OP_magma_connection_remove_performance_counter_buffer_from_pool: {
945 android::base::beginTrace("magma_connection_remove_performance_counter_buffer_from_pool decode");
946 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
947 magma_perf_count_pool_t var_pool_id = Unpack<magma_perf_count_pool_t,uint64_t>(ptr + 8 + 8);
948 magma_buffer_t var_buffer = Unpack<magma_buffer_t,uint64_t>(ptr + 8 + 8 + 8);
949 if (useChecksum) {
950 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 8 + 8, ptr + 8 + 8 + 8 + 8, checksumSize,
951 "magma_decoder_context_t::decode, OP_magma_connection_remove_performance_counter_buffer_from_pool: GL checksumCalculator failure\n");
952 }
953 size_t totalTmpSize = sizeof(magma_status_t);
954 totalTmpSize += checksumSize;
955 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
956 DECODER_DEBUG_LOG("magma(%p): magma_connection_remove_performance_counter_buffer_from_pool(connection:%lu pool_id:%lu buffer:%lu )", stream, var_connection, var_pool_id, var_buffer);
957 *(magma_status_t *)(&tmpBuf[0]) = this->magma_connection_remove_performance_counter_buffer_from_pool(var_connection, var_pool_id, var_buffer);
958 if (useChecksum) {
959 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
960 }
961 stream->flush();
962 SET_LASTCALL("magma_connection_remove_performance_counter_buffer_from_pool");
963 android::base::endTrace();
964 break;
965 }
966 case OP_magma_connection_dump_performance_counters: {
967 android::base::beginTrace("magma_connection_dump_performance_counters decode");
968 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
969 magma_perf_count_pool_t var_pool_id = Unpack<magma_perf_count_pool_t,uint64_t>(ptr + 8 + 8);
970 uint32_t var_trigger_id = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 8);
971 if (useChecksum) {
972 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 8 + 4, ptr + 8 + 8 + 8 + 4, checksumSize,
973 "magma_decoder_context_t::decode, OP_magma_connection_dump_performance_counters: GL checksumCalculator failure\n");
974 }
975 size_t totalTmpSize = sizeof(magma_status_t);
976 totalTmpSize += checksumSize;
977 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
978 DECODER_DEBUG_LOG("magma(%p): magma_connection_dump_performance_counters(connection:%lu pool_id:%lu trigger_id:%u )", stream, var_connection, var_pool_id, var_trigger_id);
979 *(magma_status_t *)(&tmpBuf[0]) = this->magma_connection_dump_performance_counters(var_connection, var_pool_id, var_trigger_id);
980 if (useChecksum) {
981 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
982 }
983 stream->flush();
984 SET_LASTCALL("magma_connection_dump_performance_counters");
985 android::base::endTrace();
986 break;
987 }
988 case OP_magma_connection_clear_performance_counters: {
989 android::base::beginTrace("magma_connection_clear_performance_counters decode");
990 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
991 uint32_t size_counters __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8);
992 InputBuffer inptr_counters(ptr + 8 + 8 + 4, size_counters);
993 uint64_t var_counters_count = Unpack<uint64_t,uint64_t>(ptr + 8 + 8 + 4 + size_counters);
994 if (useChecksum) {
995 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 4 + size_counters + 8, ptr + 8 + 8 + 4 + size_counters + 8, checksumSize,
996 "magma_decoder_context_t::decode, OP_magma_connection_clear_performance_counters: GL checksumCalculator failure\n");
997 }
998 size_t totalTmpSize = sizeof(magma_status_t);
999 totalTmpSize += checksumSize;
1000 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1001 DECODER_DEBUG_LOG("magma(%p): magma_connection_clear_performance_counters(connection:%lu counters:%p(%u) counters_count:%lu )", stream, var_connection, (uint64_t*)(inptr_counters.get()), size_counters, var_counters_count);
1002 *(magma_status_t *)(&tmpBuf[0]) = this->magma_connection_clear_performance_counters(var_connection, (uint64_t*)(inptr_counters.get()), var_counters_count);
1003 if (useChecksum) {
1004 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1005 }
1006 stream->flush();
1007 SET_LASTCALL("magma_connection_clear_performance_counters");
1008 android::base::endTrace();
1009 break;
1010 }
1011 case OP_magma_connection_read_performance_counter_completion: {
1012 android::base::beginTrace("magma_connection_read_performance_counter_completion decode");
1013 magma_connection_t var_connection = Unpack<magma_connection_t,uint64_t>(ptr + 8);
1014 magma_perf_count_pool_t var_pool_id = Unpack<magma_perf_count_pool_t,uint64_t>(ptr + 8 + 8);
1015 uint32_t size_trigger_id_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 8);
1016 uint32_t size_buffer_id_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 8 + 4);
1017 uint32_t size_buffer_offset_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 8 + 4 + 4);
1018 uint32_t size_time_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 8 + 4 + 4 + 4);
1019 uint32_t size_result_flags_out __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8 + 8 + 8 + 4 + 4 + 4 + 4);
1020 if (useChecksum) {
1021 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 8 + 8 + 4 + 4 + 4 + 4 + 4, ptr + 8 + 8 + 8 + 4 + 4 + 4 + 4 + 4, checksumSize,
1022 "magma_decoder_context_t::decode, OP_magma_connection_read_performance_counter_completion: GL checksumCalculator failure\n");
1023 }
1024 size_t totalTmpSize = size_trigger_id_out;
1025 totalTmpSize += size_buffer_id_out;
1026 totalTmpSize += size_buffer_offset_out;
1027 totalTmpSize += size_time_out;
1028 totalTmpSize += size_result_flags_out;
1029 totalTmpSize += sizeof(magma_status_t);
1030 totalTmpSize += checksumSize;
1031 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1032 OutputBuffer outptr_trigger_id_out(&tmpBuf[0], size_trigger_id_out);
1033 OutputBuffer outptr_buffer_id_out(&tmpBuf[0 + size_trigger_id_out], size_buffer_id_out);
1034 OutputBuffer outptr_buffer_offset_out(&tmpBuf[0 + size_trigger_id_out + size_buffer_id_out], size_buffer_offset_out);
1035 OutputBuffer outptr_time_out(&tmpBuf[0 + size_trigger_id_out + size_buffer_id_out + size_buffer_offset_out], size_time_out);
1036 OutputBuffer outptr_result_flags_out(&tmpBuf[0 + size_trigger_id_out + size_buffer_id_out + size_buffer_offset_out + size_time_out], size_result_flags_out);
1037 DECODER_DEBUG_LOG("magma(%p): magma_connection_read_performance_counter_completion(connection:%lu pool_id:%lu trigger_id_out:%p(%u) buffer_id_out:%p(%u) buffer_offset_out:%p(%u) time_out:%p(%u) result_flags_out:%p(%u) )", stream, var_connection, var_pool_id, (uint32_t*)(outptr_trigger_id_out.get()), size_trigger_id_out, (uint64_t*)(outptr_buffer_id_out.get()), size_buffer_id_out, (uint32_t*)(outptr_buffer_offset_out.get()), size_buffer_offset_out, (uint64_t*)(outptr_time_out.get()), size_time_out, (uint32_t*)(outptr_result_flags_out.get()), size_result_flags_out);
1038 *(magma_status_t *)(&tmpBuf[0 + size_trigger_id_out + size_buffer_id_out + size_buffer_offset_out + size_time_out + size_result_flags_out]) = this->magma_connection_read_performance_counter_completion(var_connection, var_pool_id, (uint32_t*)(outptr_trigger_id_out.get()), (uint64_t*)(outptr_buffer_id_out.get()), (uint32_t*)(outptr_buffer_offset_out.get()), (uint64_t*)(outptr_time_out.get()), (uint32_t*)(outptr_result_flags_out.get()));
1039 outptr_trigger_id_out.flush();
1040 outptr_buffer_id_out.flush();
1041 outptr_buffer_offset_out.flush();
1042 outptr_time_out.flush();
1043 outptr_result_flags_out.flush();
1044 if (useChecksum) {
1045 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1046 }
1047 stream->flush();
1048 SET_LASTCALL("magma_connection_read_performance_counter_completion");
1049 android::base::endTrace();
1050 break;
1051 }
1052 case OP_magma_virt_connection_create_image: {
1053 android::base::beginTrace("magma_virt_connection_create_image decode");
1054 uint32_t size_parameters __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
1055 InputBuffer inptr_parameters(ptr + 8 + 4, size_parameters);
1056 uint64_t var_parameter_count = Unpack<uint64_t,uint64_t>(ptr + 8 + 4 + size_parameters);
1057 if (useChecksum) {
1058 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_parameters + 8, ptr + 8 + 4 + size_parameters + 8, checksumSize,
1059 "magma_decoder_context_t::decode, OP_magma_virt_connection_create_image: GL checksumCalculator failure\n");
1060 }
1061 size_t totalTmpSize = size_parameters;
1062 totalTmpSize += sizeof(magma_status_t);
1063 totalTmpSize += checksumSize;
1064 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1065 OutputBuffer outptr_parameters(&tmpBuf[0], size_parameters);
1066 memcpy(outptr_parameters.get(), inptr_parameters.get(), size_parameters);
1067 DECODER_DEBUG_LOG("magma(%p): magma_virt_connection_create_image(parameters:%p(%u) parameter_count:%lu )", stream, (uint64_t*)(outptr_parameters.get()), size_parameters, var_parameter_count);
1068 *(magma_status_t *)(&tmpBuf[0 + size_parameters]) = this->magma_virt_connection_create_image((uint64_t*)(outptr_parameters.get()), var_parameter_count);
1069 outptr_parameters.flush();
1070 if (useChecksum) {
1071 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1072 }
1073 stream->flush();
1074 SET_LASTCALL("magma_virt_connection_create_image");
1075 android::base::endTrace();
1076 break;
1077 }
1078 case OP_magma_virt_connection_get_image_info: {
1079 android::base::beginTrace("magma_virt_connection_get_image_info decode");
1080 uint32_t size_parameters __attribute__((unused)) = Unpack<uint32_t,uint32_t>(ptr + 8);
1081 InputBuffer inptr_parameters(ptr + 8 + 4, size_parameters);
1082 uint64_t var_parameter_count = Unpack<uint64_t,uint64_t>(ptr + 8 + 4 + size_parameters);
1083 if (useChecksum) {
1084 ChecksumCalculatorThreadInfo::validOrDie(checksumCalc, ptr, 8 + 4 + size_parameters + 8, ptr + 8 + 4 + size_parameters + 8, checksumSize,
1085 "magma_decoder_context_t::decode, OP_magma_virt_connection_get_image_info: GL checksumCalculator failure\n");
1086 }
1087 size_t totalTmpSize = size_parameters;
1088 totalTmpSize += sizeof(magma_status_t);
1089 totalTmpSize += checksumSize;
1090 unsigned char *tmpBuf = stream->alloc(totalTmpSize);
1091 OutputBuffer outptr_parameters(&tmpBuf[0], size_parameters);
1092 memcpy(outptr_parameters.get(), inptr_parameters.get(), size_parameters);
1093 DECODER_DEBUG_LOG("magma(%p): magma_virt_connection_get_image_info(parameters:%p(%u) parameter_count:%lu )", stream, (uint64_t*)(outptr_parameters.get()), size_parameters, var_parameter_count);
1094 *(magma_status_t *)(&tmpBuf[0 + size_parameters]) = this->magma_virt_connection_get_image_info((uint64_t*)(outptr_parameters.get()), var_parameter_count);
1095 outptr_parameters.flush();
1096 if (useChecksum) {
1097 ChecksumCalculatorThreadInfo::writeChecksum(checksumCalc, &tmpBuf[0], totalTmpSize - checksumSize, &tmpBuf[totalTmpSize - checksumSize], checksumSize);
1098 }
1099 stream->flush();
1100 SET_LASTCALL("magma_virt_connection_get_image_info");
1101 android::base::endTrace();
1102 break;
1103 }
1104 default:
1105 return ptr - (unsigned char*)buf;
1106 } //switch
1107 ptr += packetLen;
1108 } // while
1109 return ptr - (unsigned char*)buf;
1110 }
1111 } // namespace gfxstream
1112