xref: /aosp_15_r20/frameworks/rs/rsHidlAdaptation.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 #define LOG_TAG "RenderScript HIDL Adaptation"
18*e1eccf28SAndroid Build Coastguard Worker 
19*e1eccf28SAndroid Build Coastguard Worker #include "cpp/rsDispatch.h"
20*e1eccf28SAndroid Build Coastguard Worker #include "rsHidlAdaptation.h"
21*e1eccf28SAndroid Build Coastguard Worker #include "rsFallbackAdaptation.h"
22*e1eccf28SAndroid Build Coastguard Worker 
23*e1eccf28SAndroid Build Coastguard Worker #include <cutils/properties.h>
24*e1eccf28SAndroid Build Coastguard Worker #include <log/log.h>
25*e1eccf28SAndroid Build Coastguard Worker 
26*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::IDevice;
27*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::IContext;
28*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::Allocation;
29*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::AllocationCubemapFace;
30*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::AllocationMipmapControl;
31*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::AllocationUsageType;
32*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::Closure;
33*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::ContextType;
34*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::DataKind;
35*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::DataType;
36*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::ForEachStrategy;
37*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::MessageToClientType;
38*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::SamplerValue;
39*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::ScriptCall;
40*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::ScriptFieldID;
41*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::ScriptKernelID;
42*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::ScriptIntrinsicID;
43*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::ThreadPriorities;
44*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::Type;
45*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::YuvFormat;
46*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::renderscript::V1_0::Size;
47*e1eccf28SAndroid Build Coastguard Worker using ::android::hidl::base::V1_0::IBase;
48*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::hidl_array;
49*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::hidl_memory;
50*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::details::hidl_pointer;
51*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::hidl_string;
52*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::hidl_vec;
53*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::Return;
54*e1eccf28SAndroid Build Coastguard Worker using ::android::hardware::Void;
55*e1eccf28SAndroid Build Coastguard Worker using ::android::sp;
56*e1eccf28SAndroid Build Coastguard Worker 
57*e1eccf28SAndroid Build Coastguard Worker dispatchTable RsHidlAdaptation::mEntryFuncs;
58*e1eccf28SAndroid Build Coastguard Worker sp<IDevice> RsHidlAdaptation::mHidl;
59*e1eccf28SAndroid Build Coastguard Worker std::set<sp<IContext> > RsHidlAdaptation::mContexts;
60*e1eccf28SAndroid Build Coastguard Worker std::mutex RsHidlAdaptation::mContextsMutex;
61*e1eccf28SAndroid Build Coastguard Worker 
getProp(const char * str)62*e1eccf28SAndroid Build Coastguard Worker static uint32_t getProp(const char *str) {
63*e1eccf28SAndroid Build Coastguard Worker     char buf[PROPERTY_VALUE_MAX];
64*e1eccf28SAndroid Build Coastguard Worker     property_get(str, buf, "0");
65*e1eccf28SAndroid Build Coastguard Worker     return atoi(buf);
66*e1eccf28SAndroid Build Coastguard Worker }
67*e1eccf28SAndroid Build Coastguard Worker 
RsHidlAdaptation()68*e1eccf28SAndroid Build Coastguard Worker RsHidlAdaptation::RsHidlAdaptation()
69*e1eccf28SAndroid Build Coastguard Worker {
70*e1eccf28SAndroid Build Coastguard Worker     InitializeHalDeviceContext();
71*e1eccf28SAndroid Build Coastguard Worker }
72*e1eccf28SAndroid Build Coastguard Worker 
GetInstance()73*e1eccf28SAndroid Build Coastguard Worker RsHidlAdaptation& RsHidlAdaptation::GetInstance()
74*e1eccf28SAndroid Build Coastguard Worker {
75*e1eccf28SAndroid Build Coastguard Worker     // This function-local-static guarantees the instance is a singleton. The
76*e1eccf28SAndroid Build Coastguard Worker     // constructor of RsHidlAdaptation will only be called when GetInstance is
77*e1eccf28SAndroid Build Coastguard Worker     // called for the first time.
78*e1eccf28SAndroid Build Coastguard Worker     static RsHidlAdaptation instance;
79*e1eccf28SAndroid Build Coastguard Worker     return instance;
80*e1eccf28SAndroid Build Coastguard Worker }
81*e1eccf28SAndroid Build Coastguard Worker 
GetEntryFuncs()82*e1eccf28SAndroid Build Coastguard Worker const dispatchTable* RsHidlAdaptation::GetEntryFuncs()
83*e1eccf28SAndroid Build Coastguard Worker {
84*e1eccf28SAndroid Build Coastguard Worker     return &mEntryFuncs;
85*e1eccf28SAndroid Build Coastguard Worker }
86*e1eccf28SAndroid Build Coastguard Worker 
87*e1eccf28SAndroid Build Coastguard Worker 
LoadDispatchForHidl()88*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::LoadDispatchForHidl() {
89*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.Allocation1DData = Allocation1DData;
90*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.Allocation1DElementData = Allocation1DElementData;
91*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.Allocation1DRead = Allocation1DRead;
92*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.Allocation2DData = Allocation2DData;
93*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.Allocation2DRead = Allocation2DRead;
94*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.Allocation3DData = Allocation3DData;
95*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.Allocation3DRead = Allocation3DRead;
96*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationAdapterCreate = AllocationAdapterCreate;
97*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationAdapterOffset = AllocationAdapterOffset;
98*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationCopy2DRange = AllocationCopy2DRange;
99*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationCopy3DRange = AllocationCopy3DRange;
100*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationCopyToBitmap = AllocationCopyToBitmap;
101*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationCreateFromBitmap = AllocationCreateFromBitmap;
102*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationCreateTyped = AllocationCreateTyped;
103*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationCubeCreateFromBitmap = AllocationCubeCreateFromBitmap;
104*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationElementData = AllocationElementData;
105*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationElementRead = AllocationElementRead;
106*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationGenerateMipmaps = AllocationGenerateMipmaps;
107*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationGetPointer = AllocationGetPointer;
108*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationGetSurface = AllocationGetSurface;
109*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationGetType = AllocationGetType;
110*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationIoReceive = AllocationIoReceive;
111*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationIoSend = AllocationIoSend;
112*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationRead = AllocationRead;
113*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationResize1D = AllocationResize1D;
114*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationSetSurface = AllocationSetSurface;
115*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationSetupBufferQueue = AllocationSetupBufferQueue;
116*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationShareBufferQueue = AllocationShareBufferQueue;
117*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AllocationSyncAll = AllocationSyncAll;
118*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.AssignName = AssignName;
119*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ClosureCreate = ClosureCreate;
120*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ClosureSetArg = ClosureSetArg;
121*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ClosureSetGlobal = ClosureSetGlobal;
122*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ContextCreate = ContextCreate;
123*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ContextDeinitToClient = ContextDeinitToClient;
124*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ContextDestroy = ContextDestroy;
125*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ContextDump = ContextDump;
126*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ContextFinish = ContextFinish;
127*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ContextGetMessage = ContextGetMessage;
128*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ContextInitToClient = ContextInitToClient;
129*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ContextPeekMessage = ContextPeekMessage;
130*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ContextSendMessage = ContextSendMessage;
131*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ContextSetCacheDir = ContextSetCacheDir;
132*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ContextSetPriority = ContextSetPriority;
133*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ElementCreate = ElementCreate;
134*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ElementCreate2 = ElementCreate2;
135*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ElementGetNativeData = ElementGetNativeData;
136*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ElementGetSubElements = ElementGetSubElements;
137*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.GetName = GetName;
138*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.InvokeClosureCreate = InvokeClosureCreate;
139*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ObjDestroy = ObjDestroy;
140*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.SamplerCreate = SamplerCreate;
141*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptBindAllocation = ScriptBindAllocation;
142*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptCCreate = ScriptCCreate;
143*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptFieldIDCreate = ScriptFieldIDCreate;
144*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptForEach = ScriptForEach;
145*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptForEachMulti = ScriptForEachMulti;
146*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptGetVarV = ScriptGetVarV;
147*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptGroup2Create = ScriptGroup2Create;
148*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptGroupCreate = ScriptGroupCreate;
149*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptGroupExecute = ScriptGroupExecute;
150*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptGroupSetInput = ScriptGroupSetInput;
151*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptGroupSetOutput = ScriptGroupSetOutput;
152*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptIntrinsicCreate = ScriptIntrinsicCreate;
153*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptInvoke = ScriptInvoke;
154*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptInvokeIDCreate = ScriptInvokeIDCreate;
155*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptInvokeV = ScriptInvokeV;
156*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptKernelIDCreate = ScriptKernelIDCreate;
157*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptReduce = ScriptReduce;
158*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptSetTimeZone = ScriptSetTimeZone;
159*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptSetVarD = ScriptSetVarD;
160*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptSetVarF = ScriptSetVarF;
161*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptSetVarI = ScriptSetVarI;
162*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptSetVarJ = ScriptSetVarJ;
163*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptSetVarObj = ScriptSetVarObj;
164*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptSetVarV = ScriptSetVarV;
165*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.ScriptSetVarVE = ScriptSetVarVE;
166*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.TypeCreate = TypeCreate;
167*e1eccf28SAndroid Build Coastguard Worker     mEntryFuncs.TypeGetNativeData = TypeGetNativeData;
168*e1eccf28SAndroid Build Coastguard Worker }
169*e1eccf28SAndroid Build Coastguard Worker 
InitializeHalDeviceContext()170*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::InitializeHalDeviceContext()
171*e1eccf28SAndroid Build Coastguard Worker {
172*e1eccf28SAndroid Build Coastguard Worker     ALOGD("IRenderScriptDevice::getService()");
173*e1eccf28SAndroid Build Coastguard Worker     if (getProp("debug.rs.rsov") == 0 &&
174*e1eccf28SAndroid Build Coastguard Worker         getProp("debug.rs.default-CPU-driver") == 0) {
175*e1eccf28SAndroid Build Coastguard Worker         // get HIDL service and register callback
176*e1eccf28SAndroid Build Coastguard Worker         mHidl = IDevice::getService();
177*e1eccf28SAndroid Build Coastguard Worker     }
178*e1eccf28SAndroid Build Coastguard Worker     ALOGD("IRenderScriptDevice::getService() returned %p", mHidl.get());
179*e1eccf28SAndroid Build Coastguard Worker 
180*e1eccf28SAndroid Build Coastguard Worker     if (mHidl == NULL) {
181*e1eccf28SAndroid Build Coastguard Worker         ALOGD("Using Fallback Path.");
182*e1eccf28SAndroid Build Coastguard Worker         RsFallbackAdaptation& fallbackInstance = RsFallbackAdaptation::GetInstance();
183*e1eccf28SAndroid Build Coastguard Worker         mEntryFuncs = *(fallbackInstance.GetEntryFuncs());
184*e1eccf28SAndroid Build Coastguard Worker    } else {
185*e1eccf28SAndroid Build Coastguard Worker         ALOGD("HIDL successfully loaded.");
186*e1eccf28SAndroid Build Coastguard Worker         LoadDispatchForHidl();
187*e1eccf28SAndroid Build Coastguard Worker     }
188*e1eccf28SAndroid Build Coastguard Worker }
189*e1eccf28SAndroid Build Coastguard Worker 
GetIContextHandle(RsContext context)190*e1eccf28SAndroid Build Coastguard Worker IContext *RsHidlAdaptation::GetIContextHandle(RsContext context) {
191*e1eccf28SAndroid Build Coastguard Worker     return (IContext *)context;
192*e1eccf28SAndroid Build Coastguard Worker }
193*e1eccf28SAndroid Build Coastguard Worker 
ContextCreate(RsDevice vdev,uint32_t version,uint32_t sdkVersion,RsContextType ct,uint32_t flags)194*e1eccf28SAndroid Build Coastguard Worker RsContext RsHidlAdaptation::ContextCreate(RsDevice vdev, uint32_t version, uint32_t sdkVersion, RsContextType ct, uint32_t flags)
195*e1eccf28SAndroid Build Coastguard Worker {
196*e1eccf28SAndroid Build Coastguard Worker     // Get the handle to IContext interface object and save it to the map.
197*e1eccf28SAndroid Build Coastguard Worker     sp<IContext> context = mHidl->contextCreate(sdkVersion, (ContextType)ct, flags);
198*e1eccf28SAndroid Build Coastguard Worker     RsContext ret = (RsContext)(uintptr_t)context.get();
199*e1eccf28SAndroid Build Coastguard Worker 
200*e1eccf28SAndroid Build Coastguard Worker     std::unique_lock<std::mutex> lock(mContextsMutex);
201*e1eccf28SAndroid Build Coastguard Worker     mContexts.insert(context);
202*e1eccf28SAndroid Build Coastguard Worker     return ret;
203*e1eccf28SAndroid Build Coastguard Worker }
204*e1eccf28SAndroid Build Coastguard Worker 
ContextDestroy(RsContext context)205*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ContextDestroy (RsContext context)
206*e1eccf28SAndroid Build Coastguard Worker {
207*e1eccf28SAndroid Build Coastguard Worker     // Destroy the driver context and remove IContext handle from the map.
208*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->contextDestroy();
209*e1eccf28SAndroid Build Coastguard Worker 
210*e1eccf28SAndroid Build Coastguard Worker     std::unique_lock<std::mutex> lock(mContextsMutex);
211*e1eccf28SAndroid Build Coastguard Worker     mContexts.erase((IContext*)context);
212*e1eccf28SAndroid Build Coastguard Worker }
213*e1eccf28SAndroid Build Coastguard Worker 
AllocationGetType(RsContext context,RsAllocation allocation)214*e1eccf28SAndroid Build Coastguard Worker const void* RsHidlAdaptation::AllocationGetType(RsContext context, RsAllocation allocation)
215*e1eccf28SAndroid Build Coastguard Worker {
216*e1eccf28SAndroid Build Coastguard Worker     // TODO: Replace this idiom "(uint64_t)(uintptr_t)" with a rs_to_hal function?
217*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
218*e1eccf28SAndroid Build Coastguard Worker     uint64_t typeRet = GetIContextHandle(context)->allocationGetType(_allocation);
219*e1eccf28SAndroid Build Coastguard Worker     return (void *)typeRet;
220*e1eccf28SAndroid Build Coastguard Worker }
221*e1eccf28SAndroid Build Coastguard Worker 
222*e1eccf28SAndroid Build Coastguard Worker 
TypeGetNativeData(RsContext context,RsType type,uintptr_t * typedata,uint32_t typeDataSize)223*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::TypeGetNativeData(RsContext context, RsType type, uintptr_t *typedata, uint32_t typeDataSize)
224*e1eccf28SAndroid Build Coastguard Worker {
225*e1eccf28SAndroid Build Coastguard Worker     uint64_t _type = (uint64_t)(uintptr_t)type;
226*e1eccf28SAndroid Build Coastguard Worker 
227*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->typeGetNativeMetadata(_type,
228*e1eccf28SAndroid Build Coastguard Worker                                [typedata, typeDataSize] (const hidl_vec<uint64_t> &retTypeData){
229*e1eccf28SAndroid Build Coastguard Worker                                    for (uint32_t i=0; i<typeDataSize; i++) {
230*e1eccf28SAndroid Build Coastguard Worker                                        typedata[i] = (uintptr_t)retTypeData[i];
231*e1eccf28SAndroid Build Coastguard Worker                                    }
232*e1eccf28SAndroid Build Coastguard Worker                                });
233*e1eccf28SAndroid Build Coastguard Worker }
234*e1eccf28SAndroid Build Coastguard Worker 
235*e1eccf28SAndroid Build Coastguard Worker 
ElementGetNativeData(RsContext context,RsElement element,uint32_t * elemData,uint32_t elemDataSize)236*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ElementGetNativeData(RsContext context, RsElement element, uint32_t *elemData, uint32_t elemDataSize)
237*e1eccf28SAndroid Build Coastguard Worker {
238*e1eccf28SAndroid Build Coastguard Worker     uint64_t _element = (uint64_t)(uintptr_t)element;
239*e1eccf28SAndroid Build Coastguard Worker 
240*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->elementGetNativeMetadata(_element,
241*e1eccf28SAndroid Build Coastguard Worker                                 [elemData, elemDataSize] (const hidl_vec<uint32_t> &retElemData){
242*e1eccf28SAndroid Build Coastguard Worker                                     for (uint32_t i=0; i<elemDataSize; i++) {
243*e1eccf28SAndroid Build Coastguard Worker                                         elemData[i] = retElemData[i];
244*e1eccf28SAndroid Build Coastguard Worker                                     }
245*e1eccf28SAndroid Build Coastguard Worker                                 });
246*e1eccf28SAndroid Build Coastguard Worker }
247*e1eccf28SAndroid Build Coastguard Worker 
ElementGetSubElements(RsContext context,RsElement element,uintptr_t * ids,const char ** names,size_t * arraySizes,uint32_t dataSize)248*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ElementGetSubElements(RsContext context, RsElement element, uintptr_t *ids, const char **names, size_t *arraySizes, uint32_t dataSize)
249*e1eccf28SAndroid Build Coastguard Worker {
250*e1eccf28SAndroid Build Coastguard Worker     uint64_t _element = (uint64_t)(uintptr_t)element;
251*e1eccf28SAndroid Build Coastguard Worker     uint64_t _ids = (uint64_t)(uintptr_t)ids;
252*e1eccf28SAndroid Build Coastguard Worker     uint64_t _names = (uint64_t)(uintptr_t)names;
253*e1eccf28SAndroid Build Coastguard Worker     uint64_t _arraySizes = (uint64_t)(uintptr_t)arraySizes;
254*e1eccf28SAndroid Build Coastguard Worker 
255*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->elementGetSubElements(_element, dataSize,
256*e1eccf28SAndroid Build Coastguard Worker                                  [ids, names, arraySizes, dataSize] (const hidl_vec<uint64_t> &retIds, const hidl_vec<hidl_string> &retNames, const hidl_vec<Size> &retArraySizes){
257*e1eccf28SAndroid Build Coastguard Worker                                      for (uint32_t i=0; i<dataSize; i++) {
258*e1eccf28SAndroid Build Coastguard Worker                                          ids[i] = static_cast<uintptr_t>(retIds[i]);
259*e1eccf28SAndroid Build Coastguard Worker                                          names[i] = static_cast<const char *>(retNames[i].c_str());
260*e1eccf28SAndroid Build Coastguard Worker                                          arraySizes[i] = static_cast<size_t>(retArraySizes[i]);
261*e1eccf28SAndroid Build Coastguard Worker                                      }
262*e1eccf28SAndroid Build Coastguard Worker                                  });
263*e1eccf28SAndroid Build Coastguard Worker }
264*e1eccf28SAndroid Build Coastguard Worker 
265*e1eccf28SAndroid Build Coastguard Worker 
GetName(RsContext context,void * obj,const char ** name)266*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::GetName(RsContext context, void * obj, const char **name) {
267*e1eccf28SAndroid Build Coastguard Worker     uint64_t _obj = (uint64_t)(uintptr_t)obj;
268*e1eccf28SAndroid Build Coastguard Worker 
269*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->getName(_obj, [name](hidl_string ret_name) {*name = ret_name.c_str();});
270*e1eccf28SAndroid Build Coastguard Worker }
271*e1eccf28SAndroid Build Coastguard Worker 
ClosureCreate(RsContext context,RsScriptKernelID kernelID,RsAllocation returnValue,RsScriptFieldID * fieldIDs,size_t fieldIDs_length,int64_t * values,size_t values_length,int * sizes,size_t sizes_length,RsClosure * depClosures,size_t depClosures_length,RsScriptFieldID * depFieldIDs,size_t depFieldIDs_length)272*e1eccf28SAndroid Build Coastguard Worker RsClosure RsHidlAdaptation::ClosureCreate(RsContext context, RsScriptKernelID kernelID,
273*e1eccf28SAndroid Build Coastguard Worker                                           RsAllocation returnValue,
274*e1eccf28SAndroid Build Coastguard Worker                                           RsScriptFieldID* fieldIDs, size_t fieldIDs_length,
275*e1eccf28SAndroid Build Coastguard Worker                                           int64_t* values, size_t values_length,
276*e1eccf28SAndroid Build Coastguard Worker                                           int* sizes, size_t sizes_length,
277*e1eccf28SAndroid Build Coastguard Worker                                           RsClosure* depClosures, size_t depClosures_length,
278*e1eccf28SAndroid Build Coastguard Worker                                           RsScriptFieldID* depFieldIDs,
279*e1eccf28SAndroid Build Coastguard Worker                                           size_t depFieldIDs_length)
280*e1eccf28SAndroid Build Coastguard Worker {
281*e1eccf28SAndroid Build Coastguard Worker     uint64_t _kernelID = (uint64_t)(uintptr_t)kernelID;
282*e1eccf28SAndroid Build Coastguard Worker     uint64_t _returnValue = (uint64_t)(uintptr_t)returnValue;
283*e1eccf28SAndroid Build Coastguard Worker 
284*e1eccf28SAndroid Build Coastguard Worker     std::vector<ScriptFieldID> _fieldIDs(fieldIDs_length);
285*e1eccf28SAndroid Build Coastguard Worker     std::vector<int64_t> _values(values_length);
286*e1eccf28SAndroid Build Coastguard Worker     std::vector<int32_t> _sizes(sizes_length);
287*e1eccf28SAndroid Build Coastguard Worker     std::vector<Closure> _depClosures(depClosures_length);
288*e1eccf28SAndroid Build Coastguard Worker     std::vector<ScriptFieldID> _depFieldIDs(depFieldIDs_length);
289*e1eccf28SAndroid Build Coastguard Worker 
290*e1eccf28SAndroid Build Coastguard Worker     // TODO: Replace this idiom with a rs_to_hal function?
291*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < fieldIDs_length; i++) {
292*e1eccf28SAndroid Build Coastguard Worker         _fieldIDs[i] = (ScriptFieldID)(uintptr_t)fieldIDs[i];
293*e1eccf28SAndroid Build Coastguard Worker     }
294*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < values_length; i++) {
295*e1eccf28SAndroid Build Coastguard Worker         _values[i] = (int64_t)values[i];
296*e1eccf28SAndroid Build Coastguard Worker     }
297*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < sizes_length; i++) {
298*e1eccf28SAndroid Build Coastguard Worker         _sizes[i] = (int32_t)sizes[i];
299*e1eccf28SAndroid Build Coastguard Worker     }
300*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < depClosures_length; i++) {
301*e1eccf28SAndroid Build Coastguard Worker         _depClosures[i] = (Closure)(uintptr_t)depClosures[i];
302*e1eccf28SAndroid Build Coastguard Worker     }
303*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < depFieldIDs_length; i++) {
304*e1eccf28SAndroid Build Coastguard Worker         _depFieldIDs[i] = (ScriptFieldID)(uintptr_t)depFieldIDs[i];
305*e1eccf28SAndroid Build Coastguard Worker     }
306*e1eccf28SAndroid Build Coastguard Worker 
307*e1eccf28SAndroid Build Coastguard Worker     uint64_t closure = GetIContextHandle(context)->closureCreate(_kernelID, _returnValue,
308*e1eccf28SAndroid Build Coastguard Worker                                                             _fieldIDs, _values, _sizes,
309*e1eccf28SAndroid Build Coastguard Worker                                                             _depClosures, _depFieldIDs);
310*e1eccf28SAndroid Build Coastguard Worker     return (RsClosure) closure;
311*e1eccf28SAndroid Build Coastguard Worker 
312*e1eccf28SAndroid Build Coastguard Worker }
313*e1eccf28SAndroid Build Coastguard Worker 
InvokeClosureCreate(RsContext context,RsScriptInvokeID invokeID,const void * params,const size_t paramLength,const RsScriptFieldID * fieldIDs,const size_t fieldIDs_length,const int64_t * values,const size_t values_length,const int * sizes,const size_t sizes_length)314*e1eccf28SAndroid Build Coastguard Worker RsClosure RsHidlAdaptation::InvokeClosureCreate(RsContext context, RsScriptInvokeID invokeID,
315*e1eccf28SAndroid Build Coastguard Worker                                                 const void* params, const size_t paramLength,
316*e1eccf28SAndroid Build Coastguard Worker                                                 const RsScriptFieldID* fieldIDs, const size_t fieldIDs_length,
317*e1eccf28SAndroid Build Coastguard Worker                                                 const int64_t* values, const size_t values_length,
318*e1eccf28SAndroid Build Coastguard Worker                                                 const int* sizes, const size_t sizes_length)
319*e1eccf28SAndroid Build Coastguard Worker {
320*e1eccf28SAndroid Build Coastguard Worker     uint64_t _invokeID = (uint64_t)(uintptr_t)invokeID;
321*e1eccf28SAndroid Build Coastguard Worker 
322*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint8_t> _params;
323*e1eccf28SAndroid Build Coastguard Worker     _params.setToExternal(reinterpret_cast<uint8_t *>(const_cast<void *>(params)), paramLength);
324*e1eccf28SAndroid Build Coastguard Worker 
325*e1eccf28SAndroid Build Coastguard Worker     std::vector<ScriptFieldID> _fieldIDs(fieldIDs_length);
326*e1eccf28SAndroid Build Coastguard Worker     std::vector<int64_t> _values(values_length);
327*e1eccf28SAndroid Build Coastguard Worker     std::vector<int32_t> _sizes(sizes_length);
328*e1eccf28SAndroid Build Coastguard Worker 
329*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < fieldIDs_length; i++) {
330*e1eccf28SAndroid Build Coastguard Worker         _fieldIDs[i] = (ScriptFieldID)(uintptr_t)fieldIDs[i];
331*e1eccf28SAndroid Build Coastguard Worker     }
332*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < values_length; i++) {
333*e1eccf28SAndroid Build Coastguard Worker         _values[i] = (int64_t)values[i];
334*e1eccf28SAndroid Build Coastguard Worker     }
335*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < sizes_length; i++) {
336*e1eccf28SAndroid Build Coastguard Worker         _sizes[i] = (int32_t)sizes[i];
337*e1eccf28SAndroid Build Coastguard Worker     }
338*e1eccf28SAndroid Build Coastguard Worker 
339*e1eccf28SAndroid Build Coastguard Worker     uint64_t closure = GetIContextHandle(context)->invokeClosureCreate(_invokeID,
340*e1eccf28SAndroid Build Coastguard Worker                                                                   _params, _fieldIDs,
341*e1eccf28SAndroid Build Coastguard Worker                                                                   _values, _sizes);
342*e1eccf28SAndroid Build Coastguard Worker     return (RsClosure) closure;
343*e1eccf28SAndroid Build Coastguard Worker }
344*e1eccf28SAndroid Build Coastguard Worker 
ClosureSetArg(RsContext context,RsClosure closure,uint32_t index,uintptr_t value,int size)345*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ClosureSetArg(RsContext context, RsClosure closure, uint32_t index,
346*e1eccf28SAndroid Build Coastguard Worker                                      uintptr_t value, int size)
347*e1eccf28SAndroid Build Coastguard Worker {
348*e1eccf28SAndroid Build Coastguard Worker     uint64_t _closure = (uint64_t)(uintptr_t)closure;
349*e1eccf28SAndroid Build Coastguard Worker     void * _value = (void *)value;
350*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->closureSetArg(_closure, index, _value, size);
351*e1eccf28SAndroid Build Coastguard Worker }
ClosureSetGlobal(RsContext context,RsClosure closure,RsScriptFieldID fieldID,int64_t value,int size)352*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ClosureSetGlobal(RsContext context, RsClosure closure,
353*e1eccf28SAndroid Build Coastguard Worker                                         RsScriptFieldID fieldID, int64_t value,
354*e1eccf28SAndroid Build Coastguard Worker                                         int size)
355*e1eccf28SAndroid Build Coastguard Worker {
356*e1eccf28SAndroid Build Coastguard Worker     uint64_t _closure = (uint64_t)(uintptr_t)closure;
357*e1eccf28SAndroid Build Coastguard Worker     uint64_t _fieldID = (uint64_t)(uintptr_t)fieldID;
358*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->closureSetGlobal(_closure, _fieldID, value, size);
359*e1eccf28SAndroid Build Coastguard Worker }
360*e1eccf28SAndroid Build Coastguard Worker 
ContextGetMessage(RsContext context,void * data,size_t data_length,size_t * receiveLen,size_t receiveLen_length,uint32_t * subID,size_t subID_length)361*e1eccf28SAndroid Build Coastguard Worker RsMessageToClientType RsHidlAdaptation::ContextGetMessage (RsContext context, void * data, size_t data_length,
362*e1eccf28SAndroid Build Coastguard Worker                                                            size_t * receiveLen, size_t receiveLen_length,
363*e1eccf28SAndroid Build Coastguard Worker                                                            uint32_t * subID, size_t subID_length)
364*e1eccf28SAndroid Build Coastguard Worker {
365*e1eccf28SAndroid Build Coastguard Worker     RsMessageToClientType msgType;
366*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->contextGetMessage(data, data_length,
367*e1eccf28SAndroid Build Coastguard Worker         [&msgType, receiveLen](MessageToClientType retMessageType, uint64_t retReceiveLen) {
368*e1eccf28SAndroid Build Coastguard Worker             msgType = (RsMessageToClientType) retMessageType;
369*e1eccf28SAndroid Build Coastguard Worker             *receiveLen = retReceiveLen;
370*e1eccf28SAndroid Build Coastguard Worker         });
371*e1eccf28SAndroid Build Coastguard Worker     return msgType;
372*e1eccf28SAndroid Build Coastguard Worker }
373*e1eccf28SAndroid Build Coastguard Worker 
ContextPeekMessage(RsContext context,size_t * receiveLen,size_t receiveLen_length,uint32_t * subID,size_t subID_length)374*e1eccf28SAndroid Build Coastguard Worker RsMessageToClientType RsHidlAdaptation::ContextPeekMessage (RsContext context,
375*e1eccf28SAndroid Build Coastguard Worker                                                             size_t * receiveLen, size_t receiveLen_length,
376*e1eccf28SAndroid Build Coastguard Worker                                                             uint32_t * subID, size_t subID_length)
377*e1eccf28SAndroid Build Coastguard Worker {
378*e1eccf28SAndroid Build Coastguard Worker     RsMessageToClientType msgType;
379*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->contextPeekMessage(
380*e1eccf28SAndroid Build Coastguard Worker         [&msgType, receiveLen, subID](MessageToClientType retMessageType, uint64_t retReceiveLen, uint32_t retSubID) {
381*e1eccf28SAndroid Build Coastguard Worker             msgType = (RsMessageToClientType) retMessageType;
382*e1eccf28SAndroid Build Coastguard Worker             *receiveLen = retReceiveLen;
383*e1eccf28SAndroid Build Coastguard Worker             *subID = retSubID;
384*e1eccf28SAndroid Build Coastguard Worker         });
385*e1eccf28SAndroid Build Coastguard Worker 
386*e1eccf28SAndroid Build Coastguard Worker     return msgType;
387*e1eccf28SAndroid Build Coastguard Worker 
388*e1eccf28SAndroid Build Coastguard Worker }
389*e1eccf28SAndroid Build Coastguard Worker 
ContextSendMessage(RsContext context,uint32_t id,const uint8_t * data,size_t len)390*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ContextSendMessage (RsContext context, uint32_t id, const uint8_t *data, size_t len)
391*e1eccf28SAndroid Build Coastguard Worker {
392*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint8_t> _data;
393*e1eccf28SAndroid Build Coastguard Worker     _data.setToExternal(const_cast<uint8_t *>(data), len);
394*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->contextSendMessage(id, _data);
395*e1eccf28SAndroid Build Coastguard Worker }
396*e1eccf28SAndroid Build Coastguard Worker 
ContextInitToClient(RsContext context)397*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ContextInitToClient (RsContext context)
398*e1eccf28SAndroid Build Coastguard Worker {
399*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->contextInitToClient();
400*e1eccf28SAndroid Build Coastguard Worker }
401*e1eccf28SAndroid Build Coastguard Worker 
ContextDeinitToClient(RsContext context)402*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ContextDeinitToClient (RsContext context)
403*e1eccf28SAndroid Build Coastguard Worker {
404*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->contextDeinitToClient();
405*e1eccf28SAndroid Build Coastguard Worker }
406*e1eccf28SAndroid Build Coastguard Worker 
407*e1eccf28SAndroid Build Coastguard Worker 
TypeCreate(RsContext context,RsElement element,uint32_t dimX,uint32_t dimY,uint32_t dimZ,bool mipmaps,bool faces,uint32_t yuv)408*e1eccf28SAndroid Build Coastguard Worker RsType RsHidlAdaptation::TypeCreate (RsContext context, RsElement element, uint32_t dimX,
409*e1eccf28SAndroid Build Coastguard Worker                                      uint32_t dimY, uint32_t dimZ, bool mipmaps,
410*e1eccf28SAndroid Build Coastguard Worker                                      bool faces, uint32_t yuv)
411*e1eccf28SAndroid Build Coastguard Worker {
412*e1eccf28SAndroid Build Coastguard Worker     uint64_t _element = (uint64_t)(uintptr_t)element;
413*e1eccf28SAndroid Build Coastguard Worker 
414*e1eccf28SAndroid Build Coastguard Worker     uint64_t type = GetIContextHandle(context)->typeCreate(_element, dimX, dimY, dimZ, mipmaps, faces,
415*e1eccf28SAndroid Build Coastguard Worker                                                       (YuvFormat) yuv);
416*e1eccf28SAndroid Build Coastguard Worker     return (RsType) type;
417*e1eccf28SAndroid Build Coastguard Worker }
418*e1eccf28SAndroid Build Coastguard Worker 
AllocationCreateTyped(RsContext context,RsType type,RsAllocationMipmapControl mipmaps,uint32_t usages,uintptr_t ptr)419*e1eccf28SAndroid Build Coastguard Worker RsAllocation RsHidlAdaptation::AllocationCreateTyped (RsContext context, RsType type,
420*e1eccf28SAndroid Build Coastguard Worker                                                       RsAllocationMipmapControl mipmaps,
421*e1eccf28SAndroid Build Coastguard Worker                                                       uint32_t usages, uintptr_t ptr)
422*e1eccf28SAndroid Build Coastguard Worker {
423*e1eccf28SAndroid Build Coastguard Worker     uint64_t _type = (uint64_t)(uintptr_t)type;
424*e1eccf28SAndroid Build Coastguard Worker     void * _ptr = (void *)ptr;
425*e1eccf28SAndroid Build Coastguard Worker 
426*e1eccf28SAndroid Build Coastguard Worker     uint64_t allocation = GetIContextHandle(context)->allocationCreateTyped(_type,
427*e1eccf28SAndroid Build Coastguard Worker         (AllocationMipmapControl)mipmaps, usages, _ptr);
428*e1eccf28SAndroid Build Coastguard Worker     return (RsAllocation) allocation;
429*e1eccf28SAndroid Build Coastguard Worker }
430*e1eccf28SAndroid Build Coastguard Worker 
431*e1eccf28SAndroid Build Coastguard Worker 
AllocationCreateFromBitmap(RsContext context,RsType type,RsAllocationMipmapControl mipmaps,const void * data,size_t sizeBytes,uint32_t usages)432*e1eccf28SAndroid Build Coastguard Worker RsAllocation RsHidlAdaptation::AllocationCreateFromBitmap (RsContext context, RsType type,
433*e1eccf28SAndroid Build Coastguard Worker                                                            RsAllocationMipmapControl mipmaps,
434*e1eccf28SAndroid Build Coastguard Worker                                                            const void *data, size_t sizeBytes, uint32_t usages)
435*e1eccf28SAndroid Build Coastguard Worker {
436*e1eccf28SAndroid Build Coastguard Worker     uint64_t _type = (uint64_t)(uintptr_t)type;
437*e1eccf28SAndroid Build Coastguard Worker 
438*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint8_t> _bitmap;
439*e1eccf28SAndroid Build Coastguard Worker     _bitmap.setToExternal(reinterpret_cast<uint8_t *>(const_cast<void *>(data)), sizeBytes);
440*e1eccf28SAndroid Build Coastguard Worker 
441*e1eccf28SAndroid Build Coastguard Worker     uint64_t allocation = GetIContextHandle(context)->allocationCreateFromBitmap(_type,
442*e1eccf28SAndroid Build Coastguard Worker         (AllocationMipmapControl)mipmaps, _bitmap, usages);
443*e1eccf28SAndroid Build Coastguard Worker     return (RsAllocation) allocation;
444*e1eccf28SAndroid Build Coastguard Worker }
445*e1eccf28SAndroid Build Coastguard Worker 
AllocationCubeCreateFromBitmap(RsContext context,RsType type,RsAllocationMipmapControl mipmaps,const void * data,size_t sizeBytes,uint32_t usages)446*e1eccf28SAndroid Build Coastguard Worker RsAllocation RsHidlAdaptation::AllocationCubeCreateFromBitmap(RsContext context, RsType type,
447*e1eccf28SAndroid Build Coastguard Worker                                                               RsAllocationMipmapControl mipmaps,
448*e1eccf28SAndroid Build Coastguard Worker                                                               const void *data, size_t sizeBytes, uint32_t usages)
449*e1eccf28SAndroid Build Coastguard Worker {
450*e1eccf28SAndroid Build Coastguard Worker     uint64_t _type = (uint64_t)(uintptr_t)type;
451*e1eccf28SAndroid Build Coastguard Worker 
452*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint8_t> _bitmap;
453*e1eccf28SAndroid Build Coastguard Worker     _bitmap.setToExternal(reinterpret_cast<uint8_t *>(const_cast<void *>(data)), sizeBytes);
454*e1eccf28SAndroid Build Coastguard Worker 
455*e1eccf28SAndroid Build Coastguard Worker     uint64_t allocation = GetIContextHandle(context)->allocationCubeCreateFromBitmap(_type, (AllocationMipmapControl)mipmaps, _bitmap, usages);
456*e1eccf28SAndroid Build Coastguard Worker     return (RsAllocation) allocation;
457*e1eccf28SAndroid Build Coastguard Worker }
458*e1eccf28SAndroid Build Coastguard Worker 
AllocationGetSurface(RsContext context,RsAllocation allocation)459*e1eccf28SAndroid Build Coastguard Worker RsNativeWindow RsHidlAdaptation::AllocationGetSurface (RsContext context, RsAllocation allocation)
460*e1eccf28SAndroid Build Coastguard Worker {
461*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
462*e1eccf28SAndroid Build Coastguard Worker 
463*e1eccf28SAndroid Build Coastguard Worker     uint64_t window = GetIContextHandle(context)->allocationGetNativeWindow(_allocation);
464*e1eccf28SAndroid Build Coastguard Worker     return (RsNativeWindow) window;
465*e1eccf28SAndroid Build Coastguard Worker }
AllocationSetSurface(RsContext context,RsAllocation allocation,RsNativeWindow window)466*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AllocationSetSurface (RsContext context, RsAllocation allocation, RsNativeWindow window)
467*e1eccf28SAndroid Build Coastguard Worker {
468*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
469*e1eccf28SAndroid Build Coastguard Worker     uint64_t _window = (uint64_t)(uintptr_t)window;
470*e1eccf28SAndroid Build Coastguard Worker 
471*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationSetNativeWindow(_allocation, _window);
472*e1eccf28SAndroid Build Coastguard Worker }
473*e1eccf28SAndroid Build Coastguard Worker 
ContextFinish(RsContext context)474*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ContextFinish (RsContext context)
475*e1eccf28SAndroid Build Coastguard Worker {
476*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->contextFinish();
477*e1eccf28SAndroid Build Coastguard Worker }
478*e1eccf28SAndroid Build Coastguard Worker 
ContextDump(RsContext context,int32_t bits)479*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ContextDump (RsContext context, int32_t bits)
480*e1eccf28SAndroid Build Coastguard Worker {
481*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->contextLog();
482*e1eccf28SAndroid Build Coastguard Worker }
483*e1eccf28SAndroid Build Coastguard Worker 
ContextSetPriority(RsContext context,int32_t priority)484*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ContextSetPriority (RsContext context, int32_t priority)
485*e1eccf28SAndroid Build Coastguard Worker {
486*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->contextSetPriority((ThreadPriorities)priority);
487*e1eccf28SAndroid Build Coastguard Worker }
488*e1eccf28SAndroid Build Coastguard Worker 
ContextSetCacheDir(RsContext context,const char * cacheDir,size_t cacheDir_length)489*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ContextSetCacheDir (RsContext context, const char *cacheDir, size_t cacheDir_length)
490*e1eccf28SAndroid Build Coastguard Worker {
491*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->contextSetCacheDir(hidl_string(cacheDir));
492*e1eccf28SAndroid Build Coastguard Worker }
493*e1eccf28SAndroid Build Coastguard Worker 
AssignName(RsContext context,RsObjectBase obj,const char * name,size_t size)494*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AssignName (RsContext context, RsObjectBase obj, const char* name, size_t size)
495*e1eccf28SAndroid Build Coastguard Worker {
496*e1eccf28SAndroid Build Coastguard Worker     uint64_t _obj = (uint64_t)(uintptr_t)obj;
497*e1eccf28SAndroid Build Coastguard Worker 
498*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->assignName(_obj, hidl_string(name));
499*e1eccf28SAndroid Build Coastguard Worker }
500*e1eccf28SAndroid Build Coastguard Worker 
ObjDestroy(RsContext context,RsAsyncVoidPtr obj)501*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ObjDestroy (RsContext context, RsAsyncVoidPtr obj)
502*e1eccf28SAndroid Build Coastguard Worker {
503*e1eccf28SAndroid Build Coastguard Worker     uint64_t _obj = (uint64_t)(uintptr_t)obj;
504*e1eccf28SAndroid Build Coastguard Worker 
505*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->objDestroy(_obj);
506*e1eccf28SAndroid Build Coastguard Worker }
507*e1eccf28SAndroid Build Coastguard Worker 
508*e1eccf28SAndroid Build Coastguard Worker 
ElementCreate(RsContext context,RsDataType dt,RsDataKind dk,bool norm,uint32_t vecSize)509*e1eccf28SAndroid Build Coastguard Worker RsElement RsHidlAdaptation::ElementCreate (RsContext context,
510*e1eccf28SAndroid Build Coastguard Worker                                            RsDataType dt,
511*e1eccf28SAndroid Build Coastguard Worker                                            RsDataKind dk,
512*e1eccf28SAndroid Build Coastguard Worker                                            bool norm,
513*e1eccf28SAndroid Build Coastguard Worker                                            uint32_t vecSize)
514*e1eccf28SAndroid Build Coastguard Worker {
515*e1eccf28SAndroid Build Coastguard Worker     uint64_t element = GetIContextHandle(context)->elementCreate((DataType) dt,
516*e1eccf28SAndroid Build Coastguard Worker                                                             (DataKind) dk,
517*e1eccf28SAndroid Build Coastguard Worker                                                             norm,
518*e1eccf28SAndroid Build Coastguard Worker                                                             vecSize);
519*e1eccf28SAndroid Build Coastguard Worker     return (RsElement) element;
520*e1eccf28SAndroid Build Coastguard Worker }
521*e1eccf28SAndroid Build Coastguard Worker 
ElementCreate2(RsContext context,const RsElement * ein,size_t ein_length,const char ** names,size_t nameLengths_length,const size_t * nameLengths,const uint32_t * arraySizes,size_t arraySizes_length)522*e1eccf28SAndroid Build Coastguard Worker RsElement RsHidlAdaptation::ElementCreate2 (RsContext context,
523*e1eccf28SAndroid Build Coastguard Worker                                             const RsElement * ein,
524*e1eccf28SAndroid Build Coastguard Worker                                             size_t ein_length,
525*e1eccf28SAndroid Build Coastguard Worker                                             const char ** names,
526*e1eccf28SAndroid Build Coastguard Worker                                             size_t nameLengths_length,
527*e1eccf28SAndroid Build Coastguard Worker                                             const size_t * nameLengths,
528*e1eccf28SAndroid Build Coastguard Worker                                             const uint32_t * arraySizes,
529*e1eccf28SAndroid Build Coastguard Worker                                             size_t arraySizes_length)
530*e1eccf28SAndroid Build Coastguard Worker {
531*e1eccf28SAndroid Build Coastguard Worker     std::vector<uint64_t> _ein(ein_length);
532*e1eccf28SAndroid Build Coastguard Worker     std::vector<hidl_string> _names(nameLengths_length);
533*e1eccf28SAndroid Build Coastguard Worker     std::vector<Size> _arraySizes(arraySizes_length);
534*e1eccf28SAndroid Build Coastguard Worker 
535*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < ein_length; i++) {
536*e1eccf28SAndroid Build Coastguard Worker         _ein[i] = (uint64_t)((uintptr_t)ein[i]);
537*e1eccf28SAndroid Build Coastguard Worker     }
538*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < ein_length; i++) {
539*e1eccf28SAndroid Build Coastguard Worker         _names[i] = hidl_string(names[i]);
540*e1eccf28SAndroid Build Coastguard Worker     }
541*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < arraySizes_length; i++) {
542*e1eccf28SAndroid Build Coastguard Worker         _arraySizes[i] = (Size)arraySizes[i];
543*e1eccf28SAndroid Build Coastguard Worker     }
544*e1eccf28SAndroid Build Coastguard Worker 
545*e1eccf28SAndroid Build Coastguard Worker     uint64_t element = GetIContextHandle(context)->elementComplexCreate(_ein, _names, _arraySizes);
546*e1eccf28SAndroid Build Coastguard Worker     return (RsElement) element;
547*e1eccf28SAndroid Build Coastguard Worker }
548*e1eccf28SAndroid Build Coastguard Worker 
AllocationCopyToBitmap(RsContext context,RsAllocation allocation,void * data,size_t sizeBytes)549*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AllocationCopyToBitmap (RsContext context, RsAllocation allocation, void *data, size_t sizeBytes)
550*e1eccf28SAndroid Build Coastguard Worker {
551*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
552*e1eccf28SAndroid Build Coastguard Worker 
553*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationCopyToBitmap(_allocation, data, sizeBytes);
554*e1eccf28SAndroid Build Coastguard Worker }
555*e1eccf28SAndroid Build Coastguard Worker 
Allocation1DData(RsContext context,RsAllocation allocation,uint32_t xoff,uint32_t lod,uint32_t count,const void * data,size_t sizeBytes)556*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::Allocation1DData (RsContext context, RsAllocation allocation, uint32_t xoff, uint32_t lod,
557*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t count, const void *data, size_t sizeBytes)
558*e1eccf28SAndroid Build Coastguard Worker {
559*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
560*e1eccf28SAndroid Build Coastguard Worker 
561*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint8_t> _data;
562*e1eccf28SAndroid Build Coastguard Worker     _data.setToExternal(reinterpret_cast<uint8_t *>(const_cast<void *>(data)), sizeBytes);
563*e1eccf28SAndroid Build Coastguard Worker 
564*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocation1DWrite(_allocation, xoff, lod, count, _data);
565*e1eccf28SAndroid Build Coastguard Worker }
Allocation1DElementData(RsContext context,RsAllocation allocation,uint32_t xoff,uint32_t lod,const void * data,size_t sizeBytes,size_t eoff)566*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::Allocation1DElementData (RsContext context, RsAllocation allocation, uint32_t xoff,
567*e1eccf28SAndroid Build Coastguard Worker                                                 uint32_t lod, const void *data, size_t sizeBytes, size_t eoff)
568*e1eccf28SAndroid Build Coastguard Worker {
569*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
570*e1eccf28SAndroid Build Coastguard Worker 
571*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint8_t> _data;
572*e1eccf28SAndroid Build Coastguard Worker     _data.setToExternal(reinterpret_cast<uint8_t *>(const_cast<void *>(data)), sizeBytes);
573*e1eccf28SAndroid Build Coastguard Worker 
574*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationElementWrite(_allocation, xoff, 0, 0, lod, _data, eoff);
575*e1eccf28SAndroid Build Coastguard Worker }
576*e1eccf28SAndroid Build Coastguard Worker 
AllocationElementData(RsContext context,RsAllocation allocation,uint32_t x,uint32_t y,uint32_t z,uint32_t lod,const void * data,size_t sizeBytes,size_t eoff)577*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AllocationElementData (RsContext context, RsAllocation allocation, uint32_t x, uint32_t y, uint32_t z,
578*e1eccf28SAndroid Build Coastguard Worker                                               uint32_t lod, const void *data, size_t sizeBytes, size_t eoff)
579*e1eccf28SAndroid Build Coastguard Worker {
580*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
581*e1eccf28SAndroid Build Coastguard Worker 
582*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint8_t> _data;
583*e1eccf28SAndroid Build Coastguard Worker     _data.setToExternal(reinterpret_cast<uint8_t *>(const_cast<void *>(data)), sizeBytes);
584*e1eccf28SAndroid Build Coastguard Worker 
585*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationElementWrite(_allocation, x, y, z, lod, _data, eoff);
586*e1eccf28SAndroid Build Coastguard Worker }
587*e1eccf28SAndroid Build Coastguard Worker 
Allocation2DData(RsContext context,RsAllocation allocation,uint32_t xoff,uint32_t yoff,uint32_t lod,RsAllocationCubemapFace face,uint32_t w,uint32_t h,const void * data,size_t sizeBytes,size_t stride)588*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::Allocation2DData (RsContext context, RsAllocation allocation, uint32_t xoff, uint32_t yoff,
589*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t lod, RsAllocationCubemapFace face,
590*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t w, uint32_t h, const void *data, size_t sizeBytes, size_t stride)
591*e1eccf28SAndroid Build Coastguard Worker {
592*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
593*e1eccf28SAndroid Build Coastguard Worker 
594*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint8_t> _data;
595*e1eccf28SAndroid Build Coastguard Worker     _data.setToExternal(reinterpret_cast<uint8_t *>(const_cast<void *>(data)), sizeBytes);
596*e1eccf28SAndroid Build Coastguard Worker 
597*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocation2DWrite(_allocation, xoff, yoff, lod, (AllocationCubemapFace)face, w, h, _data, stride);
598*e1eccf28SAndroid Build Coastguard Worker }
599*e1eccf28SAndroid Build Coastguard Worker 
Allocation3DData(RsContext context,RsAllocation allocation,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 sizeBytes,size_t stride)600*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::Allocation3DData (RsContext context, RsAllocation allocation, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod,
601*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t w, uint32_t h, uint32_t d, const void *data, size_t sizeBytes, size_t stride)
602*e1eccf28SAndroid Build Coastguard Worker {
603*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
604*e1eccf28SAndroid Build Coastguard Worker 
605*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint8_t> _data;
606*e1eccf28SAndroid Build Coastguard Worker     _data.setToExternal(reinterpret_cast<uint8_t *>(const_cast<void *>(data)), sizeBytes);
607*e1eccf28SAndroid Build Coastguard Worker 
608*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocation3DWrite(_allocation, xoff, yoff, zoff, lod, w, h, d, _data, stride);
609*e1eccf28SAndroid Build Coastguard Worker }
610*e1eccf28SAndroid Build Coastguard Worker 
AllocationGenerateMipmaps(RsContext context,RsAllocation allocation)611*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AllocationGenerateMipmaps (RsContext context, RsAllocation allocation)
612*e1eccf28SAndroid Build Coastguard Worker {
613*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
614*e1eccf28SAndroid Build Coastguard Worker 
615*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationGenerateMipmaps(_allocation);
616*e1eccf28SAndroid Build Coastguard Worker }
617*e1eccf28SAndroid Build Coastguard Worker 
AllocationRead(RsContext context,RsAllocation allocation,void * data,size_t sizeBytes)618*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AllocationRead (RsContext context, RsAllocation allocation, void *data, size_t sizeBytes)
619*e1eccf28SAndroid Build Coastguard Worker {
620*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
621*e1eccf28SAndroid Build Coastguard Worker 
622*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationRead(_allocation, data, sizeBytes);
623*e1eccf28SAndroid Build Coastguard Worker }
624*e1eccf28SAndroid Build Coastguard Worker 
Allocation1DRead(RsContext context,RsAllocation allocation,uint32_t xoff,uint32_t lod,uint32_t count,void * data,size_t sizeBytes)625*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::Allocation1DRead (RsContext context, RsAllocation allocation, uint32_t xoff, uint32_t lod,
626*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t count, void *data, size_t sizeBytes)
627*e1eccf28SAndroid Build Coastguard Worker {
628*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
629*e1eccf28SAndroid Build Coastguard Worker 
630*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocation1DRead(_allocation, xoff, lod, count, data, sizeBytes);
631*e1eccf28SAndroid Build Coastguard Worker }
632*e1eccf28SAndroid Build Coastguard Worker 
AllocationElementRead(RsContext context,RsAllocation allocation,uint32_t x,uint32_t y,uint32_t z,uint32_t lod,void * data,size_t sizeBytes,size_t eoff)633*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AllocationElementRead (RsContext context, RsAllocation allocation, uint32_t x, uint32_t y, uint32_t z,
634*e1eccf28SAndroid Build Coastguard Worker                                               uint32_t lod, void *data, size_t sizeBytes, size_t eoff)
635*e1eccf28SAndroid Build Coastguard Worker {
636*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
637*e1eccf28SAndroid Build Coastguard Worker 
638*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationElementRead(_allocation, x, y, z, lod, data, sizeBytes, eoff);
639*e1eccf28SAndroid Build Coastguard Worker }
640*e1eccf28SAndroid Build Coastguard Worker 
Allocation2DRead(RsContext context,RsAllocation allocation,uint32_t xoff,uint32_t yoff,uint32_t lod,RsAllocationCubemapFace face,uint32_t w,uint32_t h,void * data,size_t sizeBytes,size_t stride)641*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::Allocation2DRead (RsContext context, RsAllocation allocation, uint32_t xoff, uint32_t yoff,
642*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t lod, RsAllocationCubemapFace face,
643*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t w, uint32_t h, void *data, size_t sizeBytes, size_t stride)
644*e1eccf28SAndroid Build Coastguard Worker {
645*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
646*e1eccf28SAndroid Build Coastguard Worker 
647*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocation2DRead(_allocation, xoff, yoff, lod, (AllocationCubemapFace)face, w, h, data, sizeBytes, stride);
648*e1eccf28SAndroid Build Coastguard Worker }
649*e1eccf28SAndroid Build Coastguard Worker 
Allocation3DRead(RsContext context,RsAllocation allocation,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 sizeBytes,size_t stride)650*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::Allocation3DRead (RsContext context, RsAllocation allocation, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod,
651*e1eccf28SAndroid Build Coastguard Worker                                          uint32_t w, uint32_t h, uint32_t d, void *data, size_t sizeBytes, size_t stride)
652*e1eccf28SAndroid Build Coastguard Worker {
653*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
654*e1eccf28SAndroid Build Coastguard Worker 
655*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocation3DRead(_allocation, xoff, yoff, zoff, lod, w, h, d, data, sizeBytes, stride);
656*e1eccf28SAndroid Build Coastguard Worker }
657*e1eccf28SAndroid Build Coastguard Worker 
AllocationSyncAll(RsContext context,RsAllocation allocation,RsAllocationUsageType usage)658*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AllocationSyncAll (RsContext context, RsAllocation allocation, RsAllocationUsageType usage)
659*e1eccf28SAndroid Build Coastguard Worker {
660*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
661*e1eccf28SAndroid Build Coastguard Worker 
662*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationSyncAll(_allocation,
663*e1eccf28SAndroid Build Coastguard Worker         (AllocationUsageType) usage);
664*e1eccf28SAndroid Build Coastguard Worker }
665*e1eccf28SAndroid Build Coastguard Worker 
AllocationResize1D(RsContext context,RsAllocation allocation,uint32_t dimX)666*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AllocationResize1D (RsContext context, RsAllocation allocation, uint32_t dimX)
667*e1eccf28SAndroid Build Coastguard Worker {
668*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
669*e1eccf28SAndroid Build Coastguard Worker 
670*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationResize1D(_allocation, dimX);
671*e1eccf28SAndroid Build Coastguard Worker }
672*e1eccf28SAndroid Build Coastguard Worker 
AllocationCopy2DRange(RsContext context,RsAllocation dstAlloc,uint32_t dstXoff,uint32_t dstYoff,uint32_t dstMip,uint32_t dstFace,uint32_t width,uint32_t height,RsAllocation srcAlloc,uint32_t srcXoff,uint32_t srcYoff,uint32_t srcMip,uint32_t srcFace)673*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AllocationCopy2DRange (RsContext context,
674*e1eccf28SAndroid Build Coastguard Worker                                               RsAllocation dstAlloc,
675*e1eccf28SAndroid Build Coastguard Worker                                               uint32_t dstXoff, uint32_t dstYoff,
676*e1eccf28SAndroid Build Coastguard Worker                                               uint32_t dstMip, uint32_t dstFace,
677*e1eccf28SAndroid Build Coastguard Worker                                               uint32_t width, uint32_t height,
678*e1eccf28SAndroid Build Coastguard Worker                                               RsAllocation srcAlloc,
679*e1eccf28SAndroid Build Coastguard Worker                                               uint32_t srcXoff, uint32_t srcYoff,
680*e1eccf28SAndroid Build Coastguard Worker                                               uint32_t srcMip, uint32_t srcFace)
681*e1eccf28SAndroid Build Coastguard Worker {
682*e1eccf28SAndroid Build Coastguard Worker     uint64_t _dstAlloc = (uint64_t)(uintptr_t)dstAlloc;
683*e1eccf28SAndroid Build Coastguard Worker     uint64_t _srcAlloc = (uint64_t)(uintptr_t)srcAlloc;
684*e1eccf28SAndroid Build Coastguard Worker 
685*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationCopy2DRange(_dstAlloc, dstXoff, dstYoff, dstMip, (AllocationCubemapFace)dstFace, width, height,
686*e1eccf28SAndroid Build Coastguard Worker                                  _srcAlloc, srcXoff, srcYoff, srcMip, (AllocationCubemapFace)srcFace);
687*e1eccf28SAndroid Build Coastguard Worker }
AllocationCopy3DRange(RsContext context,RsAllocation dstAlloc,uint32_t dstXoff,uint32_t dstYoff,uint32_t dstZoff,uint32_t dstMip,uint32_t width,uint32_t height,uint32_t depth,RsAllocation srcAlloc,uint32_t srcXoff,uint32_t srcYoff,uint32_t srcZoff,uint32_t srcMip)688*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AllocationCopy3DRange (RsContext context,
689*e1eccf28SAndroid Build Coastguard Worker                                               RsAllocation dstAlloc,
690*e1eccf28SAndroid Build Coastguard Worker                                               uint32_t dstXoff, uint32_t dstYoff, uint32_t dstZoff,
691*e1eccf28SAndroid Build Coastguard Worker                                               uint32_t dstMip,
692*e1eccf28SAndroid Build Coastguard Worker                                               uint32_t width, uint32_t height, uint32_t depth,
693*e1eccf28SAndroid Build Coastguard Worker                                               RsAllocation srcAlloc,
694*e1eccf28SAndroid Build Coastguard Worker                                               uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff,
695*e1eccf28SAndroid Build Coastguard Worker                                               uint32_t srcMip)
696*e1eccf28SAndroid Build Coastguard Worker {
697*e1eccf28SAndroid Build Coastguard Worker     uint64_t _dstAlloc = (uint64_t)(uintptr_t)dstAlloc;
698*e1eccf28SAndroid Build Coastguard Worker     uint64_t _srcAlloc = (uint64_t)(uintptr_t)srcAlloc;
699*e1eccf28SAndroid Build Coastguard Worker 
700*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationCopy3DRange(_dstAlloc, dstXoff, dstYoff, dstZoff, dstMip, width, height, depth,
701*e1eccf28SAndroid Build Coastguard Worker                                                  _srcAlloc, srcXoff, srcYoff, srcZoff, srcMip);
702*e1eccf28SAndroid Build Coastguard Worker }
703*e1eccf28SAndroid Build Coastguard Worker 
SamplerCreate(RsContext context,RsSamplerValue magFilter,RsSamplerValue minFilter,RsSamplerValue wrapS,RsSamplerValue wrapT,RsSamplerValue wrapR,float aniso)704*e1eccf28SAndroid Build Coastguard Worker RsSampler RsHidlAdaptation::SamplerCreate (RsContext context,
705*e1eccf28SAndroid Build Coastguard Worker                                            RsSamplerValue magFilter,
706*e1eccf28SAndroid Build Coastguard Worker                                            RsSamplerValue minFilter,
707*e1eccf28SAndroid Build Coastguard Worker                                            RsSamplerValue wrapS,
708*e1eccf28SAndroid Build Coastguard Worker                                            RsSamplerValue wrapT,
709*e1eccf28SAndroid Build Coastguard Worker                                            RsSamplerValue wrapR,
710*e1eccf28SAndroid Build Coastguard Worker                                            float aniso)
711*e1eccf28SAndroid Build Coastguard Worker {
712*e1eccf28SAndroid Build Coastguard Worker     uint64_t sampler = GetIContextHandle(context)->samplerCreate((SamplerValue) magFilter,
713*e1eccf28SAndroid Build Coastguard Worker                                                             (SamplerValue)minFilter,
714*e1eccf28SAndroid Build Coastguard Worker                                                             (SamplerValue)wrapS,
715*e1eccf28SAndroid Build Coastguard Worker                                                             (SamplerValue)wrapT,
716*e1eccf28SAndroid Build Coastguard Worker                                                             (SamplerValue)wrapR,
717*e1eccf28SAndroid Build Coastguard Worker                                                             aniso);
718*e1eccf28SAndroid Build Coastguard Worker     return (RsSampler) sampler;
719*e1eccf28SAndroid Build Coastguard Worker }
720*e1eccf28SAndroid Build Coastguard Worker 
ScriptBindAllocation(RsContext context,RsScript script,RsAllocation allocation,uint32_t slot)721*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptBindAllocation (RsContext context, RsScript script, RsAllocation allocation, uint32_t slot)
722*e1eccf28SAndroid Build Coastguard Worker {
723*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
724*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
725*e1eccf28SAndroid Build Coastguard Worker 
726*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptBindAllocation(_script, _allocation, slot);
727*e1eccf28SAndroid Build Coastguard Worker }
728*e1eccf28SAndroid Build Coastguard Worker 
ScriptSetTimeZone(RsContext context,RsScript script,const char * timezone,size_t size)729*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptSetTimeZone (RsContext context, RsScript script, const char* timezone, size_t size)
730*e1eccf28SAndroid Build Coastguard Worker {
731*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
732*e1eccf28SAndroid Build Coastguard Worker 
733*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptSetTimeZone(_script, hidl_string(timezone));
734*e1eccf28SAndroid Build Coastguard Worker }
735*e1eccf28SAndroid Build Coastguard Worker 
ScriptInvoke(RsContext context,RsScript script,uint32_t slot)736*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptInvoke (RsContext context, RsScript script, uint32_t slot)
737*e1eccf28SAndroid Build Coastguard Worker {
738*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
739*e1eccf28SAndroid Build Coastguard Worker 
740*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptInvoke(_script, slot);
741*e1eccf28SAndroid Build Coastguard Worker }
742*e1eccf28SAndroid Build Coastguard Worker 
ScriptInvokeV(RsContext context,RsScript script,uint32_t slot,const void * data,size_t len)743*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptInvokeV (RsContext context, RsScript script, uint32_t slot, const void *data, size_t len)
744*e1eccf28SAndroid Build Coastguard Worker {
745*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
746*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint8_t> _data;
747*e1eccf28SAndroid Build Coastguard Worker     _data.setToExternal(reinterpret_cast<uint8_t *>(const_cast<void *>(data)), len);
748*e1eccf28SAndroid Build Coastguard Worker 
749*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptInvokeV(_script, slot, _data);
750*e1eccf28SAndroid Build Coastguard Worker }
751*e1eccf28SAndroid Build Coastguard Worker 
ScriptForEach(RsContext context,RsScript script,uint32_t slot,RsAllocation vain,RsAllocation vaout,const void * params,size_t paramLen,const RsScriptCall * sc,size_t scLen)752*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptForEach (RsContext context, RsScript script, uint32_t slot,
753*e1eccf28SAndroid Build Coastguard Worker                                       RsAllocation vain, RsAllocation vaout,
754*e1eccf28SAndroid Build Coastguard Worker                                       const void *params, size_t paramLen,
755*e1eccf28SAndroid Build Coastguard Worker                                       const RsScriptCall *sc, size_t scLen)
756*e1eccf28SAndroid Build Coastguard Worker {
757*e1eccf28SAndroid Build Coastguard Worker     RsAllocation * vains = nullptr;
758*e1eccf28SAndroid Build Coastguard Worker     size_t inLen = 0;
759*e1eccf28SAndroid Build Coastguard Worker     if (vain) {
760*e1eccf28SAndroid Build Coastguard Worker         vains = &vain;
761*e1eccf28SAndroid Build Coastguard Worker         inLen = 1;
762*e1eccf28SAndroid Build Coastguard Worker     }
763*e1eccf28SAndroid Build Coastguard Worker     ScriptForEachMulti(context, script, slot, vains, inLen, vaout, params, paramLen, sc, scLen);
764*e1eccf28SAndroid Build Coastguard Worker }
765*e1eccf28SAndroid Build Coastguard Worker 
ScriptForEachMulti(RsContext context,RsScript script,uint32_t slot,RsAllocation * vains,size_t inLen,RsAllocation vaout,const void * params,size_t paramLen,const RsScriptCall * sc,size_t scLen)766*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptForEachMulti (RsContext context, RsScript script, uint32_t slot,
767*e1eccf28SAndroid Build Coastguard Worker                                            RsAllocation *vains, size_t inLen,
768*e1eccf28SAndroid Build Coastguard Worker                                            RsAllocation vaout, const void *params,
769*e1eccf28SAndroid Build Coastguard Worker                                            size_t paramLen, const RsScriptCall *sc,
770*e1eccf28SAndroid Build Coastguard Worker                                            size_t scLen)
771*e1eccf28SAndroid Build Coastguard Worker {
772*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
773*e1eccf28SAndroid Build Coastguard Worker 
774*e1eccf28SAndroid Build Coastguard Worker     std::vector<Allocation> _vains(inLen);
775*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < inLen; i++) {
776*e1eccf28SAndroid Build Coastguard Worker         _vains[i] = (Allocation)(uintptr_t)vains[i];
777*e1eccf28SAndroid Build Coastguard Worker     }
778*e1eccf28SAndroid Build Coastguard Worker 
779*e1eccf28SAndroid Build Coastguard Worker     uint64_t _vaout = (uint64_t)(uintptr_t)vaout;
780*e1eccf28SAndroid Build Coastguard Worker 
781*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint8_t> _params;
782*e1eccf28SAndroid Build Coastguard Worker     _params.setToExternal(reinterpret_cast<uint8_t *>(const_cast<void *>(params)), paramLen);
783*e1eccf28SAndroid Build Coastguard Worker 
784*e1eccf28SAndroid Build Coastguard Worker     ScriptCall * _scPtr = nullptr;
785*e1eccf28SAndroid Build Coastguard Worker     ScriptCall _sc;
786*e1eccf28SAndroid Build Coastguard Worker     if (sc) {
787*e1eccf28SAndroid Build Coastguard Worker         _sc.strategy    = static_cast<ForEachStrategy>(sc->strategy);
788*e1eccf28SAndroid Build Coastguard Worker         _sc.xStart      = sc->xStart;
789*e1eccf28SAndroid Build Coastguard Worker         _sc.xEnd        = sc->xEnd;
790*e1eccf28SAndroid Build Coastguard Worker         _sc.yStart      = sc->yStart;
791*e1eccf28SAndroid Build Coastguard Worker         _sc.yEnd        = sc->yEnd;
792*e1eccf28SAndroid Build Coastguard Worker         _sc.zStart      = sc->zStart;
793*e1eccf28SAndroid Build Coastguard Worker         _sc.zEnd        = sc->zEnd;
794*e1eccf28SAndroid Build Coastguard Worker         _sc.arrayStart  = sc->arrayStart;
795*e1eccf28SAndroid Build Coastguard Worker         _sc.arrayEnd    = sc->arrayEnd;
796*e1eccf28SAndroid Build Coastguard Worker         _sc.array2Start = sc->array2Start;
797*e1eccf28SAndroid Build Coastguard Worker         _sc.array2End   = sc->arrayEnd;
798*e1eccf28SAndroid Build Coastguard Worker         _sc.array3Start = sc->array3Start;
799*e1eccf28SAndroid Build Coastguard Worker         _sc.array3End   = sc->arrayEnd;
800*e1eccf28SAndroid Build Coastguard Worker         _sc.array4Start = sc->array4Start;
801*e1eccf28SAndroid Build Coastguard Worker         _sc.array4End   = sc->arrayEnd;
802*e1eccf28SAndroid Build Coastguard Worker 
803*e1eccf28SAndroid Build Coastguard Worker         _scPtr = &_sc;
804*e1eccf28SAndroid Build Coastguard Worker     }
805*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptForEach(_script, slot, _vains, _vaout, _params, _scPtr);
806*e1eccf28SAndroid Build Coastguard Worker }
807*e1eccf28SAndroid Build Coastguard Worker 
ScriptReduce(RsContext context,RsScript script,uint32_t slot,RsAllocation * vains,size_t inLen,RsAllocation vaout,const RsScriptCall * sc,size_t scLen)808*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptReduce (RsContext context, RsScript script, uint32_t slot,
809*e1eccf28SAndroid Build Coastguard Worker                                      RsAllocation *vains, size_t inLen, RsAllocation vaout,
810*e1eccf28SAndroid Build Coastguard Worker                                      const RsScriptCall *sc, size_t scLen)
811*e1eccf28SAndroid Build Coastguard Worker {
812*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
813*e1eccf28SAndroid Build Coastguard Worker 
814*e1eccf28SAndroid Build Coastguard Worker     std::vector<Allocation> _vains(inLen);
815*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < inLen; i++) {
816*e1eccf28SAndroid Build Coastguard Worker         _vains[i] = (Allocation)(uintptr_t)vains[i];
817*e1eccf28SAndroid Build Coastguard Worker     }
818*e1eccf28SAndroid Build Coastguard Worker 
819*e1eccf28SAndroid Build Coastguard Worker     uint64_t _vaout = (uint64_t)(uintptr_t)vaout;
820*e1eccf28SAndroid Build Coastguard Worker 
821*e1eccf28SAndroid Build Coastguard Worker     ScriptCall * _scPtr = nullptr;
822*e1eccf28SAndroid Build Coastguard Worker     ScriptCall _sc;
823*e1eccf28SAndroid Build Coastguard Worker     if (sc) {
824*e1eccf28SAndroid Build Coastguard Worker         _sc.strategy    = static_cast<ForEachStrategy>(sc->strategy);
825*e1eccf28SAndroid Build Coastguard Worker         _sc.xStart      = sc->xStart;
826*e1eccf28SAndroid Build Coastguard Worker         _sc.xEnd        = sc->xEnd;
827*e1eccf28SAndroid Build Coastguard Worker         _sc.yStart      = sc->yStart;
828*e1eccf28SAndroid Build Coastguard Worker         _sc.yEnd        = sc->yEnd;
829*e1eccf28SAndroid Build Coastguard Worker         _sc.zStart      = sc->zStart;
830*e1eccf28SAndroid Build Coastguard Worker         _sc.zEnd        = sc->zEnd;
831*e1eccf28SAndroid Build Coastguard Worker         _sc.arrayStart  = sc->arrayStart;
832*e1eccf28SAndroid Build Coastguard Worker         _sc.arrayEnd    = sc->arrayEnd;
833*e1eccf28SAndroid Build Coastguard Worker         _sc.array2Start = sc->array2Start;
834*e1eccf28SAndroid Build Coastguard Worker         _sc.array2End   = sc->arrayEnd;
835*e1eccf28SAndroid Build Coastguard Worker         _sc.array3Start = sc->array3Start;
836*e1eccf28SAndroid Build Coastguard Worker         _sc.array3End   = sc->arrayEnd;
837*e1eccf28SAndroid Build Coastguard Worker         _sc.array4Start = sc->array4Start;
838*e1eccf28SAndroid Build Coastguard Worker         _sc.array4End   = sc->arrayEnd;
839*e1eccf28SAndroid Build Coastguard Worker 
840*e1eccf28SAndroid Build Coastguard Worker         _scPtr = &_sc;
841*e1eccf28SAndroid Build Coastguard Worker     }
842*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptReduce(_script, slot, _vains, _vaout, _scPtr);
843*e1eccf28SAndroid Build Coastguard Worker }
844*e1eccf28SAndroid Build Coastguard Worker 
ScriptSetVarI(RsContext context,RsScript script,uint32_t slot,int value)845*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptSetVarI (RsContext context, RsScript script, uint32_t slot, int value)
846*e1eccf28SAndroid Build Coastguard Worker {
847*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
848*e1eccf28SAndroid Build Coastguard Worker 
849*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptSetVarI(_script, slot, value);
850*e1eccf28SAndroid Build Coastguard Worker }
851*e1eccf28SAndroid Build Coastguard Worker 
ScriptSetVarObj(RsContext context,RsScript script,uint32_t slot,RsObjectBase obj)852*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptSetVarObj (RsContext context, RsScript script, uint32_t slot, RsObjectBase obj)
853*e1eccf28SAndroid Build Coastguard Worker {
854*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
855*e1eccf28SAndroid Build Coastguard Worker     uint64_t _obj = (uint64_t)(uintptr_t)obj;
856*e1eccf28SAndroid Build Coastguard Worker 
857*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptSetVarObj(_script, slot, _obj);
858*e1eccf28SAndroid Build Coastguard Worker }
859*e1eccf28SAndroid Build Coastguard Worker 
ScriptSetVarJ(RsContext context,RsScript script,uint32_t slot,int64_t value)860*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptSetVarJ (RsContext context, RsScript script, uint32_t slot, int64_t value)
861*e1eccf28SAndroid Build Coastguard Worker {
862*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
863*e1eccf28SAndroid Build Coastguard Worker 
864*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptSetVarJ(_script, slot, value);
865*e1eccf28SAndroid Build Coastguard Worker }
866*e1eccf28SAndroid Build Coastguard Worker 
ScriptSetVarF(RsContext context,RsScript script,uint32_t slot,float value)867*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptSetVarF (RsContext context, RsScript script, uint32_t slot, float value)
868*e1eccf28SAndroid Build Coastguard Worker {
869*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
870*e1eccf28SAndroid Build Coastguard Worker 
871*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptSetVarF(_script, slot, value);
872*e1eccf28SAndroid Build Coastguard Worker }
873*e1eccf28SAndroid Build Coastguard Worker 
ScriptSetVarD(RsContext context,RsScript script,uint32_t slot,double value)874*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptSetVarD (RsContext context, RsScript script, uint32_t slot, double value)
875*e1eccf28SAndroid Build Coastguard Worker {
876*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
877*e1eccf28SAndroid Build Coastguard Worker 
878*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptSetVarD(_script, slot, value);
879*e1eccf28SAndroid Build Coastguard Worker }
880*e1eccf28SAndroid Build Coastguard Worker 
ScriptSetVarV(RsContext context,RsScript script,uint32_t slot,const void * data,size_t len)881*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptSetVarV (RsContext context, RsScript script, uint32_t slot, const void* data, size_t len)
882*e1eccf28SAndroid Build Coastguard Worker {
883*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
884*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint8_t> _data;
885*e1eccf28SAndroid Build Coastguard Worker     _data.setToExternal(reinterpret_cast<uint8_t *>(const_cast<void *>(data)), len);
886*e1eccf28SAndroid Build Coastguard Worker 
887*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptSetVarV(_script, slot, _data);
888*e1eccf28SAndroid Build Coastguard Worker }
889*e1eccf28SAndroid Build Coastguard Worker 
ScriptGetVarV(RsContext context,RsScript script,uint32_t slot,void * data,size_t len)890*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptGetVarV (RsContext context, RsScript script, uint32_t slot, void* data, size_t len)
891*e1eccf28SAndroid Build Coastguard Worker {
892*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
893*e1eccf28SAndroid Build Coastguard Worker 
894*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptGetVarV(_script, slot, len,
895*e1eccf28SAndroid Build Coastguard Worker                          [data, len] (const hidl_vec<uint8_t> &retData) {
896*e1eccf28SAndroid Build Coastguard Worker                              memcpy(data, retData.data(), len);
897*e1eccf28SAndroid Build Coastguard Worker                          });
898*e1eccf28SAndroid Build Coastguard Worker }
899*e1eccf28SAndroid Build Coastguard Worker 
ScriptSetVarVE(RsContext context,RsScript script,uint32_t slot,const void * data,size_t len,RsElement ve,const uint32_t * dims,size_t dimLen)900*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptSetVarVE (RsContext context, RsScript script, uint32_t slot,
901*e1eccf28SAndroid Build Coastguard Worker                                        const void *data, size_t len, RsElement ve,
902*e1eccf28SAndroid Build Coastguard Worker                                        const uint32_t *dims, size_t dimLen)
903*e1eccf28SAndroid Build Coastguard Worker {
904*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
905*e1eccf28SAndroid Build Coastguard Worker 
906*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint8_t> _data;
907*e1eccf28SAndroid Build Coastguard Worker     _data.setToExternal(reinterpret_cast<uint8_t *>(const_cast<void *>(data)), len);
908*e1eccf28SAndroid Build Coastguard Worker 
909*e1eccf28SAndroid Build Coastguard Worker     uint64_t _ve = (uint64_t)(uintptr_t)ve;
910*e1eccf28SAndroid Build Coastguard Worker 
911*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint32_t> _dims;
912*e1eccf28SAndroid Build Coastguard Worker     _dims.setToExternal(const_cast<uint32_t *>(dims), dimLen / sizeof(uint32_t));
913*e1eccf28SAndroid Build Coastguard Worker 
914*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptSetVarVE(_script, slot, _data, _ve, _dims);
915*e1eccf28SAndroid Build Coastguard Worker }
916*e1eccf28SAndroid Build Coastguard Worker 
ScriptCCreate(RsContext context,const char * resName,size_t resName_length,const char * cacheDir,size_t cacheDir_length,const char * text,size_t text_length)917*e1eccf28SAndroid Build Coastguard Worker RsScript RsHidlAdaptation::ScriptCCreate (RsContext context,
918*e1eccf28SAndroid Build Coastguard Worker                                           const char *resName, size_t resName_length,
919*e1eccf28SAndroid Build Coastguard Worker                                           const char *cacheDir, size_t cacheDir_length,
920*e1eccf28SAndroid Build Coastguard Worker                                           const char *text, size_t text_length)
921*e1eccf28SAndroid Build Coastguard Worker {
922*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint8_t> _text;
923*e1eccf28SAndroid Build Coastguard Worker     _text.setToExternal(reinterpret_cast<uint8_t *>(const_cast<char *>(text)), text_length);
924*e1eccf28SAndroid Build Coastguard Worker     uint64_t scriptc = GetIContextHandle(context)->scriptCCreate(hidl_string(resName), hidl_string(cacheDir), _text);
925*e1eccf28SAndroid Build Coastguard Worker     return (RsScript) scriptc;
926*e1eccf28SAndroid Build Coastguard Worker }
927*e1eccf28SAndroid Build Coastguard Worker 
ScriptIntrinsicCreate(RsContext context,uint32_t id,RsElement element)928*e1eccf28SAndroid Build Coastguard Worker RsScript RsHidlAdaptation::ScriptIntrinsicCreate (RsContext context, uint32_t id, RsElement element)
929*e1eccf28SAndroid Build Coastguard Worker {
930*e1eccf28SAndroid Build Coastguard Worker     uint64_t _element = (uint64_t)(uintptr_t)element;
931*e1eccf28SAndroid Build Coastguard Worker 
932*e1eccf28SAndroid Build Coastguard Worker     uint64_t intrinsic = GetIContextHandle(context)->scriptIntrinsicCreate((ScriptIntrinsicID)id, _element);
933*e1eccf28SAndroid Build Coastguard Worker     return (RsScript) intrinsic;
934*e1eccf28SAndroid Build Coastguard Worker }
935*e1eccf28SAndroid Build Coastguard Worker 
ScriptKernelIDCreate(RsContext context,RsScript script,int slot,int sig)936*e1eccf28SAndroid Build Coastguard Worker RsScriptKernelID RsHidlAdaptation::ScriptKernelIDCreate (RsContext context, RsScript script, int slot, int sig)
937*e1eccf28SAndroid Build Coastguard Worker {
938*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
939*e1eccf28SAndroid Build Coastguard Worker 
940*e1eccf28SAndroid Build Coastguard Worker     uint64_t kernelID = GetIContextHandle(context)->scriptKernelIDCreate(_script, slot, sig);
941*e1eccf28SAndroid Build Coastguard Worker     return (RsScriptKernelID) kernelID;
942*e1eccf28SAndroid Build Coastguard Worker }
943*e1eccf28SAndroid Build Coastguard Worker 
ScriptInvokeIDCreate(RsContext context,RsScript script,int slot)944*e1eccf28SAndroid Build Coastguard Worker RsScriptInvokeID RsHidlAdaptation::ScriptInvokeIDCreate (RsContext context, RsScript script, int slot)
945*e1eccf28SAndroid Build Coastguard Worker {
946*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
947*e1eccf28SAndroid Build Coastguard Worker 
948*e1eccf28SAndroid Build Coastguard Worker     uint64_t invokeID = GetIContextHandle(context)->scriptInvokeIDCreate(_script, slot);
949*e1eccf28SAndroid Build Coastguard Worker     return (RsScriptInvokeID) invokeID;
950*e1eccf28SAndroid Build Coastguard Worker }
951*e1eccf28SAndroid Build Coastguard Worker 
ScriptFieldIDCreate(RsContext context,RsScript script,int slot)952*e1eccf28SAndroid Build Coastguard Worker RsScriptFieldID RsHidlAdaptation::ScriptFieldIDCreate (RsContext context, RsScript script, int slot)
953*e1eccf28SAndroid Build Coastguard Worker {
954*e1eccf28SAndroid Build Coastguard Worker     uint64_t _script = (uint64_t)(uintptr_t)script;
955*e1eccf28SAndroid Build Coastguard Worker 
956*e1eccf28SAndroid Build Coastguard Worker     uint64_t fieldID = GetIContextHandle(context)->scriptFieldIDCreate(_script, slot);
957*e1eccf28SAndroid Build Coastguard Worker     return (RsScriptFieldID) fieldID;
958*e1eccf28SAndroid Build Coastguard Worker }
959*e1eccf28SAndroid Build Coastguard Worker 
ScriptGroupCreate(RsContext context,RsScriptKernelID * kernels,size_t kernelsSize,RsScriptKernelID * src,size_t srcSize,RsScriptKernelID * dstK,size_t dstKSize,RsScriptFieldID * dstF,size_t dstFSize,const RsType * type,size_t typeSize)960*e1eccf28SAndroid Build Coastguard Worker RsScriptGroup RsHidlAdaptation::ScriptGroupCreate (RsContext context, RsScriptKernelID * kernels, size_t kernelsSize,
961*e1eccf28SAndroid Build Coastguard Worker                                                    RsScriptKernelID * src, size_t srcSize,
962*e1eccf28SAndroid Build Coastguard Worker                                                    RsScriptKernelID * dstK, size_t dstKSize,
963*e1eccf28SAndroid Build Coastguard Worker                                                    RsScriptFieldID * dstF, size_t dstFSize,
964*e1eccf28SAndroid Build Coastguard Worker                                                    const RsType * type, size_t typeSize)
965*e1eccf28SAndroid Build Coastguard Worker {
966*e1eccf28SAndroid Build Coastguard Worker     std::vector<ScriptKernelID> _kernels(kernelsSize / sizeof(RsScriptKernelID));
967*e1eccf28SAndroid Build Coastguard Worker     std::vector<ScriptKernelID> _src(srcSize / sizeof(RsScriptKernelID));
968*e1eccf28SAndroid Build Coastguard Worker     std::vector<ScriptKernelID> _dstK(dstKSize / sizeof(RsScriptKernelID));
969*e1eccf28SAndroid Build Coastguard Worker     std::vector<ScriptFieldID> _dstF(dstFSize / sizeof(RsScriptFieldID));
970*e1eccf28SAndroid Build Coastguard Worker     std::vector<Type> _type(typeSize / sizeof(RsType));
971*e1eccf28SAndroid Build Coastguard Worker 
972*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < _kernels.size(); i++) {
973*e1eccf28SAndroid Build Coastguard Worker         _kernels[i] = (ScriptKernelID)(uintptr_t)kernels[i];
974*e1eccf28SAndroid Build Coastguard Worker     }
975*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < _src.size(); i++) {
976*e1eccf28SAndroid Build Coastguard Worker         _src[i] = (ScriptKernelID)(uintptr_t)src[i];
977*e1eccf28SAndroid Build Coastguard Worker     }
978*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < _dstK.size(); i++) {
979*e1eccf28SAndroid Build Coastguard Worker         _dstK[i] = (ScriptKernelID)(uintptr_t)dstK[i];
980*e1eccf28SAndroid Build Coastguard Worker     }
981*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < _dstF.size(); i++) {
982*e1eccf28SAndroid Build Coastguard Worker         _dstF[i] = (ScriptFieldID)(uintptr_t)dstF[i];
983*e1eccf28SAndroid Build Coastguard Worker     }
984*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < _type.size(); i++) {
985*e1eccf28SAndroid Build Coastguard Worker         _type[i] = (Type)(uintptr_t)type[i];
986*e1eccf28SAndroid Build Coastguard Worker     }
987*e1eccf28SAndroid Build Coastguard Worker 
988*e1eccf28SAndroid Build Coastguard Worker     uint64_t scriptGroup = GetIContextHandle(context)->scriptGroupCreate(_kernels, _src, _dstK, _dstF, _type);
989*e1eccf28SAndroid Build Coastguard Worker     return (RsScriptGroup) scriptGroup;
990*e1eccf28SAndroid Build Coastguard Worker }
991*e1eccf28SAndroid Build Coastguard Worker 
ScriptGroup2Create(RsContext context,const char * name,size_t nameLength,const char * cacheDir,size_t cacheDirLength,RsClosure * closures,size_t numClosures)992*e1eccf28SAndroid Build Coastguard Worker RsScriptGroup2 RsHidlAdaptation::ScriptGroup2Create(RsContext context, const char* name, size_t nameLength,
993*e1eccf28SAndroid Build Coastguard Worker                                                     const char* cacheDir, size_t cacheDirLength,
994*e1eccf28SAndroid Build Coastguard Worker                                                     RsClosure* closures, size_t numClosures)
995*e1eccf28SAndroid Build Coastguard Worker {
996*e1eccf28SAndroid Build Coastguard Worker     std::vector<Closure> _closures(numClosures);
997*e1eccf28SAndroid Build Coastguard Worker     for (size_t i = 0; i < numClosures; i++) {
998*e1eccf28SAndroid Build Coastguard Worker         _closures[i] = (Closure)(uintptr_t)closures[i];
999*e1eccf28SAndroid Build Coastguard Worker     }
1000*e1eccf28SAndroid Build Coastguard Worker 
1001*e1eccf28SAndroid Build Coastguard Worker     uint64_t scriptGroup2 = GetIContextHandle(context)->scriptGroup2Create(hidl_string(name), hidl_string(cacheDir), _closures);
1002*e1eccf28SAndroid Build Coastguard Worker     return (RsScriptGroup2) scriptGroup2;
1003*e1eccf28SAndroid Build Coastguard Worker }
1004*e1eccf28SAndroid Build Coastguard Worker 
ScriptGroupSetOutput(RsContext context,RsScriptGroup sg,RsScriptKernelID kid,RsAllocation alloc)1005*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptGroupSetOutput (RsContext context, RsScriptGroup sg, RsScriptKernelID kid, RsAllocation alloc)
1006*e1eccf28SAndroid Build Coastguard Worker {
1007*e1eccf28SAndroid Build Coastguard Worker     uint64_t _sg = (uint64_t)(uintptr_t)sg;
1008*e1eccf28SAndroid Build Coastguard Worker     uint64_t _kid = (uint64_t)(uintptr_t)kid;
1009*e1eccf28SAndroid Build Coastguard Worker     uint64_t _alloc = (uint64_t)(uintptr_t)alloc;
1010*e1eccf28SAndroid Build Coastguard Worker 
1011*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptGroupSetOutput(_sg, _kid, _alloc);
1012*e1eccf28SAndroid Build Coastguard Worker }
1013*e1eccf28SAndroid Build Coastguard Worker 
ScriptGroupSetInput(RsContext context,RsScriptGroup sg,RsScriptKernelID kid,RsAllocation alloc)1014*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptGroupSetInput (RsContext context, RsScriptGroup sg, RsScriptKernelID kid, RsAllocation alloc)
1015*e1eccf28SAndroid Build Coastguard Worker {
1016*e1eccf28SAndroid Build Coastguard Worker     uint64_t _sg = (uint64_t)(uintptr_t)sg;
1017*e1eccf28SAndroid Build Coastguard Worker     uint64_t _kid = (uint64_t)(uintptr_t)kid;
1018*e1eccf28SAndroid Build Coastguard Worker     uint64_t _alloc = (uint64_t)(uintptr_t)alloc;
1019*e1eccf28SAndroid Build Coastguard Worker 
1020*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptGroupSetInput(_sg, _kid, _alloc);
1021*e1eccf28SAndroid Build Coastguard Worker }
1022*e1eccf28SAndroid Build Coastguard Worker 
ScriptGroupExecute(RsContext context,RsScriptGroup sg)1023*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::ScriptGroupExecute (RsContext context, RsScriptGroup sg)
1024*e1eccf28SAndroid Build Coastguard Worker {
1025*e1eccf28SAndroid Build Coastguard Worker     uint64_t _sg = (uint64_t)(uintptr_t)sg;
1026*e1eccf28SAndroid Build Coastguard Worker 
1027*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->scriptGroupExecute(_sg);
1028*e1eccf28SAndroid Build Coastguard Worker }
1029*e1eccf28SAndroid Build Coastguard Worker 
AllocationIoSend(RsContext context,RsAllocation allocation)1030*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AllocationIoSend (RsContext context, RsAllocation allocation)
1031*e1eccf28SAndroid Build Coastguard Worker {
1032*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
1033*e1eccf28SAndroid Build Coastguard Worker 
1034*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationIoSend(_allocation);
1035*e1eccf28SAndroid Build Coastguard Worker }
AllocationIoReceive(RsContext context,RsAllocation allocation)1036*e1eccf28SAndroid Build Coastguard Worker int64_t RsHidlAdaptation::AllocationIoReceive (RsContext context, RsAllocation allocation)
1037*e1eccf28SAndroid Build Coastguard Worker {
1038*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
1039*e1eccf28SAndroid Build Coastguard Worker 
1040*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationIoReceive(_allocation);
1041*e1eccf28SAndroid Build Coastguard Worker     // Fix me.
1042*e1eccf28SAndroid Build Coastguard Worker     return 0;
1043*e1eccf28SAndroid Build Coastguard Worker }
1044*e1eccf28SAndroid Build Coastguard Worker 
AllocationGetPointer(RsContext context,RsAllocation allocation,uint32_t lod,RsAllocationCubemapFace face,uint32_t z,uint32_t array,size_t * stride,size_t strideLen)1045*e1eccf28SAndroid Build Coastguard Worker void * RsHidlAdaptation::AllocationGetPointer (RsContext context, RsAllocation allocation,
1046*e1eccf28SAndroid Build Coastguard Worker                                                uint32_t lod, RsAllocationCubemapFace face,
1047*e1eccf28SAndroid Build Coastguard Worker                                                uint32_t z, uint32_t array, size_t *stride, size_t strideLen)
1048*e1eccf28SAndroid Build Coastguard Worker {
1049*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
1050*e1eccf28SAndroid Build Coastguard Worker 
1051*e1eccf28SAndroid Build Coastguard Worker     void* ptr;
1052*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationGetPointer(_allocation, lod,
1053*e1eccf28SAndroid Build Coastguard Worker                                                 (AllocationCubemapFace)face, z,
1054*e1eccf28SAndroid Build Coastguard Worker                                                 [&ptr, stride] (void* retPtr, uint64_t retStride) {
1055*e1eccf28SAndroid Build Coastguard Worker                                                     ptr = retPtr;
1056*e1eccf28SAndroid Build Coastguard Worker                                                     if (retStride > 0) {
1057*e1eccf28SAndroid Build Coastguard Worker                                                         *stride = retStride;
1058*e1eccf28SAndroid Build Coastguard Worker                                                     }
1059*e1eccf28SAndroid Build Coastguard Worker                                                 });
1060*e1eccf28SAndroid Build Coastguard Worker     return ptr;
1061*e1eccf28SAndroid Build Coastguard Worker }
1062*e1eccf28SAndroid Build Coastguard Worker 
AllocationSetupBufferQueue(RsContext context,RsAllocation allocation,uint32_t numAlloc)1063*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AllocationSetupBufferQueue (RsContext context, RsAllocation allocation, uint32_t numAlloc)
1064*e1eccf28SAndroid Build Coastguard Worker {
1065*e1eccf28SAndroid Build Coastguard Worker     uint64_t _allocation = (uint64_t)(uintptr_t)allocation;
1066*e1eccf28SAndroid Build Coastguard Worker 
1067*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationSetupBufferQueue(_allocation, numAlloc);
1068*e1eccf28SAndroid Build Coastguard Worker }
1069*e1eccf28SAndroid Build Coastguard Worker 
AllocationShareBufferQueue(RsContext context,RsAllocation valloc1,RsAllocation valloc2)1070*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AllocationShareBufferQueue(RsContext context, RsAllocation valloc1, RsAllocation valloc2)
1071*e1eccf28SAndroid Build Coastguard Worker {
1072*e1eccf28SAndroid Build Coastguard Worker     uint64_t _valloc1 = (uint64_t)(uintptr_t)valloc1;
1073*e1eccf28SAndroid Build Coastguard Worker     uint64_t _valloc2 = (uint64_t)(uintptr_t)valloc2;
1074*e1eccf28SAndroid Build Coastguard Worker 
1075*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationShareBufferQueue(_valloc1, _valloc2);
1076*e1eccf28SAndroid Build Coastguard Worker }
1077*e1eccf28SAndroid Build Coastguard Worker 
AllocationAdapterCreate(RsContext context,RsType vtype,RsAllocation baseAlloc)1078*e1eccf28SAndroid Build Coastguard Worker RsAllocation RsHidlAdaptation::AllocationAdapterCreate (RsContext context, RsType vtype, RsAllocation baseAlloc)
1079*e1eccf28SAndroid Build Coastguard Worker {
1080*e1eccf28SAndroid Build Coastguard Worker     uint64_t _vtype = (uint64_t)(uintptr_t)vtype;
1081*e1eccf28SAndroid Build Coastguard Worker     uint64_t _baseAlloc = (uint64_t)(uintptr_t)baseAlloc;
1082*e1eccf28SAndroid Build Coastguard Worker 
1083*e1eccf28SAndroid Build Coastguard Worker     uint64_t allocationAdapter = GetIContextHandle(context)->allocationAdapterCreate(_vtype, _baseAlloc);
1084*e1eccf28SAndroid Build Coastguard Worker     return (RsAllocation) allocationAdapter;
1085*e1eccf28SAndroid Build Coastguard Worker }
1086*e1eccf28SAndroid Build Coastguard Worker 
AllocationAdapterOffset(RsContext context,RsAllocation alloc,const uint32_t * offsets,size_t offsets_length)1087*e1eccf28SAndroid Build Coastguard Worker void RsHidlAdaptation::AllocationAdapterOffset (RsContext context, RsAllocation alloc, const uint32_t * offsets, size_t offsets_length)
1088*e1eccf28SAndroid Build Coastguard Worker {
1089*e1eccf28SAndroid Build Coastguard Worker     uint64_t _alloc = (uint64_t)(uintptr_t)alloc;
1090*e1eccf28SAndroid Build Coastguard Worker 
1091*e1eccf28SAndroid Build Coastguard Worker     hidl_vec<uint32_t> _offsets;
1092*e1eccf28SAndroid Build Coastguard Worker     _offsets.setToExternal(const_cast<uint32_t *>(offsets), offsets_length / sizeof(uint32_t));
1093*e1eccf28SAndroid Build Coastguard Worker 
1094*e1eccf28SAndroid Build Coastguard Worker     GetIContextHandle(context)->allocationAdapterOffset(_alloc, _offsets);
1095*e1eccf28SAndroid Build Coastguard Worker }
1096