xref: /aosp_15_r20/frameworks/rs/rsApiStubs.cpp (revision e1eccf28f96817838ad6867f7f39d2351ec11f56)
1*e1eccf28SAndroid Build Coastguard Worker /*
2*e1eccf28SAndroid Build Coastguard Worker  * Copyright (C) 2017 The Android Open Source Project
3*e1eccf28SAndroid Build Coastguard Worker  *
4*e1eccf28SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*e1eccf28SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*e1eccf28SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*e1eccf28SAndroid Build Coastguard Worker  *
8*e1eccf28SAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*e1eccf28SAndroid Build Coastguard Worker  *
10*e1eccf28SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*e1eccf28SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*e1eccf28SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*e1eccf28SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*e1eccf28SAndroid Build Coastguard Worker  * limitations under the License.
15*e1eccf28SAndroid Build Coastguard Worker  */
16*e1eccf28SAndroid Build Coastguard Worker 
17*e1eccf28SAndroid Build Coastguard Worker #include "rsApiStubs.h"
18*e1eccf28SAndroid Build Coastguard Worker #include "rsHidlAdaptation.h"
19*e1eccf28SAndroid Build Coastguard Worker #include "rsFallbackAdaptation.h"
20*e1eccf28SAndroid Build Coastguard Worker #include "cpp/rsDispatch.h"
21*e1eccf28SAndroid Build Coastguard Worker 
22*e1eccf28SAndroid Build Coastguard Worker #include <log/log.h>
23*e1eccf28SAndroid Build Coastguard Worker #include <dlfcn.h>
24*e1eccf28SAndroid Build Coastguard Worker 
25*e1eccf28SAndroid Build Coastguard Worker #include <mutex>
26*e1eccf28SAndroid Build Coastguard Worker #include <map>
27*e1eccf28SAndroid Build Coastguard Worker 
28*e1eccf28SAndroid Build Coastguard Worker #undef LOG_TAG
29*e1eccf28SAndroid Build Coastguard Worker #define LOG_TAG "RenderScript"
30*e1eccf28SAndroid Build Coastguard Worker 
31*e1eccf28SAndroid Build Coastguard Worker // TODO: Figure out how to use different declared types for the two interfaces
32*e1eccf28SAndroid Build Coastguard Worker //       to avoid the confusion. Currently, RsContext is used as the API type for
33*e1eccf28SAndroid Build Coastguard Worker //       both the client interface and the dispatch table interface, but at the
34*e1eccf28SAndroid Build Coastguard Worker //       client interface it's really RsContextWrapper* instead.
35*e1eccf28SAndroid Build Coastguard Worker // TODO: Figure out how to better design class hierarchy for all these Contexts.
36*e1eccf28SAndroid Build Coastguard Worker // RsContextWrapper wraps the RsContext and corresponding dispatchTable pointer.
37*e1eccf28SAndroid Build Coastguard Worker // The wrapper object is created during ContextCreate, and the address of the
38*e1eccf28SAndroid Build Coastguard Worker // object is returned to Java / C++, instead of the RsContext handle.
39*e1eccf28SAndroid Build Coastguard Worker // The wrapper object is destroyed during ContextDestroy to release the memory.
40*e1eccf28SAndroid Build Coastguard Worker struct RsContextWrapper {
41*e1eccf28SAndroid Build Coastguard Worker     RsContext context;
42*e1eccf28SAndroid Build Coastguard Worker     const dispatchTable* dispatch;
43*e1eccf28SAndroid Build Coastguard Worker };
44*e1eccf28SAndroid Build Coastguard Worker 
45*e1eccf28SAndroid Build Coastguard Worker #define RS_DISPATCH(opaqueWrapper, func, ...) \
46*e1eccf28SAndroid Build Coastguard Worker     [&]() { \
47*e1eccf28SAndroid Build Coastguard Worker       const RsContextWrapper *wrapper = reinterpret_cast<RsContextWrapper *>(opaqueWrapper); \
48*e1eccf28SAndroid Build Coastguard Worker       RsContext context = wrapper->context; \
49*e1eccf28SAndroid Build Coastguard Worker       return wrapper->dispatch->func(context, ##__VA_ARGS__); \
50*e1eccf28SAndroid Build Coastguard Worker     }()
51*e1eccf28SAndroid Build Coastguard Worker 
52*e1eccf28SAndroid Build Coastguard Worker 
53*e1eccf28SAndroid Build Coastguard Worker // contextMap maps RsContext to the corresponding RsContextWrapper pointer.
54*e1eccf28SAndroid Build Coastguard Worker static std::map<RsContext, RsContextWrapper* > contextMap;
55*e1eccf28SAndroid Build Coastguard Worker 
56*e1eccf28SAndroid Build Coastguard Worker // contextMapMutex is used to protect concurrent access of the contextMap.
57*e1eccf28SAndroid Build Coastguard Worker // std::mutex is safe for pthreads on Android. Since other threading model
58*e1eccf28SAndroid Build Coastguard Worker // supported on Android are built on top of pthread, std::mutex is safe for them.
59*e1eccf28SAndroid Build Coastguard Worker static std::mutex contextMapMutex;
60*e1eccf28SAndroid Build Coastguard Worker 
61*e1eccf28SAndroid Build Coastguard Worker // globalObjAlive is a global flag indicating whether the global objects,
62*e1eccf28SAndroid Build Coastguard Worker // contextMap & contextMapMutex, are still alive.
63*e1eccf28SAndroid Build Coastguard Worker // For the protected functions during application teardown, this
64*e1eccf28SAndroid Build Coastguard Worker // flag will be checked before accessing the global objects.
65*e1eccf28SAndroid Build Coastguard Worker static bool globalObjAlive;
66*e1eccf28SAndroid Build Coastguard Worker 
67*e1eccf28SAndroid Build Coastguard Worker // GlobalObjGuard manipulates the globalObjAlive flag during construction and
68*e1eccf28SAndroid Build Coastguard Worker // destruction. If the guard object is destroyed, globalObjAlive will be set
69*e1eccf28SAndroid Build Coastguard Worker // to false, which will make the protected functions NO-OP.
70*e1eccf28SAndroid Build Coastguard Worker // https://goto.google.com/rs-static-destructor
71*e1eccf28SAndroid Build Coastguard Worker class GlobalObjGuard {
72*e1eccf28SAndroid Build Coastguard Worker   public:
GlobalObjGuard()73*e1eccf28SAndroid Build Coastguard Worker     GlobalObjGuard() {
74*e1eccf28SAndroid Build Coastguard Worker         globalObjAlive = true;
75*e1eccf28SAndroid Build Coastguard Worker     }
76*e1eccf28SAndroid Build Coastguard Worker 
~GlobalObjGuard()77*e1eccf28SAndroid Build Coastguard Worker     ~GlobalObjGuard() {
78*e1eccf28SAndroid Build Coastguard Worker         globalObjAlive = false;
79*e1eccf28SAndroid Build Coastguard Worker     }
80*e1eccf28SAndroid Build Coastguard Worker };
81*e1eccf28SAndroid Build Coastguard Worker static GlobalObjGuard guard;
82*e1eccf28SAndroid Build Coastguard Worker 
83*e1eccf28SAndroid Build Coastguard Worker // API to find high-level context (RsContextWrapper) given a low level context.
84*e1eccf28SAndroid Build Coastguard Worker // This API is only intended to be used by RenderScript debugger.
rsDebugGetHighLevelContext(RsContext context)85*e1eccf28SAndroid Build Coastguard Worker extern "C" RsContext rsDebugGetHighLevelContext(RsContext context) {
86*e1eccf28SAndroid Build Coastguard Worker     std::unique_lock<std::mutex> lock(contextMapMutex);
87*e1eccf28SAndroid Build Coastguard Worker     return contextMap.at(context);
88*e1eccf28SAndroid Build Coastguard Worker }
89*e1eccf28SAndroid Build Coastguard Worker 
90*e1eccf28SAndroid Build Coastguard Worker // Device
91*e1eccf28SAndroid Build Coastguard Worker // These API stubs are kept here to maintain backward compatibility,
92*e1eccf28SAndroid Build Coastguard Worker // but they are not actually doing anything.
93*e1eccf28SAndroid Build Coastguard Worker 
rsDeviceCreate()94*e1eccf28SAndroid Build Coastguard Worker extern "C" RsDevice rsDeviceCreate()
95*e1eccf28SAndroid Build Coastguard Worker {
96*e1eccf28SAndroid Build Coastguard Worker     return (void *) 1;
97*e1eccf28SAndroid Build Coastguard Worker }
rsDeviceDestroy(RsDevice dev)98*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsDeviceDestroy(RsDevice dev)
99*e1eccf28SAndroid Build Coastguard Worker {
100*e1eccf28SAndroid Build Coastguard Worker }
rsDeviceSetConfig(RsDevice dev,RsDeviceParam p,int32_t value)101*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsDeviceSetConfig(RsDevice dev, RsDeviceParam p, int32_t value)
102*e1eccf28SAndroid Build Coastguard Worker {
103*e1eccf28SAndroid Build Coastguard Worker }
104*e1eccf28SAndroid Build Coastguard Worker 
105*e1eccf28SAndroid Build Coastguard Worker /*
106*e1eccf28SAndroid Build Coastguard Worker  * This global will be found by the debugger and will have its value flipped.
107*e1eccf28SAndroid Build Coastguard Worker  * It's independent of the Context class to allow the debugger to do the above
108*e1eccf28SAndroid Build Coastguard Worker  * without knowing the type makeup. This allows the debugger to be attached at
109*e1eccf28SAndroid Build Coastguard Worker  * an earlier stage.
110*e1eccf28SAndroid Build Coastguard Worker  */
111*e1eccf28SAndroid Build Coastguard Worker extern "C" int gDebuggerPresent = 0;
112*e1eccf28SAndroid Build Coastguard Worker 
113*e1eccf28SAndroid Build Coastguard Worker namespace{
114*e1eccf28SAndroid Build Coastguard Worker // Check if the calling process is a vendor process or not.
isVendorProcess()115*e1eccf28SAndroid Build Coastguard Worker static bool isVendorProcess() {
116*e1eccf28SAndroid Build Coastguard Worker     char path[PATH_MAX];
117*e1eccf28SAndroid Build Coastguard Worker     ssize_t path_len = readlink("/proc/self/exe", path, sizeof(path));
118*e1eccf28SAndroid Build Coastguard Worker     if (path_len == -1) {
119*e1eccf28SAndroid Build Coastguard Worker         return false;
120*e1eccf28SAndroid Build Coastguard Worker     }
121*e1eccf28SAndroid Build Coastguard Worker     // Vendor process will return "/vendor/*"
122*e1eccf28SAndroid Build Coastguard Worker     static const char vendor_path[] = "/vendor/";
123*e1eccf28SAndroid Build Coastguard Worker     return !strncmp(path, vendor_path, sizeof(vendor_path)-1);
124*e1eccf28SAndroid Build Coastguard Worker }
125*e1eccf28SAndroid Build Coastguard Worker 
126*e1eccf28SAndroid Build Coastguard Worker typedef const char* (*QueryCacheDirFnPtr)();
127*e1eccf28SAndroid Build Coastguard Worker // Dynamically load the queryCacheDir function pointer, so that for vendor
128*e1eccf28SAndroid Build Coastguard Worker // processes, libandroid_runtime.so will not be loaded.
loadQueryCacheFnPtr()129*e1eccf28SAndroid Build Coastguard Worker static QueryCacheDirFnPtr loadQueryCacheFnPtr() {
130*e1eccf28SAndroid Build Coastguard Worker     QueryCacheDirFnPtr queryCacheDir = nullptr;
131*e1eccf28SAndroid Build Coastguard Worker     void* handle = dlopen("libRSCacheDir.so", RTLD_LAZY | RTLD_LOCAL);
132*e1eccf28SAndroid Build Coastguard Worker     if (!handle ||
133*e1eccf28SAndroid Build Coastguard Worker         !(queryCacheDir = (QueryCacheDirFnPtr)dlsym(handle, "rsQueryCacheDir"))) {
134*e1eccf28SAndroid Build Coastguard Worker         ALOGW("Not able to query cache dir: %s", dlerror());
135*e1eccf28SAndroid Build Coastguard Worker     }
136*e1eccf28SAndroid Build Coastguard Worker     return queryCacheDir;
137*e1eccf28SAndroid Build Coastguard Worker }
138*e1eccf28SAndroid Build Coastguard Worker } // anonymous namespace
139*e1eccf28SAndroid Build Coastguard Worker 
140*e1eccf28SAndroid Build Coastguard Worker // Context
rsContextCreate(RsDevice vdev,uint32_t version,uint32_t sdkVersion,RsContextType ct,uint32_t flags)141*e1eccf28SAndroid Build Coastguard Worker extern "C" RsContext rsContextCreate(RsDevice vdev, uint32_t version, uint32_t sdkVersion,
142*e1eccf28SAndroid Build Coastguard Worker                                      RsContextType ct, uint32_t flags)
143*e1eccf28SAndroid Build Coastguard Worker {
144*e1eccf28SAndroid Build Coastguard Worker     if (!globalObjAlive) {
145*e1eccf28SAndroid Build Coastguard Worker         ALOGE("rsContextCreate is not allowed during process teardown.");
146*e1eccf28SAndroid Build Coastguard Worker         return nullptr;
147*e1eccf28SAndroid Build Coastguard Worker     }
148*e1eccf28SAndroid Build Coastguard Worker 
149*e1eccf28SAndroid Build Coastguard Worker     RsContext context;
150*e1eccf28SAndroid Build Coastguard Worker     RsContextWrapper *ctxWrapper;
151*e1eccf28SAndroid Build Coastguard Worker 
152*e1eccf28SAndroid Build Coastguard Worker     if (flags & RS_CONTEXT_LOW_LATENCY) {
153*e1eccf28SAndroid Build Coastguard Worker         // Use CPU path for LOW_LATENCY context.
154*e1eccf28SAndroid Build Coastguard Worker         RsFallbackAdaptation& instance = RsFallbackAdaptation::GetInstance();
155*e1eccf28SAndroid Build Coastguard Worker         context = instance.GetEntryFuncs()->ContextCreate(vdev, version, sdkVersion, ct, flags);
156*e1eccf28SAndroid Build Coastguard Worker         ctxWrapper = new RsContextWrapper{context, instance.GetEntryFuncs()};
157*e1eccf28SAndroid Build Coastguard Worker     } else {
158*e1eccf28SAndroid Build Coastguard Worker         RsHidlAdaptation& instance = RsHidlAdaptation::GetInstance();
159*e1eccf28SAndroid Build Coastguard Worker         context = instance.GetEntryFuncs()->ContextCreate(vdev, version, sdkVersion, ct, flags);
160*e1eccf28SAndroid Build Coastguard Worker         ctxWrapper = new RsContextWrapper{context, instance.GetEntryFuncs()};
161*e1eccf28SAndroid Build Coastguard Worker 
162*e1eccf28SAndroid Build Coastguard Worker         // Use function local static variables to ensure thread safety.
163*e1eccf28SAndroid Build Coastguard Worker         static QueryCacheDirFnPtr queryCacheDir = isVendorProcess() ? nullptr : loadQueryCacheFnPtr();
164*e1eccf28SAndroid Build Coastguard Worker         if (queryCacheDir) {
165*e1eccf28SAndroid Build Coastguard Worker             static std::string defaultCacheDir = std::string(queryCacheDir());
166*e1eccf28SAndroid Build Coastguard Worker             if (defaultCacheDir.size() > 0) {
167*e1eccf28SAndroid Build Coastguard Worker                 ALOGD("Setting cache dir: %s", defaultCacheDir.c_str());
168*e1eccf28SAndroid Build Coastguard Worker                 rsContextSetCacheDir(ctxWrapper,
169*e1eccf28SAndroid Build Coastguard Worker                                  defaultCacheDir.c_str(),
170*e1eccf28SAndroid Build Coastguard Worker                                  defaultCacheDir.size());
171*e1eccf28SAndroid Build Coastguard Worker             }
172*e1eccf28SAndroid Build Coastguard Worker         }
173*e1eccf28SAndroid Build Coastguard Worker     }
174*e1eccf28SAndroid Build Coastguard Worker 
175*e1eccf28SAndroid Build Coastguard Worker     // Wait for debugger to attach if RS_CONTEXT_WAIT_FOR_ATTACH flag set.
176*e1eccf28SAndroid Build Coastguard Worker     if (flags & RS_CONTEXT_WAIT_FOR_ATTACH) {
177*e1eccf28SAndroid Build Coastguard Worker         while (!gDebuggerPresent) {
178*e1eccf28SAndroid Build Coastguard Worker             sleep(0);
179*e1eccf28SAndroid Build Coastguard Worker         }
180*e1eccf28SAndroid Build Coastguard Worker     }
181*e1eccf28SAndroid Build Coastguard Worker 
182*e1eccf28SAndroid Build Coastguard Worker     // Lock contextMap when adding new entries.
183*e1eccf28SAndroid Build Coastguard Worker     std::unique_lock<std::mutex> lock(contextMapMutex);
184*e1eccf28SAndroid Build Coastguard Worker     contextMap.insert(std::make_pair(context, ctxWrapper));
185*e1eccf28SAndroid Build Coastguard Worker 
186*e1eccf28SAndroid Build Coastguard Worker     return (RsContext) ctxWrapper;
187*e1eccf28SAndroid Build Coastguard Worker }
188*e1eccf28SAndroid Build Coastguard Worker 
rsContextDestroy(RsContext ctxWrapper)189*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextDestroy (RsContext ctxWrapper)
190*e1eccf28SAndroid Build Coastguard Worker {
191*e1eccf28SAndroid Build Coastguard Worker     if (!globalObjAlive) {
192*e1eccf28SAndroid Build Coastguard Worker         return;
193*e1eccf28SAndroid Build Coastguard Worker     }
194*e1eccf28SAndroid Build Coastguard Worker 
195*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextDestroy);
196*e1eccf28SAndroid Build Coastguard Worker 
197*e1eccf28SAndroid Build Coastguard Worker     // Lock contextMap when deleting an existing entry.
198*e1eccf28SAndroid Build Coastguard Worker     std::unique_lock<std::mutex> lock(contextMapMutex);
199*e1eccf28SAndroid Build Coastguard Worker     contextMap.erase(reinterpret_cast< RsContextWrapper* >(ctxWrapper)->context);
200*e1eccf28SAndroid Build Coastguard Worker 
201*e1eccf28SAndroid Build Coastguard Worker     delete (RsContextWrapper *)ctxWrapper;
202*e1eccf28SAndroid Build Coastguard Worker }
203*e1eccf28SAndroid Build Coastguard Worker 
rsContextFinish(RsContext ctxWrapper)204*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextFinish (RsContext ctxWrapper)
205*e1eccf28SAndroid Build Coastguard Worker {
206*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextFinish);
207*e1eccf28SAndroid Build Coastguard Worker }
208*e1eccf28SAndroid Build Coastguard Worker 
rsContextDump(RsContext ctxWrapper,int32_t bits)209*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextDump (RsContext ctxWrapper, int32_t bits)
210*e1eccf28SAndroid Build Coastguard Worker {
211*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextDump, bits);
212*e1eccf28SAndroid Build Coastguard Worker }
213*e1eccf28SAndroid Build Coastguard Worker 
rsContextSetPriority(RsContext ctxWrapper,int32_t priority)214*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextSetPriority (RsContext ctxWrapper, int32_t priority)
215*e1eccf28SAndroid Build Coastguard Worker {
216*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextSetPriority, priority);
217*e1eccf28SAndroid Build Coastguard Worker }
218*e1eccf28SAndroid Build Coastguard Worker 
rsContextDestroyWorker(RsContext ctxWrapper)219*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextDestroyWorker (RsContext ctxWrapper)
220*e1eccf28SAndroid Build Coastguard Worker {
221*e1eccf28SAndroid Build Coastguard Worker }
222*e1eccf28SAndroid Build Coastguard Worker 
rsContextGetMessage(RsContext ctxWrapper,void * data,size_t data_length,size_t * receiveLen,size_t receiveLen_length,uint32_t * usrID,size_t usrID_length)223*e1eccf28SAndroid Build Coastguard Worker extern "C" RsMessageToClientType rsContextGetMessage (RsContext ctxWrapper, void * data, size_t data_length,
224*e1eccf28SAndroid Build Coastguard Worker                                                       size_t * receiveLen, size_t receiveLen_length,
225*e1eccf28SAndroid Build Coastguard Worker                                                       uint32_t * usrID, size_t usrID_length)
226*e1eccf28SAndroid Build Coastguard Worker {
227*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ContextGetMessage, data, data_length,
228*e1eccf28SAndroid Build Coastguard Worker                                        receiveLen, receiveLen_length,
229*e1eccf28SAndroid Build Coastguard Worker                                        usrID, usrID_length);
230*e1eccf28SAndroid Build Coastguard Worker }
231*e1eccf28SAndroid Build Coastguard Worker 
rsContextPeekMessage(RsContext ctxWrapper,size_t * receiveLen,size_t receiveLen_length,uint32_t * usrID,size_t usrID_length)232*e1eccf28SAndroid Build Coastguard Worker extern "C" RsMessageToClientType rsContextPeekMessage (RsContext ctxWrapper,
233*e1eccf28SAndroid Build Coastguard Worker                                                        size_t * receiveLen, size_t receiveLen_length,
234*e1eccf28SAndroid Build Coastguard Worker                                                        uint32_t * usrID, size_t usrID_length)
235*e1eccf28SAndroid Build Coastguard Worker {
236*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ContextPeekMessage,
237*e1eccf28SAndroid Build Coastguard Worker                        receiveLen, receiveLen_length,
238*e1eccf28SAndroid Build Coastguard Worker                        usrID, usrID_length);
239*e1eccf28SAndroid Build Coastguard Worker }
240*e1eccf28SAndroid Build Coastguard Worker 
rsContextSendMessage(RsContext ctxWrapper,uint32_t id,const uint8_t * data,size_t data_length)241*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextSendMessage (RsContext ctxWrapper, uint32_t id, const uint8_t * data, size_t data_length)
242*e1eccf28SAndroid Build Coastguard Worker {
243*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextSendMessage, id, data, data_length);
244*e1eccf28SAndroid Build Coastguard Worker }
245*e1eccf28SAndroid Build Coastguard Worker 
rsContextInitToClient(RsContext ctxWrapper)246*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextInitToClient (RsContext ctxWrapper)
247*e1eccf28SAndroid Build Coastguard Worker {
248*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextInitToClient);
249*e1eccf28SAndroid Build Coastguard Worker }
250*e1eccf28SAndroid Build Coastguard Worker 
rsContextDeinitToClient(RsContext ctxWrapper)251*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextDeinitToClient (RsContext ctxWrapper)
252*e1eccf28SAndroid Build Coastguard Worker {
253*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextDeinitToClient);
254*e1eccf28SAndroid Build Coastguard Worker }
255*e1eccf28SAndroid Build Coastguard Worker 
rsContextSetCacheDir(RsContext ctxWrapper,const char * cacheDir,size_t cacheDir_length)256*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextSetCacheDir (RsContext ctxWrapper, const char * cacheDir, size_t cacheDir_length)
257*e1eccf28SAndroid Build Coastguard Worker {
258*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextSetCacheDir, cacheDir, cacheDir_length);
259*e1eccf28SAndroid Build Coastguard Worker }
260*e1eccf28SAndroid Build Coastguard Worker 
rsaContextSetNativeLibDir(RsContext ctxWrapper,char * libDir,size_t length)261*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsaContextSetNativeLibDir(RsContext ctxWrapper, char *libDir, size_t length)
262*e1eccf28SAndroid Build Coastguard Worker {
263*e1eccf28SAndroid Build Coastguard Worker }
264*e1eccf28SAndroid Build Coastguard Worker 
265*e1eccf28SAndroid Build Coastguard Worker // BaseObject
266*e1eccf28SAndroid Build Coastguard Worker 
rsAssignName(RsContext ctxWrapper,RsObjectBase obj,const char * name,size_t name_length)267*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAssignName (RsContext ctxWrapper, RsObjectBase obj, const char * name, size_t name_length)
268*e1eccf28SAndroid Build Coastguard Worker {
269*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AssignName, obj, name, name_length);
270*e1eccf28SAndroid Build Coastguard Worker }
271*e1eccf28SAndroid Build Coastguard Worker 
rsaGetName(RsContext ctxWrapper,void * obj,const char ** name)272*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsaGetName(RsContext ctxWrapper, void * obj, const char **name)
273*e1eccf28SAndroid Build Coastguard Worker {
274*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, GetName, obj, name);
275*e1eccf28SAndroid Build Coastguard Worker }
276*e1eccf28SAndroid Build Coastguard Worker 
rsObjDestroy(RsContext ctxWrapper,RsAsyncVoidPtr objPtr)277*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsObjDestroy (RsContext ctxWrapper, RsAsyncVoidPtr objPtr)
278*e1eccf28SAndroid Build Coastguard Worker {
279*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ObjDestroy, objPtr);
280*e1eccf28SAndroid Build Coastguard Worker }
281*e1eccf28SAndroid Build Coastguard Worker 
282*e1eccf28SAndroid Build Coastguard Worker // Element
283*e1eccf28SAndroid Build Coastguard Worker 
rsElementCreate(RsContext ctxWrapper,RsDataType mType,RsDataKind mKind,bool mNormalized,uint32_t mVectorSize)284*e1eccf28SAndroid Build Coastguard Worker extern "C" RsElement rsElementCreate (RsContext ctxWrapper, RsDataType mType, RsDataKind mKind,
285*e1eccf28SAndroid Build Coastguard Worker                                       bool mNormalized, uint32_t mVectorSize)
286*e1eccf28SAndroid Build Coastguard Worker {
287*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ElementCreate, mType, mKind, mNormalized, mVectorSize);
288*e1eccf28SAndroid Build Coastguard Worker }
289*e1eccf28SAndroid Build Coastguard Worker 
rsElementCreate2(RsContext ctxWrapper,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)290*e1eccf28SAndroid Build Coastguard Worker extern "C" RsElement rsElementCreate2 (RsContext ctxWrapper, const RsElement * elements, size_t elements_length,
291*e1eccf28SAndroid Build Coastguard Worker                                        const char ** names, size_t names_length_length, const size_t * names_length,
292*e1eccf28SAndroid Build Coastguard Worker                                        const uint32_t * arraySize, size_t arraySize_length)
293*e1eccf28SAndroid Build Coastguard Worker {
294*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ElementCreate2,
295*e1eccf28SAndroid Build Coastguard Worker                        elements, elements_length,
296*e1eccf28SAndroid Build Coastguard Worker                        names, names_length_length, names_length,
297*e1eccf28SAndroid Build Coastguard Worker                        arraySize, arraySize_length);
298*e1eccf28SAndroid Build Coastguard Worker }
299*e1eccf28SAndroid Build Coastguard Worker 
rsaElementGetNativeData(RsContext ctxWrapper,RsElement elem,uint32_t * elemData,uint32_t elemDataSize)300*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsaElementGetNativeData(RsContext ctxWrapper, RsElement elem, uint32_t *elemData, uint32_t elemDataSize)
301*e1eccf28SAndroid Build Coastguard Worker {
302*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ElementGetNativeData, elem, elemData, elemDataSize);
303*e1eccf28SAndroid Build Coastguard Worker }
304*e1eccf28SAndroid Build Coastguard Worker 
rsaElementGetSubElements(RsContext ctxWrapper,RsElement elem,uintptr_t * ids,const char ** names,size_t * arraySizes,uint32_t dataSize)305*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsaElementGetSubElements(RsContext ctxWrapper, RsElement elem, uintptr_t *ids, const char **names,
306*e1eccf28SAndroid Build Coastguard Worker                                          size_t *arraySizes, uint32_t dataSize)
307*e1eccf28SAndroid Build Coastguard Worker {
308*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ElementGetSubElements, elem, ids, names, arraySizes, dataSize);
309*e1eccf28SAndroid Build Coastguard Worker }
310*e1eccf28SAndroid Build Coastguard Worker 
311*e1eccf28SAndroid Build Coastguard Worker // Type
312*e1eccf28SAndroid Build Coastguard Worker 
rsTypeCreate(RsContext ctxWrapper,RsElement e,uint32_t dimX,uint32_t dimY,uint32_t dimZ,bool mipmaps,bool faces,uint32_t yuv)313*e1eccf28SAndroid Build Coastguard Worker extern "C" RsType rsTypeCreate (RsContext ctxWrapper, RsElement e, uint32_t dimX, uint32_t dimY, uint32_t dimZ,
314*e1eccf28SAndroid Build Coastguard Worker                                 bool mipmaps, bool faces, uint32_t yuv)
315*e1eccf28SAndroid Build Coastguard Worker {
316*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, TypeCreate, e, dimX, dimY, dimZ, mipmaps, faces, yuv);
317*e1eccf28SAndroid Build Coastguard Worker }
318*e1eccf28SAndroid Build Coastguard Worker 
rsTypeCreate2(RsContext ctxWrapper,const RsTypeCreateParams * dat,size_t dat_length)319*e1eccf28SAndroid Build Coastguard Worker extern "C" RsType rsTypeCreate2 (RsContext ctxWrapper, const RsTypeCreateParams * dat, size_t dat_length)
320*e1eccf28SAndroid Build Coastguard Worker {
321*e1eccf28SAndroid Build Coastguard Worker     return nullptr;
322*e1eccf28SAndroid Build Coastguard Worker }
323*e1eccf28SAndroid Build Coastguard Worker 
rsaTypeGetNativeData(RsContext ctxWrapper,RsType type,uintptr_t * typeData,uint32_t typeDataSize)324*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsaTypeGetNativeData(RsContext ctxWrapper, RsType type, uintptr_t *typeData, uint32_t typeDataSize)
325*e1eccf28SAndroid Build Coastguard Worker {
326*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, TypeGetNativeData, type, typeData, typeDataSize);
327*e1eccf28SAndroid Build Coastguard Worker }
328*e1eccf28SAndroid Build Coastguard Worker 
329*e1eccf28SAndroid Build Coastguard Worker 
330*e1eccf28SAndroid Build Coastguard Worker // Allocation
331*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationCreateTyped(RsContext ctxWrapper,RsType vtype,RsAllocationMipmapControl mipmaps,uint32_t usages,uintptr_t ptr)332*e1eccf28SAndroid Build Coastguard Worker extern "C" RsAllocation rsAllocationCreateTyped (RsContext ctxWrapper, RsType vtype, RsAllocationMipmapControl mipmaps,
333*e1eccf28SAndroid Build Coastguard Worker                                                  uint32_t usages, uintptr_t ptr)
334*e1eccf28SAndroid Build Coastguard Worker {
335*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, AllocationCreateTyped, vtype, mipmaps, usages, ptr);
336*e1eccf28SAndroid Build Coastguard Worker }
337*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationCreateFromBitmap(RsContext ctxWrapper,RsType vtype,RsAllocationMipmapControl mipmaps,const void * data,size_t data_length,uint32_t usages)338*e1eccf28SAndroid Build Coastguard Worker extern "C" RsAllocation rsAllocationCreateFromBitmap (RsContext ctxWrapper, RsType vtype, RsAllocationMipmapControl mipmaps,
339*e1eccf28SAndroid Build Coastguard Worker                                                       const void * data, size_t data_length, uint32_t usages)
340*e1eccf28SAndroid Build Coastguard Worker {
341*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, AllocationCreateFromBitmap, vtype, mipmaps, data, data_length, usages);
342*e1eccf28SAndroid Build Coastguard Worker }
343*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationCubeCreateFromBitmap(RsContext ctxWrapper,RsType vtype,RsAllocationMipmapControl mipmaps,const void * data,size_t data_length,uint32_t usages)344*e1eccf28SAndroid Build Coastguard Worker extern "C" RsAllocation rsAllocationCubeCreateFromBitmap (RsContext ctxWrapper, RsType vtype, RsAllocationMipmapControl mipmaps,
345*e1eccf28SAndroid Build Coastguard Worker                                                           const void * data, size_t data_length, uint32_t usages)
346*e1eccf28SAndroid Build Coastguard Worker {
347*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, AllocationCubeCreateFromBitmap, vtype, mipmaps, data, data_length, usages);
348*e1eccf28SAndroid Build Coastguard Worker }
349*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationAdapterCreate(RsContext ctxWrapper,RsType vtype,RsAllocation baseAlloc)350*e1eccf28SAndroid Build Coastguard Worker extern "C" RsAllocation rsAllocationAdapterCreate (RsContext ctxWrapper, RsType vtype, RsAllocation baseAlloc)
351*e1eccf28SAndroid Build Coastguard Worker {
352*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, AllocationAdapterCreate, vtype, baseAlloc);
353*e1eccf28SAndroid Build Coastguard Worker }
354*e1eccf28SAndroid Build Coastguard Worker 
rsaAllocationGetType(RsContext ctxWrapper,RsAllocation va)355*e1eccf28SAndroid Build Coastguard Worker extern "C" const void * rsaAllocationGetType(RsContext ctxWrapper, RsAllocation va)
356*e1eccf28SAndroid Build Coastguard Worker {
357*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, AllocationGetType, va);
358*e1eccf28SAndroid Build Coastguard Worker }
359*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationGetSurface(RsContext ctxWrapper,RsAllocation alloc)360*e1eccf28SAndroid Build Coastguard Worker extern "C" RsNativeWindow rsAllocationGetSurface (RsContext ctxWrapper, RsAllocation alloc)
361*e1eccf28SAndroid Build Coastguard Worker {
362*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, AllocationGetSurface, alloc);
363*e1eccf28SAndroid Build Coastguard Worker }
364*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationSetupBufferQueue(RsContext ctxWrapper,RsAllocation alloc,uint32_t numAlloc)365*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocationSetupBufferQueue (RsContext ctxWrapper, RsAllocation alloc, uint32_t numAlloc)
366*e1eccf28SAndroid Build Coastguard Worker {
367*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AllocationSetupBufferQueue, alloc, numAlloc);
368*e1eccf28SAndroid Build Coastguard Worker }
369*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationShareBufferQueue(RsContext ctxWrapper,RsAllocation alloc1,RsAllocation alloc2)370*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocationShareBufferQueue (RsContext ctxWrapper, RsAllocation alloc1, RsAllocation alloc2)
371*e1eccf28SAndroid Build Coastguard Worker {
372*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AllocationShareBufferQueue, alloc1, alloc2);
373*e1eccf28SAndroid Build Coastguard Worker }
374*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationSetSurface(RsContext ctxWrapper,RsAllocation alloc,RsNativeWindow sur)375*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocationSetSurface (RsContext ctxWrapper, RsAllocation alloc, RsNativeWindow sur)
376*e1eccf28SAndroid Build Coastguard Worker {
377*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AllocationSetSurface, alloc, sur);
378*e1eccf28SAndroid Build Coastguard Worker }
379*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationAdapterOffset(RsContext ctxWrapper,RsAllocation alloc,const uint32_t * offsets,size_t offsets_length)380*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocationAdapterOffset (RsContext ctxWrapper, RsAllocation alloc,
381*e1eccf28SAndroid Build Coastguard Worker                                            const uint32_t * offsets, size_t offsets_length)
382*e1eccf28SAndroid Build Coastguard Worker {
383*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AllocationAdapterOffset, alloc, offsets, offsets_length);
384*e1eccf28SAndroid Build Coastguard Worker }
385*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationCopyToBitmap(RsContext ctxWrapper,RsAllocation alloc,void * data,size_t data_length)386*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocationCopyToBitmap (RsContext ctxWrapper, RsAllocation alloc, void * data, size_t data_length)
387*e1eccf28SAndroid Build Coastguard Worker {
388*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AllocationCopyToBitmap, alloc, data, data_length);
389*e1eccf28SAndroid Build Coastguard Worker }
390*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationGetPointer(RsContext ctxWrapper,RsAllocation va,uint32_t lod,RsAllocationCubemapFace face,uint32_t z,uint32_t array,size_t * stride,size_t stride_length)391*e1eccf28SAndroid Build Coastguard Worker extern "C" void * rsAllocationGetPointer (RsContext ctxWrapper, RsAllocation va, uint32_t lod, RsAllocationCubemapFace face,
392*e1eccf28SAndroid Build Coastguard Worker                                           uint32_t z, uint32_t array, size_t * stride, size_t stride_length)
393*e1eccf28SAndroid Build Coastguard Worker {
394*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, AllocationGetPointer, va, lod, face, z, array, stride, stride_length);
395*e1eccf28SAndroid Build Coastguard Worker }
396*e1eccf28SAndroid Build Coastguard Worker 
rsAllocation1DData(RsContext ctxWrapper,RsAllocation va,uint32_t xoff,uint32_t lod,uint32_t count,const void * data,size_t data_length)397*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocation1DData (RsContext ctxWrapper, RsAllocation va, uint32_t xoff, uint32_t lod, uint32_t count,
398*e1eccf28SAndroid Build Coastguard Worker                                     const void * data, size_t data_length)
399*e1eccf28SAndroid Build Coastguard Worker {
400*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, Allocation1DData, va, xoff, lod, count, data, data_length);
401*e1eccf28SAndroid Build Coastguard Worker }
402*e1eccf28SAndroid Build Coastguard Worker 
rsAllocation1DElementData(RsContext ctxWrapper,RsAllocation va,uint32_t x,uint32_t lod,const void * data,size_t data_length,size_t comp_offset)403*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocation1DElementData (RsContext ctxWrapper, RsAllocation va, uint32_t x, uint32_t lod,
404*e1eccf28SAndroid Build Coastguard Worker                                            const void * data, size_t data_length, size_t comp_offset)
405*e1eccf28SAndroid Build Coastguard Worker {
406*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, Allocation1DElementData, va, x, lod, data, data_length, comp_offset);
407*e1eccf28SAndroid Build Coastguard Worker }
408*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationElementData(RsContext ctxWrapper,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)409*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocationElementData (RsContext ctxWrapper, RsAllocation va, uint32_t x, uint32_t y, uint32_t z,
410*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t lod, const void * data, size_t data_length, size_t comp_offset)
411*e1eccf28SAndroid Build Coastguard Worker {
412*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AllocationElementData, va, x, y, z, lod, data, data_length, comp_offset);
413*e1eccf28SAndroid Build Coastguard Worker }
414*e1eccf28SAndroid Build Coastguard Worker 
rsAllocation2DData(RsContext ctxWrapper,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)415*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocation2DData (RsContext ctxWrapper, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t lod,
416*e1eccf28SAndroid Build Coastguard Worker                                     RsAllocationCubemapFace face, uint32_t w, uint32_t h,
417*e1eccf28SAndroid Build Coastguard Worker                                     const void * data, size_t data_length, size_t stride)
418*e1eccf28SAndroid Build Coastguard Worker {
419*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, Allocation2DData, va, xoff, yoff, lod, face, w, h, data, data_length, stride);
420*e1eccf28SAndroid Build Coastguard Worker }
421*e1eccf28SAndroid Build Coastguard Worker 
rsAllocation3DData(RsContext ctxWrapper,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)422*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocation3DData (RsContext ctxWrapper, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t zoff,
423*e1eccf28SAndroid Build Coastguard Worker                                     uint32_t lod, uint32_t w, uint32_t h, uint32_t d,
424*e1eccf28SAndroid Build Coastguard Worker                                     const void * data, size_t data_length, size_t stride)
425*e1eccf28SAndroid Build Coastguard Worker {
426*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, Allocation3DData, va, xoff, yoff, zoff, lod, w, h, d, data, data_length, stride);
427*e1eccf28SAndroid Build Coastguard Worker }
428*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationGenerateMipmaps(RsContext ctxWrapper,RsAllocation va)429*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocationGenerateMipmaps (RsContext ctxWrapper, RsAllocation va)
430*e1eccf28SAndroid Build Coastguard Worker {
431*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AllocationGenerateMipmaps, va);
432*e1eccf28SAndroid Build Coastguard Worker }
433*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationRead(RsContext ctxWrapper,RsAllocation va,void * data,size_t data_length)434*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocationRead (RsContext ctxWrapper, RsAllocation va, void * data, size_t data_length)
435*e1eccf28SAndroid Build Coastguard Worker {
436*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AllocationRead, va, data, data_length);
437*e1eccf28SAndroid Build Coastguard Worker }
438*e1eccf28SAndroid Build Coastguard Worker 
rsAllocation1DRead(RsContext ctxWrapper,RsAllocation va,uint32_t xoff,uint32_t lod,uint32_t count,void * data,size_t data_length)439*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocation1DRead (RsContext ctxWrapper, RsAllocation va, uint32_t xoff, uint32_t lod, uint32_t count,
440*e1eccf28SAndroid Build Coastguard Worker                                     void * data, size_t data_length)
441*e1eccf28SAndroid Build Coastguard Worker {
442*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, Allocation1DRead, va, xoff, lod, count, data, data_length);
443*e1eccf28SAndroid Build Coastguard Worker }
444*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationElementRead(RsContext ctxWrapper,RsAllocation va,uint32_t x,uint32_t y,uint32_t z,uint32_t lod,void * data,size_t data_length,size_t comp_offset)445*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocationElementRead (RsContext ctxWrapper, RsAllocation va, uint32_t x, uint32_t y, uint32_t z,
446*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t lod, void * data, size_t data_length, size_t comp_offset)
447*e1eccf28SAndroid Build Coastguard Worker {
448*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AllocationElementRead, va, x, y, z, lod, data, data_length, comp_offset);
449*e1eccf28SAndroid Build Coastguard Worker }
450*e1eccf28SAndroid Build Coastguard Worker 
rsAllocation2DRead(RsContext ctxWrapper,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)451*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocation2DRead (RsContext ctxWrapper, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t lod,
452*e1eccf28SAndroid Build Coastguard Worker                                     RsAllocationCubemapFace face, uint32_t w, uint32_t h,
453*e1eccf28SAndroid Build Coastguard Worker                                     void * data, size_t data_length, size_t stride)
454*e1eccf28SAndroid Build Coastguard Worker {
455*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, Allocation2DRead, va, xoff, yoff, lod, face, w, h, data, data_length, stride);
456*e1eccf28SAndroid Build Coastguard Worker }
457*e1eccf28SAndroid Build Coastguard Worker 
rsAllocation3DRead(RsContext ctxWrapper,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)458*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocation3DRead (RsContext ctxWrapper, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t zoff,
459*e1eccf28SAndroid Build Coastguard Worker                                     uint32_t lod, uint32_t w, uint32_t h, uint32_t d,
460*e1eccf28SAndroid Build Coastguard Worker                                     void * data, size_t data_length, size_t stride)
461*e1eccf28SAndroid Build Coastguard Worker {
462*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, Allocation3DRead, va, xoff, yoff, zoff, lod, w, h, d, data, data_length, stride);
463*e1eccf28SAndroid Build Coastguard Worker }
464*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationSyncAll(RsContext ctxWrapper,RsAllocation va,RsAllocationUsageType src)465*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocationSyncAll (RsContext ctxWrapper, RsAllocation va, RsAllocationUsageType src)
466*e1eccf28SAndroid Build Coastguard Worker {
467*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AllocationSyncAll, va, src);
468*e1eccf28SAndroid Build Coastguard Worker }
469*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationResize1D(RsContext ctxWrapper,RsAllocation va,uint32_t dimX)470*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocationResize1D (RsContext ctxWrapper, RsAllocation va, uint32_t dimX)
471*e1eccf28SAndroid Build Coastguard Worker {
472*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AllocationResize1D, va, dimX);
473*e1eccf28SAndroid Build Coastguard Worker }
474*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationCopy2DRange(RsContext ctxWrapper,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)475*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocationCopy2DRange (RsContext ctxWrapper,
476*e1eccf28SAndroid Build Coastguard Worker                                          RsAllocation dest,
477*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t destXoff, uint32_t destYoff,
478*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t destMip, uint32_t destFace,
479*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t width, uint32_t height,
480*e1eccf28SAndroid Build Coastguard Worker                                          RsAllocation src,
481*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t srcXoff, uint32_t srcYoff,
482*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t srcMip, uint32_t srcFace)
483*e1eccf28SAndroid Build Coastguard Worker {
484*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AllocationCopy2DRange, dest, destXoff, destYoff, destMip, destFace,
485*e1eccf28SAndroid Build Coastguard Worker                                     width, height, src, srcXoff, srcYoff, srcMip, srcFace);
486*e1eccf28SAndroid Build Coastguard Worker }
487*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationCopy3DRange(RsContext ctxWrapper,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)488*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocationCopy3DRange (RsContext ctxWrapper,
489*e1eccf28SAndroid Build Coastguard Worker                                          RsAllocation dest,
490*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t destXoff, uint32_t destYoff, uint32_t destZoff,
491*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t destMip,
492*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t width, uint32_t height, uint32_t depth,
493*e1eccf28SAndroid Build Coastguard Worker                                          RsAllocation src,
494*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff,
495*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t srcMip)
496*e1eccf28SAndroid Build Coastguard Worker {
497*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AllocationCopy3DRange,
498*e1eccf28SAndroid Build Coastguard Worker                 dest, destXoff, destYoff, destZoff, destMip,
499*e1eccf28SAndroid Build Coastguard Worker                 width, height, depth, src, srcXoff, srcYoff, srcZoff, srcMip);
500*e1eccf28SAndroid Build Coastguard Worker }
501*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationIoSend(RsContext ctxWrapper,RsAllocation alloc)502*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsAllocationIoSend (RsContext ctxWrapper, RsAllocation alloc)
503*e1eccf28SAndroid Build Coastguard Worker {
504*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, AllocationIoSend, alloc);
505*e1eccf28SAndroid Build Coastguard Worker }
506*e1eccf28SAndroid Build Coastguard Worker 
rsAllocationIoReceive(RsContext ctxWrapper,RsAllocation alloc)507*e1eccf28SAndroid Build Coastguard Worker extern "C" int64_t rsAllocationIoReceive (RsContext ctxWrapper, RsAllocation alloc)
508*e1eccf28SAndroid Build Coastguard Worker {
509*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, AllocationIoReceive, alloc);
510*e1eccf28SAndroid Build Coastguard Worker }
511*e1eccf28SAndroid Build Coastguard Worker 
512*e1eccf28SAndroid Build Coastguard Worker // ScriptGroup
513*e1eccf28SAndroid Build Coastguard Worker 
rsScriptGroupExecute(RsContext ctxWrapper,RsScriptGroup group)514*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptGroupExecute (RsContext ctxWrapper, RsScriptGroup group)
515*e1eccf28SAndroid Build Coastguard Worker {
516*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptGroupExecute, group);
517*e1eccf28SAndroid Build Coastguard Worker }
518*e1eccf28SAndroid Build Coastguard Worker 
rsScriptGroup2Create(RsContext ctxWrapper,const char * name,size_t name_length,const char * cacheDir,size_t cacheDir_length,RsClosure * closures,size_t closures_length)519*e1eccf28SAndroid Build Coastguard Worker extern "C" RsScriptGroup2 rsScriptGroup2Create (RsContext ctxWrapper, const char * name, size_t name_length,
520*e1eccf28SAndroid Build Coastguard Worker                                                 const char * cacheDir, size_t cacheDir_length,
521*e1eccf28SAndroid Build Coastguard Worker                                                 RsClosure * closures, size_t closures_length)
522*e1eccf28SAndroid Build Coastguard Worker {
523*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ScriptGroup2Create,
524*e1eccf28SAndroid Build Coastguard Worker                        name, name_length,
525*e1eccf28SAndroid Build Coastguard Worker                        cacheDir, cacheDir_length,
526*e1eccf28SAndroid Build Coastguard Worker                        closures, closures_length);
527*e1eccf28SAndroid Build Coastguard Worker }
528*e1eccf28SAndroid Build Coastguard Worker 
rsClosureCreate(RsContext ctxWrapper,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)529*e1eccf28SAndroid Build Coastguard Worker extern "C" RsClosure rsClosureCreate (RsContext ctxWrapper, RsScriptKernelID kernelID, RsAllocation returnValue,
530*e1eccf28SAndroid Build Coastguard Worker                                       RsScriptFieldID * fieldIDs, size_t fieldIDs_length,
531*e1eccf28SAndroid Build Coastguard Worker                                       const int64_t * values, size_t values_length,
532*e1eccf28SAndroid Build Coastguard Worker                                       const int * sizes, size_t sizes_length,
533*e1eccf28SAndroid Build Coastguard Worker                                       RsClosure * depClosures, size_t depClosures_length,
534*e1eccf28SAndroid Build Coastguard Worker                                       RsScriptFieldID * depFieldIDs, size_t depFieldIDs_length)
535*e1eccf28SAndroid Build Coastguard Worker {
536*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ClosureCreate, kernelID, returnValue, fieldIDs, fieldIDs_length,
537*e1eccf28SAndroid Build Coastguard Worker                                    const_cast<int64_t *>(values), values_length,
538*e1eccf28SAndroid Build Coastguard Worker                                    const_cast<int *>(sizes), sizes_length,
539*e1eccf28SAndroid Build Coastguard Worker                                    depClosures, depClosures_length, depFieldIDs, depFieldIDs_length);
540*e1eccf28SAndroid Build Coastguard Worker }
541*e1eccf28SAndroid Build Coastguard Worker 
rsInvokeClosureCreate(RsContext ctxWrapper,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)542*e1eccf28SAndroid Build Coastguard Worker extern "C" RsClosure rsInvokeClosureCreate (RsContext ctxWrapper, RsScriptInvokeID invokeID,
543*e1eccf28SAndroid Build Coastguard Worker                                             const void * params, size_t params_length,
544*e1eccf28SAndroid Build Coastguard Worker                                             const RsScriptFieldID * fieldIDs, size_t fieldIDs_length,
545*e1eccf28SAndroid Build Coastguard Worker                                             const int64_t * values, size_t values_length,
546*e1eccf28SAndroid Build Coastguard Worker                                             const int * sizes, size_t sizes_length)
547*e1eccf28SAndroid Build Coastguard Worker {
548*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, InvokeClosureCreate, invokeID,
549*e1eccf28SAndroid Build Coastguard Worker                        params, params_length,
550*e1eccf28SAndroid Build Coastguard Worker                        fieldIDs, fieldIDs_length,
551*e1eccf28SAndroid Build Coastguard Worker                        values, values_length,
552*e1eccf28SAndroid Build Coastguard Worker                        sizes, sizes_length);
553*e1eccf28SAndroid Build Coastguard Worker }
554*e1eccf28SAndroid Build Coastguard Worker 
rsClosureSetArg(RsContext ctxWrapper,RsClosure closureID,uint32_t index,uintptr_t value,int valueSize)555*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsClosureSetArg (RsContext ctxWrapper, RsClosure closureID, uint32_t index,
556*e1eccf28SAndroid Build Coastguard Worker                                  uintptr_t value, int valueSize)
557*e1eccf28SAndroid Build Coastguard Worker {
558*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ClosureSetArg, closureID, index, value, valueSize);
559*e1eccf28SAndroid Build Coastguard Worker }
560*e1eccf28SAndroid Build Coastguard Worker 
rsClosureSetGlobal(RsContext ctxWrapper,RsClosure closureID,RsScriptFieldID fieldID,int64_t value,int valueSize)561*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsClosureSetGlobal (RsContext ctxWrapper, RsClosure closureID, RsScriptFieldID fieldID,
562*e1eccf28SAndroid Build Coastguard Worker                                     int64_t value, int valueSize)
563*e1eccf28SAndroid Build Coastguard Worker {
564*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ClosureSetGlobal, closureID, fieldID, value, valueSize);
565*e1eccf28SAndroid Build Coastguard Worker }
566*e1eccf28SAndroid Build Coastguard Worker 
rsScriptKernelIDCreate(RsContext ctxWrapper,RsScript sid,int slot,int sig)567*e1eccf28SAndroid Build Coastguard Worker extern "C" RsScriptKernelID rsScriptKernelIDCreate (RsContext ctxWrapper, RsScript sid, int slot, int sig)
568*e1eccf28SAndroid Build Coastguard Worker {
569*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ScriptKernelIDCreate, sid, slot, sig);
570*e1eccf28SAndroid Build Coastguard Worker }
571*e1eccf28SAndroid Build Coastguard Worker 
rsScriptFieldIDCreate(RsContext ctxWrapper,RsScript sid,int slot)572*e1eccf28SAndroid Build Coastguard Worker extern "C" RsScriptFieldID rsScriptFieldIDCreate (RsContext ctxWrapper, RsScript sid, int slot)
573*e1eccf28SAndroid Build Coastguard Worker {
574*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ScriptFieldIDCreate, sid, slot);
575*e1eccf28SAndroid Build Coastguard Worker }
576*e1eccf28SAndroid Build Coastguard Worker 
rsScriptGroupCreate(RsContext ctxWrapper,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)577*e1eccf28SAndroid Build Coastguard Worker extern "C" RsScriptGroup rsScriptGroupCreate (RsContext ctxWrapper, RsScriptKernelID * kernels, size_t kernels_length,
578*e1eccf28SAndroid Build Coastguard Worker                                               RsScriptKernelID * src, size_t src_length,
579*e1eccf28SAndroid Build Coastguard Worker                                               RsScriptKernelID * dstK, size_t dstK_length,
580*e1eccf28SAndroid Build Coastguard Worker                                               RsScriptFieldID * dstF, size_t dstF_length,
581*e1eccf28SAndroid Build Coastguard Worker                                               const RsType * type, size_t type_length)
582*e1eccf28SAndroid Build Coastguard Worker {
583*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ScriptGroupCreate,
584*e1eccf28SAndroid Build Coastguard Worker                        kernels, kernels_length,
585*e1eccf28SAndroid Build Coastguard Worker                        src, src_length, dstK, dstK_length,
586*e1eccf28SAndroid Build Coastguard Worker                        dstF, dstF_length, type, type_length);
587*e1eccf28SAndroid Build Coastguard Worker }
588*e1eccf28SAndroid Build Coastguard Worker 
rsScriptGroupSetOutput(RsContext ctxWrapper,RsScriptGroup group,RsScriptKernelID kernel,RsAllocation alloc)589*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptGroupSetOutput (RsContext ctxWrapper, RsScriptGroup group,
590*e1eccf28SAndroid Build Coastguard Worker                                         RsScriptKernelID kernel, RsAllocation alloc)
591*e1eccf28SAndroid Build Coastguard Worker {
592*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptGroupSetOutput, group, kernel, alloc);
593*e1eccf28SAndroid Build Coastguard Worker }
594*e1eccf28SAndroid Build Coastguard Worker 
rsScriptGroupSetInput(RsContext ctxWrapper,RsScriptGroup group,RsScriptKernelID kernel,RsAllocation alloc)595*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptGroupSetInput (RsContext ctxWrapper, RsScriptGroup group,
596*e1eccf28SAndroid Build Coastguard Worker                                        RsScriptKernelID kernel, RsAllocation alloc)
597*e1eccf28SAndroid Build Coastguard Worker {
598*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptGroupSetInput, group, kernel, alloc);
599*e1eccf28SAndroid Build Coastguard Worker }
600*e1eccf28SAndroid Build Coastguard Worker 
601*e1eccf28SAndroid Build Coastguard Worker 
602*e1eccf28SAndroid Build Coastguard Worker // Sampler
rsSamplerCreate(RsContext ctxWrapper,RsSamplerValue magFilter,RsSamplerValue minFilter,RsSamplerValue wrapS,RsSamplerValue wrapT,RsSamplerValue wrapR,float mAniso)603*e1eccf28SAndroid Build Coastguard Worker extern "C" RsSampler rsSamplerCreate (RsContext ctxWrapper, RsSamplerValue magFilter, RsSamplerValue minFilter,
604*e1eccf28SAndroid Build Coastguard Worker                                       RsSamplerValue wrapS, RsSamplerValue wrapT, RsSamplerValue wrapR,
605*e1eccf28SAndroid Build Coastguard Worker                                       float mAniso)
606*e1eccf28SAndroid Build Coastguard Worker {
607*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, SamplerCreate, magFilter, minFilter, wrapS, wrapT, wrapR, mAniso);
608*e1eccf28SAndroid Build Coastguard Worker }
609*e1eccf28SAndroid Build Coastguard Worker 
610*e1eccf28SAndroid Build Coastguard Worker // Script
611*e1eccf28SAndroid Build Coastguard Worker 
rsScriptCCreate(RsContext ctxWrapper,const char * resName,size_t resName_length,const char * cacheDir,size_t cacheDir_length,const char * text,size_t text_length)612*e1eccf28SAndroid Build Coastguard Worker extern "C" RsScript rsScriptCCreate (RsContext ctxWrapper, const char * resName, size_t resName_length,
613*e1eccf28SAndroid Build Coastguard Worker                                      const char * cacheDir, size_t cacheDir_length,
614*e1eccf28SAndroid Build Coastguard Worker                                      const char * text, size_t text_length)
615*e1eccf28SAndroid Build Coastguard Worker {
616*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ScriptCCreate, resName, resName_length, cacheDir, cacheDir_length, text, text_length);
617*e1eccf28SAndroid Build Coastguard Worker }
618*e1eccf28SAndroid Build Coastguard Worker 
rsScriptIntrinsicCreate(RsContext ctxWrapper,uint32_t id,RsElement eid)619*e1eccf28SAndroid Build Coastguard Worker extern "C" RsScript rsScriptIntrinsicCreate (RsContext ctxWrapper, uint32_t id, RsElement eid)
620*e1eccf28SAndroid Build Coastguard Worker {
621*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ScriptIntrinsicCreate, id, eid);
622*e1eccf28SAndroid Build Coastguard Worker }
623*e1eccf28SAndroid Build Coastguard Worker 
rsScriptBindAllocation(RsContext ctxWrapper,RsScript vtm,RsAllocation va,uint32_t slot)624*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptBindAllocation (RsContext ctxWrapper, RsScript vtm, RsAllocation va, uint32_t slot)
625*e1eccf28SAndroid Build Coastguard Worker {
626*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptBindAllocation, vtm, va, slot);
627*e1eccf28SAndroid Build Coastguard Worker }
628*e1eccf28SAndroid Build Coastguard Worker 
rsScriptSetTimeZone(RsContext ctxWrapper,RsScript s,const char * timeZone,size_t timeZone_length)629*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptSetTimeZone (RsContext ctxWrapper, RsScript s, const char * timeZone, size_t timeZone_length)
630*e1eccf28SAndroid Build Coastguard Worker {
631*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptSetTimeZone, s, timeZone, timeZone_length);
632*e1eccf28SAndroid Build Coastguard Worker }
633*e1eccf28SAndroid Build Coastguard Worker 
rsScriptInvokeIDCreate(RsContext ctxWrapper,RsScript s,uint32_t slot)634*e1eccf28SAndroid Build Coastguard Worker extern "C" RsScriptInvokeID rsScriptInvokeIDCreate (RsContext ctxWrapper, RsScript s, uint32_t slot)
635*e1eccf28SAndroid Build Coastguard Worker {
636*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ScriptInvokeIDCreate, s, slot);
637*e1eccf28SAndroid Build Coastguard Worker }
638*e1eccf28SAndroid Build Coastguard Worker 
rsScriptInvoke(RsContext ctxWrapper,RsScript s,uint32_t slot)639*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptInvoke (RsContext ctxWrapper, RsScript s, uint32_t slot)
640*e1eccf28SAndroid Build Coastguard Worker {
641*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptInvoke, s, slot);
642*e1eccf28SAndroid Build Coastguard Worker }
643*e1eccf28SAndroid Build Coastguard Worker 
rsScriptInvokeV(RsContext ctxWrapper,RsScript s,uint32_t slot,const void * data,size_t data_length)644*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptInvokeV (RsContext ctxWrapper, RsScript s, uint32_t slot, const void * data, size_t data_length)
645*e1eccf28SAndroid Build Coastguard Worker {
646*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptInvokeV, s, slot, data, data_length);
647*e1eccf28SAndroid Build Coastguard Worker }
648*e1eccf28SAndroid Build Coastguard Worker 
rsScriptForEach(RsContext ctxWrapper,RsScript s,uint32_t slot,RsAllocation ain,RsAllocation aout,const void * usr,size_t usr_length,const RsScriptCall * sc,size_t sc_length)649*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptForEach (RsContext ctxWrapper, RsScript s, uint32_t slot,
650*e1eccf28SAndroid Build Coastguard Worker                                  RsAllocation ain, RsAllocation aout,
651*e1eccf28SAndroid Build Coastguard Worker                                  const void * usr, size_t usr_length,
652*e1eccf28SAndroid Build Coastguard Worker                                  const RsScriptCall * sc, size_t sc_length)
653*e1eccf28SAndroid Build Coastguard Worker {
654*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptForEach, s, slot, ain, aout, usr, usr_length, sc, sc_length);
655*e1eccf28SAndroid Build Coastguard Worker }
656*e1eccf28SAndroid Build Coastguard Worker 
rsScriptForEachMulti(RsContext ctxWrapper,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)657*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptForEachMulti (RsContext ctxWrapper, RsScript s, uint32_t slot,
658*e1eccf28SAndroid Build Coastguard Worker                                       RsAllocation * ains, size_t ains_length, RsAllocation aout,
659*e1eccf28SAndroid Build Coastguard Worker                                       const void * usr, size_t usr_length,
660*e1eccf28SAndroid Build Coastguard Worker                                       const RsScriptCall * sc, size_t sc_length)
661*e1eccf28SAndroid Build Coastguard Worker {
662*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptForEachMulti, s, slot, ains, ains_length, aout, usr, usr_length, sc, sc_length);
663*e1eccf28SAndroid Build Coastguard Worker }
664*e1eccf28SAndroid Build Coastguard Worker 
rsScriptReduce(RsContext ctxWrapper,RsScript s,uint32_t slot,RsAllocation * ains,size_t ains_length,RsAllocation aout,const RsScriptCall * sc,size_t sc_length)665*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptReduce (RsContext ctxWrapper, RsScript s, uint32_t slot,
666*e1eccf28SAndroid Build Coastguard Worker                                 RsAllocation * ains, size_t ains_length, RsAllocation aout,
667*e1eccf28SAndroid Build Coastguard Worker                                 const RsScriptCall * sc, size_t sc_length)
668*e1eccf28SAndroid Build Coastguard Worker {
669*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptReduce, s, slot, ains, ains_length, aout, sc, sc_length);
670*e1eccf28SAndroid Build Coastguard Worker }
671*e1eccf28SAndroid Build Coastguard Worker 
rsScriptSetVarI(RsContext ctxWrapper,RsScript s,uint32_t slot,int value)672*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptSetVarI (RsContext ctxWrapper, RsScript s, uint32_t slot, int value)
673*e1eccf28SAndroid Build Coastguard Worker {
674*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptSetVarI, s, slot, value);
675*e1eccf28SAndroid Build Coastguard Worker }
676*e1eccf28SAndroid Build Coastguard Worker 
rsScriptSetVarObj(RsContext ctxWrapper,RsScript s,uint32_t slot,RsObjectBase value)677*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptSetVarObj (RsContext ctxWrapper, RsScript s, uint32_t slot, RsObjectBase value)
678*e1eccf28SAndroid Build Coastguard Worker {
679*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptSetVarObj, s, slot, value);
680*e1eccf28SAndroid Build Coastguard Worker }
681*e1eccf28SAndroid Build Coastguard Worker 
rsScriptSetVarJ(RsContext ctxWrapper,RsScript s,uint32_t slot,int64_t value)682*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptSetVarJ (RsContext ctxWrapper, RsScript s, uint32_t slot, int64_t value)
683*e1eccf28SAndroid Build Coastguard Worker {
684*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptSetVarJ, s, slot, value);
685*e1eccf28SAndroid Build Coastguard Worker }
686*e1eccf28SAndroid Build Coastguard Worker 
rsScriptSetVarF(RsContext ctxWrapper,RsScript s,uint32_t slot,float value)687*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptSetVarF (RsContext ctxWrapper, RsScript s, uint32_t slot, float value)
688*e1eccf28SAndroid Build Coastguard Worker {
689*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptSetVarF, s, slot, value);
690*e1eccf28SAndroid Build Coastguard Worker }
691*e1eccf28SAndroid Build Coastguard Worker 
rsScriptSetVarD(RsContext ctxWrapper,RsScript s,uint32_t slot,double value)692*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptSetVarD (RsContext ctxWrapper, RsScript s, uint32_t slot, double value)
693*e1eccf28SAndroid Build Coastguard Worker {
694*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptSetVarD, s, slot, value);
695*e1eccf28SAndroid Build Coastguard Worker }
696*e1eccf28SAndroid Build Coastguard Worker 
rsScriptSetVarV(RsContext ctxWrapper,RsScript s,uint32_t slot,const void * data,size_t data_length)697*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptSetVarV (RsContext ctxWrapper, RsScript s, uint32_t slot,
698*e1eccf28SAndroid Build Coastguard Worker                                  const void * data, size_t data_length)
699*e1eccf28SAndroid Build Coastguard Worker {
700*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptSetVarV, s, slot, data, data_length);
701*e1eccf28SAndroid Build Coastguard Worker }
702*e1eccf28SAndroid Build Coastguard Worker 
rsScriptGetVarV(RsContext ctxWrapper,RsScript s,uint32_t slot,void * data,size_t data_length)703*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptGetVarV (RsContext ctxWrapper, RsScript s, uint32_t slot,
704*e1eccf28SAndroid Build Coastguard Worker                                  void * data, size_t data_length)
705*e1eccf28SAndroid Build Coastguard Worker {
706*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptGetVarV, s, slot, data, data_length);
707*e1eccf28SAndroid Build Coastguard Worker }
708*e1eccf28SAndroid Build Coastguard Worker 
rsScriptSetVarVE(RsContext ctxWrapper,RsScript s,uint32_t slot,const void * data,size_t data_length,RsElement e,const uint32_t * dims,size_t dims_length)709*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsScriptSetVarVE (RsContext ctxWrapper, RsScript s, uint32_t slot,
710*e1eccf28SAndroid Build Coastguard Worker                                   const void * data, size_t data_length,
711*e1eccf28SAndroid Build Coastguard Worker                                   RsElement e, const uint32_t * dims, size_t dims_length)
712*e1eccf28SAndroid Build Coastguard Worker {
713*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ScriptSetVarVE, s, slot, data, data_length, e, dims, dims_length);
714*e1eccf28SAndroid Build Coastguard Worker }
715*e1eccf28SAndroid Build Coastguard Worker 
716*e1eccf28SAndroid Build Coastguard Worker 
717*e1eccf28SAndroid Build Coastguard Worker // Graphics
718*e1eccf28SAndroid Build Coastguard Worker /* The following API are deprecated. */
719*e1eccf28SAndroid Build Coastguard Worker 
rsContextCreateGL(RsDevice vdev,uint32_t version,uint32_t sdkVersion,RsSurfaceConfig sc,uint32_t dpi)720*e1eccf28SAndroid Build Coastguard Worker extern "C" RsContext rsContextCreateGL(RsDevice vdev, uint32_t version, uint32_t sdkVersion,
721*e1eccf28SAndroid Build Coastguard Worker                                        RsSurfaceConfig sc, uint32_t dpi)
722*e1eccf28SAndroid Build Coastguard Worker {
723*e1eccf28SAndroid Build Coastguard Worker     if (!globalObjAlive) {
724*e1eccf28SAndroid Build Coastguard Worker         ALOGE("rsContextCreateGL is not allowed during process teardown.");
725*e1eccf28SAndroid Build Coastguard Worker         return nullptr;
726*e1eccf28SAndroid Build Coastguard Worker     }
727*e1eccf28SAndroid Build Coastguard Worker 
728*e1eccf28SAndroid Build Coastguard Worker     RsFallbackAdaptation& instance = RsFallbackAdaptation::GetInstance();
729*e1eccf28SAndroid Build Coastguard Worker     RsContext context = instance.GetEntryFuncs()->ContextCreateGL(vdev, version, sdkVersion, sc, dpi);
730*e1eccf28SAndroid Build Coastguard Worker 
731*e1eccf28SAndroid Build Coastguard Worker     RsContextWrapper *ctxWrapper = new RsContextWrapper{context, instance.GetEntryFuncs()};
732*e1eccf28SAndroid Build Coastguard Worker 
733*e1eccf28SAndroid Build Coastguard Worker     // Lock contextMap when adding new entries.
734*e1eccf28SAndroid Build Coastguard Worker     std::unique_lock<std::mutex> lock(contextMapMutex);
735*e1eccf28SAndroid Build Coastguard Worker     contextMap.insert(std::make_pair(context, ctxWrapper));
736*e1eccf28SAndroid Build Coastguard Worker 
737*e1eccf28SAndroid Build Coastguard Worker     return (RsContext) ctxWrapper;
738*e1eccf28SAndroid Build Coastguard Worker }
739*e1eccf28SAndroid Build Coastguard Worker 
rsContextBindProgramStore(RsContext ctxWrapper,RsProgramStore pgm)740*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextBindProgramStore (RsContext ctxWrapper, RsProgramStore pgm)
741*e1eccf28SAndroid Build Coastguard Worker {
742*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextBindProgramStore, pgm);
743*e1eccf28SAndroid Build Coastguard Worker }
744*e1eccf28SAndroid Build Coastguard Worker 
rsContextBindProgramFragment(RsContext ctxWrapper,RsProgramFragment pgm)745*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextBindProgramFragment (RsContext ctxWrapper, RsProgramFragment pgm)
746*e1eccf28SAndroid Build Coastguard Worker {
747*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextBindProgramFragment, pgm);
748*e1eccf28SAndroid Build Coastguard Worker }
749*e1eccf28SAndroid Build Coastguard Worker 
rsContextBindProgramVertex(RsContext ctxWrapper,RsProgramVertex pgm)750*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextBindProgramVertex (RsContext ctxWrapper, RsProgramVertex pgm)
751*e1eccf28SAndroid Build Coastguard Worker {
752*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextBindProgramVertex, pgm);
753*e1eccf28SAndroid Build Coastguard Worker }
754*e1eccf28SAndroid Build Coastguard Worker 
rsContextBindProgramRaster(RsContext ctxWrapper,RsProgramRaster pgm)755*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextBindProgramRaster (RsContext ctxWrapper, RsProgramRaster pgm)
756*e1eccf28SAndroid Build Coastguard Worker {
757*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextBindProgramRaster, pgm);
758*e1eccf28SAndroid Build Coastguard Worker }
759*e1eccf28SAndroid Build Coastguard Worker 
rsContextBindFont(RsContext ctxWrapper,RsFont pgm)760*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextBindFont (RsContext ctxWrapper, RsFont pgm)
761*e1eccf28SAndroid Build Coastguard Worker {
762*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextBindFont, pgm);
763*e1eccf28SAndroid Build Coastguard Worker }
764*e1eccf28SAndroid Build Coastguard Worker 
rsContextSetSurface(RsContext ctxWrapper,uint32_t width,uint32_t height,RsNativeWindow sur)765*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextSetSurface (RsContext ctxWrapper, uint32_t width, uint32_t height,
766*e1eccf28SAndroid Build Coastguard Worker                                      RsNativeWindow sur)
767*e1eccf28SAndroid Build Coastguard Worker {
768*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextSetSurface, width, height, sur);
769*e1eccf28SAndroid Build Coastguard Worker }
770*e1eccf28SAndroid Build Coastguard Worker 
rsContextBindRootScript(RsContext ctxWrapper,RsScript sampler)771*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextBindRootScript (RsContext ctxWrapper, RsScript sampler)
772*e1eccf28SAndroid Build Coastguard Worker {
773*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextBindRootScript, sampler);
774*e1eccf28SAndroid Build Coastguard Worker }
775*e1eccf28SAndroid Build Coastguard Worker 
rsContextPause(RsContext ctxWrapper)776*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextPause (RsContext ctxWrapper)
777*e1eccf28SAndroid Build Coastguard Worker {
778*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextPause);
779*e1eccf28SAndroid Build Coastguard Worker }
780*e1eccf28SAndroid Build Coastguard Worker 
rsContextResume(RsContext ctxWrapper)781*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsContextResume (RsContext ctxWrapper)
782*e1eccf28SAndroid Build Coastguard Worker {
783*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ContextResume);
784*e1eccf28SAndroid Build Coastguard Worker }
785*e1eccf28SAndroid Build Coastguard Worker 
rsProgramStoreCreate(RsContext ctxWrapper,bool colorMaskR,bool colorMaskG,bool colorMaskB,bool colorMaskA,bool depthMask,bool ditherEnable,RsBlendSrcFunc srcFunc,RsBlendDstFunc destFunc,RsDepthFunc depthFunc)786*e1eccf28SAndroid Build Coastguard Worker extern "C" RsProgramStore rsProgramStoreCreate (RsContext ctxWrapper,
787*e1eccf28SAndroid Build Coastguard Worker                                                 bool colorMaskR, bool colorMaskG,
788*e1eccf28SAndroid Build Coastguard Worker                                                 bool colorMaskB, bool colorMaskA,
789*e1eccf28SAndroid Build Coastguard Worker                                                 bool depthMask, bool ditherEnable,
790*e1eccf28SAndroid Build Coastguard Worker                                                 RsBlendSrcFunc srcFunc,
791*e1eccf28SAndroid Build Coastguard Worker                                                 RsBlendDstFunc destFunc,
792*e1eccf28SAndroid Build Coastguard Worker                                                 RsDepthFunc depthFunc)
793*e1eccf28SAndroid Build Coastguard Worker {
794*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ProgramStoreCreate,
795*e1eccf28SAndroid Build Coastguard Worker                        colorMaskR, colorMaskG, colorMaskB, colorMaskA,
796*e1eccf28SAndroid Build Coastguard Worker                        depthMask, ditherEnable, srcFunc, destFunc, depthFunc);
797*e1eccf28SAndroid Build Coastguard Worker }
798*e1eccf28SAndroid Build Coastguard Worker 
rsProgramRasterCreate(RsContext ctxWrapper,bool pointSprite,RsCullMode cull)799*e1eccf28SAndroid Build Coastguard Worker extern "C" RsProgramRaster rsProgramRasterCreate (RsContext ctxWrapper, bool pointSprite, RsCullMode cull)
800*e1eccf28SAndroid Build Coastguard Worker {
801*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ProgramRasterCreate, pointSprite, cull);
802*e1eccf28SAndroid Build Coastguard Worker }
803*e1eccf28SAndroid Build Coastguard Worker 
rsProgramFragmentCreate(RsContext ctxWrapper,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)804*e1eccf28SAndroid Build Coastguard Worker extern "C" RsProgramFragment rsProgramFragmentCreate (RsContext ctxWrapper,
805*e1eccf28SAndroid Build Coastguard Worker                                                       const char * shaderText, size_t shaderText_length,
806*e1eccf28SAndroid Build Coastguard Worker                                                       const char ** textureNames, size_t textureNames_length_length,
807*e1eccf28SAndroid Build Coastguard Worker                                                       const size_t * textureNames_length,
808*e1eccf28SAndroid Build Coastguard Worker                                                       const uintptr_t * params, size_t params_length)
809*e1eccf28SAndroid Build Coastguard Worker {
810*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ProgramFragmentCreate,
811*e1eccf28SAndroid Build Coastguard Worker                        shaderText, shaderText_length,
812*e1eccf28SAndroid Build Coastguard Worker                        textureNames, textureNames_length_length, textureNames_length,
813*e1eccf28SAndroid Build Coastguard Worker                        params, params_length);
814*e1eccf28SAndroid Build Coastguard Worker }
815*e1eccf28SAndroid Build Coastguard Worker 
rsProgramVertexCreate(RsContext ctxWrapper,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)816*e1eccf28SAndroid Build Coastguard Worker extern "C" RsProgramVertex rsProgramVertexCreate (RsContext ctxWrapper,
817*e1eccf28SAndroid Build Coastguard Worker                                                   const char * shaderText, size_t shaderText_length,
818*e1eccf28SAndroid Build Coastguard Worker                                                   const char ** textureNames, size_t textureNames_length_length,
819*e1eccf28SAndroid Build Coastguard Worker                                                   const size_t * textureNames_length,
820*e1eccf28SAndroid Build Coastguard Worker                                                   const uintptr_t * params, size_t params_length)
821*e1eccf28SAndroid Build Coastguard Worker {
822*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, ProgramVertexCreate,
823*e1eccf28SAndroid Build Coastguard Worker                        shaderText, shaderText_length,
824*e1eccf28SAndroid Build Coastguard Worker                        textureNames, textureNames_length_length, textureNames_length,
825*e1eccf28SAndroid Build Coastguard Worker                        params, params_length);
826*e1eccf28SAndroid Build Coastguard Worker }
827*e1eccf28SAndroid Build Coastguard Worker 
rsFontCreateFromFile(RsContext ctxWrapper,const char * name,size_t name_length,float fontSize,uint32_t dpi)828*e1eccf28SAndroid Build Coastguard Worker extern "C" RsFont rsFontCreateFromFile (RsContext ctxWrapper, const char * name, size_t name_length,
829*e1eccf28SAndroid Build Coastguard Worker                                         float fontSize, uint32_t dpi)
830*e1eccf28SAndroid Build Coastguard Worker {
831*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, FontCreateFromFile, name, name_length, fontSize, dpi);
832*e1eccf28SAndroid Build Coastguard Worker }
833*e1eccf28SAndroid Build Coastguard Worker 
rsFontCreateFromMemory(RsContext ctxWrapper,const char * name,size_t name_length,float fontSize,uint32_t dpi,const void * data,size_t data_length)834*e1eccf28SAndroid Build Coastguard Worker extern "C" RsFont rsFontCreateFromMemory (RsContext ctxWrapper, const char * name, size_t name_length,
835*e1eccf28SAndroid Build Coastguard Worker                                           float fontSize, uint32_t dpi,
836*e1eccf28SAndroid Build Coastguard Worker                                           const void * data, size_t data_length)
837*e1eccf28SAndroid Build Coastguard Worker {
838*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, FontCreateFromMemory, name, name_length, fontSize, dpi, data, data_length);
839*e1eccf28SAndroid Build Coastguard Worker }
840*e1eccf28SAndroid Build Coastguard Worker 
rsMeshCreate(RsContext ctxWrapper,RsAllocation * vtx,size_t vtx_length,RsAllocation * idx,size_t idx_length,uint32_t * primType,size_t primType_length)841*e1eccf28SAndroid Build Coastguard Worker extern "C" RsMesh rsMeshCreate (RsContext ctxWrapper, RsAllocation * vtx, size_t vtx_length,
842*e1eccf28SAndroid Build Coastguard Worker                                 RsAllocation * idx, size_t idx_length,
843*e1eccf28SAndroid Build Coastguard Worker                                 uint32_t * primType, size_t primType_length)
844*e1eccf28SAndroid Build Coastguard Worker {
845*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, MeshCreate, vtx, vtx_length, idx, idx_length, primType, primType_length);
846*e1eccf28SAndroid Build Coastguard Worker }
847*e1eccf28SAndroid Build Coastguard Worker 
rsProgramBindConstants(RsContext ctxWrapper,RsProgram vp,uint32_t slot,RsAllocation constants)848*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsProgramBindConstants (RsContext ctxWrapper, RsProgram vp, uint32_t slot, RsAllocation constants)
849*e1eccf28SAndroid Build Coastguard Worker {
850*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ProgramBindConstants, vp, slot, constants);
851*e1eccf28SAndroid Build Coastguard Worker }
852*e1eccf28SAndroid Build Coastguard Worker 
rsProgramBindTexture(RsContext ctxWrapper,RsProgramFragment pf,uint32_t slot,RsAllocation a)853*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsProgramBindTexture (RsContext ctxWrapper, RsProgramFragment pf, uint32_t slot, RsAllocation a)
854*e1eccf28SAndroid Build Coastguard Worker {
855*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ProgramBindTexture, pf, slot,a);
856*e1eccf28SAndroid Build Coastguard Worker }
857*e1eccf28SAndroid Build Coastguard Worker 
rsProgramBindSampler(RsContext ctxWrapper,RsProgramFragment pf,uint32_t slot,RsSampler s)858*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsProgramBindSampler (RsContext ctxWrapper, RsProgramFragment pf, uint32_t slot, RsSampler s)
859*e1eccf28SAndroid Build Coastguard Worker {
860*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, ProgramBindSampler, pf, slot, s);
861*e1eccf28SAndroid Build Coastguard Worker }
862*e1eccf28SAndroid Build Coastguard Worker 
rsaFileA3DGetEntryByIndex(RsContext ctxWrapper,uint32_t index,RsFile file)863*e1eccf28SAndroid Build Coastguard Worker extern "C" RsObjectBase rsaFileA3DGetEntryByIndex(RsContext ctxWrapper, uint32_t index, RsFile file)
864*e1eccf28SAndroid Build Coastguard Worker {
865*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, FileA3DGetEntryByIndex, index, file);
866*e1eccf28SAndroid Build Coastguard Worker }
867*e1eccf28SAndroid Build Coastguard Worker 
rsaFileA3DCreateFromMemory(RsContext ctxWrapper,const void * data,uint32_t len)868*e1eccf28SAndroid Build Coastguard Worker extern "C" RsFile rsaFileA3DCreateFromMemory(RsContext ctxWrapper, const void *data, uint32_t len)
869*e1eccf28SAndroid Build Coastguard Worker {
870*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, FileA3DCreateFromMemory, data, len);
871*e1eccf28SAndroid Build Coastguard Worker }
872*e1eccf28SAndroid Build Coastguard Worker 
rsaFileA3DCreateFromAsset(RsContext ctxWrapper,void * _asset)873*e1eccf28SAndroid Build Coastguard Worker extern "C" RsFile rsaFileA3DCreateFromAsset(RsContext ctxWrapper, void *_asset)
874*e1eccf28SAndroid Build Coastguard Worker {
875*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, FileA3DCreateFromAsset, _asset);
876*e1eccf28SAndroid Build Coastguard Worker }
877*e1eccf28SAndroid Build Coastguard Worker 
rsaFileA3DCreateFromFile(RsContext ctxWrapper,const char * path)878*e1eccf28SAndroid Build Coastguard Worker extern "C" RsFile rsaFileA3DCreateFromFile(RsContext ctxWrapper, const char *path)
879*e1eccf28SAndroid Build Coastguard Worker {
880*e1eccf28SAndroid Build Coastguard Worker     return RS_DISPATCH(ctxWrapper, FileA3DCreateFromFile, path);
881*e1eccf28SAndroid Build Coastguard Worker }
882*e1eccf28SAndroid Build Coastguard Worker 
rsaFileA3DGetNumIndexEntries(RsContext ctxWrapper,int32_t * numEntries,RsFile file)883*e1eccf28SAndroid Build Coastguard Worker extern "C"  void rsaFileA3DGetNumIndexEntries(RsContext ctxWrapper, int32_t *numEntries, RsFile file)
884*e1eccf28SAndroid Build Coastguard Worker {
885*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, FileA3DGetNumIndexEntries, numEntries, file);
886*e1eccf28SAndroid Build Coastguard Worker }
887*e1eccf28SAndroid Build Coastguard Worker 
rsaFileA3DGetIndexEntries(RsContext ctxWrapper,RsFileIndexEntry * fileEntries,uint32_t numEntries,RsFile file)888*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsaFileA3DGetIndexEntries(RsContext ctxWrapper, RsFileIndexEntry *fileEntries, uint32_t numEntries, RsFile file)
889*e1eccf28SAndroid Build Coastguard Worker {
890*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, FileA3DGetIndexEntries, fileEntries, numEntries, file);
891*e1eccf28SAndroid Build Coastguard Worker }
892*e1eccf28SAndroid Build Coastguard Worker 
rsaMeshGetVertexBufferCount(RsContext ctxWrapper,RsMesh mv,int32_t * numVtx)893*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsaMeshGetVertexBufferCount(RsContext ctxWrapper, RsMesh mv, int32_t *numVtx)
894*e1eccf28SAndroid Build Coastguard Worker {
895*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, MeshGetVertexBufferCount, mv, numVtx);
896*e1eccf28SAndroid Build Coastguard Worker }
897*e1eccf28SAndroid Build Coastguard Worker 
rsaMeshGetIndexCount(RsContext ctxWrapper,RsMesh mv,int32_t * numIdx)898*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsaMeshGetIndexCount(RsContext ctxWrapper, RsMesh mv, int32_t *numIdx)
899*e1eccf28SAndroid Build Coastguard Worker {
900*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, MeshGetIndexCount, mv, numIdx);
901*e1eccf28SAndroid Build Coastguard Worker }
902*e1eccf28SAndroid Build Coastguard Worker 
rsaMeshGetVertices(RsContext ctxWrapper,RsMesh mv,RsAllocation * vtxData,uint32_t vtxDataCount)903*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsaMeshGetVertices(RsContext ctxWrapper, RsMesh mv, RsAllocation *vtxData, uint32_t vtxDataCount)
904*e1eccf28SAndroid Build Coastguard Worker {
905*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, MeshGetVertices, mv, vtxData, vtxDataCount);
906*e1eccf28SAndroid Build Coastguard Worker }
907*e1eccf28SAndroid Build Coastguard Worker 
rsaMeshGetIndices(RsContext ctxWrapper,RsMesh mv,RsAllocation * va,uint32_t * primType,uint32_t idxDataCount)908*e1eccf28SAndroid Build Coastguard Worker extern "C" void rsaMeshGetIndices(RsContext ctxWrapper, RsMesh mv, RsAllocation *va, uint32_t *primType, uint32_t idxDataCount)
909*e1eccf28SAndroid Build Coastguard Worker {
910*e1eccf28SAndroid Build Coastguard Worker     RS_DISPATCH(ctxWrapper, MeshGetIndices, mv, va, primType, idxDataCount);
911*e1eccf28SAndroid Build Coastguard Worker }
912