1 /*
2 * Copyright (C) 2015 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 /*
18 * rsgApi.cpp
19 * This file implements the functions responsible for sending messages
20 * to the RS driver layer. The messages are sent through a FIFO that is
21 * shared between the process's caller threads and driver thread.
22 */
23
24 #include "rsDevice.h"
25 #include "rsContext.h"
26 #include "rsThreadIO.h"
27 #include "rsgApiStructs.h"
28 #include "rsgApiFuncDecl.h"
29 #include "rsFifo.h"
30
31 using namespace android; // NOLINT
32 using namespace android::renderscript; // NOLINT
33
LF_ContextDestroy(RsContext rsc)34 static void LF_ContextDestroy (RsContext rsc)
35 {
36 rsi_ContextDestroy((Context *)rsc);
37 };
38
LF_ContextGetMessage(RsContext rsc,void * data,size_t data_length,size_t * receiveLen,size_t receiveLen_length,uint32_t * usrID,size_t usrID_length)39 static RsMessageToClientType LF_ContextGetMessage (RsContext rsc, void * data, size_t data_length, size_t * receiveLen, size_t receiveLen_length, uint32_t * usrID, size_t usrID_length)
40 {
41 return rsi_ContextGetMessage((Context *)rsc, data, data_length, receiveLen, receiveLen_length, usrID, usrID_length);
42 };
43
LF_ContextPeekMessage(RsContext rsc,size_t * receiveLen,size_t receiveLen_length,uint32_t * usrID,size_t usrID_length)44 static RsMessageToClientType LF_ContextPeekMessage (RsContext rsc, size_t * receiveLen, size_t receiveLen_length, uint32_t * usrID, size_t usrID_length)
45 {
46 return rsi_ContextPeekMessage((Context *)rsc, receiveLen, receiveLen_length, usrID, usrID_length);
47 };
48
LF_ContextSendMessage(RsContext rsc,uint32_t id,const uint8_t * data,size_t data_length)49 static void LF_ContextSendMessage (RsContext rsc, uint32_t id, const uint8_t * data, size_t data_length)
50 {
51 if (((Context *)rsc)->isSynchronous()) {
52 rsi_ContextSendMessage((Context *)rsc, id, data, data_length);
53 return; }
54
55 ThreadIO *io = &((Context *)rsc)->mIO;
56 const size_t size = sizeof(RS_CMD_ContextSendMessage);
57 size_t dataSize = 0;
58 dataSize += data_length;
59 RS_CMD_ContextSendMessage *cmd = NULL;
60 if (dataSize < io->getMaxInlineSize()) {;
61 cmd = static_cast<RS_CMD_ContextSendMessage *>(io->coreHeader(RS_CMD_ID_ContextSendMessage, dataSize + size));
62 } else {
63 cmd = static_cast<RS_CMD_ContextSendMessage *>(io->coreHeader(RS_CMD_ID_ContextSendMessage, size));
64 }
65 uint8_t *payload = (uint8_t *)&cmd[1];
66 cmd->id = id;
67 if (data_length == 0) {
68 cmd->data = NULL;
69 } else if (dataSize < io->getMaxInlineSize()) {
70 memcpy(payload, data, data_length);
71 cmd->data = (const uint8_t *)(payload - ((uint8_t *)&cmd[1]));
72 payload += data_length;
73 } else {
74 cmd->data = data;
75 }
76 cmd->data_length = data_length;
77 io->coreCommit();
78 if (dataSize >= io->getMaxInlineSize()) {
79 io->coreGetReturn(NULL, 0);
80 }
81 };
82
LF_ContextInitToClient(RsContext rsc)83 static void LF_ContextInitToClient (RsContext rsc)
84 {
85 rsi_ContextInitToClient((Context *)rsc);
86 };
87
LF_ContextDeinitToClient(RsContext rsc)88 static void LF_ContextDeinitToClient (RsContext rsc)
89 {
90 rsi_ContextDeinitToClient((Context *)rsc);
91 };
92
LF_ContextSetCacheDir(RsContext rsc,const char * cacheDir,size_t cacheDir_length)93 static void LF_ContextSetCacheDir (RsContext rsc, const char * cacheDir, size_t cacheDir_length)
94 {
95 rsi_ContextSetCacheDir((Context *)rsc, cacheDir, cacheDir_length);
96 };
97
LF_TypeCreate(RsContext rsc,RsElement e,uint32_t dimX,uint32_t dimY,uint32_t dimZ,bool mipmaps,bool faces,uint32_t yuv)98 static RsType LF_TypeCreate (RsContext rsc, RsElement e, uint32_t dimX, uint32_t dimY, uint32_t dimZ, bool mipmaps, bool faces, uint32_t yuv)
99 {
100 return rsi_TypeCreate((Context *)rsc, e, dimX, dimY, dimZ, mipmaps, faces, yuv);
101 };
102
LF_TypeCreate2(RsContext rsc,const RsTypeCreateParams * dat,size_t dat_length)103 static RsType LF_TypeCreate2 (RsContext rsc, const RsTypeCreateParams * dat, size_t dat_length)
104 {
105 return rsi_TypeCreate2((Context *)rsc, dat, dat_length);
106 };
107
LF_AllocationCreateTyped(RsContext rsc,RsType vtype,RsAllocationMipmapControl mipmaps,uint32_t usages,uintptr_t ptr)108 static RsAllocation LF_AllocationCreateTyped (RsContext rsc, RsType vtype, RsAllocationMipmapControl mipmaps, uint32_t usages, uintptr_t ptr)
109 {
110 return rsi_AllocationCreateTyped((Context *)rsc, vtype, mipmaps, usages, ptr);
111 };
112
LF_AllocationCreateFromBitmap(RsContext rsc,RsType vtype,RsAllocationMipmapControl mipmaps,const void * data,size_t data_length,uint32_t usages)113 static RsAllocation LF_AllocationCreateFromBitmap (RsContext rsc, RsType vtype, RsAllocationMipmapControl mipmaps, const void * data, size_t data_length, uint32_t usages)
114 {
115 return rsi_AllocationCreateFromBitmap((Context *)rsc, vtype, mipmaps, data, data_length, usages);
116 };
117
LF_AllocationCubeCreateFromBitmap(RsContext rsc,RsType vtype,RsAllocationMipmapControl mipmaps,const void * data,size_t data_length,uint32_t usages)118 static RsAllocation LF_AllocationCubeCreateFromBitmap (RsContext rsc, RsType vtype, RsAllocationMipmapControl mipmaps, const void * data, size_t data_length, uint32_t usages)
119 {
120 return rsi_AllocationCubeCreateFromBitmap((Context *)rsc, vtype, mipmaps, data, data_length, usages);
121 };
122
LF_AllocationSetupBufferQueue(RsContext rsc,RsAllocation alloc,uint32_t numAlloc)123 static void LF_AllocationSetupBufferQueue (RsContext rsc, RsAllocation alloc, uint32_t numAlloc)
124 {
125 if (((Context *)rsc)->isSynchronous()) {
126 rsi_AllocationSetupBufferQueue((Context *)rsc, alloc, numAlloc);
127 return; }
128
129 ThreadIO *io = &((Context *)rsc)->mIO;
130 const size_t size = sizeof(RS_CMD_AllocationSetupBufferQueue);
131 RS_CMD_AllocationSetupBufferQueue *cmd = static_cast<RS_CMD_AllocationSetupBufferQueue *>(io->coreHeader(RS_CMD_ID_AllocationSetupBufferQueue, size));
132 cmd->alloc = alloc;
133 cmd->numAlloc = numAlloc;
134 io->coreCommit();
135 io->coreGetReturn(NULL, 0);
136 };
137
LF_AllocationShareBufferQueue(RsContext rsc,RsAllocation alloc1,RsAllocation alloc2)138 static void LF_AllocationShareBufferQueue (RsContext rsc, RsAllocation alloc1, RsAllocation alloc2)
139 {
140 if (((Context *)rsc)->isSynchronous()) {
141 rsi_AllocationShareBufferQueue((Context *)rsc, alloc1, alloc2);
142 return; }
143
144 ThreadIO *io = &((Context *)rsc)->mIO;
145 const size_t size = sizeof(RS_CMD_AllocationShareBufferQueue);
146 RS_CMD_AllocationShareBufferQueue *cmd = static_cast<RS_CMD_AllocationShareBufferQueue *>(io->coreHeader(RS_CMD_ID_AllocationShareBufferQueue, size));
147 cmd->alloc1 = alloc1;
148 cmd->alloc2 = alloc2;
149 io->coreCommit();
150 io->coreGetReturn(NULL, 0);
151 };
152
LF_AllocationGetSurface(RsContext rsc,RsAllocation alloc)153 static RsNativeWindow LF_AllocationGetSurface (RsContext rsc, RsAllocation alloc)
154 {
155 if (((Context *)rsc)->isSynchronous()) {
156 return rsi_AllocationGetSurface((Context *)rsc, alloc);
157 }
158
159 ThreadIO *io = &((Context *)rsc)->mIO;
160 const size_t size = sizeof(RS_CMD_AllocationGetSurface);
161 RS_CMD_AllocationGetSurface *cmd = static_cast<RS_CMD_AllocationGetSurface *>(io->coreHeader(RS_CMD_ID_AllocationGetSurface, size));
162 cmd->alloc = alloc;
163 io->coreCommit();
164
165 RsNativeWindow ret;
166 io->coreGetReturn(&ret, sizeof(ret));
167 return ret;
168 };
169
LF_AllocationSetSurface(RsContext rsc,RsAllocation alloc,RsNativeWindow sur)170 static void LF_AllocationSetSurface (RsContext rsc, RsAllocation alloc, RsNativeWindow sur)
171 {
172 if (((Context *)rsc)->isSynchronous()) {
173 rsi_AllocationSetSurface((Context *)rsc, alloc, sur);
174 return; }
175
176 ThreadIO *io = &((Context *)rsc)->mIO;
177 const size_t size = sizeof(RS_CMD_AllocationSetSurface);
178 RS_CMD_AllocationSetSurface *cmd = static_cast<RS_CMD_AllocationSetSurface *>(io->coreHeader(RS_CMD_ID_AllocationSetSurface, size));
179 cmd->alloc = alloc;
180 cmd->sur = sur;
181 io->coreCommit();
182 io->coreGetReturn(NULL, 0);
183 };
184
LF_AllocationAdapterCreate(RsContext rsc,RsType vtype,RsAllocation baseAlloc)185 static RsAllocation LF_AllocationAdapterCreate (RsContext rsc, RsType vtype, RsAllocation baseAlloc)
186 {
187 return rsi_AllocationAdapterCreate((Context *)rsc, vtype, baseAlloc);
188 };
189
LF_AllocationAdapterOffset(RsContext rsc,RsAllocation alloc,const uint32_t * offsets,size_t offsets_length)190 static void LF_AllocationAdapterOffset (RsContext rsc, RsAllocation alloc, const uint32_t * offsets, size_t offsets_length)
191 {
192 if (((Context *)rsc)->isSynchronous()) {
193 rsi_AllocationAdapterOffset((Context *)rsc, alloc, offsets, offsets_length);
194 return; }
195
196 ThreadIO *io = &((Context *)rsc)->mIO;
197 const size_t size = sizeof(RS_CMD_AllocationAdapterOffset);
198 size_t dataSize = 0;
199 dataSize += offsets_length;
200 RS_CMD_AllocationAdapterOffset *cmd = NULL;
201 if (dataSize < io->getMaxInlineSize()) {;
202 cmd = static_cast<RS_CMD_AllocationAdapterOffset *>(io->coreHeader(RS_CMD_ID_AllocationAdapterOffset, dataSize + size));
203 } else {
204 cmd = static_cast<RS_CMD_AllocationAdapterOffset *>(io->coreHeader(RS_CMD_ID_AllocationAdapterOffset, size));
205 }
206 uint8_t *payload = (uint8_t *)&cmd[1];
207 cmd->alloc = alloc;
208 if (offsets_length == 0) {
209 cmd->offsets = NULL;
210 } else if (dataSize < io->getMaxInlineSize()) {
211 memcpy(payload, offsets, offsets_length);
212 cmd->offsets = (const uint32_t *)(payload - ((uint8_t *)&cmd[1]));
213 payload += offsets_length;
214 } else {
215 cmd->offsets = offsets;
216 }
217 cmd->offsets_length = offsets_length;
218 io->coreCommit();
219 if (dataSize >= io->getMaxInlineSize()) {
220 io->coreGetReturn(NULL, 0);
221 }
222 };
223
LF_ContextFinish(RsContext rsc)224 static void LF_ContextFinish (RsContext rsc)
225 {
226 if (((Context *)rsc)->isSynchronous()) {
227 rsi_ContextFinish((Context *)rsc);
228 return; }
229
230 ThreadIO *io = &((Context *)rsc)->mIO;
231 const size_t size = sizeof(RS_CMD_ContextFinish);
232 RS_CMD_ContextFinish *cmd = static_cast<RS_CMD_ContextFinish *>(io->coreHeader(RS_CMD_ID_ContextFinish, size));
233 io->coreCommit();
234 io->coreGetReturn(NULL, 0);
235 };
236
LF_ContextDump(RsContext rsc,int32_t bits)237 static void LF_ContextDump (RsContext rsc, int32_t bits)
238 {
239 if (((Context *)rsc)->isSynchronous()) {
240 rsi_ContextDump((Context *)rsc, bits);
241 return; }
242
243 ThreadIO *io = &((Context *)rsc)->mIO;
244 const size_t size = sizeof(RS_CMD_ContextDump);
245 RS_CMD_ContextDump *cmd = static_cast<RS_CMD_ContextDump *>(io->coreHeader(RS_CMD_ID_ContextDump, size));
246 cmd->bits = bits;
247 io->coreCommit();
248 };
249
LF_ContextSetPriority(RsContext rsc,int32_t priority)250 static void LF_ContextSetPriority (RsContext rsc, int32_t priority)
251 {
252 if (((Context *)rsc)->isSynchronous()) {
253 rsi_ContextSetPriority((Context *)rsc, priority);
254 return; }
255
256 ThreadIO *io = &((Context *)rsc)->mIO;
257 const size_t size = sizeof(RS_CMD_ContextSetPriority);
258 RS_CMD_ContextSetPriority *cmd = static_cast<RS_CMD_ContextSetPriority *>(io->coreHeader(RS_CMD_ID_ContextSetPriority, size));
259 cmd->priority = priority;
260 io->coreCommit();
261 };
262
LF_ContextDestroyWorker(RsContext rsc)263 static void LF_ContextDestroyWorker (RsContext rsc)
264 {
265 if (((Context *)rsc)->isSynchronous()) {
266 rsi_ContextDestroyWorker((Context *)rsc);
267 return; }
268
269 ThreadIO *io = &((Context *)rsc)->mIO;
270 const size_t size = sizeof(RS_CMD_ContextDestroyWorker);
271 RS_CMD_ContextDestroyWorker *cmd = static_cast<RS_CMD_ContextDestroyWorker *>(io->coreHeader(RS_CMD_ID_ContextDestroyWorker, size));
272 io->coreCommit();
273 io->coreGetReturn(NULL, 0);
274 };
275
LF_AssignName(RsContext rsc,RsObjectBase obj,const char * name,size_t name_length)276 static void LF_AssignName (RsContext rsc, RsObjectBase obj, const char * name, size_t name_length)
277 {
278 if (((Context *)rsc)->isSynchronous()) {
279 rsi_AssignName((Context *)rsc, obj, name, name_length);
280 return; }
281
282 ThreadIO *io = &((Context *)rsc)->mIO;
283 const size_t size = sizeof(RS_CMD_AssignName);
284 size_t dataSize = 0;
285 dataSize += name_length;
286 RS_CMD_AssignName *cmd = NULL;
287 if (dataSize < io->getMaxInlineSize()) {;
288 cmd = static_cast<RS_CMD_AssignName *>(io->coreHeader(RS_CMD_ID_AssignName, dataSize + size));
289 } else {
290 cmd = static_cast<RS_CMD_AssignName *>(io->coreHeader(RS_CMD_ID_AssignName, size));
291 }
292 uint8_t *payload = (uint8_t *)&cmd[1];
293 cmd->obj = obj;
294 if (name_length == 0) {
295 cmd->name = NULL;
296 } else if (dataSize < io->getMaxInlineSize()) {
297 memcpy(payload, name, name_length);
298 cmd->name = (const char *)(payload - ((uint8_t *)&cmd[1]));
299 payload += name_length;
300 } else {
301 cmd->name = name;
302 }
303 cmd->name_length = name_length;
304 io->coreCommit();
305 if (dataSize >= io->getMaxInlineSize()) {
306 io->coreGetReturn(NULL, 0);
307 }
308 };
309
LF_ObjDestroy(RsContext rsc,RsAsyncVoidPtr objPtr)310 static void LF_ObjDestroy (RsContext rsc, RsAsyncVoidPtr objPtr)
311 {
312 LF_ObjDestroy_handcode((Context *)rsc, objPtr);
313 };
314
LF_ElementCreate(RsContext rsc,RsDataType mType,RsDataKind mKind,bool mNormalized,uint32_t mVectorSize)315 static RsElement LF_ElementCreate (RsContext rsc, RsDataType mType, RsDataKind mKind, bool mNormalized, uint32_t mVectorSize)
316 {
317 return rsi_ElementCreate((Context *)rsc, mType, mKind, mNormalized, mVectorSize);
318 };
319
LF_ElementCreate2(RsContext rsc,const RsElement * elements,size_t elements_length,const char ** names,size_t names_length_length,const size_t * names_length,const uint32_t * arraySize,size_t arraySize_length)320 static RsElement LF_ElementCreate2 (RsContext rsc, const RsElement * elements, size_t elements_length, const char ** names, size_t names_length_length, const size_t * names_length, const uint32_t * arraySize, size_t arraySize_length)
321 {
322 return rsi_ElementCreate2((Context *)rsc, elements, elements_length, names, names_length_length, names_length, arraySize, arraySize_length);
323 };
324
LF_AllocationCopyToBitmap(RsContext rsc,RsAllocation alloc,void * data,size_t data_length)325 static void LF_AllocationCopyToBitmap (RsContext rsc, RsAllocation alloc, void * data, size_t data_length)
326 {
327 if (((Context *)rsc)->isSynchronous()) {
328 rsi_AllocationCopyToBitmap((Context *)rsc, alloc, data, data_length);
329 return; }
330
331 ThreadIO *io = &((Context *)rsc)->mIO;
332 const size_t size = sizeof(RS_CMD_AllocationCopyToBitmap);
333 RS_CMD_AllocationCopyToBitmap *cmd = static_cast<RS_CMD_AllocationCopyToBitmap *>(io->coreHeader(RS_CMD_ID_AllocationCopyToBitmap, size));
334 cmd->alloc = alloc;
335 cmd->data = data;
336 cmd->data_length = data_length;
337 io->coreCommit();
338 io->coreGetReturn(NULL, 0);
339 };
340
LF_AllocationGetPointer(RsContext rsc,RsAllocation va,uint32_t lod,RsAllocationCubemapFace face,uint32_t z,uint32_t array,size_t * stride,size_t stride_length)341 static void * LF_AllocationGetPointer (RsContext rsc, RsAllocation va, uint32_t lod, RsAllocationCubemapFace face, uint32_t z, uint32_t array, size_t * stride, size_t stride_length)
342 {
343 if (((Context *)rsc)->isSynchronous()) {
344 return rsi_AllocationGetPointer((Context *)rsc, va, lod, face, z, array, stride, stride_length);
345 }
346
347 ThreadIO *io = &((Context *)rsc)->mIO;
348 const size_t size = sizeof(RS_CMD_AllocationGetPointer);
349 RS_CMD_AllocationGetPointer *cmd = static_cast<RS_CMD_AllocationGetPointer *>(io->coreHeader(RS_CMD_ID_AllocationGetPointer, size));
350 cmd->va = va;
351 cmd->lod = lod;
352 cmd->face = face;
353 cmd->z = z;
354 cmd->array = array;
355 cmd->stride = stride;
356 cmd->stride_length = stride_length;
357 io->coreCommit();
358
359 void * ret;
360 io->coreGetReturn(&ret, sizeof(ret));
361 return ret;
362 };
363
LF_Allocation1DData(RsContext rsc,RsAllocation va,uint32_t xoff,uint32_t lod,uint32_t count,const void * data,size_t data_length)364 static void LF_Allocation1DData (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t lod, uint32_t count, const void * data, size_t data_length)
365 {
366 if (((Context *)rsc)->isSynchronous()) {
367 rsi_Allocation1DData((Context *)rsc, va, xoff, lod, count, data, data_length);
368 return; }
369
370 ThreadIO *io = &((Context *)rsc)->mIO;
371 const size_t size = sizeof(RS_CMD_Allocation1DData);
372 size_t dataSize = 0;
373 dataSize += data_length;
374 RS_CMD_Allocation1DData *cmd = NULL;
375 if (dataSize < io->getMaxInlineSize()) {;
376 cmd = static_cast<RS_CMD_Allocation1DData *>(io->coreHeader(RS_CMD_ID_Allocation1DData, dataSize + size));
377 } else {
378 cmd = static_cast<RS_CMD_Allocation1DData *>(io->coreHeader(RS_CMD_ID_Allocation1DData, size));
379 }
380 uint8_t *payload = (uint8_t *)&cmd[1];
381 cmd->va = va;
382 cmd->xoff = xoff;
383 cmd->lod = lod;
384 cmd->count = count;
385 if (data_length == 0) {
386 cmd->data = NULL;
387 } else if (dataSize < io->getMaxInlineSize()) {
388 memcpy(payload, data, data_length);
389 cmd->data = (const void *)(payload - ((uint8_t *)&cmd[1]));
390 payload += data_length;
391 } else {
392 cmd->data = data;
393 }
394 cmd->data_length = data_length;
395 io->coreCommit();
396 if (dataSize >= io->getMaxInlineSize()) {
397 io->coreGetReturn(NULL, 0);
398 }
399 };
400
LF_Allocation1DElementData(RsContext rsc,RsAllocation va,uint32_t x,uint32_t lod,const void * data,size_t data_length,size_t comp_offset)401 static void LF_Allocation1DElementData (RsContext rsc, RsAllocation va, uint32_t x, uint32_t lod, const void * data, size_t data_length, size_t comp_offset)
402 {
403 if (((Context *)rsc)->isSynchronous()) {
404 rsi_Allocation1DElementData((Context *)rsc, va, x, lod, data, data_length, comp_offset);
405 return; }
406
407 ThreadIO *io = &((Context *)rsc)->mIO;
408 const size_t size = sizeof(RS_CMD_Allocation1DElementData);
409 size_t dataSize = 0;
410 dataSize += data_length;
411 RS_CMD_Allocation1DElementData *cmd = NULL;
412 if (dataSize < io->getMaxInlineSize()) {;
413 cmd = static_cast<RS_CMD_Allocation1DElementData *>(io->coreHeader(RS_CMD_ID_Allocation1DElementData, dataSize + size));
414 } else {
415 cmd = static_cast<RS_CMD_Allocation1DElementData *>(io->coreHeader(RS_CMD_ID_Allocation1DElementData, size));
416 }
417 uint8_t *payload = (uint8_t *)&cmd[1];
418 cmd->va = va;
419 cmd->x = x;
420 cmd->lod = lod;
421 if (data_length == 0) {
422 cmd->data = NULL;
423 } else if (dataSize < io->getMaxInlineSize()) {
424 memcpy(payload, data, data_length);
425 cmd->data = (const void *)(payload - ((uint8_t *)&cmd[1]));
426 payload += data_length;
427 } else {
428 cmd->data = data;
429 }
430 cmd->data_length = data_length;
431 cmd->comp_offset = comp_offset;
432 io->coreCommit();
433 if (dataSize >= io->getMaxInlineSize()) {
434 io->coreGetReturn(NULL, 0);
435 }
436 };
437
LF_AllocationElementData(RsContext rsc,RsAllocation va,uint32_t x,uint32_t y,uint32_t z,uint32_t lod,const void * data,size_t data_length,size_t comp_offset)438 static void LF_AllocationElementData (RsContext rsc, RsAllocation va, uint32_t x, uint32_t y, uint32_t z, uint32_t lod, const void * data, size_t data_length, size_t comp_offset)
439 {
440 if (((Context *)rsc)->isSynchronous()) {
441 rsi_AllocationElementData((Context *)rsc, va, x, y, z, lod, data, data_length, comp_offset);
442 return; }
443
444 ThreadIO *io = &((Context *)rsc)->mIO;
445 const size_t size = sizeof(RS_CMD_AllocationElementData);
446 size_t dataSize = 0;
447 dataSize += data_length;
448 RS_CMD_AllocationElementData *cmd = NULL;
449 if (dataSize < io->getMaxInlineSize()) {;
450 cmd = static_cast<RS_CMD_AllocationElementData *>(io->coreHeader(RS_CMD_ID_AllocationElementData, dataSize + size));
451 } else {
452 cmd = static_cast<RS_CMD_AllocationElementData *>(io->coreHeader(RS_CMD_ID_AllocationElementData, size));
453 }
454 uint8_t *payload = (uint8_t *)&cmd[1];
455 cmd->va = va;
456 cmd->x = x;
457 cmd->y = y;
458 cmd->z = z;
459 cmd->lod = lod;
460 if (data_length == 0) {
461 cmd->data = NULL;
462 } else if (dataSize < io->getMaxInlineSize()) {
463 memcpy(payload, data, data_length);
464 cmd->data = (const void *)(payload - ((uint8_t *)&cmd[1]));
465 payload += data_length;
466 } else {
467 cmd->data = data;
468 }
469 cmd->data_length = data_length;
470 cmd->comp_offset = comp_offset;
471 io->coreCommit();
472 if (dataSize >= io->getMaxInlineSize()) {
473 io->coreGetReturn(NULL, 0);
474 }
475 };
476
LF_Allocation2DData(RsContext rsc,RsAllocation va,uint32_t xoff,uint32_t yoff,uint32_t lod,RsAllocationCubemapFace face,uint32_t w,uint32_t h,const void * data,size_t data_length,size_t stride)477 static void LF_Allocation2DData (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t lod, RsAllocationCubemapFace face, uint32_t w, uint32_t h, const void * data, size_t data_length, size_t stride)
478 {
479 if (((Context *)rsc)->isSynchronous()) {
480 rsi_Allocation2DData((Context *)rsc, va, xoff, yoff, lod, face, w, h, data, data_length, stride);
481 return; }
482
483 ThreadIO *io = &((Context *)rsc)->mIO;
484 const size_t size = sizeof(RS_CMD_Allocation2DData);
485 size_t dataSize = 0;
486 dataSize += data_length;
487 RS_CMD_Allocation2DData *cmd = NULL;
488 if (dataSize < io->getMaxInlineSize()) {;
489 cmd = static_cast<RS_CMD_Allocation2DData *>(io->coreHeader(RS_CMD_ID_Allocation2DData, dataSize + size));
490 } else {
491 cmd = static_cast<RS_CMD_Allocation2DData *>(io->coreHeader(RS_CMD_ID_Allocation2DData, size));
492 }
493 uint8_t *payload = (uint8_t *)&cmd[1];
494 cmd->va = va;
495 cmd->xoff = xoff;
496 cmd->yoff = yoff;
497 cmd->lod = lod;
498 cmd->face = face;
499 cmd->w = w;
500 cmd->h = h;
501 if (data_length == 0) {
502 cmd->data = NULL;
503 } else if (dataSize < io->getMaxInlineSize()) {
504 memcpy(payload, data, data_length);
505 cmd->data = (const void *)(payload - ((uint8_t *)&cmd[1]));
506 payload += data_length;
507 } else {
508 cmd->data = data;
509 }
510 cmd->data_length = data_length;
511 cmd->stride = stride;
512 io->coreCommit();
513 if (dataSize >= io->getMaxInlineSize()) {
514 io->coreGetReturn(NULL, 0);
515 }
516 };
517
LF_Allocation3DData(RsContext rsc,RsAllocation va,uint32_t xoff,uint32_t yoff,uint32_t zoff,uint32_t lod,uint32_t w,uint32_t h,uint32_t d,const void * data,size_t data_length,size_t stride)518 static void LF_Allocation3DData (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d, const void * data, size_t data_length, size_t stride)
519 {
520 if (((Context *)rsc)->isSynchronous()) {
521 rsi_Allocation3DData((Context *)rsc, va, xoff, yoff, zoff, lod, w, h, d, data, data_length, stride);
522 return; }
523
524 ThreadIO *io = &((Context *)rsc)->mIO;
525 const size_t size = sizeof(RS_CMD_Allocation3DData);
526 size_t dataSize = 0;
527 dataSize += data_length;
528 RS_CMD_Allocation3DData *cmd = NULL;
529 if (dataSize < io->getMaxInlineSize()) {;
530 cmd = static_cast<RS_CMD_Allocation3DData *>(io->coreHeader(RS_CMD_ID_Allocation3DData, dataSize + size));
531 } else {
532 cmd = static_cast<RS_CMD_Allocation3DData *>(io->coreHeader(RS_CMD_ID_Allocation3DData, size));
533 }
534 uint8_t *payload = (uint8_t *)&cmd[1];
535 cmd->va = va;
536 cmd->xoff = xoff;
537 cmd->yoff = yoff;
538 cmd->zoff = zoff;
539 cmd->lod = lod;
540 cmd->w = w;
541 cmd->h = h;
542 cmd->d = d;
543 if (data_length == 0) {
544 cmd->data = NULL;
545 } else if (dataSize < io->getMaxInlineSize()) {
546 memcpy(payload, data, data_length);
547 cmd->data = (const void *)(payload - ((uint8_t *)&cmd[1]));
548 payload += data_length;
549 } else {
550 cmd->data = data;
551 }
552 cmd->data_length = data_length;
553 cmd->stride = stride;
554 io->coreCommit();
555 if (dataSize >= io->getMaxInlineSize()) {
556 io->coreGetReturn(NULL, 0);
557 }
558 };
559
LF_AllocationGenerateMipmaps(RsContext rsc,RsAllocation va)560 static void LF_AllocationGenerateMipmaps (RsContext rsc, RsAllocation va)
561 {
562 if (((Context *)rsc)->isSynchronous()) {
563 rsi_AllocationGenerateMipmaps((Context *)rsc, va);
564 return; }
565
566 ThreadIO *io = &((Context *)rsc)->mIO;
567 const size_t size = sizeof(RS_CMD_AllocationGenerateMipmaps);
568 RS_CMD_AllocationGenerateMipmaps *cmd = static_cast<RS_CMD_AllocationGenerateMipmaps *>(io->coreHeader(RS_CMD_ID_AllocationGenerateMipmaps, size));
569 cmd->va = va;
570 io->coreCommit();
571 };
572
LF_AllocationRead(RsContext rsc,RsAllocation va,void * data,size_t data_length)573 static void LF_AllocationRead (RsContext rsc, RsAllocation va, void * data, size_t data_length)
574 {
575 if (((Context *)rsc)->isSynchronous()) {
576 rsi_AllocationRead((Context *)rsc, va, data, data_length);
577 return; }
578
579 ThreadIO *io = &((Context *)rsc)->mIO;
580 const size_t size = sizeof(RS_CMD_AllocationRead);
581 RS_CMD_AllocationRead *cmd = static_cast<RS_CMD_AllocationRead *>(io->coreHeader(RS_CMD_ID_AllocationRead, size));
582 cmd->va = va;
583 cmd->data = data;
584 cmd->data_length = data_length;
585 io->coreCommit();
586 io->coreGetReturn(NULL, 0);
587 };
588
LF_Allocation1DRead(RsContext rsc,RsAllocation va,uint32_t xoff,uint32_t lod,uint32_t count,void * data,size_t data_length)589 static void LF_Allocation1DRead (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t lod, uint32_t count, void * data, size_t data_length)
590 {
591 if (((Context *)rsc)->isSynchronous()) {
592 rsi_Allocation1DRead((Context *)rsc, va, xoff, lod, count, data, data_length);
593 return; }
594
595 ThreadIO *io = &((Context *)rsc)->mIO;
596 const size_t size = sizeof(RS_CMD_Allocation1DRead);
597 RS_CMD_Allocation1DRead *cmd = static_cast<RS_CMD_Allocation1DRead *>(io->coreHeader(RS_CMD_ID_Allocation1DRead, size));
598 cmd->va = va;
599 cmd->xoff = xoff;
600 cmd->lod = lod;
601 cmd->count = count;
602 cmd->data = data;
603 cmd->data_length = data_length;
604 io->coreCommit();
605 io->coreGetReturn(NULL, 0);
606 };
607
LF_AllocationElementRead(RsContext rsc,RsAllocation va,uint32_t x,uint32_t y,uint32_t z,uint32_t lod,void * data,size_t data_length,size_t comp_offset)608 static void LF_AllocationElementRead (RsContext rsc, RsAllocation va, uint32_t x, uint32_t y, uint32_t z, uint32_t lod, void * data, size_t data_length, size_t comp_offset)
609 {
610 if (((Context *)rsc)->isSynchronous()) {
611 rsi_AllocationElementRead((Context *)rsc, va, x, y, z, lod, data, data_length, comp_offset);
612 return; }
613
614 ThreadIO *io = &((Context *)rsc)->mIO;
615 const size_t size = sizeof(RS_CMD_AllocationElementRead);
616 RS_CMD_AllocationElementRead *cmd = static_cast<RS_CMD_AllocationElementRead *>(io->coreHeader(RS_CMD_ID_AllocationElementRead, size));
617 cmd->va = va;
618 cmd->x = x;
619 cmd->y = y;
620 cmd->z = z;
621 cmd->lod = lod;
622 cmd->data = data;
623 cmd->data_length = data_length;
624 cmd->comp_offset = comp_offset;
625 io->coreCommit();
626 io->coreGetReturn(NULL, 0);
627 };
628
LF_Allocation2DRead(RsContext rsc,RsAllocation va,uint32_t xoff,uint32_t yoff,uint32_t lod,RsAllocationCubemapFace face,uint32_t w,uint32_t h,void * data,size_t data_length,size_t stride)629 static void LF_Allocation2DRead (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t lod, RsAllocationCubemapFace face, uint32_t w, uint32_t h, void * data, size_t data_length, size_t stride)
630 {
631 if (((Context *)rsc)->isSynchronous()) {
632 rsi_Allocation2DRead((Context *)rsc, va, xoff, yoff, lod, face, w, h, data, data_length, stride);
633 return; }
634
635 ThreadIO *io = &((Context *)rsc)->mIO;
636 const size_t size = sizeof(RS_CMD_Allocation2DRead);
637 RS_CMD_Allocation2DRead *cmd = static_cast<RS_CMD_Allocation2DRead *>(io->coreHeader(RS_CMD_ID_Allocation2DRead, size));
638 cmd->va = va;
639 cmd->xoff = xoff;
640 cmd->yoff = yoff;
641 cmd->lod = lod;
642 cmd->face = face;
643 cmd->w = w;
644 cmd->h = h;
645 cmd->data = data;
646 cmd->data_length = data_length;
647 cmd->stride = stride;
648 io->coreCommit();
649 io->coreGetReturn(NULL, 0);
650 };
651
LF_Allocation3DRead(RsContext rsc,RsAllocation va,uint32_t xoff,uint32_t yoff,uint32_t zoff,uint32_t lod,uint32_t w,uint32_t h,uint32_t d,void * data,size_t data_length,size_t stride)652 static void LF_Allocation3DRead (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d, void * data, size_t data_length, size_t stride)
653 {
654 if (((Context *)rsc)->isSynchronous()) {
655 rsi_Allocation3DRead((Context *)rsc, va, xoff, yoff, zoff, lod, w, h, d, data, data_length, stride);
656 return; }
657
658 ThreadIO *io = &((Context *)rsc)->mIO;
659 const size_t size = sizeof(RS_CMD_Allocation3DRead);
660 RS_CMD_Allocation3DRead *cmd = static_cast<RS_CMD_Allocation3DRead *>(io->coreHeader(RS_CMD_ID_Allocation3DRead, size));
661 cmd->va = va;
662 cmd->xoff = xoff;
663 cmd->yoff = yoff;
664 cmd->zoff = zoff;
665 cmd->lod = lod;
666 cmd->w = w;
667 cmd->h = h;
668 cmd->d = d;
669 cmd->data = data;
670 cmd->data_length = data_length;
671 cmd->stride = stride;
672 io->coreCommit();
673 io->coreGetReturn(NULL, 0);
674 };
675
LF_AllocationSyncAll(RsContext rsc,RsAllocation va,RsAllocationUsageType src)676 static void LF_AllocationSyncAll (RsContext rsc, RsAllocation va, RsAllocationUsageType src)
677 {
678 if (((Context *)rsc)->isSynchronous()) {
679 rsi_AllocationSyncAll((Context *)rsc, va, src);
680 return; }
681
682 ThreadIO *io = &((Context *)rsc)->mIO;
683 const size_t size = sizeof(RS_CMD_AllocationSyncAll);
684 RS_CMD_AllocationSyncAll *cmd = static_cast<RS_CMD_AllocationSyncAll *>(io->coreHeader(RS_CMD_ID_AllocationSyncAll, size));
685 cmd->va = va;
686 cmd->src = src;
687 io->coreCommit();
688 };
689
LF_AllocationResize1D(RsContext rsc,RsAllocation va,uint32_t dimX)690 static void LF_AllocationResize1D (RsContext rsc, RsAllocation va, uint32_t dimX)
691 {
692 if (((Context *)rsc)->isSynchronous()) {
693 rsi_AllocationResize1D((Context *)rsc, va, dimX);
694 return; }
695
696 ThreadIO *io = &((Context *)rsc)->mIO;
697 const size_t size = sizeof(RS_CMD_AllocationResize1D);
698 RS_CMD_AllocationResize1D *cmd = static_cast<RS_CMD_AllocationResize1D *>(io->coreHeader(RS_CMD_ID_AllocationResize1D, size));
699 cmd->va = va;
700 cmd->dimX = dimX;
701 io->coreCommit();
702 };
703
LF_AllocationCopy2DRange(RsContext rsc,RsAllocation dest,uint32_t destXoff,uint32_t destYoff,uint32_t destMip,uint32_t destFace,uint32_t width,uint32_t height,RsAllocation src,uint32_t srcXoff,uint32_t srcYoff,uint32_t srcMip,uint32_t srcFace)704 static void LF_AllocationCopy2DRange (RsContext rsc, RsAllocation dest, uint32_t destXoff, uint32_t destYoff, uint32_t destMip, uint32_t destFace, uint32_t width, uint32_t height, RsAllocation src, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcMip, uint32_t srcFace)
705 {
706 if (((Context *)rsc)->isSynchronous()) {
707 rsi_AllocationCopy2DRange((Context *)rsc, dest, destXoff, destYoff, destMip, destFace, width, height, src, srcXoff, srcYoff, srcMip, srcFace);
708 return; }
709
710 ThreadIO *io = &((Context *)rsc)->mIO;
711 const size_t size = sizeof(RS_CMD_AllocationCopy2DRange);
712 RS_CMD_AllocationCopy2DRange *cmd = static_cast<RS_CMD_AllocationCopy2DRange *>(io->coreHeader(RS_CMD_ID_AllocationCopy2DRange, size));
713 cmd->dest = dest;
714 cmd->destXoff = destXoff;
715 cmd->destYoff = destYoff;
716 cmd->destMip = destMip;
717 cmd->destFace = destFace;
718 cmd->width = width;
719 cmd->height = height;
720 cmd->src = src;
721 cmd->srcXoff = srcXoff;
722 cmd->srcYoff = srcYoff;
723 cmd->srcMip = srcMip;
724 cmd->srcFace = srcFace;
725 io->coreCommit();
726 };
727
LF_AllocationCopy3DRange(RsContext rsc,RsAllocation dest,uint32_t destXoff,uint32_t destYoff,uint32_t destZoff,uint32_t destMip,uint32_t width,uint32_t height,uint32_t depth,RsAllocation src,uint32_t srcXoff,uint32_t srcYoff,uint32_t srcZoff,uint32_t srcMip)728 static void LF_AllocationCopy3DRange (RsContext rsc, RsAllocation dest, uint32_t destXoff, uint32_t destYoff, uint32_t destZoff, uint32_t destMip, uint32_t width, uint32_t height, uint32_t depth, RsAllocation src, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff, uint32_t srcMip)
729 {
730 if (((Context *)rsc)->isSynchronous()) {
731 rsi_AllocationCopy3DRange((Context *)rsc, dest, destXoff, destYoff, destZoff, destMip, width, height, depth, src, srcXoff, srcYoff, srcZoff, srcMip);
732 return; }
733
734 ThreadIO *io = &((Context *)rsc)->mIO;
735 const size_t size = sizeof(RS_CMD_AllocationCopy3DRange);
736 RS_CMD_AllocationCopy3DRange *cmd = static_cast<RS_CMD_AllocationCopy3DRange *>(io->coreHeader(RS_CMD_ID_AllocationCopy3DRange, size));
737 cmd->dest = dest;
738 cmd->destXoff = destXoff;
739 cmd->destYoff = destYoff;
740 cmd->destZoff = destZoff;
741 cmd->destMip = destMip;
742 cmd->width = width;
743 cmd->height = height;
744 cmd->depth = depth;
745 cmd->src = src;
746 cmd->srcXoff = srcXoff;
747 cmd->srcYoff = srcYoff;
748 cmd->srcZoff = srcZoff;
749 cmd->srcMip = srcMip;
750 io->coreCommit();
751 };
752
LF_ClosureCreate(RsContext rsc,RsScriptKernelID kernelID,RsAllocation returnValue,RsScriptFieldID * fieldIDs,size_t fieldIDs_length,const int64_t * values,size_t values_length,const int * sizes,size_t sizes_length,RsClosure * depClosures,size_t depClosures_length,RsScriptFieldID * depFieldIDs,size_t depFieldIDs_length)753 static RsClosure LF_ClosureCreate (RsContext rsc, RsScriptKernelID kernelID, RsAllocation returnValue, RsScriptFieldID * fieldIDs, size_t fieldIDs_length, const int64_t * values, size_t values_length, const int * sizes, size_t sizes_length, RsClosure * depClosures, size_t depClosures_length, RsScriptFieldID * depFieldIDs, size_t depFieldIDs_length)
754 {
755 return rsi_ClosureCreate((Context *)rsc, kernelID, returnValue, fieldIDs, fieldIDs_length, values, values_length, sizes, sizes_length, depClosures, depClosures_length, depFieldIDs, depFieldIDs_length);
756 };
757
LF_InvokeClosureCreate(RsContext rsc,RsScriptInvokeID invokeID,const void * params,size_t params_length,const RsScriptFieldID * fieldIDs,size_t fieldIDs_length,const int64_t * values,size_t values_length,const int * sizes,size_t sizes_length)758 static RsClosure LF_InvokeClosureCreate (RsContext rsc, RsScriptInvokeID invokeID, const void * params, size_t params_length, const RsScriptFieldID * fieldIDs, size_t fieldIDs_length, const int64_t * values, size_t values_length, const int * sizes, size_t sizes_length)
759 {
760 return rsi_InvokeClosureCreate((Context *)rsc, invokeID, params, params_length, fieldIDs, fieldIDs_length, values, values_length, sizes, sizes_length);
761 };
762
LF_ClosureSetArg(RsContext rsc,RsClosure closureID,uint32_t index,uintptr_t value,int valueSize)763 static void LF_ClosureSetArg (RsContext rsc, RsClosure closureID, uint32_t index, uintptr_t value, int valueSize)
764 {
765 if (((Context *)rsc)->isSynchronous()) {
766 rsi_ClosureSetArg((Context *)rsc, closureID, index, value, valueSize);
767 return; }
768
769 ThreadIO *io = &((Context *)rsc)->mIO;
770 const size_t size = sizeof(RS_CMD_ClosureSetArg);
771 RS_CMD_ClosureSetArg *cmd = static_cast<RS_CMD_ClosureSetArg *>(io->coreHeader(RS_CMD_ID_ClosureSetArg, size));
772 cmd->closureID = closureID;
773 cmd->index = index;
774 cmd->value = value;
775 cmd->valueSize = valueSize;
776 io->coreCommit();
777 };
778
LF_ClosureSetGlobal(RsContext rsc,RsClosure closureID,RsScriptFieldID fieldID,int64_t value,int valueSize)779 static void LF_ClosureSetGlobal (RsContext rsc, RsClosure closureID, RsScriptFieldID fieldID, int64_t value, int valueSize)
780 {
781 if (((Context *)rsc)->isSynchronous()) {
782 rsi_ClosureSetGlobal((Context *)rsc, closureID, fieldID, value, valueSize);
783 return; }
784
785 ThreadIO *io = &((Context *)rsc)->mIO;
786 const size_t size = sizeof(RS_CMD_ClosureSetGlobal);
787 RS_CMD_ClosureSetGlobal *cmd = static_cast<RS_CMD_ClosureSetGlobal *>(io->coreHeader(RS_CMD_ID_ClosureSetGlobal, size));
788 cmd->closureID = closureID;
789 cmd->fieldID = fieldID;
790 cmd->value = value;
791 cmd->valueSize = valueSize;
792 io->coreCommit();
793 };
794
LF_SamplerCreate(RsContext rsc,RsSamplerValue magFilter,RsSamplerValue minFilter,RsSamplerValue wrapS,RsSamplerValue wrapT,RsSamplerValue wrapR,float mAniso)795 static RsSampler LF_SamplerCreate (RsContext rsc, RsSamplerValue magFilter, RsSamplerValue minFilter, RsSamplerValue wrapS, RsSamplerValue wrapT, RsSamplerValue wrapR, float mAniso)
796 {
797 return rsi_SamplerCreate((Context *)rsc, magFilter, minFilter, wrapS, wrapT, wrapR, mAniso);
798 };
799
LF_ScriptBindAllocation(RsContext rsc,RsScript vtm,RsAllocation va,uint32_t slot)800 static void LF_ScriptBindAllocation (RsContext rsc, RsScript vtm, RsAllocation va, uint32_t slot)
801 {
802 if (((Context *)rsc)->isSynchronous()) {
803 rsi_ScriptBindAllocation((Context *)rsc, vtm, va, slot);
804 return; }
805
806 ThreadIO *io = &((Context *)rsc)->mIO;
807 const size_t size = sizeof(RS_CMD_ScriptBindAllocation);
808 RS_CMD_ScriptBindAllocation *cmd = static_cast<RS_CMD_ScriptBindAllocation *>(io->coreHeader(RS_CMD_ID_ScriptBindAllocation, size));
809 cmd->vtm = vtm;
810 cmd->va = va;
811 cmd->slot = slot;
812 io->coreCommit();
813 };
814
LF_ScriptSetTimeZone(RsContext rsc,RsScript s,const char * timeZone,size_t timeZone_length)815 static void LF_ScriptSetTimeZone (RsContext rsc, RsScript s, const char * timeZone, size_t timeZone_length)
816 {
817 if (((Context *)rsc)->isSynchronous()) {
818 rsi_ScriptSetTimeZone((Context *)rsc, s, timeZone, timeZone_length);
819 return; }
820
821 ThreadIO *io = &((Context *)rsc)->mIO;
822 const size_t size = sizeof(RS_CMD_ScriptSetTimeZone);
823 size_t dataSize = 0;
824 dataSize += timeZone_length;
825 RS_CMD_ScriptSetTimeZone *cmd = NULL;
826 if (dataSize < io->getMaxInlineSize()) {;
827 cmd = static_cast<RS_CMD_ScriptSetTimeZone *>(io->coreHeader(RS_CMD_ID_ScriptSetTimeZone, dataSize + size));
828 } else {
829 cmd = static_cast<RS_CMD_ScriptSetTimeZone *>(io->coreHeader(RS_CMD_ID_ScriptSetTimeZone, size));
830 }
831 uint8_t *payload = (uint8_t *)&cmd[1];
832 cmd->s = s;
833 if (timeZone_length == 0) {
834 cmd->timeZone = NULL;
835 } else if (dataSize < io->getMaxInlineSize()) {
836 memcpy(payload, timeZone, timeZone_length);
837 cmd->timeZone = (const char *)(payload - ((uint8_t *)&cmd[1]));
838 payload += timeZone_length;
839 } else {
840 cmd->timeZone = timeZone;
841 }
842 cmd->timeZone_length = timeZone_length;
843 io->coreCommit();
844 if (dataSize >= io->getMaxInlineSize()) {
845 io->coreGetReturn(NULL, 0);
846 }
847 };
848
LF_ScriptInvokeIDCreate(RsContext rsc,RsScript s,uint32_t slot)849 static RsScriptInvokeID LF_ScriptInvokeIDCreate (RsContext rsc, RsScript s, uint32_t slot)
850 {
851 if (((Context *)rsc)->isSynchronous()) {
852 return rsi_ScriptInvokeIDCreate((Context *)rsc, s, slot);
853 }
854
855 ThreadIO *io = &((Context *)rsc)->mIO;
856 const size_t size = sizeof(RS_CMD_ScriptInvokeIDCreate);
857 RS_CMD_ScriptInvokeIDCreate *cmd = static_cast<RS_CMD_ScriptInvokeIDCreate *>(io->coreHeader(RS_CMD_ID_ScriptInvokeIDCreate, size));
858 cmd->s = s;
859 cmd->slot = slot;
860 io->coreCommit();
861
862 RsScriptInvokeID ret;
863 io->coreGetReturn(&ret, sizeof(ret));
864 return ret;
865 };
866
LF_ScriptInvoke(RsContext rsc,RsScript s,uint32_t slot)867 static void LF_ScriptInvoke (RsContext rsc, RsScript s, uint32_t slot)
868 {
869 if (((Context *)rsc)->isSynchronous()) {
870 rsi_ScriptInvoke((Context *)rsc, s, slot);
871 return; }
872
873 ThreadIO *io = &((Context *)rsc)->mIO;
874 const size_t size = sizeof(RS_CMD_ScriptInvoke);
875 RS_CMD_ScriptInvoke *cmd = static_cast<RS_CMD_ScriptInvoke *>(io->coreHeader(RS_CMD_ID_ScriptInvoke, size));
876 cmd->s = s;
877 cmd->slot = slot;
878 io->coreCommit();
879 };
880
LF_ScriptInvokeV(RsContext rsc,RsScript s,uint32_t slot,const void * data,size_t data_length)881 static void LF_ScriptInvokeV (RsContext rsc, RsScript s, uint32_t slot, const void * data, size_t data_length)
882 {
883 if (((Context *)rsc)->isSynchronous()) {
884 rsi_ScriptInvokeV((Context *)rsc, s, slot, data, data_length);
885 return; }
886
887 ThreadIO *io = &((Context *)rsc)->mIO;
888 const size_t size = sizeof(RS_CMD_ScriptInvokeV);
889 size_t dataSize = 0;
890 dataSize += data_length;
891 RS_CMD_ScriptInvokeV *cmd = NULL;
892 if (dataSize < io->getMaxInlineSize()) {;
893 cmd = static_cast<RS_CMD_ScriptInvokeV *>(io->coreHeader(RS_CMD_ID_ScriptInvokeV, dataSize + size));
894 } else {
895 cmd = static_cast<RS_CMD_ScriptInvokeV *>(io->coreHeader(RS_CMD_ID_ScriptInvokeV, size));
896 }
897 uint8_t *payload = (uint8_t *)&cmd[1];
898 cmd->s = s;
899 cmd->slot = slot;
900 if (data_length == 0) {
901 cmd->data = NULL;
902 } else if (dataSize < io->getMaxInlineSize()) {
903 memcpy(payload, data, data_length);
904 cmd->data = (const void *)(payload - ((uint8_t *)&cmd[1]));
905 payload += data_length;
906 } else {
907 cmd->data = data;
908 }
909 cmd->data_length = data_length;
910 io->coreCommit();
911 if (dataSize >= io->getMaxInlineSize()) {
912 io->coreGetReturn(NULL, 0);
913 }
914 };
915
LF_ScriptForEach(RsContext rsc,RsScript s,uint32_t slot,RsAllocation ain,RsAllocation aout,const void * usr,size_t usr_length,const RsScriptCall * sc,size_t sc_length)916 static void LF_ScriptForEach (RsContext rsc, RsScript s, uint32_t slot, RsAllocation ain, RsAllocation aout, const void * usr, size_t usr_length, const RsScriptCall * sc, size_t sc_length)
917 {
918 if (((Context *)rsc)->isSynchronous()) {
919 rsi_ScriptForEach((Context *)rsc, s, slot, ain, aout, usr, usr_length, sc, sc_length);
920 return; }
921
922 ThreadIO *io = &((Context *)rsc)->mIO;
923 const size_t size = sizeof(RS_CMD_ScriptForEach);
924 size_t dataSize = 0;
925 dataSize += usr_length;
926 dataSize += sc_length;
927 RS_CMD_ScriptForEach *cmd = NULL;
928 if (dataSize < io->getMaxInlineSize()) {;
929 cmd = static_cast<RS_CMD_ScriptForEach *>(io->coreHeader(RS_CMD_ID_ScriptForEach, dataSize + size));
930 } else {
931 cmd = static_cast<RS_CMD_ScriptForEach *>(io->coreHeader(RS_CMD_ID_ScriptForEach, size));
932 }
933 uint8_t *payload = (uint8_t *)&cmd[1];
934 cmd->s = s;
935 cmd->slot = slot;
936 cmd->ain = ain;
937 cmd->aout = aout;
938 if (usr_length == 0) {
939 cmd->usr = NULL;
940 } else if (dataSize < io->getMaxInlineSize()) {
941 memcpy(payload, usr, usr_length);
942 cmd->usr = (const void *)(payload - ((uint8_t *)&cmd[1]));
943 payload += usr_length;
944 } else {
945 cmd->usr = usr;
946 }
947 cmd->usr_length = usr_length;
948 if (sc_length == 0) {
949 cmd->sc = NULL;
950 } else if (dataSize < io->getMaxInlineSize()) {
951 memcpy(payload, sc, sc_length);
952 cmd->sc = (const RsScriptCall *)(payload - ((uint8_t *)&cmd[1]));
953 payload += sc_length;
954 } else {
955 cmd->sc = sc;
956 }
957 cmd->sc_length = sc_length;
958 io->coreCommit();
959 if (dataSize >= io->getMaxInlineSize()) {
960 io->coreGetReturn(NULL, 0);
961 }
962 };
963
LF_ScriptForEachMulti(RsContext rsc,RsScript s,uint32_t slot,RsAllocation * ains,size_t ains_length,RsAllocation aout,const void * usr,size_t usr_length,const RsScriptCall * sc,size_t sc_length)964 static void LF_ScriptForEachMulti (RsContext rsc, RsScript s, uint32_t slot, RsAllocation * ains, size_t ains_length, RsAllocation aout, const void * usr, size_t usr_length, const RsScriptCall * sc, size_t sc_length)
965 {
966 if (((Context *)rsc)->isSynchronous()) {
967 rsi_ScriptForEachMulti((Context *)rsc, s, slot, ains, ains_length, aout, usr, usr_length, sc, sc_length);
968 return; }
969
970 ThreadIO *io = &((Context *)rsc)->mIO;
971 const size_t size = sizeof(RS_CMD_ScriptForEachMulti);
972 RS_CMD_ScriptForEachMulti *cmd = static_cast<RS_CMD_ScriptForEachMulti *>(io->coreHeader(RS_CMD_ID_ScriptForEachMulti, size));
973 cmd->s = s;
974 cmd->slot = slot;
975 cmd->ains = ains;
976 cmd->ains_length = ains_length;
977 cmd->aout = aout;
978 cmd->usr = usr;
979 cmd->usr_length = usr_length;
980 cmd->sc = sc;
981 cmd->sc_length = sc_length;
982 io->coreCommit();
983 io->coreGetReturn(NULL, 0);
984 };
985
LF_ScriptReduce(RsContext rsc,RsScript s,uint32_t slot,RsAllocation * ains,size_t ains_length,RsAllocation aout,const RsScriptCall * sc,size_t sc_length)986 static void LF_ScriptReduce (RsContext rsc, RsScript s, uint32_t slot, RsAllocation * ains, size_t ains_length, RsAllocation aout, const RsScriptCall * sc, size_t sc_length)
987 {
988 if (((Context *)rsc)->isSynchronous()) {
989 rsi_ScriptReduce((Context *)rsc, s, slot, ains, ains_length, aout, sc, sc_length);
990 return; }
991
992 ThreadIO *io = &((Context *)rsc)->mIO;
993 const size_t size = sizeof(RS_CMD_ScriptReduce);
994 RS_CMD_ScriptReduce *cmd = static_cast<RS_CMD_ScriptReduce *>(io->coreHeader(RS_CMD_ID_ScriptReduce, size));
995 cmd->s = s;
996 cmd->slot = slot;
997 cmd->ains = ains;
998 cmd->ains_length = ains_length;
999 cmd->aout = aout;
1000 cmd->sc = sc;
1001 cmd->sc_length = sc_length;
1002 io->coreCommit();
1003 io->coreGetReturn(NULL, 0);
1004 };
1005
LF_ScriptSetVarI(RsContext rsc,RsScript s,uint32_t slot,int value)1006 static void LF_ScriptSetVarI (RsContext rsc, RsScript s, uint32_t slot, int value)
1007 {
1008 if (((Context *)rsc)->isSynchronous()) {
1009 rsi_ScriptSetVarI((Context *)rsc, s, slot, value);
1010 return; }
1011
1012 ThreadIO *io = &((Context *)rsc)->mIO;
1013 const size_t size = sizeof(RS_CMD_ScriptSetVarI);
1014 RS_CMD_ScriptSetVarI *cmd = static_cast<RS_CMD_ScriptSetVarI *>(io->coreHeader(RS_CMD_ID_ScriptSetVarI, size));
1015 cmd->s = s;
1016 cmd->slot = slot;
1017 cmd->value = value;
1018 io->coreCommit();
1019 };
1020
LF_ScriptSetVarObj(RsContext rsc,RsScript s,uint32_t slot,RsObjectBase value)1021 static void LF_ScriptSetVarObj (RsContext rsc, RsScript s, uint32_t slot, RsObjectBase value)
1022 {
1023 if (((Context *)rsc)->isSynchronous()) {
1024 rsi_ScriptSetVarObj((Context *)rsc, s, slot, value);
1025 return; }
1026
1027 ThreadIO *io = &((Context *)rsc)->mIO;
1028 const size_t size = sizeof(RS_CMD_ScriptSetVarObj);
1029 RS_CMD_ScriptSetVarObj *cmd = static_cast<RS_CMD_ScriptSetVarObj *>(io->coreHeader(RS_CMD_ID_ScriptSetVarObj, size));
1030 cmd->s = s;
1031 cmd->slot = slot;
1032 cmd->value = value;
1033 io->coreCommit();
1034 };
1035
LF_ScriptSetVarJ(RsContext rsc,RsScript s,uint32_t slot,int64_t value)1036 static void LF_ScriptSetVarJ (RsContext rsc, RsScript s, uint32_t slot, int64_t value)
1037 {
1038 if (((Context *)rsc)->isSynchronous()) {
1039 rsi_ScriptSetVarJ((Context *)rsc, s, slot, value);
1040 return; }
1041
1042 ThreadIO *io = &((Context *)rsc)->mIO;
1043 const size_t size = sizeof(RS_CMD_ScriptSetVarJ);
1044 RS_CMD_ScriptSetVarJ *cmd = static_cast<RS_CMD_ScriptSetVarJ *>(io->coreHeader(RS_CMD_ID_ScriptSetVarJ, size));
1045 cmd->s = s;
1046 cmd->slot = slot;
1047 cmd->value = value;
1048 io->coreCommit();
1049 };
1050
LF_ScriptSetVarF(RsContext rsc,RsScript s,uint32_t slot,float value)1051 static void LF_ScriptSetVarF (RsContext rsc, RsScript s, uint32_t slot, float value)
1052 {
1053 if (((Context *)rsc)->isSynchronous()) {
1054 rsi_ScriptSetVarF((Context *)rsc, s, slot, value);
1055 return; }
1056
1057 ThreadIO *io = &((Context *)rsc)->mIO;
1058 const size_t size = sizeof(RS_CMD_ScriptSetVarF);
1059 RS_CMD_ScriptSetVarF *cmd = static_cast<RS_CMD_ScriptSetVarF *>(io->coreHeader(RS_CMD_ID_ScriptSetVarF, size));
1060 cmd->s = s;
1061 cmd->slot = slot;
1062 cmd->value = value;
1063 io->coreCommit();
1064 };
1065
LF_ScriptSetVarD(RsContext rsc,RsScript s,uint32_t slot,double value)1066 static void LF_ScriptSetVarD (RsContext rsc, RsScript s, uint32_t slot, double value)
1067 {
1068 if (((Context *)rsc)->isSynchronous()) {
1069 rsi_ScriptSetVarD((Context *)rsc, s, slot, value);
1070 return; }
1071
1072 ThreadIO *io = &((Context *)rsc)->mIO;
1073 const size_t size = sizeof(RS_CMD_ScriptSetVarD);
1074 RS_CMD_ScriptSetVarD *cmd = static_cast<RS_CMD_ScriptSetVarD *>(io->coreHeader(RS_CMD_ID_ScriptSetVarD, size));
1075 cmd->s = s;
1076 cmd->slot = slot;
1077 cmd->value = value;
1078 io->coreCommit();
1079 };
1080
LF_ScriptSetVarV(RsContext rsc,RsScript s,uint32_t slot,const void * data,size_t data_length)1081 static void LF_ScriptSetVarV (RsContext rsc, RsScript s, uint32_t slot, const void * data, size_t data_length)
1082 {
1083 if (((Context *)rsc)->isSynchronous()) {
1084 rsi_ScriptSetVarV((Context *)rsc, s, slot, data, data_length);
1085 return; }
1086
1087 ThreadIO *io = &((Context *)rsc)->mIO;
1088 const size_t size = sizeof(RS_CMD_ScriptSetVarV);
1089 size_t dataSize = 0;
1090 dataSize += data_length;
1091 RS_CMD_ScriptSetVarV *cmd = NULL;
1092 if (dataSize < io->getMaxInlineSize()) {;
1093 cmd = static_cast<RS_CMD_ScriptSetVarV *>(io->coreHeader(RS_CMD_ID_ScriptSetVarV, dataSize + size));
1094 } else {
1095 cmd = static_cast<RS_CMD_ScriptSetVarV *>(io->coreHeader(RS_CMD_ID_ScriptSetVarV, size));
1096 }
1097 uint8_t *payload = (uint8_t *)&cmd[1];
1098 cmd->s = s;
1099 cmd->slot = slot;
1100 if (data_length == 0) {
1101 cmd->data = NULL;
1102 } else if (dataSize < io->getMaxInlineSize()) {
1103 memcpy(payload, data, data_length);
1104 cmd->data = (const void *)(payload - ((uint8_t *)&cmd[1]));
1105 payload += data_length;
1106 } else {
1107 cmd->data = data;
1108 }
1109 cmd->data_length = data_length;
1110 io->coreCommit();
1111 if (dataSize >= io->getMaxInlineSize()) {
1112 io->coreGetReturn(NULL, 0);
1113 }
1114 };
1115
LF_ScriptGetVarV(RsContext rsc,RsScript s,uint32_t slot,void * data,size_t data_length)1116 static void LF_ScriptGetVarV (RsContext rsc, RsScript s, uint32_t slot, void * data, size_t data_length)
1117 {
1118 if (((Context *)rsc)->isSynchronous()) {
1119 rsi_ScriptGetVarV((Context *)rsc, s, slot, data, data_length);
1120 return; }
1121
1122 ThreadIO *io = &((Context *)rsc)->mIO;
1123 const size_t size = sizeof(RS_CMD_ScriptGetVarV);
1124 RS_CMD_ScriptGetVarV *cmd = static_cast<RS_CMD_ScriptGetVarV *>(io->coreHeader(RS_CMD_ID_ScriptGetVarV, size));
1125 cmd->s = s;
1126 cmd->slot = slot;
1127 cmd->data = data;
1128 cmd->data_length = data_length;
1129 io->coreCommit();
1130 io->coreGetReturn(NULL, 0);
1131 };
1132
LF_ScriptSetVarVE(RsContext rsc,RsScript s,uint32_t slot,const void * data,size_t data_length,RsElement e,const uint32_t * dims,size_t dims_length)1133 static void LF_ScriptSetVarVE (RsContext rsc, RsScript s, uint32_t slot, const void * data, size_t data_length, RsElement e, const uint32_t * dims, size_t dims_length)
1134 {
1135 if (((Context *)rsc)->isSynchronous()) {
1136 rsi_ScriptSetVarVE((Context *)rsc, s, slot, data, data_length, e, dims, dims_length);
1137 return; }
1138
1139 ThreadIO *io = &((Context *)rsc)->mIO;
1140 const size_t size = sizeof(RS_CMD_ScriptSetVarVE);
1141 size_t dataSize = 0;
1142 dataSize += data_length;
1143 dataSize += dims_length;
1144 RS_CMD_ScriptSetVarVE *cmd = NULL;
1145 if (dataSize < io->getMaxInlineSize()) {;
1146 cmd = static_cast<RS_CMD_ScriptSetVarVE *>(io->coreHeader(RS_CMD_ID_ScriptSetVarVE, dataSize + size));
1147 } else {
1148 cmd = static_cast<RS_CMD_ScriptSetVarVE *>(io->coreHeader(RS_CMD_ID_ScriptSetVarVE, size));
1149 }
1150 uint8_t *payload = (uint8_t *)&cmd[1];
1151 cmd->s = s;
1152 cmd->slot = slot;
1153 if (data_length == 0) {
1154 cmd->data = NULL;
1155 } else if (dataSize < io->getMaxInlineSize()) {
1156 memcpy(payload, data, data_length);
1157 cmd->data = (const void *)(payload - ((uint8_t *)&cmd[1]));
1158 payload += data_length;
1159 } else {
1160 cmd->data = data;
1161 }
1162 cmd->data_length = data_length;
1163 cmd->e = e;
1164 if (dims_length == 0) {
1165 cmd->dims = NULL;
1166 } else if (dataSize < io->getMaxInlineSize()) {
1167 memcpy(payload, dims, dims_length);
1168 cmd->dims = (const uint32_t *)(payload - ((uint8_t *)&cmd[1]));
1169 payload += dims_length;
1170 } else {
1171 cmd->dims = dims;
1172 }
1173 cmd->dims_length = dims_length;
1174 io->coreCommit();
1175 if (dataSize >= io->getMaxInlineSize()) {
1176 io->coreGetReturn(NULL, 0);
1177 }
1178 };
1179
LF_ScriptCCreate(RsContext rsc,const char * resName,size_t resName_length,const char * cacheDir,size_t cacheDir_length,const char * text,size_t text_length)1180 static RsScript LF_ScriptCCreate (RsContext rsc, const char * resName, size_t resName_length, const char * cacheDir, size_t cacheDir_length, const char * text, size_t text_length)
1181 {
1182 if (((Context *)rsc)->isSynchronous()) {
1183 return rsi_ScriptCCreate((Context *)rsc, resName, resName_length, cacheDir, cacheDir_length, text, text_length);
1184 }
1185
1186 ThreadIO *io = &((Context *)rsc)->mIO;
1187 const size_t size = sizeof(RS_CMD_ScriptCCreate);
1188 RS_CMD_ScriptCCreate *cmd = static_cast<RS_CMD_ScriptCCreate *>(io->coreHeader(RS_CMD_ID_ScriptCCreate, size));
1189 cmd->resName = resName;
1190 cmd->resName_length = resName_length;
1191 cmd->cacheDir = cacheDir;
1192 cmd->cacheDir_length = cacheDir_length;
1193 cmd->text = text;
1194 cmd->text_length = text_length;
1195 io->coreCommit();
1196
1197 RsScript ret;
1198 io->coreGetReturn(&ret, sizeof(ret));
1199 return ret;
1200 };
1201
LF_ScriptIntrinsicCreate(RsContext rsc,uint32_t id,RsElement eid)1202 static RsScript LF_ScriptIntrinsicCreate (RsContext rsc, uint32_t id, RsElement eid)
1203 {
1204 if (((Context *)rsc)->isSynchronous()) {
1205 return rsi_ScriptIntrinsicCreate((Context *)rsc, id, eid);
1206 }
1207
1208 ThreadIO *io = &((Context *)rsc)->mIO;
1209 const size_t size = sizeof(RS_CMD_ScriptIntrinsicCreate);
1210 RS_CMD_ScriptIntrinsicCreate *cmd = static_cast<RS_CMD_ScriptIntrinsicCreate *>(io->coreHeader(RS_CMD_ID_ScriptIntrinsicCreate, size));
1211 cmd->id = id;
1212 cmd->eid = eid;
1213 io->coreCommit();
1214
1215 RsScript ret;
1216 io->coreGetReturn(&ret, sizeof(ret));
1217 return ret;
1218 };
1219
LF_ScriptKernelIDCreate(RsContext rsc,RsScript sid,int slot,int sig)1220 static RsScriptKernelID LF_ScriptKernelIDCreate (RsContext rsc, RsScript sid, int slot, int sig)
1221 {
1222 return rsi_ScriptKernelIDCreate((Context *)rsc, sid, slot, sig);
1223 };
1224
LF_ScriptFieldIDCreate(RsContext rsc,RsScript sid,int slot)1225 static RsScriptFieldID LF_ScriptFieldIDCreate (RsContext rsc, RsScript sid, int slot)
1226 {
1227 return rsi_ScriptFieldIDCreate((Context *)rsc, sid, slot);
1228 };
1229
LF_ScriptGroupCreate(RsContext rsc,RsScriptKernelID * kernels,size_t kernels_length,RsScriptKernelID * src,size_t src_length,RsScriptKernelID * dstK,size_t dstK_length,RsScriptFieldID * dstF,size_t dstF_length,const RsType * type,size_t type_length)1230 static RsScriptGroup LF_ScriptGroupCreate (RsContext rsc, RsScriptKernelID * kernels, size_t kernels_length, RsScriptKernelID * src, size_t src_length, RsScriptKernelID * dstK, size_t dstK_length, RsScriptFieldID * dstF, size_t dstF_length, const RsType * type, size_t type_length)
1231 {
1232 return rsi_ScriptGroupCreate((Context *)rsc, kernels, kernels_length, src, src_length, dstK, dstK_length, dstF, dstF_length, type, type_length);
1233 };
1234
LF_ScriptGroupSetOutput(RsContext rsc,RsScriptGroup group,RsScriptKernelID kernel,RsAllocation alloc)1235 static void LF_ScriptGroupSetOutput (RsContext rsc, RsScriptGroup group, RsScriptKernelID kernel, RsAllocation alloc)
1236 {
1237 if (((Context *)rsc)->isSynchronous()) {
1238 rsi_ScriptGroupSetOutput((Context *)rsc, group, kernel, alloc);
1239 return; }
1240
1241 ThreadIO *io = &((Context *)rsc)->mIO;
1242 const size_t size = sizeof(RS_CMD_ScriptGroupSetOutput);
1243 RS_CMD_ScriptGroupSetOutput *cmd = static_cast<RS_CMD_ScriptGroupSetOutput *>(io->coreHeader(RS_CMD_ID_ScriptGroupSetOutput, size));
1244 cmd->group = group;
1245 cmd->kernel = kernel;
1246 cmd->alloc = alloc;
1247 io->coreCommit();
1248 };
1249
LF_ScriptGroupSetInput(RsContext rsc,RsScriptGroup group,RsScriptKernelID kernel,RsAllocation alloc)1250 static void LF_ScriptGroupSetInput (RsContext rsc, RsScriptGroup group, RsScriptKernelID kernel, RsAllocation alloc)
1251 {
1252 if (((Context *)rsc)->isSynchronous()) {
1253 rsi_ScriptGroupSetInput((Context *)rsc, group, kernel, alloc);
1254 return; }
1255
1256 ThreadIO *io = &((Context *)rsc)->mIO;
1257 const size_t size = sizeof(RS_CMD_ScriptGroupSetInput);
1258 RS_CMD_ScriptGroupSetInput *cmd = static_cast<RS_CMD_ScriptGroupSetInput *>(io->coreHeader(RS_CMD_ID_ScriptGroupSetInput, size));
1259 cmd->group = group;
1260 cmd->kernel = kernel;
1261 cmd->alloc = alloc;
1262 io->coreCommit();
1263 };
1264
LF_ScriptGroupExecute(RsContext rsc,RsScriptGroup group)1265 static void LF_ScriptGroupExecute (RsContext rsc, RsScriptGroup group)
1266 {
1267 if (((Context *)rsc)->isSynchronous()) {
1268 rsi_ScriptGroupExecute((Context *)rsc, group);
1269 return; }
1270
1271 ThreadIO *io = &((Context *)rsc)->mIO;
1272 const size_t size = sizeof(RS_CMD_ScriptGroupExecute);
1273 RS_CMD_ScriptGroupExecute *cmd = static_cast<RS_CMD_ScriptGroupExecute *>(io->coreHeader(RS_CMD_ID_ScriptGroupExecute, size));
1274 cmd->group = group;
1275 io->coreCommit();
1276 };
1277
LF_ScriptGroup2Create(RsContext rsc,const char * name,size_t name_length,const char * cacheDir,size_t cacheDir_length,RsClosure * closures,size_t closures_length)1278 static RsScriptGroup2 LF_ScriptGroup2Create (RsContext rsc, const char * name, size_t name_length, const char * cacheDir, size_t cacheDir_length, RsClosure * closures, size_t closures_length)
1279 {
1280 return rsi_ScriptGroup2Create((Context *)rsc, name, name_length, cacheDir, cacheDir_length, closures, closures_length);
1281 };
1282
LF_AllocationIoSend(RsContext rsc,RsAllocation alloc)1283 static void LF_AllocationIoSend (RsContext rsc, RsAllocation alloc)
1284 {
1285 if (((Context *)rsc)->isSynchronous()) {
1286 rsi_AllocationIoSend((Context *)rsc, alloc);
1287 return; }
1288
1289 ThreadIO *io = &((Context *)rsc)->mIO;
1290 const size_t size = sizeof(RS_CMD_AllocationIoSend);
1291 RS_CMD_AllocationIoSend *cmd = static_cast<RS_CMD_AllocationIoSend *>(io->coreHeader(RS_CMD_ID_AllocationIoSend, size));
1292 cmd->alloc = alloc;
1293 io->coreCommit();
1294 };
1295
LF_AllocationIoReceive(RsContext rsc,RsAllocation alloc)1296 static int64_t LF_AllocationIoReceive (RsContext rsc, RsAllocation alloc)
1297 {
1298 if (((Context *)rsc)->isSynchronous()) {
1299 return rsi_AllocationIoReceive((Context *)rsc, alloc);
1300 }
1301
1302 ThreadIO *io = &((Context *)rsc)->mIO;
1303 const size_t size = sizeof(RS_CMD_AllocationIoReceive);
1304 RS_CMD_AllocationIoReceive *cmd = static_cast<RS_CMD_AllocationIoReceive *>(io->coreHeader(RS_CMD_ID_AllocationIoReceive, size));
1305 cmd->alloc = alloc;
1306 io->coreCommit();
1307
1308 int64_t ret;
1309 io->coreGetReturn(&ret, sizeof(ret));
1310 return ret;
1311 };
1312
LF_ProgramStoreCreate(RsContext rsc,bool colorMaskR,bool colorMaskG,bool colorMaskB,bool colorMaskA,bool depthMask,bool ditherEnable,RsBlendSrcFunc srcFunc,RsBlendDstFunc destFunc,RsDepthFunc depthFunc)1313 static RsProgramStore LF_ProgramStoreCreate (RsContext rsc, bool colorMaskR, bool colorMaskG, bool colorMaskB, bool colorMaskA, bool depthMask, bool ditherEnable, RsBlendSrcFunc srcFunc, RsBlendDstFunc destFunc, RsDepthFunc depthFunc)
1314 {
1315 return rsi_ProgramStoreCreate((Context *)rsc, colorMaskR, colorMaskG, colorMaskB, colorMaskA, depthMask, ditherEnable, srcFunc, destFunc, depthFunc);
1316 };
1317
LF_ProgramRasterCreate(RsContext rsc,bool pointSprite,RsCullMode cull)1318 static RsProgramRaster LF_ProgramRasterCreate (RsContext rsc, bool pointSprite, RsCullMode cull)
1319 {
1320 return rsi_ProgramRasterCreate((Context *)rsc, pointSprite, cull);
1321 };
1322
LF_ProgramBindConstants(RsContext rsc,RsProgram vp,uint32_t slot,RsAllocation constants)1323 static void LF_ProgramBindConstants (RsContext rsc, RsProgram vp, uint32_t slot, RsAllocation constants)
1324 {
1325 if (((Context *)rsc)->isSynchronous()) {
1326 rsi_ProgramBindConstants((Context *)rsc, vp, slot, constants);
1327 return; }
1328
1329 ThreadIO *io = &((Context *)rsc)->mIO;
1330 const size_t size = sizeof(RS_CMD_ProgramBindConstants);
1331 RS_CMD_ProgramBindConstants *cmd = static_cast<RS_CMD_ProgramBindConstants *>(io->coreHeader(RS_CMD_ID_ProgramBindConstants, size));
1332 cmd->vp = vp;
1333 cmd->slot = slot;
1334 cmd->constants = constants;
1335 io->coreCommit();
1336 };
1337
LF_ProgramBindTexture(RsContext rsc,RsProgramFragment pf,uint32_t slot,RsAllocation a)1338 static void LF_ProgramBindTexture (RsContext rsc, RsProgramFragment pf, uint32_t slot, RsAllocation a)
1339 {
1340 if (((Context *)rsc)->isSynchronous()) {
1341 rsi_ProgramBindTexture((Context *)rsc, pf, slot, a);
1342 return; }
1343
1344 ThreadIO *io = &((Context *)rsc)->mIO;
1345 const size_t size = sizeof(RS_CMD_ProgramBindTexture);
1346 RS_CMD_ProgramBindTexture *cmd = static_cast<RS_CMD_ProgramBindTexture *>(io->coreHeader(RS_CMD_ID_ProgramBindTexture, size));
1347 cmd->pf = pf;
1348 cmd->slot = slot;
1349 cmd->a = a;
1350 io->coreCommit();
1351 };
1352
LF_ProgramBindSampler(RsContext rsc,RsProgramFragment pf,uint32_t slot,RsSampler s)1353 static void LF_ProgramBindSampler (RsContext rsc, RsProgramFragment pf, uint32_t slot, RsSampler s)
1354 {
1355 if (((Context *)rsc)->isSynchronous()) {
1356 rsi_ProgramBindSampler((Context *)rsc, pf, slot, s);
1357 return; }
1358
1359 ThreadIO *io = &((Context *)rsc)->mIO;
1360 const size_t size = sizeof(RS_CMD_ProgramBindSampler);
1361 RS_CMD_ProgramBindSampler *cmd = static_cast<RS_CMD_ProgramBindSampler *>(io->coreHeader(RS_CMD_ID_ProgramBindSampler, size));
1362 cmd->pf = pf;
1363 cmd->slot = slot;
1364 cmd->s = s;
1365 io->coreCommit();
1366 };
1367
LF_ProgramFragmentCreate(RsContext rsc,const char * shaderText,size_t shaderText_length,const char ** textureNames,size_t textureNames_length_length,const size_t * textureNames_length,const uintptr_t * params,size_t params_length)1368 static RsProgramFragment LF_ProgramFragmentCreate (RsContext rsc, const char * shaderText, size_t shaderText_length, const char ** textureNames, size_t textureNames_length_length, const size_t * textureNames_length, const uintptr_t * params, size_t params_length)
1369 {
1370 return rsi_ProgramFragmentCreate((Context *)rsc, shaderText, shaderText_length, textureNames, textureNames_length_length, textureNames_length, params, params_length);
1371 };
1372
LF_ProgramVertexCreate(RsContext rsc,const char * shaderText,size_t shaderText_length,const char ** textureNames,size_t textureNames_length_length,const size_t * textureNames_length,const uintptr_t * params,size_t params_length)1373 static RsProgramVertex LF_ProgramVertexCreate (RsContext rsc, const char * shaderText, size_t shaderText_length, const char ** textureNames, size_t textureNames_length_length, const size_t * textureNames_length, const uintptr_t * params, size_t params_length)
1374 {
1375 return rsi_ProgramVertexCreate((Context *)rsc, shaderText, shaderText_length, textureNames, textureNames_length_length, textureNames_length, params, params_length);
1376 };
1377
LF_FontCreateFromFile(RsContext rsc,const char * name,size_t name_length,float fontSize,uint32_t dpi)1378 static RsFont LF_FontCreateFromFile (RsContext rsc, const char * name, size_t name_length, float fontSize, uint32_t dpi)
1379 {
1380 if (((Context *)rsc)->isSynchronous()) {
1381 return rsi_FontCreateFromFile((Context *)rsc, name, name_length, fontSize, dpi);
1382 }
1383
1384 ThreadIO *io = &((Context *)rsc)->mIO;
1385 const size_t size = sizeof(RS_CMD_FontCreateFromFile);
1386 RS_CMD_FontCreateFromFile *cmd = static_cast<RS_CMD_FontCreateFromFile *>(io->coreHeader(RS_CMD_ID_FontCreateFromFile, size));
1387 cmd->name = name;
1388 cmd->name_length = name_length;
1389 cmd->fontSize = fontSize;
1390 cmd->dpi = dpi;
1391 io->coreCommit();
1392
1393 RsFont ret;
1394 io->coreGetReturn(&ret, sizeof(ret));
1395 return ret;
1396 };
1397
LF_FontCreateFromMemory(RsContext rsc,const char * name,size_t name_length,float fontSize,uint32_t dpi,const void * data,size_t data_length)1398 static RsFont LF_FontCreateFromMemory (RsContext rsc, const char * name, size_t name_length, float fontSize, uint32_t dpi, const void * data, size_t data_length)
1399 {
1400 if (((Context *)rsc)->isSynchronous()) {
1401 return rsi_FontCreateFromMemory((Context *)rsc, name, name_length, fontSize, dpi, data, data_length);
1402 }
1403
1404 ThreadIO *io = &((Context *)rsc)->mIO;
1405 const size_t size = sizeof(RS_CMD_FontCreateFromMemory);
1406 RS_CMD_FontCreateFromMemory *cmd = static_cast<RS_CMD_FontCreateFromMemory *>(io->coreHeader(RS_CMD_ID_FontCreateFromMemory, size));
1407 cmd->name = name;
1408 cmd->name_length = name_length;
1409 cmd->fontSize = fontSize;
1410 cmd->dpi = dpi;
1411 cmd->data = data;
1412 cmd->data_length = data_length;
1413 io->coreCommit();
1414
1415 RsFont ret;
1416 io->coreGetReturn(&ret, sizeof(ret));
1417 return ret;
1418 };
1419
LF_MeshCreate(RsContext rsc,RsAllocation * vtx,size_t vtx_length,RsAllocation * idx,size_t idx_length,uint32_t * primType,size_t primType_length)1420 static RsMesh LF_MeshCreate (RsContext rsc, RsAllocation * vtx, size_t vtx_length, RsAllocation * idx, size_t idx_length, uint32_t * primType, size_t primType_length)
1421 {
1422 if (((Context *)rsc)->isSynchronous()) {
1423 return rsi_MeshCreate((Context *)rsc, vtx, vtx_length, idx, idx_length, primType, primType_length);
1424 }
1425
1426 ThreadIO *io = &((Context *)rsc)->mIO;
1427 const size_t size = sizeof(RS_CMD_MeshCreate);
1428 RS_CMD_MeshCreate *cmd = static_cast<RS_CMD_MeshCreate *>(io->coreHeader(RS_CMD_ID_MeshCreate, size));
1429 cmd->vtx = vtx;
1430 cmd->vtx_length = vtx_length;
1431 cmd->idx = idx;
1432 cmd->idx_length = idx_length;
1433 cmd->primType = primType;
1434 cmd->primType_length = primType_length;
1435 io->coreCommit();
1436
1437 RsMesh ret;
1438 io->coreGetReturn(&ret, sizeof(ret));
1439 return ret;
1440 };
1441
LF_ContextBindProgramStore(RsContext rsc,RsProgramStore pgm)1442 static void LF_ContextBindProgramStore (RsContext rsc, RsProgramStore pgm)
1443 {
1444 if (((Context *)rsc)->isSynchronous()) {
1445 rsi_ContextBindProgramStore((Context *)rsc, pgm);
1446 return; }
1447
1448 ThreadIO *io = &((Context *)rsc)->mIO;
1449 const size_t size = sizeof(RS_CMD_ContextBindProgramStore);
1450 RS_CMD_ContextBindProgramStore *cmd = static_cast<RS_CMD_ContextBindProgramStore *>(io->coreHeader(RS_CMD_ID_ContextBindProgramStore, size));
1451 cmd->pgm = pgm;
1452 io->coreCommit();
1453 };
1454
LF_ContextBindProgramFragment(RsContext rsc,RsProgramFragment pgm)1455 static void LF_ContextBindProgramFragment (RsContext rsc, RsProgramFragment pgm)
1456 {
1457 if (((Context *)rsc)->isSynchronous()) {
1458 rsi_ContextBindProgramFragment((Context *)rsc, pgm);
1459 return; }
1460
1461 ThreadIO *io = &((Context *)rsc)->mIO;
1462 const size_t size = sizeof(RS_CMD_ContextBindProgramFragment);
1463 RS_CMD_ContextBindProgramFragment *cmd = static_cast<RS_CMD_ContextBindProgramFragment *>(io->coreHeader(RS_CMD_ID_ContextBindProgramFragment, size));
1464 cmd->pgm = pgm;
1465 io->coreCommit();
1466 };
1467
LF_ContextBindProgramVertex(RsContext rsc,RsProgramVertex pgm)1468 static void LF_ContextBindProgramVertex (RsContext rsc, RsProgramVertex pgm)
1469 {
1470 if (((Context *)rsc)->isSynchronous()) {
1471 rsi_ContextBindProgramVertex((Context *)rsc, pgm);
1472 return; }
1473
1474 ThreadIO *io = &((Context *)rsc)->mIO;
1475 const size_t size = sizeof(RS_CMD_ContextBindProgramVertex);
1476 RS_CMD_ContextBindProgramVertex *cmd = static_cast<RS_CMD_ContextBindProgramVertex *>(io->coreHeader(RS_CMD_ID_ContextBindProgramVertex, size));
1477 cmd->pgm = pgm;
1478 io->coreCommit();
1479 };
1480
LF_ContextBindProgramRaster(RsContext rsc,RsProgramRaster pgm)1481 static void LF_ContextBindProgramRaster (RsContext rsc, RsProgramRaster pgm)
1482 {
1483 if (((Context *)rsc)->isSynchronous()) {
1484 rsi_ContextBindProgramRaster((Context *)rsc, pgm);
1485 return; }
1486
1487 ThreadIO *io = &((Context *)rsc)->mIO;
1488 const size_t size = sizeof(RS_CMD_ContextBindProgramRaster);
1489 RS_CMD_ContextBindProgramRaster *cmd = static_cast<RS_CMD_ContextBindProgramRaster *>(io->coreHeader(RS_CMD_ID_ContextBindProgramRaster, size));
1490 cmd->pgm = pgm;
1491 io->coreCommit();
1492 };
1493
LF_ContextBindFont(RsContext rsc,RsFont pgm)1494 static void LF_ContextBindFont (RsContext rsc, RsFont pgm)
1495 {
1496 if (((Context *)rsc)->isSynchronous()) {
1497 rsi_ContextBindFont((Context *)rsc, pgm);
1498 return; }
1499
1500 ThreadIO *io = &((Context *)rsc)->mIO;
1501 const size_t size = sizeof(RS_CMD_ContextBindFont);
1502 RS_CMD_ContextBindFont *cmd = static_cast<RS_CMD_ContextBindFont *>(io->coreHeader(RS_CMD_ID_ContextBindFont, size));
1503 cmd->pgm = pgm;
1504 io->coreCommit();
1505 };
1506
LF_ContextSetSurface(RsContext rsc,uint32_t width,uint32_t height,RsNativeWindow sur)1507 static void LF_ContextSetSurface (RsContext rsc, uint32_t width, uint32_t height, RsNativeWindow sur)
1508 {
1509 if (((Context *)rsc)->isSynchronous()) {
1510 rsi_ContextSetSurface((Context *)rsc, width, height, sur);
1511 return; }
1512
1513 ThreadIO *io = &((Context *)rsc)->mIO;
1514 const size_t size = sizeof(RS_CMD_ContextSetSurface);
1515 RS_CMD_ContextSetSurface *cmd = static_cast<RS_CMD_ContextSetSurface *>(io->coreHeader(RS_CMD_ID_ContextSetSurface, size));
1516 cmd->width = width;
1517 cmd->height = height;
1518 cmd->sur = sur;
1519 io->coreCommit();
1520 io->coreGetReturn(NULL, 0);
1521 };
1522
LF_ContextBindRootScript(RsContext rsc,RsScript sampler)1523 static void LF_ContextBindRootScript (RsContext rsc, RsScript sampler)
1524 {
1525 if (((Context *)rsc)->isSynchronous()) {
1526 rsi_ContextBindRootScript((Context *)rsc, sampler);
1527 return; }
1528
1529 ThreadIO *io = &((Context *)rsc)->mIO;
1530 const size_t size = sizeof(RS_CMD_ContextBindRootScript);
1531 RS_CMD_ContextBindRootScript *cmd = static_cast<RS_CMD_ContextBindRootScript *>(io->coreHeader(RS_CMD_ID_ContextBindRootScript, size));
1532 cmd->sampler = sampler;
1533 io->coreCommit();
1534 };
1535
LF_ContextPause(RsContext rsc)1536 static void LF_ContextPause (RsContext rsc)
1537 {
1538 if (((Context *)rsc)->isSynchronous()) {
1539 rsi_ContextPause((Context *)rsc);
1540 return; }
1541
1542 ThreadIO *io = &((Context *)rsc)->mIO;
1543 const size_t size = sizeof(RS_CMD_ContextPause);
1544 RS_CMD_ContextPause *cmd = static_cast<RS_CMD_ContextPause *>(io->coreHeader(RS_CMD_ID_ContextPause, size));
1545 io->coreCommit();
1546 };
1547
LF_ContextResume(RsContext rsc)1548 static void LF_ContextResume (RsContext rsc)
1549 {
1550 if (((Context *)rsc)->isSynchronous()) {
1551 rsi_ContextResume((Context *)rsc);
1552 return; }
1553
1554 ThreadIO *io = &((Context *)rsc)->mIO;
1555 const size_t size = sizeof(RS_CMD_ContextResume);
1556 RS_CMD_ContextResume *cmd = static_cast<RS_CMD_ContextResume *>(io->coreHeader(RS_CMD_ID_ContextResume, size));
1557 io->coreCommit();
1558 };
1559
1560
rsContextDestroy(RsContext rsc)1561 extern "C" void rsContextDestroy (RsContext rsc)
1562 {
1563 LF_ContextDestroy((Context *)rsc);
1564 }
1565
rsContextGetMessage(RsContext rsc,void * data,size_t data_length,size_t * receiveLen,size_t receiveLen_length,uint32_t * usrID,size_t usrID_length)1566 extern "C" RsMessageToClientType rsContextGetMessage (RsContext rsc, void * data, size_t data_length, size_t * receiveLen, size_t receiveLen_length, uint32_t * usrID, size_t usrID_length)
1567 {
1568 return LF_ContextGetMessage((Context *)rsc, data, data_length, receiveLen, receiveLen_length, usrID, usrID_length);
1569 }
1570
rsContextPeekMessage(RsContext rsc,size_t * receiveLen,size_t receiveLen_length,uint32_t * usrID,size_t usrID_length)1571 extern "C" RsMessageToClientType rsContextPeekMessage (RsContext rsc, size_t * receiveLen, size_t receiveLen_length, uint32_t * usrID, size_t usrID_length)
1572 {
1573 return LF_ContextPeekMessage((Context *)rsc, receiveLen, receiveLen_length, usrID, usrID_length);
1574 }
1575
rsContextSendMessage(RsContext rsc,uint32_t id,const uint8_t * data,size_t data_length)1576 extern "C" void rsContextSendMessage (RsContext rsc, uint32_t id, const uint8_t * data, size_t data_length)
1577 {
1578 LF_ContextSendMessage((Context *)rsc, id, data, data_length);
1579 }
1580
rsContextInitToClient(RsContext rsc)1581 extern "C" void rsContextInitToClient (RsContext rsc)
1582 {
1583 LF_ContextInitToClient((Context *)rsc);
1584 }
1585
rsContextDeinitToClient(RsContext rsc)1586 extern "C" void rsContextDeinitToClient (RsContext rsc)
1587 {
1588 LF_ContextDeinitToClient((Context *)rsc);
1589 }
1590
rsContextSetCacheDir(RsContext rsc,const char * cacheDir,size_t cacheDir_length)1591 extern "C" void rsContextSetCacheDir (RsContext rsc, const char * cacheDir, size_t cacheDir_length)
1592 {
1593 LF_ContextSetCacheDir((Context *)rsc, cacheDir, cacheDir_length);
1594 }
1595
rsTypeCreate(RsContext rsc,RsElement e,uint32_t dimX,uint32_t dimY,uint32_t dimZ,bool mipmaps,bool faces,uint32_t yuv)1596 extern "C" RsType rsTypeCreate (RsContext rsc, RsElement e, uint32_t dimX, uint32_t dimY, uint32_t dimZ, bool mipmaps, bool faces, uint32_t yuv)
1597 {
1598 return LF_TypeCreate((Context *)rsc, e, dimX, dimY, dimZ, mipmaps, faces, yuv);
1599 }
1600
rsTypeCreate2(RsContext rsc,const RsTypeCreateParams * dat,size_t dat_length)1601 extern "C" RsType rsTypeCreate2 (RsContext rsc, const RsTypeCreateParams * dat, size_t dat_length)
1602 {
1603 return LF_TypeCreate2((Context *)rsc, dat, dat_length);
1604 }
1605
rsAllocationCreateTyped(RsContext rsc,RsType vtype,RsAllocationMipmapControl mipmaps,uint32_t usages,uintptr_t ptr)1606 extern "C" RsAllocation rsAllocationCreateTyped (RsContext rsc, RsType vtype, RsAllocationMipmapControl mipmaps, uint32_t usages, uintptr_t ptr)
1607 {
1608 return LF_AllocationCreateTyped((Context *)rsc, vtype, mipmaps, usages, ptr);
1609 }
1610
rsAllocationCreateFromBitmap(RsContext rsc,RsType vtype,RsAllocationMipmapControl mipmaps,const void * data,size_t data_length,uint32_t usages)1611 extern "C" RsAllocation rsAllocationCreateFromBitmap (RsContext rsc, RsType vtype, RsAllocationMipmapControl mipmaps, const void * data, size_t data_length, uint32_t usages)
1612 {
1613 return LF_AllocationCreateFromBitmap((Context *)rsc, vtype, mipmaps, data, data_length, usages);
1614 }
1615
rsAllocationCubeCreateFromBitmap(RsContext rsc,RsType vtype,RsAllocationMipmapControl mipmaps,const void * data,size_t data_length,uint32_t usages)1616 extern "C" RsAllocation rsAllocationCubeCreateFromBitmap (RsContext rsc, RsType vtype, RsAllocationMipmapControl mipmaps, const void * data, size_t data_length, uint32_t usages)
1617 {
1618 return LF_AllocationCubeCreateFromBitmap((Context *)rsc, vtype, mipmaps, data, data_length, usages);
1619 }
1620
rsAllocationSetupBufferQueue(RsContext rsc,RsAllocation alloc,uint32_t numAlloc)1621 extern "C" void rsAllocationSetupBufferQueue (RsContext rsc, RsAllocation alloc, uint32_t numAlloc)
1622 {
1623 LF_AllocationSetupBufferQueue((Context *)rsc, alloc, numAlloc);
1624 }
1625
rsAllocationShareBufferQueue(RsContext rsc,RsAllocation alloc1,RsAllocation alloc2)1626 extern "C" void rsAllocationShareBufferQueue (RsContext rsc, RsAllocation alloc1, RsAllocation alloc2)
1627 {
1628 LF_AllocationShareBufferQueue((Context *)rsc, alloc1, alloc2);
1629 }
1630
rsAllocationGetSurface(RsContext rsc,RsAllocation alloc)1631 extern "C" RsNativeWindow rsAllocationGetSurface (RsContext rsc, RsAllocation alloc)
1632 {
1633 return LF_AllocationGetSurface((Context *)rsc, alloc);
1634 }
1635
rsAllocationSetSurface(RsContext rsc,RsAllocation alloc,RsNativeWindow sur)1636 extern "C" void rsAllocationSetSurface (RsContext rsc, RsAllocation alloc, RsNativeWindow sur)
1637 {
1638 LF_AllocationSetSurface((Context *)rsc, alloc, sur);
1639 }
1640
rsAllocationAdapterCreate(RsContext rsc,RsType vtype,RsAllocation baseAlloc)1641 extern "C" RsAllocation rsAllocationAdapterCreate (RsContext rsc, RsType vtype, RsAllocation baseAlloc)
1642 {
1643 return LF_AllocationAdapterCreate((Context *)rsc, vtype, baseAlloc);
1644 }
1645
rsAllocationAdapterOffset(RsContext rsc,RsAllocation alloc,const uint32_t * offsets,size_t offsets_length)1646 extern "C" void rsAllocationAdapterOffset (RsContext rsc, RsAllocation alloc, const uint32_t * offsets, size_t offsets_length)
1647 {
1648 LF_AllocationAdapterOffset((Context *)rsc, alloc, offsets, offsets_length);
1649 }
1650
rsContextFinish(RsContext rsc)1651 extern "C" void rsContextFinish (RsContext rsc)
1652 {
1653 LF_ContextFinish((Context *)rsc);
1654 }
1655
rsContextDump(RsContext rsc,int32_t bits)1656 extern "C" void rsContextDump (RsContext rsc, int32_t bits)
1657 {
1658 LF_ContextDump((Context *)rsc, bits);
1659 }
1660
rsContextSetPriority(RsContext rsc,int32_t priority)1661 extern "C" void rsContextSetPriority (RsContext rsc, int32_t priority)
1662 {
1663 LF_ContextSetPriority((Context *)rsc, priority);
1664 }
1665
rsContextDestroyWorker(RsContext rsc)1666 extern "C" void rsContextDestroyWorker (RsContext rsc)
1667 {
1668 LF_ContextDestroyWorker((Context *)rsc);
1669 }
1670
rsAssignName(RsContext rsc,RsObjectBase obj,const char * name,size_t name_length)1671 extern "C" void rsAssignName (RsContext rsc, RsObjectBase obj, const char * name, size_t name_length)
1672 {
1673 LF_AssignName((Context *)rsc, obj, name, name_length);
1674 }
1675
rsObjDestroy(RsContext rsc,RsAsyncVoidPtr objPtr)1676 extern "C" void rsObjDestroy (RsContext rsc, RsAsyncVoidPtr objPtr)
1677 {
1678 LF_ObjDestroy((Context *)rsc, objPtr);
1679 }
1680
rsElementCreate(RsContext rsc,RsDataType mType,RsDataKind mKind,bool mNormalized,uint32_t mVectorSize)1681 extern "C" RsElement rsElementCreate (RsContext rsc, RsDataType mType, RsDataKind mKind, bool mNormalized, uint32_t mVectorSize)
1682 {
1683 return LF_ElementCreate((Context *)rsc, mType, mKind, mNormalized, mVectorSize);
1684 }
1685
rsElementCreate2(RsContext rsc,const RsElement * elements,size_t elements_length,const char ** names,size_t names_length_length,const size_t * names_length,const uint32_t * arraySize,size_t arraySize_length)1686 extern "C" RsElement rsElementCreate2 (RsContext rsc, const RsElement * elements, size_t elements_length, const char ** names, size_t names_length_length, const size_t * names_length, const uint32_t * arraySize, size_t arraySize_length)
1687 {
1688 return LF_ElementCreate2((Context *)rsc, elements, elements_length, names, names_length_length, names_length, arraySize, arraySize_length);
1689 }
1690
rsAllocationCopyToBitmap(RsContext rsc,RsAllocation alloc,void * data,size_t data_length)1691 extern "C" void rsAllocationCopyToBitmap (RsContext rsc, RsAllocation alloc, void * data, size_t data_length)
1692 {
1693 LF_AllocationCopyToBitmap((Context *)rsc, alloc, data, data_length);
1694 }
1695
rsAllocationGetPointer(RsContext rsc,RsAllocation va,uint32_t lod,RsAllocationCubemapFace face,uint32_t z,uint32_t array,size_t * stride,size_t stride_length)1696 extern "C" void * rsAllocationGetPointer (RsContext rsc, RsAllocation va, uint32_t lod, RsAllocationCubemapFace face, uint32_t z, uint32_t array, size_t * stride, size_t stride_length)
1697 {
1698 return LF_AllocationGetPointer((Context *)rsc, va, lod, face, z, array, stride, stride_length);
1699 }
1700
rsAllocation1DData(RsContext rsc,RsAllocation va,uint32_t xoff,uint32_t lod,uint32_t count,const void * data,size_t data_length)1701 extern "C" void rsAllocation1DData (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t lod, uint32_t count, const void * data, size_t data_length)
1702 {
1703 LF_Allocation1DData((Context *)rsc, va, xoff, lod, count, data, data_length);
1704 }
1705
rsAllocation1DElementData(RsContext rsc,RsAllocation va,uint32_t x,uint32_t lod,const void * data,size_t data_length,size_t comp_offset)1706 extern "C" void rsAllocation1DElementData (RsContext rsc, RsAllocation va, uint32_t x, uint32_t lod, const void * data, size_t data_length, size_t comp_offset)
1707 {
1708 LF_Allocation1DElementData((Context *)rsc, va, x, lod, data, data_length, comp_offset);
1709 }
1710
rsAllocationElementData(RsContext rsc,RsAllocation va,uint32_t x,uint32_t y,uint32_t z,uint32_t lod,const void * data,size_t data_length,size_t comp_offset)1711 extern "C" void rsAllocationElementData (RsContext rsc, RsAllocation va, uint32_t x, uint32_t y, uint32_t z, uint32_t lod, const void * data, size_t data_length, size_t comp_offset)
1712 {
1713 LF_AllocationElementData((Context *)rsc, va, x, y, z, lod, data, data_length, comp_offset);
1714 }
1715
rsAllocation2DData(RsContext rsc,RsAllocation va,uint32_t xoff,uint32_t yoff,uint32_t lod,RsAllocationCubemapFace face,uint32_t w,uint32_t h,const void * data,size_t data_length,size_t stride)1716 extern "C" void rsAllocation2DData (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t lod, RsAllocationCubemapFace face, uint32_t w, uint32_t h, const void * data, size_t data_length, size_t stride)
1717 {
1718 LF_Allocation2DData((Context *)rsc, va, xoff, yoff, lod, face, w, h, data, data_length, stride);
1719 }
1720
rsAllocation3DData(RsContext rsc,RsAllocation va,uint32_t xoff,uint32_t yoff,uint32_t zoff,uint32_t lod,uint32_t w,uint32_t h,uint32_t d,const void * data,size_t data_length,size_t stride)1721 extern "C" void rsAllocation3DData (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d, const void * data, size_t data_length, size_t stride)
1722 {
1723 LF_Allocation3DData((Context *)rsc, va, xoff, yoff, zoff, lod, w, h, d, data, data_length, stride);
1724 }
1725
rsAllocationGenerateMipmaps(RsContext rsc,RsAllocation va)1726 extern "C" void rsAllocationGenerateMipmaps (RsContext rsc, RsAllocation va)
1727 {
1728 LF_AllocationGenerateMipmaps((Context *)rsc, va);
1729 }
1730
rsAllocationRead(RsContext rsc,RsAllocation va,void * data,size_t data_length)1731 extern "C" void rsAllocationRead (RsContext rsc, RsAllocation va, void * data, size_t data_length)
1732 {
1733 LF_AllocationRead((Context *)rsc, va, data, data_length);
1734 }
1735
rsAllocation1DRead(RsContext rsc,RsAllocation va,uint32_t xoff,uint32_t lod,uint32_t count,void * data,size_t data_length)1736 extern "C" void rsAllocation1DRead (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t lod, uint32_t count, void * data, size_t data_length)
1737 {
1738 LF_Allocation1DRead((Context *)rsc, va, xoff, lod, count, data, data_length);
1739 }
1740
rsAllocationElementRead(RsContext rsc,RsAllocation va,uint32_t x,uint32_t y,uint32_t z,uint32_t lod,void * data,size_t data_length,size_t comp_offset)1741 extern "C" void rsAllocationElementRead (RsContext rsc, RsAllocation va, uint32_t x, uint32_t y, uint32_t z, uint32_t lod, void * data, size_t data_length, size_t comp_offset)
1742 {
1743 LF_AllocationElementRead((Context *)rsc, va, x, y, z, lod, data, data_length, comp_offset);
1744 }
1745
rsAllocation2DRead(RsContext rsc,RsAllocation va,uint32_t xoff,uint32_t yoff,uint32_t lod,RsAllocationCubemapFace face,uint32_t w,uint32_t h,void * data,size_t data_length,size_t stride)1746 extern "C" void rsAllocation2DRead (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t lod, RsAllocationCubemapFace face, uint32_t w, uint32_t h, void * data, size_t data_length, size_t stride)
1747 {
1748 LF_Allocation2DRead((Context *)rsc, va, xoff, yoff, lod, face, w, h, data, data_length, stride);
1749 }
1750
rsAllocation3DRead(RsContext rsc,RsAllocation va,uint32_t xoff,uint32_t yoff,uint32_t zoff,uint32_t lod,uint32_t w,uint32_t h,uint32_t d,void * data,size_t data_length,size_t stride)1751 extern "C" void rsAllocation3DRead (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d, void * data, size_t data_length, size_t stride)
1752 {
1753 LF_Allocation3DRead((Context *)rsc, va, xoff, yoff, zoff, lod, w, h, d, data, data_length, stride);
1754 }
1755
rsAllocationSyncAll(RsContext rsc,RsAllocation va,RsAllocationUsageType src)1756 extern "C" void rsAllocationSyncAll (RsContext rsc, RsAllocation va, RsAllocationUsageType src)
1757 {
1758 LF_AllocationSyncAll((Context *)rsc, va, src);
1759 }
1760
rsAllocationResize1D(RsContext rsc,RsAllocation va,uint32_t dimX)1761 extern "C" void rsAllocationResize1D (RsContext rsc, RsAllocation va, uint32_t dimX)
1762 {
1763 LF_AllocationResize1D((Context *)rsc, va, dimX);
1764 }
1765
rsAllocationCopy2DRange(RsContext rsc,RsAllocation dest,uint32_t destXoff,uint32_t destYoff,uint32_t destMip,uint32_t destFace,uint32_t width,uint32_t height,RsAllocation src,uint32_t srcXoff,uint32_t srcYoff,uint32_t srcMip,uint32_t srcFace)1766 extern "C" void rsAllocationCopy2DRange (RsContext rsc, RsAllocation dest, uint32_t destXoff, uint32_t destYoff, uint32_t destMip, uint32_t destFace, uint32_t width, uint32_t height, RsAllocation src, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcMip, uint32_t srcFace)
1767 {
1768 LF_AllocationCopy2DRange((Context *)rsc, dest, destXoff, destYoff, destMip, destFace, width, height, src, srcXoff, srcYoff, srcMip, srcFace);
1769 }
1770
rsAllocationCopy3DRange(RsContext rsc,RsAllocation dest,uint32_t destXoff,uint32_t destYoff,uint32_t destZoff,uint32_t destMip,uint32_t width,uint32_t height,uint32_t depth,RsAllocation src,uint32_t srcXoff,uint32_t srcYoff,uint32_t srcZoff,uint32_t srcMip)1771 extern "C" void rsAllocationCopy3DRange (RsContext rsc, RsAllocation dest, uint32_t destXoff, uint32_t destYoff, uint32_t destZoff, uint32_t destMip, uint32_t width, uint32_t height, uint32_t depth, RsAllocation src, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff, uint32_t srcMip)
1772 {
1773 LF_AllocationCopy3DRange((Context *)rsc, dest, destXoff, destYoff, destZoff, destMip, width, height, depth, src, srcXoff, srcYoff, srcZoff, srcMip);
1774 }
1775
rsClosureCreate(RsContext rsc,RsScriptKernelID kernelID,RsAllocation returnValue,RsScriptFieldID * fieldIDs,size_t fieldIDs_length,const int64_t * values,size_t values_length,const int * sizes,size_t sizes_length,RsClosure * depClosures,size_t depClosures_length,RsScriptFieldID * depFieldIDs,size_t depFieldIDs_length)1776 extern "C" RsClosure rsClosureCreate (RsContext rsc, RsScriptKernelID kernelID, RsAllocation returnValue, RsScriptFieldID * fieldIDs, size_t fieldIDs_length, const int64_t * values, size_t values_length, const int * sizes, size_t sizes_length, RsClosure * depClosures, size_t depClosures_length, RsScriptFieldID * depFieldIDs, size_t depFieldIDs_length)
1777 {
1778 return LF_ClosureCreate((Context *)rsc, kernelID, returnValue, fieldIDs, fieldIDs_length, values, values_length, sizes, sizes_length, depClosures, depClosures_length, depFieldIDs, depFieldIDs_length);
1779 }
1780
rsInvokeClosureCreate(RsContext rsc,RsScriptInvokeID invokeID,const void * params,size_t params_length,const RsScriptFieldID * fieldIDs,size_t fieldIDs_length,const int64_t * values,size_t values_length,const int * sizes,size_t sizes_length)1781 extern "C" RsClosure rsInvokeClosureCreate (RsContext rsc, RsScriptInvokeID invokeID, const void * params, size_t params_length, const RsScriptFieldID * fieldIDs, size_t fieldIDs_length, const int64_t * values, size_t values_length, const int * sizes, size_t sizes_length)
1782 {
1783 return LF_InvokeClosureCreate((Context *)rsc, invokeID, params, params_length, fieldIDs, fieldIDs_length, values, values_length, sizes, sizes_length);
1784 }
1785
rsClosureSetArg(RsContext rsc,RsClosure closureID,uint32_t index,uintptr_t value,int valueSize)1786 extern "C" void rsClosureSetArg (RsContext rsc, RsClosure closureID, uint32_t index, uintptr_t value, int valueSize)
1787 {
1788 LF_ClosureSetArg((Context *)rsc, closureID, index, value, valueSize);
1789 }
1790
rsClosureSetGlobal(RsContext rsc,RsClosure closureID,RsScriptFieldID fieldID,int64_t value,int valueSize)1791 extern "C" void rsClosureSetGlobal (RsContext rsc, RsClosure closureID, RsScriptFieldID fieldID, int64_t value, int valueSize)
1792 {
1793 LF_ClosureSetGlobal((Context *)rsc, closureID, fieldID, value, valueSize);
1794 }
1795
rsSamplerCreate(RsContext rsc,RsSamplerValue magFilter,RsSamplerValue minFilter,RsSamplerValue wrapS,RsSamplerValue wrapT,RsSamplerValue wrapR,float mAniso)1796 extern "C" RsSampler rsSamplerCreate (RsContext rsc, RsSamplerValue magFilter, RsSamplerValue minFilter, RsSamplerValue wrapS, RsSamplerValue wrapT, RsSamplerValue wrapR, float mAniso)
1797 {
1798 return LF_SamplerCreate((Context *)rsc, magFilter, minFilter, wrapS, wrapT, wrapR, mAniso);
1799 }
1800
rsScriptBindAllocation(RsContext rsc,RsScript vtm,RsAllocation va,uint32_t slot)1801 extern "C" void rsScriptBindAllocation (RsContext rsc, RsScript vtm, RsAllocation va, uint32_t slot)
1802 {
1803 LF_ScriptBindAllocation((Context *)rsc, vtm, va, slot);
1804 }
1805
rsScriptSetTimeZone(RsContext rsc,RsScript s,const char * timeZone,size_t timeZone_length)1806 extern "C" void rsScriptSetTimeZone (RsContext rsc, RsScript s, const char * timeZone, size_t timeZone_length)
1807 {
1808 LF_ScriptSetTimeZone((Context *)rsc, s, timeZone, timeZone_length);
1809 }
1810
rsScriptInvokeIDCreate(RsContext rsc,RsScript s,uint32_t slot)1811 extern "C" RsScriptInvokeID rsScriptInvokeIDCreate (RsContext rsc, RsScript s, uint32_t slot)
1812 {
1813 return LF_ScriptInvokeIDCreate((Context *)rsc, s, slot);
1814 }
1815
rsScriptInvoke(RsContext rsc,RsScript s,uint32_t slot)1816 extern "C" void rsScriptInvoke (RsContext rsc, RsScript s, uint32_t slot)
1817 {
1818 LF_ScriptInvoke((Context *)rsc, s, slot);
1819 }
1820
rsScriptInvokeV(RsContext rsc,RsScript s,uint32_t slot,const void * data,size_t data_length)1821 extern "C" void rsScriptInvokeV (RsContext rsc, RsScript s, uint32_t slot, const void * data, size_t data_length)
1822 {
1823 LF_ScriptInvokeV((Context *)rsc, s, slot, data, data_length);
1824 }
1825
rsScriptForEach(RsContext rsc,RsScript s,uint32_t slot,RsAllocation ain,RsAllocation aout,const void * usr,size_t usr_length,const RsScriptCall * sc,size_t sc_length)1826 extern "C" void rsScriptForEach (RsContext rsc, RsScript s, uint32_t slot, RsAllocation ain, RsAllocation aout, const void * usr, size_t usr_length, const RsScriptCall * sc, size_t sc_length)
1827 {
1828 LF_ScriptForEach((Context *)rsc, s, slot, ain, aout, usr, usr_length, sc, sc_length);
1829 }
1830
rsScriptForEachMulti(RsContext rsc,RsScript s,uint32_t slot,RsAllocation * ains,size_t ains_length,RsAllocation aout,const void * usr,size_t usr_length,const RsScriptCall * sc,size_t sc_length)1831 extern "C" void rsScriptForEachMulti (RsContext rsc, RsScript s, uint32_t slot, RsAllocation * ains, size_t ains_length, RsAllocation aout, const void * usr, size_t usr_length, const RsScriptCall * sc, size_t sc_length)
1832 {
1833 LF_ScriptForEachMulti((Context *)rsc, s, slot, ains, ains_length, aout, usr, usr_length, sc, sc_length);
1834 }
1835
rsScriptReduce(RsContext rsc,RsScript s,uint32_t slot,RsAllocation * ains,size_t ains_length,RsAllocation aout,const RsScriptCall * sc,size_t sc_length)1836 extern "C" void rsScriptReduce (RsContext rsc, RsScript s, uint32_t slot, RsAllocation * ains, size_t ains_length, RsAllocation aout, const RsScriptCall * sc, size_t sc_length)
1837 {
1838 LF_ScriptReduce((Context *)rsc, s, slot, ains, ains_length, aout, sc, sc_length);
1839 }
1840
rsScriptSetVarI(RsContext rsc,RsScript s,uint32_t slot,int value)1841 extern "C" void rsScriptSetVarI (RsContext rsc, RsScript s, uint32_t slot, int value)
1842 {
1843 LF_ScriptSetVarI((Context *)rsc, s, slot, value);
1844 }
1845
rsScriptSetVarObj(RsContext rsc,RsScript s,uint32_t slot,RsObjectBase value)1846 extern "C" void rsScriptSetVarObj (RsContext rsc, RsScript s, uint32_t slot, RsObjectBase value)
1847 {
1848 LF_ScriptSetVarObj((Context *)rsc, s, slot, value);
1849 }
1850
rsScriptSetVarJ(RsContext rsc,RsScript s,uint32_t slot,int64_t value)1851 extern "C" void rsScriptSetVarJ (RsContext rsc, RsScript s, uint32_t slot, int64_t value)
1852 {
1853 LF_ScriptSetVarJ((Context *)rsc, s, slot, value);
1854 }
1855
rsScriptSetVarF(RsContext rsc,RsScript s,uint32_t slot,float value)1856 extern "C" void rsScriptSetVarF (RsContext rsc, RsScript s, uint32_t slot, float value)
1857 {
1858 LF_ScriptSetVarF((Context *)rsc, s, slot, value);
1859 }
1860
rsScriptSetVarD(RsContext rsc,RsScript s,uint32_t slot,double value)1861 extern "C" void rsScriptSetVarD (RsContext rsc, RsScript s, uint32_t slot, double value)
1862 {
1863 LF_ScriptSetVarD((Context *)rsc, s, slot, value);
1864 }
1865
rsScriptSetVarV(RsContext rsc,RsScript s,uint32_t slot,const void * data,size_t data_length)1866 extern "C" void rsScriptSetVarV (RsContext rsc, RsScript s, uint32_t slot, const void * data, size_t data_length)
1867 {
1868 LF_ScriptSetVarV((Context *)rsc, s, slot, data, data_length);
1869 }
1870
rsScriptGetVarV(RsContext rsc,RsScript s,uint32_t slot,void * data,size_t data_length)1871 extern "C" void rsScriptGetVarV (RsContext rsc, RsScript s, uint32_t slot, void * data, size_t data_length)
1872 {
1873 LF_ScriptGetVarV((Context *)rsc, s, slot, data, data_length);
1874 }
1875
rsScriptSetVarVE(RsContext rsc,RsScript s,uint32_t slot,const void * data,size_t data_length,RsElement e,const uint32_t * dims,size_t dims_length)1876 extern "C" void rsScriptSetVarVE (RsContext rsc, RsScript s, uint32_t slot, const void * data, size_t data_length, RsElement e, const uint32_t * dims, size_t dims_length)
1877 {
1878 LF_ScriptSetVarVE((Context *)rsc, s, slot, data, data_length, e, dims, dims_length);
1879 }
1880
rsScriptCCreate(RsContext rsc,const char * resName,size_t resName_length,const char * cacheDir,size_t cacheDir_length,const char * text,size_t text_length)1881 extern "C" RsScript rsScriptCCreate (RsContext rsc, const char * resName, size_t resName_length, const char * cacheDir, size_t cacheDir_length, const char * text, size_t text_length)
1882 {
1883 return LF_ScriptCCreate((Context *)rsc, resName, resName_length, cacheDir, cacheDir_length, text, text_length);
1884 }
1885
rsScriptIntrinsicCreate(RsContext rsc,uint32_t id,RsElement eid)1886 extern "C" RsScript rsScriptIntrinsicCreate (RsContext rsc, uint32_t id, RsElement eid)
1887 {
1888 return LF_ScriptIntrinsicCreate((Context *)rsc, id, eid);
1889 }
1890
rsScriptKernelIDCreate(RsContext rsc,RsScript sid,int slot,int sig)1891 extern "C" RsScriptKernelID rsScriptKernelIDCreate (RsContext rsc, RsScript sid, int slot, int sig)
1892 {
1893 return LF_ScriptKernelIDCreate((Context *)rsc, sid, slot, sig);
1894 }
1895
rsScriptFieldIDCreate(RsContext rsc,RsScript sid,int slot)1896 extern "C" RsScriptFieldID rsScriptFieldIDCreate (RsContext rsc, RsScript sid, int slot)
1897 {
1898 return LF_ScriptFieldIDCreate((Context *)rsc, sid, slot);
1899 }
1900
rsScriptGroupCreate(RsContext rsc,RsScriptKernelID * kernels,size_t kernels_length,RsScriptKernelID * src,size_t src_length,RsScriptKernelID * dstK,size_t dstK_length,RsScriptFieldID * dstF,size_t dstF_length,const RsType * type,size_t type_length)1901 extern "C" RsScriptGroup rsScriptGroupCreate (RsContext rsc, RsScriptKernelID * kernels, size_t kernels_length, RsScriptKernelID * src, size_t src_length, RsScriptKernelID * dstK, size_t dstK_length, RsScriptFieldID * dstF, size_t dstF_length, const RsType * type, size_t type_length)
1902 {
1903 return LF_ScriptGroupCreate((Context *)rsc, kernels, kernels_length, src, src_length, dstK, dstK_length, dstF, dstF_length, type, type_length);
1904 }
1905
rsScriptGroupSetOutput(RsContext rsc,RsScriptGroup group,RsScriptKernelID kernel,RsAllocation alloc)1906 extern "C" void rsScriptGroupSetOutput (RsContext rsc, RsScriptGroup group, RsScriptKernelID kernel, RsAllocation alloc)
1907 {
1908 LF_ScriptGroupSetOutput((Context *)rsc, group, kernel, alloc);
1909 }
1910
rsScriptGroupSetInput(RsContext rsc,RsScriptGroup group,RsScriptKernelID kernel,RsAllocation alloc)1911 extern "C" void rsScriptGroupSetInput (RsContext rsc, RsScriptGroup group, RsScriptKernelID kernel, RsAllocation alloc)
1912 {
1913 LF_ScriptGroupSetInput((Context *)rsc, group, kernel, alloc);
1914 }
1915
rsScriptGroupExecute(RsContext rsc,RsScriptGroup group)1916 extern "C" void rsScriptGroupExecute (RsContext rsc, RsScriptGroup group)
1917 {
1918 LF_ScriptGroupExecute((Context *)rsc, group);
1919 }
1920
rsScriptGroup2Create(RsContext rsc,const char * name,size_t name_length,const char * cacheDir,size_t cacheDir_length,RsClosure * closures,size_t closures_length)1921 extern "C" RsScriptGroup2 rsScriptGroup2Create (RsContext rsc, const char * name, size_t name_length, const char * cacheDir, size_t cacheDir_length, RsClosure * closures, size_t closures_length)
1922 {
1923 return LF_ScriptGroup2Create((Context *)rsc, name, name_length, cacheDir, cacheDir_length, closures, closures_length);
1924 }
1925
rsAllocationIoSend(RsContext rsc,RsAllocation alloc)1926 extern "C" void rsAllocationIoSend (RsContext rsc, RsAllocation alloc)
1927 {
1928 LF_AllocationIoSend((Context *)rsc, alloc);
1929 }
1930
rsAllocationIoReceive(RsContext rsc,RsAllocation alloc)1931 extern "C" int64_t rsAllocationIoReceive (RsContext rsc, RsAllocation alloc)
1932 {
1933 return LF_AllocationIoReceive((Context *)rsc, alloc);
1934 }
1935
rsProgramStoreCreate(RsContext rsc,bool colorMaskR,bool colorMaskG,bool colorMaskB,bool colorMaskA,bool depthMask,bool ditherEnable,RsBlendSrcFunc srcFunc,RsBlendDstFunc destFunc,RsDepthFunc depthFunc)1936 extern "C" RsProgramStore rsProgramStoreCreate (RsContext rsc, bool colorMaskR, bool colorMaskG, bool colorMaskB, bool colorMaskA, bool depthMask, bool ditherEnable, RsBlendSrcFunc srcFunc, RsBlendDstFunc destFunc, RsDepthFunc depthFunc)
1937 {
1938 return LF_ProgramStoreCreate((Context *)rsc, colorMaskR, colorMaskG, colorMaskB, colorMaskA, depthMask, ditherEnable, srcFunc, destFunc, depthFunc);
1939 }
1940
rsProgramRasterCreate(RsContext rsc,bool pointSprite,RsCullMode cull)1941 extern "C" RsProgramRaster rsProgramRasterCreate (RsContext rsc, bool pointSprite, RsCullMode cull)
1942 {
1943 return LF_ProgramRasterCreate((Context *)rsc, pointSprite, cull);
1944 }
1945
rsProgramBindConstants(RsContext rsc,RsProgram vp,uint32_t slot,RsAllocation constants)1946 extern "C" void rsProgramBindConstants (RsContext rsc, RsProgram vp, uint32_t slot, RsAllocation constants)
1947 {
1948 LF_ProgramBindConstants((Context *)rsc, vp, slot, constants);
1949 }
1950
rsProgramBindTexture(RsContext rsc,RsProgramFragment pf,uint32_t slot,RsAllocation a)1951 extern "C" void rsProgramBindTexture (RsContext rsc, RsProgramFragment pf, uint32_t slot, RsAllocation a)
1952 {
1953 LF_ProgramBindTexture((Context *)rsc, pf, slot, a);
1954 }
1955
rsProgramBindSampler(RsContext rsc,RsProgramFragment pf,uint32_t slot,RsSampler s)1956 extern "C" void rsProgramBindSampler (RsContext rsc, RsProgramFragment pf, uint32_t slot, RsSampler s)
1957 {
1958 LF_ProgramBindSampler((Context *)rsc, pf, slot, s);
1959 }
1960
rsProgramFragmentCreate(RsContext rsc,const char * shaderText,size_t shaderText_length,const char ** textureNames,size_t textureNames_length_length,const size_t * textureNames_length,const uintptr_t * params,size_t params_length)1961 extern "C" RsProgramFragment rsProgramFragmentCreate (RsContext rsc, const char * shaderText, size_t shaderText_length, const char ** textureNames, size_t textureNames_length_length, const size_t * textureNames_length, const uintptr_t * params, size_t params_length)
1962 {
1963 return LF_ProgramFragmentCreate((Context *)rsc, shaderText, shaderText_length, textureNames, textureNames_length_length, textureNames_length, params, params_length);
1964 }
1965
rsProgramVertexCreate(RsContext rsc,const char * shaderText,size_t shaderText_length,const char ** textureNames,size_t textureNames_length_length,const size_t * textureNames_length,const uintptr_t * params,size_t params_length)1966 extern "C" RsProgramVertex rsProgramVertexCreate (RsContext rsc, const char * shaderText, size_t shaderText_length, const char ** textureNames, size_t textureNames_length_length, const size_t * textureNames_length, const uintptr_t * params, size_t params_length)
1967 {
1968 return LF_ProgramVertexCreate((Context *)rsc, shaderText, shaderText_length, textureNames, textureNames_length_length, textureNames_length, params, params_length);
1969 }
1970
rsFontCreateFromFile(RsContext rsc,const char * name,size_t name_length,float fontSize,uint32_t dpi)1971 extern "C" RsFont rsFontCreateFromFile (RsContext rsc, const char * name, size_t name_length, float fontSize, uint32_t dpi)
1972 {
1973 return LF_FontCreateFromFile((Context *)rsc, name, name_length, fontSize, dpi);
1974 }
1975
rsFontCreateFromMemory(RsContext rsc,const char * name,size_t name_length,float fontSize,uint32_t dpi,const void * data,size_t data_length)1976 extern "C" RsFont rsFontCreateFromMemory (RsContext rsc, const char * name, size_t name_length, float fontSize, uint32_t dpi, const void * data, size_t data_length)
1977 {
1978 return LF_FontCreateFromMemory((Context *)rsc, name, name_length, fontSize, dpi, data, data_length);
1979 }
1980
rsMeshCreate(RsContext rsc,RsAllocation * vtx,size_t vtx_length,RsAllocation * idx,size_t idx_length,uint32_t * primType,size_t primType_length)1981 extern "C" RsMesh rsMeshCreate (RsContext rsc, RsAllocation * vtx, size_t vtx_length, RsAllocation * idx, size_t idx_length, uint32_t * primType, size_t primType_length)
1982 {
1983 return LF_MeshCreate((Context *)rsc, vtx, vtx_length, idx, idx_length, primType, primType_length);
1984 }
1985
rsContextBindProgramStore(RsContext rsc,RsProgramStore pgm)1986 extern "C" void rsContextBindProgramStore (RsContext rsc, RsProgramStore pgm)
1987 {
1988 LF_ContextBindProgramStore((Context *)rsc, pgm);
1989 }
1990
rsContextBindProgramFragment(RsContext rsc,RsProgramFragment pgm)1991 extern "C" void rsContextBindProgramFragment (RsContext rsc, RsProgramFragment pgm)
1992 {
1993 LF_ContextBindProgramFragment((Context *)rsc, pgm);
1994 }
1995
rsContextBindProgramVertex(RsContext rsc,RsProgramVertex pgm)1996 extern "C" void rsContextBindProgramVertex (RsContext rsc, RsProgramVertex pgm)
1997 {
1998 LF_ContextBindProgramVertex((Context *)rsc, pgm);
1999 }
2000
rsContextBindProgramRaster(RsContext rsc,RsProgramRaster pgm)2001 extern "C" void rsContextBindProgramRaster (RsContext rsc, RsProgramRaster pgm)
2002 {
2003 LF_ContextBindProgramRaster((Context *)rsc, pgm);
2004 }
2005
rsContextBindFont(RsContext rsc,RsFont pgm)2006 extern "C" void rsContextBindFont (RsContext rsc, RsFont pgm)
2007 {
2008 LF_ContextBindFont((Context *)rsc, pgm);
2009 }
2010
rsContextSetSurface(RsContext rsc,uint32_t width,uint32_t height,RsNativeWindow sur)2011 extern "C" void rsContextSetSurface (RsContext rsc, uint32_t width, uint32_t height, RsNativeWindow sur)
2012 {
2013 LF_ContextSetSurface((Context *)rsc, width, height, sur);
2014 }
2015
rsContextBindRootScript(RsContext rsc,RsScript sampler)2016 extern "C" void rsContextBindRootScript (RsContext rsc, RsScript sampler)
2017 {
2018 LF_ContextBindRootScript((Context *)rsc, sampler);
2019 }
2020
rsContextPause(RsContext rsc)2021 extern "C" void rsContextPause (RsContext rsc)
2022 {
2023 LF_ContextPause((Context *)rsc);
2024 }
2025
rsContextResume(RsContext rsc)2026 extern "C" void rsContextResume (RsContext rsc)
2027 {
2028 LF_ContextResume((Context *)rsc);
2029 }
2030
2031