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