1*4d7e907cSAndroid Build Coastguard Worker /*
2*4d7e907cSAndroid Build Coastguard Worker * Copyright (C) 2018 The Android Open Source Project
3*4d7e907cSAndroid Build Coastguard Worker *
4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*4d7e907cSAndroid Build Coastguard Worker *
8*4d7e907cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*4d7e907cSAndroid Build Coastguard Worker *
10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License.
15*4d7e907cSAndroid Build Coastguard Worker */
16*4d7e907cSAndroid Build Coastguard Worker
17*4d7e907cSAndroid Build Coastguard Worker #include "Context.h"
18*4d7e907cSAndroid Build Coastguard Worker #include "Device.h"
19*4d7e907cSAndroid Build Coastguard Worker
20*4d7e907cSAndroid Build Coastguard Worker namespace android {
21*4d7e907cSAndroid Build Coastguard Worker namespace hardware {
22*4d7e907cSAndroid Build Coastguard Worker namespace renderscript {
23*4d7e907cSAndroid Build Coastguard Worker namespace V1_0 {
24*4d7e907cSAndroid Build Coastguard Worker namespace implementation {
25*4d7e907cSAndroid Build Coastguard Worker
26*4d7e907cSAndroid Build Coastguard Worker
Context(uint32_t sdkVersion,ContextType ct,int32_t flags)27*4d7e907cSAndroid Build Coastguard Worker Context::Context(uint32_t sdkVersion, ContextType ct, int32_t flags) {
28*4d7e907cSAndroid Build Coastguard Worker RsDevice _dev = nullptr;
29*4d7e907cSAndroid Build Coastguard Worker uint32_t _version = 0;
30*4d7e907cSAndroid Build Coastguard Worker uint32_t _sdkVersion = sdkVersion;
31*4d7e907cSAndroid Build Coastguard Worker RsContextType _ct = static_cast<RsContextType>(ct);
32*4d7e907cSAndroid Build Coastguard Worker int32_t _flags = flags;
33*4d7e907cSAndroid Build Coastguard Worker const char* driverName = nullptr;
34*4d7e907cSAndroid Build Coastguard Worker
35*4d7e907cSAndroid Build Coastguard Worker #ifdef OVERRIDE_RS_DRIVER
36*4d7e907cSAndroid Build Coastguard Worker #define XSTR(S) #S
37*4d7e907cSAndroid Build Coastguard Worker #define STR(S) XSTR(S)
38*4d7e907cSAndroid Build Coastguard Worker #define OVERRIDE_RS_DRIVER_STRING STR(OVERRIDE_RS_DRIVER)
39*4d7e907cSAndroid Build Coastguard Worker static std::string driverString(OVERRIDE_RS_DRIVER_STRING);
40*4d7e907cSAndroid Build Coastguard Worker driverName = driverString.c_str();
41*4d7e907cSAndroid Build Coastguard Worker #undef XSTR
42*4d7e907cSAndroid Build Coastguard Worker #undef STR
43*4d7e907cSAndroid Build Coastguard Worker #endif // OVERRIDE_RS_DRIVER
44*4d7e907cSAndroid Build Coastguard Worker mContext = Device::getHal().ContextCreateVendor(_dev, _version, _sdkVersion,
45*4d7e907cSAndroid Build Coastguard Worker _ct, _flags, driverName);
46*4d7e907cSAndroid Build Coastguard Worker }
47*4d7e907cSAndroid Build Coastguard Worker
48*4d7e907cSAndroid Build Coastguard Worker
49*4d7e907cSAndroid Build Coastguard Worker // Helper functions
50*4d7e907cSAndroid Build Coastguard Worker template<typename ReturnType>
hidl_to_rs(OpaqueHandle src)51*4d7e907cSAndroid Build Coastguard Worker static ReturnType hidl_to_rs(OpaqueHandle src) {
52*4d7e907cSAndroid Build Coastguard Worker return reinterpret_cast<ReturnType>(static_cast<uintptr_t>(src));
53*4d7e907cSAndroid Build Coastguard Worker }
54*4d7e907cSAndroid Build Coastguard Worker
55*4d7e907cSAndroid Build Coastguard Worker template<typename ReturnType, typename SourceType>
hidl_to_rs(SourceType * src)56*4d7e907cSAndroid Build Coastguard Worker static ReturnType hidl_to_rs(SourceType* src) {
57*4d7e907cSAndroid Build Coastguard Worker return reinterpret_cast<ReturnType>(src);
58*4d7e907cSAndroid Build Coastguard Worker }
59*4d7e907cSAndroid Build Coastguard Worker
60*4d7e907cSAndroid Build Coastguard Worker template<typename RsType, typename HidlType, typename Operation>
hidl_to_rs(const hidl_vec<HidlType> & src,Operation operation)61*4d7e907cSAndroid Build Coastguard Worker static std::vector<RsType> hidl_to_rs(const hidl_vec<HidlType>& src, Operation operation) {
62*4d7e907cSAndroid Build Coastguard Worker std::vector<RsType> dst(src.size());
63*4d7e907cSAndroid Build Coastguard Worker std::transform(src.begin(), src.end(), dst.begin(), operation);
64*4d7e907cSAndroid Build Coastguard Worker return dst;
65*4d7e907cSAndroid Build Coastguard Worker }
66*4d7e907cSAndroid Build Coastguard Worker
67*4d7e907cSAndroid Build Coastguard Worker template<typename ReturnType, typename SourceType>
rs_to_hidl(SourceType * src)68*4d7e907cSAndroid Build Coastguard Worker static ReturnType rs_to_hidl(SourceType* src) {
69*4d7e907cSAndroid Build Coastguard Worker return static_cast<ReturnType>(reinterpret_cast<uintptr_t>(src));
70*4d7e907cSAndroid Build Coastguard Worker }
71*4d7e907cSAndroid Build Coastguard Worker
72*4d7e907cSAndroid Build Coastguard Worker template<typename HidlType, typename RsType, typename Operation>
rs_to_hidl(const std::vector<RsType> & src,Operation operation)73*4d7e907cSAndroid Build Coastguard Worker static hidl_vec<HidlType> rs_to_hidl(const std::vector<RsType>& src, Operation operation) {
74*4d7e907cSAndroid Build Coastguard Worker std::vector<HidlType> dst(src.size());
75*4d7e907cSAndroid Build Coastguard Worker std::transform(src.begin(), src.end(), dst.begin(), operation);
76*4d7e907cSAndroid Build Coastguard Worker return dst;
77*4d7e907cSAndroid Build Coastguard Worker }
78*4d7e907cSAndroid Build Coastguard Worker
79*4d7e907cSAndroid Build Coastguard Worker
80*4d7e907cSAndroid Build Coastguard Worker // Methods from ::android::hardware::renderscript::V1_0::IContext follow.
81*4d7e907cSAndroid Build Coastguard Worker
allocationAdapterCreate(Type type,Allocation baseAlloc)82*4d7e907cSAndroid Build Coastguard Worker Return<Allocation> Context::allocationAdapterCreate(Type type, Allocation baseAlloc) {
83*4d7e907cSAndroid Build Coastguard Worker RsType _type = hidl_to_rs<RsType>(type);
84*4d7e907cSAndroid Build Coastguard Worker RsAllocation _baseAlloc = hidl_to_rs<RsAllocation>(baseAlloc);
85*4d7e907cSAndroid Build Coastguard Worker RsAllocation _subAlloc = Device::getHal().AllocationAdapterCreate(mContext, _type, _baseAlloc);
86*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<Allocation>(_subAlloc);
87*4d7e907cSAndroid Build Coastguard Worker }
88*4d7e907cSAndroid Build Coastguard Worker
allocationAdapterOffset(Allocation alloc,const hidl_vec<uint32_t> & offsets)89*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationAdapterOffset(Allocation alloc, const hidl_vec<uint32_t>& offsets) {
90*4d7e907cSAndroid Build Coastguard Worker RsAllocation _alloc = hidl_to_rs<RsAllocation>(alloc);
91*4d7e907cSAndroid Build Coastguard Worker const hidl_vec<uint32_t>& _offsets = offsets;
92*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationAdapterOffset(mContext, _alloc, _offsets.data(), _offsets.size() * sizeof(uint32_t));
93*4d7e907cSAndroid Build Coastguard Worker return Void();
94*4d7e907cSAndroid Build Coastguard Worker }
95*4d7e907cSAndroid Build Coastguard Worker
allocationGetType(Allocation allocation)96*4d7e907cSAndroid Build Coastguard Worker Return<Type> Context::allocationGetType(Allocation allocation) {
97*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
98*4d7e907cSAndroid Build Coastguard Worker const void* _type = Device::getHal().AllocationGetType(mContext, _allocation);
99*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<Type>(_type);
100*4d7e907cSAndroid Build Coastguard Worker }
101*4d7e907cSAndroid Build Coastguard Worker
allocationCreateTyped(Type type,AllocationMipmapControl amips,int32_t usage,Ptr ptr)102*4d7e907cSAndroid Build Coastguard Worker Return<Allocation> Context::allocationCreateTyped(Type type, AllocationMipmapControl amips, int32_t usage, Ptr ptr) {
103*4d7e907cSAndroid Build Coastguard Worker RsType _type = hidl_to_rs<RsType>(type);
104*4d7e907cSAndroid Build Coastguard Worker RsAllocationMipmapControl _amips = static_cast<RsAllocationMipmapControl>(amips);
105*4d7e907cSAndroid Build Coastguard Worker uint32_t _usage = usage;
106*4d7e907cSAndroid Build Coastguard Worker uintptr_t _ptr = hidl_to_rs<uintptr_t>(ptr);
107*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = Device::getHal().AllocationCreateTyped(mContext, _type, _amips, _usage, _ptr);
108*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<Allocation>(_allocation);
109*4d7e907cSAndroid Build Coastguard Worker }
110*4d7e907cSAndroid Build Coastguard Worker
allocationCreateFromBitmap(Type type,AllocationMipmapControl amips,const hidl_vec<uint8_t> & bitmap,int32_t usage)111*4d7e907cSAndroid Build Coastguard Worker Return<Allocation> Context::allocationCreateFromBitmap(Type type, AllocationMipmapControl amips, const hidl_vec<uint8_t>& bitmap, int32_t usage) {
112*4d7e907cSAndroid Build Coastguard Worker RsType _type = hidl_to_rs<RsType>(type);
113*4d7e907cSAndroid Build Coastguard Worker RsAllocationMipmapControl _amips = static_cast<RsAllocationMipmapControl>(amips);
114*4d7e907cSAndroid Build Coastguard Worker const hidl_vec<uint8_t>& _bitmap = bitmap;
115*4d7e907cSAndroid Build Coastguard Worker uint32_t _usage = usage;
116*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = Device::getHal().AllocationCreateFromBitmap(mContext, _type, _amips, _bitmap.data(), _bitmap.size(), _usage);
117*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<Allocation>(_allocation);
118*4d7e907cSAndroid Build Coastguard Worker }
119*4d7e907cSAndroid Build Coastguard Worker
allocationCubeCreateFromBitmap(Type type,AllocationMipmapControl amips,const hidl_vec<uint8_t> & bitmap,int32_t usage)120*4d7e907cSAndroid Build Coastguard Worker Return<Allocation> Context::allocationCubeCreateFromBitmap(Type type, AllocationMipmapControl amips, const hidl_vec<uint8_t>& bitmap, int32_t usage) {
121*4d7e907cSAndroid Build Coastguard Worker RsType _type = hidl_to_rs<RsType>(type);
122*4d7e907cSAndroid Build Coastguard Worker RsAllocationMipmapControl _amips = static_cast<RsAllocationMipmapControl>(amips);
123*4d7e907cSAndroid Build Coastguard Worker const hidl_vec<uint8_t>& _bitmap = bitmap;
124*4d7e907cSAndroid Build Coastguard Worker uint32_t _usage = usage;
125*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = Device::getHal().AllocationCubeCreateFromBitmap(mContext, _type, _amips, _bitmap.data(), _bitmap.size(), _usage);
126*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<Allocation>(_allocation);
127*4d7e907cSAndroid Build Coastguard Worker }
128*4d7e907cSAndroid Build Coastguard Worker
allocationGetNativeWindow(Allocation allocation)129*4d7e907cSAndroid Build Coastguard Worker Return<NativeWindow> Context::allocationGetNativeWindow(Allocation allocation) {
130*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
131*4d7e907cSAndroid Build Coastguard Worker RsNativeWindow _nativeWindow = Device::getHal().AllocationGetSurface(mContext, _allocation);
132*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<NativeWindow>(_nativeWindow);
133*4d7e907cSAndroid Build Coastguard Worker }
134*4d7e907cSAndroid Build Coastguard Worker
allocationSetNativeWindow(Allocation allocation,NativeWindow nativewindow)135*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationSetNativeWindow(Allocation allocation, NativeWindow nativewindow) {
136*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
137*4d7e907cSAndroid Build Coastguard Worker RsNativeWindow _nativewindow = hidl_to_rs<RsNativeWindow>(nativewindow);
138*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationSetSurface(mContext, _allocation, _nativewindow);
139*4d7e907cSAndroid Build Coastguard Worker return Void();
140*4d7e907cSAndroid Build Coastguard Worker }
141*4d7e907cSAndroid Build Coastguard Worker
allocationSetupBufferQueue(Allocation alloc,uint32_t numBuffer)142*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationSetupBufferQueue(Allocation alloc, uint32_t numBuffer) {
143*4d7e907cSAndroid Build Coastguard Worker RsAllocation _alloc = hidl_to_rs<RsAllocation>(alloc);
144*4d7e907cSAndroid Build Coastguard Worker uint32_t _numBuffer = numBuffer;
145*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationSetupBufferQueue(mContext, _alloc, _numBuffer);
146*4d7e907cSAndroid Build Coastguard Worker return Void();
147*4d7e907cSAndroid Build Coastguard Worker }
148*4d7e907cSAndroid Build Coastguard Worker
allocationShareBufferQueue(Allocation baseAlloc,Allocation subAlloc)149*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationShareBufferQueue(Allocation baseAlloc, Allocation subAlloc) {
150*4d7e907cSAndroid Build Coastguard Worker RsAllocation _baseAlloc = hidl_to_rs<RsAllocation>(baseAlloc);
151*4d7e907cSAndroid Build Coastguard Worker RsAllocation _subAlloc = hidl_to_rs<RsAllocation>(subAlloc);
152*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationShareBufferQueue(mContext, _baseAlloc, _subAlloc);
153*4d7e907cSAndroid Build Coastguard Worker return Void();
154*4d7e907cSAndroid Build Coastguard Worker }
155*4d7e907cSAndroid Build Coastguard Worker
allocationCopyToBitmap(Allocation allocation,Ptr data,Size sizeBytes)156*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationCopyToBitmap(Allocation allocation, Ptr data, Size sizeBytes) {
157*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
158*4d7e907cSAndroid Build Coastguard Worker void* _data = hidl_to_rs<void*>(data);
159*4d7e907cSAndroid Build Coastguard Worker size_t _sizeBytes = static_cast<size_t>(sizeBytes);
160*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationCopyToBitmap(mContext, _allocation, _data, _sizeBytes);
161*4d7e907cSAndroid Build Coastguard Worker return Void();
162*4d7e907cSAndroid Build Coastguard Worker }
163*4d7e907cSAndroid Build Coastguard Worker
allocation1DWrite(Allocation allocation,uint32_t offset,uint32_t lod,uint32_t count,const hidl_vec<uint8_t> & data)164*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocation1DWrite(Allocation allocation, uint32_t offset, uint32_t lod, uint32_t count, const hidl_vec<uint8_t>& data) {
165*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
166*4d7e907cSAndroid Build Coastguard Worker uint32_t _offset = offset;
167*4d7e907cSAndroid Build Coastguard Worker uint32_t _lod = lod;
168*4d7e907cSAndroid Build Coastguard Worker uint32_t _count = count;
169*4d7e907cSAndroid Build Coastguard Worker const void* _dataPtr = hidl_to_rs<const void*>(data.data());
170*4d7e907cSAndroid Build Coastguard Worker size_t _sizeBytes = data.size();
171*4d7e907cSAndroid Build Coastguard Worker Device::getHal().Allocation1DData(mContext, _allocation, _offset, _lod, _count, _dataPtr, _sizeBytes);
172*4d7e907cSAndroid Build Coastguard Worker return Void();
173*4d7e907cSAndroid Build Coastguard Worker }
174*4d7e907cSAndroid Build Coastguard Worker
allocationElementWrite(Allocation allocation,uint32_t x,uint32_t y,uint32_t z,uint32_t lod,const hidl_vec<uint8_t> & data,Size compIdx)175*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationElementWrite(Allocation allocation, uint32_t x, uint32_t y, uint32_t z, uint32_t lod, const hidl_vec<uint8_t>& data, Size compIdx) {
176*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
177*4d7e907cSAndroid Build Coastguard Worker uint32_t _x = x;
178*4d7e907cSAndroid Build Coastguard Worker uint32_t _y = y;
179*4d7e907cSAndroid Build Coastguard Worker uint32_t _z = z;
180*4d7e907cSAndroid Build Coastguard Worker uint32_t _lod = lod;
181*4d7e907cSAndroid Build Coastguard Worker const void* _dataPtr = hidl_to_rs<const void*>(data.data());
182*4d7e907cSAndroid Build Coastguard Worker size_t _sizeBytes = data.size();
183*4d7e907cSAndroid Build Coastguard Worker size_t _compIdx = static_cast<size_t>(compIdx);
184*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationElementData(mContext, _allocation, _x, _y, _z, _lod, _dataPtr, _sizeBytes, _compIdx);
185*4d7e907cSAndroid Build Coastguard Worker return Void();
186*4d7e907cSAndroid Build Coastguard Worker }
187*4d7e907cSAndroid Build Coastguard Worker
allocation2DWrite(Allocation allocation,uint32_t xoff,uint32_t yoff,uint32_t lod,AllocationCubemapFace face,uint32_t w,uint32_t h,const hidl_vec<uint8_t> & data,Size stride)188*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocation2DWrite(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t lod, AllocationCubemapFace face, uint32_t w, uint32_t h, const hidl_vec<uint8_t>& data, Size stride) {
189*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
190*4d7e907cSAndroid Build Coastguard Worker uint32_t _xoff = xoff;
191*4d7e907cSAndroid Build Coastguard Worker uint32_t _yoff = yoff;
192*4d7e907cSAndroid Build Coastguard Worker uint32_t _lod = lod;
193*4d7e907cSAndroid Build Coastguard Worker RsAllocationCubemapFace _face = static_cast<RsAllocationCubemapFace>(face);
194*4d7e907cSAndroid Build Coastguard Worker uint32_t _w = w;
195*4d7e907cSAndroid Build Coastguard Worker uint32_t _h = h;
196*4d7e907cSAndroid Build Coastguard Worker const void* _dataPtr = hidl_to_rs<const void*>(data.data());
197*4d7e907cSAndroid Build Coastguard Worker size_t _sizeBytes = data.size();
198*4d7e907cSAndroid Build Coastguard Worker size_t _stride = static_cast<size_t>(stride);
199*4d7e907cSAndroid Build Coastguard Worker Device::getHal().Allocation2DData(mContext, _allocation, _xoff, _yoff, _lod, _face, _w, _h, _dataPtr, _sizeBytes, _stride);
200*4d7e907cSAndroid Build Coastguard Worker return Void();
201*4d7e907cSAndroid Build Coastguard Worker }
202*4d7e907cSAndroid Build Coastguard Worker
allocation3DWrite(Allocation allocation,uint32_t xoff,uint32_t yoff,uint32_t zoff,uint32_t lod,uint32_t w,uint32_t h,uint32_t d,const hidl_vec<uint8_t> & data,Size stride)203*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocation3DWrite(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d, const hidl_vec<uint8_t>& data, Size stride) {
204*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
205*4d7e907cSAndroid Build Coastguard Worker uint32_t _xoff = xoff;
206*4d7e907cSAndroid Build Coastguard Worker uint32_t _yoff = yoff;
207*4d7e907cSAndroid Build Coastguard Worker uint32_t _zoff = zoff;
208*4d7e907cSAndroid Build Coastguard Worker uint32_t _lod = lod;
209*4d7e907cSAndroid Build Coastguard Worker uint32_t _w = w;
210*4d7e907cSAndroid Build Coastguard Worker uint32_t _h = h;
211*4d7e907cSAndroid Build Coastguard Worker uint32_t _d = d;
212*4d7e907cSAndroid Build Coastguard Worker const void* _dataPtr = hidl_to_rs<const void*>(data.data());
213*4d7e907cSAndroid Build Coastguard Worker size_t _sizeBytes = data.size();
214*4d7e907cSAndroid Build Coastguard Worker size_t _stride = static_cast<size_t>(stride);
215*4d7e907cSAndroid Build Coastguard Worker Device::getHal().Allocation3DData(mContext, _allocation, _xoff, _yoff, _zoff, _lod, _w, _h, _d, _dataPtr, _sizeBytes, _stride);
216*4d7e907cSAndroid Build Coastguard Worker return Void();
217*4d7e907cSAndroid Build Coastguard Worker }
218*4d7e907cSAndroid Build Coastguard Worker
allocationGenerateMipmaps(Allocation allocation)219*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationGenerateMipmaps(Allocation allocation) {
220*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
221*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationGenerateMipmaps(mContext, _allocation);
222*4d7e907cSAndroid Build Coastguard Worker return Void();
223*4d7e907cSAndroid Build Coastguard Worker }
224*4d7e907cSAndroid Build Coastguard Worker
allocationRead(Allocation allocation,Ptr data,Size sizeBytes)225*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationRead(Allocation allocation, Ptr data, Size sizeBytes) {
226*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
227*4d7e907cSAndroid Build Coastguard Worker void* _data = hidl_to_rs<void*>(data);
228*4d7e907cSAndroid Build Coastguard Worker size_t _sizeBytes = static_cast<size_t>(sizeBytes);
229*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationRead(mContext, _allocation, _data, _sizeBytes);
230*4d7e907cSAndroid Build Coastguard Worker return Void();
231*4d7e907cSAndroid Build Coastguard Worker }
232*4d7e907cSAndroid Build Coastguard Worker
allocation1DRead(Allocation allocation,uint32_t xoff,uint32_t lod,uint32_t count,Ptr data,Size sizeBytes)233*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocation1DRead(Allocation allocation, uint32_t xoff, uint32_t lod, uint32_t count, Ptr data, Size sizeBytes) {
234*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
235*4d7e907cSAndroid Build Coastguard Worker uint32_t _xoff = xoff;
236*4d7e907cSAndroid Build Coastguard Worker uint32_t _lod = lod;
237*4d7e907cSAndroid Build Coastguard Worker uint32_t _count = count;
238*4d7e907cSAndroid Build Coastguard Worker void* _data = hidl_to_rs<void*>(data);
239*4d7e907cSAndroid Build Coastguard Worker size_t _sizeBytes = static_cast<size_t>(sizeBytes);
240*4d7e907cSAndroid Build Coastguard Worker Device::getHal().Allocation1DRead(mContext, _allocation, _xoff, _lod, _count, _data, _sizeBytes);
241*4d7e907cSAndroid Build Coastguard Worker return Void();
242*4d7e907cSAndroid Build Coastguard Worker }
243*4d7e907cSAndroid Build Coastguard Worker
allocationElementRead(Allocation allocation,uint32_t x,uint32_t y,uint32_t z,uint32_t lod,Ptr data,Size sizeBytes,Size compIdx)244*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationElementRead(Allocation allocation, uint32_t x, uint32_t y, uint32_t z, uint32_t lod, Ptr data, Size sizeBytes, Size compIdx) {
245*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
246*4d7e907cSAndroid Build Coastguard Worker uint32_t _x = x;
247*4d7e907cSAndroid Build Coastguard Worker uint32_t _y = y;
248*4d7e907cSAndroid Build Coastguard Worker uint32_t _z = z;
249*4d7e907cSAndroid Build Coastguard Worker uint32_t _lod = lod;
250*4d7e907cSAndroid Build Coastguard Worker void* _data = hidl_to_rs<void*>(data);
251*4d7e907cSAndroid Build Coastguard Worker size_t _sizeBytes = static_cast<size_t>(sizeBytes);
252*4d7e907cSAndroid Build Coastguard Worker size_t _compIdx = static_cast<size_t>(compIdx);
253*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationElementRead(mContext, _allocation, _x, _y, _z, _lod, _data, _sizeBytes, _compIdx);
254*4d7e907cSAndroid Build Coastguard Worker return Void();
255*4d7e907cSAndroid Build Coastguard Worker }
256*4d7e907cSAndroid Build Coastguard Worker
allocation2DRead(Allocation allocation,uint32_t xoff,uint32_t yoff,uint32_t lod,AllocationCubemapFace face,uint32_t w,uint32_t h,Ptr data,Size sizeBytes,Size stride)257*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocation2DRead(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t lod, AllocationCubemapFace face, uint32_t w, uint32_t h, Ptr data, Size sizeBytes, Size stride) {
258*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
259*4d7e907cSAndroid Build Coastguard Worker uint32_t _xoff = xoff;
260*4d7e907cSAndroid Build Coastguard Worker uint32_t _yoff = yoff;
261*4d7e907cSAndroid Build Coastguard Worker uint32_t _lod = lod;
262*4d7e907cSAndroid Build Coastguard Worker RsAllocationCubemapFace _face = static_cast<RsAllocationCubemapFace>(face);
263*4d7e907cSAndroid Build Coastguard Worker uint32_t _w = w;
264*4d7e907cSAndroid Build Coastguard Worker uint32_t _h = h;
265*4d7e907cSAndroid Build Coastguard Worker void* _data = hidl_to_rs<void*>(data);
266*4d7e907cSAndroid Build Coastguard Worker size_t _sizeBytes = static_cast<size_t>(sizeBytes);
267*4d7e907cSAndroid Build Coastguard Worker size_t _stride = static_cast<size_t>(stride);
268*4d7e907cSAndroid Build Coastguard Worker Device::getHal().Allocation2DRead(mContext, _allocation, _xoff, _yoff, _lod, _face, _w, _h, _data, _sizeBytes, _stride);
269*4d7e907cSAndroid Build Coastguard Worker return Void();
270*4d7e907cSAndroid Build Coastguard Worker }
271*4d7e907cSAndroid Build Coastguard Worker
allocation3DRead(Allocation allocation,uint32_t xoff,uint32_t yoff,uint32_t zoff,uint32_t lod,uint32_t w,uint32_t h,uint32_t d,Ptr data,Size sizeBytes,Size stride)272*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocation3DRead(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d, Ptr data, Size sizeBytes, Size stride) {
273*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
274*4d7e907cSAndroid Build Coastguard Worker uint32_t _xoff = xoff;
275*4d7e907cSAndroid Build Coastguard Worker uint32_t _yoff = yoff;
276*4d7e907cSAndroid Build Coastguard Worker uint32_t _zoff = zoff;
277*4d7e907cSAndroid Build Coastguard Worker uint32_t _lod = lod;
278*4d7e907cSAndroid Build Coastguard Worker uint32_t _w = w;
279*4d7e907cSAndroid Build Coastguard Worker uint32_t _h = h;
280*4d7e907cSAndroid Build Coastguard Worker uint32_t _d = d;
281*4d7e907cSAndroid Build Coastguard Worker void* _dataPtr = hidl_to_rs<void*>(data);
282*4d7e907cSAndroid Build Coastguard Worker size_t _sizeBytes = static_cast<size_t>(sizeBytes);
283*4d7e907cSAndroid Build Coastguard Worker size_t _stride = static_cast<size_t>(stride);
284*4d7e907cSAndroid Build Coastguard Worker Device::getHal().Allocation3DRead(mContext, _allocation, _xoff, _yoff, _zoff, _lod, _w, _h, _d, _dataPtr, _sizeBytes, _stride);
285*4d7e907cSAndroid Build Coastguard Worker return Void();
286*4d7e907cSAndroid Build Coastguard Worker }
287*4d7e907cSAndroid Build Coastguard Worker
allocationSyncAll(Allocation allocation,AllocationUsageType usageType)288*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationSyncAll(Allocation allocation, AllocationUsageType usageType) {
289*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
290*4d7e907cSAndroid Build Coastguard Worker RsAllocationUsageType _usageType = static_cast<RsAllocationUsageType>(usageType);
291*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationSyncAll(mContext, _allocation, _usageType);
292*4d7e907cSAndroid Build Coastguard Worker return Void();
293*4d7e907cSAndroid Build Coastguard Worker }
294*4d7e907cSAndroid Build Coastguard Worker
allocationResize1D(Allocation allocation,uint32_t dimX)295*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationResize1D(Allocation allocation, uint32_t dimX) {
296*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
297*4d7e907cSAndroid Build Coastguard Worker uint32_t _dimX = dimX;
298*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationResize1D(mContext, _allocation, _dimX);
299*4d7e907cSAndroid Build Coastguard Worker return Void();
300*4d7e907cSAndroid Build Coastguard Worker }
301*4d7e907cSAndroid Build Coastguard Worker
allocationCopy2DRange(Allocation dstAlloc,uint32_t dstXoff,uint32_t dstYoff,uint32_t dstMip,AllocationCubemapFace dstFace,uint32_t width,uint32_t height,Allocation srcAlloc,uint32_t srcXoff,uint32_t srcYoff,uint32_t srcMip,AllocationCubemapFace srcFace)302*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationCopy2DRange(Allocation dstAlloc, uint32_t dstXoff, uint32_t dstYoff, uint32_t dstMip, AllocationCubemapFace dstFace, uint32_t width, uint32_t height, Allocation srcAlloc, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcMip, AllocationCubemapFace srcFace) {
303*4d7e907cSAndroid Build Coastguard Worker RsAllocation _dstAlloc = hidl_to_rs<RsAllocation>(dstAlloc);
304*4d7e907cSAndroid Build Coastguard Worker uint32_t _dstXoff = dstXoff;
305*4d7e907cSAndroid Build Coastguard Worker uint32_t _dstYoff = dstYoff;
306*4d7e907cSAndroid Build Coastguard Worker uint32_t _dstMip = dstMip;
307*4d7e907cSAndroid Build Coastguard Worker RsAllocationCubemapFace _dstFace = static_cast<RsAllocationCubemapFace>(dstFace);
308*4d7e907cSAndroid Build Coastguard Worker uint32_t _width = width;
309*4d7e907cSAndroid Build Coastguard Worker uint32_t _height = height;
310*4d7e907cSAndroid Build Coastguard Worker RsAllocation _srcAlloc = hidl_to_rs<RsAllocation>(srcAlloc);
311*4d7e907cSAndroid Build Coastguard Worker uint32_t _srcXoff = srcXoff;
312*4d7e907cSAndroid Build Coastguard Worker uint32_t _srcYoff = srcYoff;
313*4d7e907cSAndroid Build Coastguard Worker uint32_t _srcMip = srcMip;
314*4d7e907cSAndroid Build Coastguard Worker RsAllocationCubemapFace _srcFace = static_cast<RsAllocationCubemapFace>(srcFace);
315*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationCopy2DRange(mContext, _dstAlloc, _dstXoff, _dstYoff, _dstMip, _dstFace, _width, _height, _srcAlloc, _srcXoff, _srcYoff, _srcMip, _srcFace);
316*4d7e907cSAndroid Build Coastguard Worker return Void();
317*4d7e907cSAndroid Build Coastguard Worker }
318*4d7e907cSAndroid Build Coastguard Worker
allocationCopy3DRange(Allocation dstAlloc,uint32_t dstXoff,uint32_t dstYoff,uint32_t dstZoff,uint32_t dstMip,uint32_t width,uint32_t height,uint32_t depth,Allocation srcAlloc,uint32_t srcXoff,uint32_t srcYoff,uint32_t srcZoff,uint32_t srcMip)319*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationCopy3DRange(Allocation dstAlloc, uint32_t dstXoff, uint32_t dstYoff, uint32_t dstZoff, uint32_t dstMip, uint32_t width, uint32_t height, uint32_t depth, Allocation srcAlloc, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff, uint32_t srcMip) {
320*4d7e907cSAndroid Build Coastguard Worker RsAllocation _dstAlloc = hidl_to_rs<RsAllocation>(dstAlloc);
321*4d7e907cSAndroid Build Coastguard Worker uint32_t _dstXoff = dstXoff;
322*4d7e907cSAndroid Build Coastguard Worker uint32_t _dstYoff = dstYoff;
323*4d7e907cSAndroid Build Coastguard Worker uint32_t _dstZoff = dstZoff;
324*4d7e907cSAndroid Build Coastguard Worker uint32_t _dstMip = dstMip;
325*4d7e907cSAndroid Build Coastguard Worker uint32_t _width = width;
326*4d7e907cSAndroid Build Coastguard Worker uint32_t _height = height;
327*4d7e907cSAndroid Build Coastguard Worker uint32_t _depth = depth;
328*4d7e907cSAndroid Build Coastguard Worker RsAllocation _srcAlloc = hidl_to_rs<RsAllocation>(srcAlloc);
329*4d7e907cSAndroid Build Coastguard Worker uint32_t _srcXoff = srcXoff;
330*4d7e907cSAndroid Build Coastguard Worker uint32_t _srcYoff = srcYoff;
331*4d7e907cSAndroid Build Coastguard Worker uint32_t _srcZoff = srcZoff;
332*4d7e907cSAndroid Build Coastguard Worker uint32_t _srcMip = srcMip;
333*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationCopy3DRange(mContext, _dstAlloc, _dstXoff, _dstYoff, _dstZoff, _dstMip, _width, _height, _depth, _srcAlloc, _srcXoff, _srcYoff, _srcZoff, _srcMip);
334*4d7e907cSAndroid Build Coastguard Worker return Void();
335*4d7e907cSAndroid Build Coastguard Worker }
336*4d7e907cSAndroid Build Coastguard Worker
allocationIoSend(Allocation allocation)337*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationIoSend(Allocation allocation) {
338*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
339*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationIoSend(mContext, _allocation);
340*4d7e907cSAndroid Build Coastguard Worker return Void();
341*4d7e907cSAndroid Build Coastguard Worker }
342*4d7e907cSAndroid Build Coastguard Worker
allocationIoReceive(Allocation allocation)343*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationIoReceive(Allocation allocation) {
344*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
345*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AllocationIoReceive(mContext, _allocation);
346*4d7e907cSAndroid Build Coastguard Worker return Void();
347*4d7e907cSAndroid Build Coastguard Worker }
348*4d7e907cSAndroid Build Coastguard Worker
allocationGetPointer(Allocation allocation,uint32_t lod,AllocationCubemapFace face,uint32_t z,allocationGetPointer_cb _hidl_cb)349*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::allocationGetPointer(Allocation allocation, uint32_t lod, AllocationCubemapFace face, uint32_t z, allocationGetPointer_cb _hidl_cb) {
350*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
351*4d7e907cSAndroid Build Coastguard Worker uint32_t _lod = lod;
352*4d7e907cSAndroid Build Coastguard Worker RsAllocationCubemapFace _face = static_cast<RsAllocationCubemapFace>(face);
353*4d7e907cSAndroid Build Coastguard Worker uint32_t _z = z;
354*4d7e907cSAndroid Build Coastguard Worker uint32_t _array = 0;
355*4d7e907cSAndroid Build Coastguard Worker size_t _stride = 0;
356*4d7e907cSAndroid Build Coastguard Worker void* _dataPtr = Device::getHal().AllocationGetPointer(mContext, _allocation, _lod, _face, _z, _array, &_stride, sizeof(size_t));
357*4d7e907cSAndroid Build Coastguard Worker Ptr dataPtr = reinterpret_cast<Ptr>(_dataPtr);
358*4d7e907cSAndroid Build Coastguard Worker Size stride = static_cast<Size>(_stride);
359*4d7e907cSAndroid Build Coastguard Worker _hidl_cb(dataPtr, stride);
360*4d7e907cSAndroid Build Coastguard Worker return Void();
361*4d7e907cSAndroid Build Coastguard Worker }
362*4d7e907cSAndroid Build Coastguard Worker
elementGetNativeMetadata(Element element,elementGetNativeMetadata_cb _hidl_cb)363*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::elementGetNativeMetadata(Element element, elementGetNativeMetadata_cb _hidl_cb) {
364*4d7e907cSAndroid Build Coastguard Worker RsElement _element = hidl_to_rs<RsElement>(element);
365*4d7e907cSAndroid Build Coastguard Worker std::vector<uint32_t> _elemData(5);
366*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ElementGetNativeData(mContext, _element, _elemData.data(), _elemData.size());
367*4d7e907cSAndroid Build Coastguard Worker hidl_vec<uint32_t> elemData = _elemData;
368*4d7e907cSAndroid Build Coastguard Worker _hidl_cb(elemData);
369*4d7e907cSAndroid Build Coastguard Worker return Void();
370*4d7e907cSAndroid Build Coastguard Worker }
371*4d7e907cSAndroid Build Coastguard Worker
elementGetSubElements(Element element,Size numSubElem,elementGetSubElements_cb _hidl_cb)372*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::elementGetSubElements(Element element, Size numSubElem, elementGetSubElements_cb _hidl_cb) {
373*4d7e907cSAndroid Build Coastguard Worker RsElement _element = hidl_to_rs<RsElement>(element);
374*4d7e907cSAndroid Build Coastguard Worker uint32_t _numSubElem = static_cast<uint32_t>(numSubElem);
375*4d7e907cSAndroid Build Coastguard Worker std::vector<uintptr_t> _ids(_numSubElem);
376*4d7e907cSAndroid Build Coastguard Worker std::vector<const char*> _names(_numSubElem);
377*4d7e907cSAndroid Build Coastguard Worker std::vector<size_t> _arraySizes(_numSubElem);
378*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ElementGetSubElements(mContext, _element, _ids.data(), _names.data(), _arraySizes.data(), _numSubElem);
379*4d7e907cSAndroid Build Coastguard Worker hidl_vec<Element> ids = rs_to_hidl<Element>(_ids, [](uintptr_t val) { return static_cast<Element>(val); });
380*4d7e907cSAndroid Build Coastguard Worker hidl_vec<hidl_string> names = rs_to_hidl<hidl_string>(_names, [](const char* val) { return val; });
381*4d7e907cSAndroid Build Coastguard Worker hidl_vec<Size> arraySizes = rs_to_hidl<Size>(_arraySizes, [](size_t val) { return static_cast<Size>(val); });
382*4d7e907cSAndroid Build Coastguard Worker _hidl_cb(ids, names, arraySizes);
383*4d7e907cSAndroid Build Coastguard Worker return Void();
384*4d7e907cSAndroid Build Coastguard Worker }
385*4d7e907cSAndroid Build Coastguard Worker
elementCreate(DataType dt,DataKind dk,bool norm,uint32_t size)386*4d7e907cSAndroid Build Coastguard Worker Return<Element> Context::elementCreate(DataType dt, DataKind dk, bool norm, uint32_t size) {
387*4d7e907cSAndroid Build Coastguard Worker RsDataType _dt = static_cast<RsDataType>(dt);
388*4d7e907cSAndroid Build Coastguard Worker RsDataKind _dk = static_cast<RsDataKind>(dk);
389*4d7e907cSAndroid Build Coastguard Worker bool _norm = norm;
390*4d7e907cSAndroid Build Coastguard Worker uint32_t _size = size;
391*4d7e907cSAndroid Build Coastguard Worker RsElement _element = Device::getHal().ElementCreate(mContext, _dt, _dk, _norm, _size);
392*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<Element>(_element);
393*4d7e907cSAndroid Build Coastguard Worker }
394*4d7e907cSAndroid Build Coastguard Worker
elementComplexCreate(const hidl_vec<Element> & eins,const hidl_vec<hidl_string> & names,const hidl_vec<Size> & arraySizes)395*4d7e907cSAndroid Build Coastguard Worker Return<Element> Context::elementComplexCreate(const hidl_vec<Element>& eins, const hidl_vec<hidl_string>& names, const hidl_vec<Size>& arraySizes) {
396*4d7e907cSAndroid Build Coastguard Worker std::vector<RsElement> _eins = hidl_to_rs<RsElement>(eins, [](Element val) { return hidl_to_rs<RsElement>(val); });
397*4d7e907cSAndroid Build Coastguard Worker std::vector<const char*> _namesPtr = hidl_to_rs<const char*>(names, [](const hidl_string& val) { return val.c_str(); });
398*4d7e907cSAndroid Build Coastguard Worker std::vector<size_t> _nameLengthsPtr = hidl_to_rs<size_t>(names, [](const hidl_string& val) { return val.size(); });
399*4d7e907cSAndroid Build Coastguard Worker std::vector<uint32_t> _arraySizes = hidl_to_rs<uint32_t>(arraySizes, [](Size val) { return static_cast<uint32_t>(val); });
400*4d7e907cSAndroid Build Coastguard Worker RsElement _element = Device::getHal().ElementCreate2(mContext, _eins.data(), _eins.size(), _namesPtr.data(), _namesPtr.size(), _nameLengthsPtr.data(), _arraySizes.data(), _arraySizes.size());
401*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<Element>(_element);
402*4d7e907cSAndroid Build Coastguard Worker }
403*4d7e907cSAndroid Build Coastguard Worker
typeGetNativeMetadata(Type type,typeGetNativeMetadata_cb _hidl_cb)404*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::typeGetNativeMetadata(Type type, typeGetNativeMetadata_cb _hidl_cb) {
405*4d7e907cSAndroid Build Coastguard Worker RsType _type = hidl_to_rs<RsType>(type);
406*4d7e907cSAndroid Build Coastguard Worker std::vector<uintptr_t> _metadata(6);
407*4d7e907cSAndroid Build Coastguard Worker Device::getHal().TypeGetNativeData(mContext, _type, _metadata.data(), _metadata.size());
408*4d7e907cSAndroid Build Coastguard Worker hidl_vec<OpaqueHandle> metadata = rs_to_hidl<OpaqueHandle>(_metadata, [](uintptr_t val) { return static_cast<OpaqueHandle>(val); });
409*4d7e907cSAndroid Build Coastguard Worker _hidl_cb(metadata);
410*4d7e907cSAndroid Build Coastguard Worker return Void();
411*4d7e907cSAndroid Build Coastguard Worker }
412*4d7e907cSAndroid Build Coastguard Worker
typeCreate(Element element,uint32_t dimX,uint32_t dimY,uint32_t dimZ,bool mipmaps,bool faces,YuvFormat yuv)413*4d7e907cSAndroid Build Coastguard Worker Return<Type> Context::typeCreate(Element element, uint32_t dimX, uint32_t dimY, uint32_t dimZ, bool mipmaps, bool faces, YuvFormat yuv) {
414*4d7e907cSAndroid Build Coastguard Worker RsElement _element = hidl_to_rs<RsElement>(element);
415*4d7e907cSAndroid Build Coastguard Worker uint32_t _dimX = dimX;
416*4d7e907cSAndroid Build Coastguard Worker uint32_t _dimY = dimY;
417*4d7e907cSAndroid Build Coastguard Worker uint32_t _dimZ = dimZ;
418*4d7e907cSAndroid Build Coastguard Worker bool _mipmaps = mipmaps;
419*4d7e907cSAndroid Build Coastguard Worker bool _faces = faces;
420*4d7e907cSAndroid Build Coastguard Worker RsYuvFormat _yuv = static_cast<RsYuvFormat>(yuv);
421*4d7e907cSAndroid Build Coastguard Worker RsType _type = Device::getHal().TypeCreate(mContext, _element, _dimX, _dimY, _dimZ, _mipmaps, _faces, _yuv);
422*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<Type>(_type);
423*4d7e907cSAndroid Build Coastguard Worker }
424*4d7e907cSAndroid Build Coastguard Worker
contextDestroy()425*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::contextDestroy() {
426*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ContextDestroy(mContext);
427*4d7e907cSAndroid Build Coastguard Worker mContext = nullptr;
428*4d7e907cSAndroid Build Coastguard Worker return Void();
429*4d7e907cSAndroid Build Coastguard Worker }
430*4d7e907cSAndroid Build Coastguard Worker
contextGetMessage(Ptr data,Size size,contextGetMessage_cb _hidl_cb)431*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::contextGetMessage(Ptr data, Size size, contextGetMessage_cb _hidl_cb) {
432*4d7e907cSAndroid Build Coastguard Worker void* _data = hidl_to_rs<void*>(data);
433*4d7e907cSAndroid Build Coastguard Worker size_t _size = static_cast<size_t>(size);
434*4d7e907cSAndroid Build Coastguard Worker size_t _receiveLen = 0;
435*4d7e907cSAndroid Build Coastguard Worker uint32_t _subID = 0;
436*4d7e907cSAndroid Build Coastguard Worker RsMessageToClientType _messageType = Device::getHal().ContextGetMessage(mContext, _data, _size, &_receiveLen, sizeof(size_t), &_subID, sizeof(uint32_t));
437*4d7e907cSAndroid Build Coastguard Worker MessageToClientType messageType = static_cast<MessageToClientType>(_messageType);
438*4d7e907cSAndroid Build Coastguard Worker Size receiveLen = static_cast<Size>(_receiveLen);
439*4d7e907cSAndroid Build Coastguard Worker _hidl_cb(messageType, receiveLen);
440*4d7e907cSAndroid Build Coastguard Worker return Void();
441*4d7e907cSAndroid Build Coastguard Worker }
442*4d7e907cSAndroid Build Coastguard Worker
contextPeekMessage(contextPeekMessage_cb _hidl_cb)443*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::contextPeekMessage(contextPeekMessage_cb _hidl_cb) {
444*4d7e907cSAndroid Build Coastguard Worker size_t _receiveLen = 0;
445*4d7e907cSAndroid Build Coastguard Worker uint32_t _subID = 0;
446*4d7e907cSAndroid Build Coastguard Worker RsMessageToClientType _messageType = Device::getHal().ContextPeekMessage(mContext, &_receiveLen, sizeof(size_t), &_subID, sizeof(uint32_t));
447*4d7e907cSAndroid Build Coastguard Worker MessageToClientType messageType = static_cast<MessageToClientType>(_messageType);
448*4d7e907cSAndroid Build Coastguard Worker Size receiveLen = static_cast<Size>(_receiveLen);
449*4d7e907cSAndroid Build Coastguard Worker uint32_t subID = _subID;
450*4d7e907cSAndroid Build Coastguard Worker _hidl_cb(messageType, receiveLen, subID);
451*4d7e907cSAndroid Build Coastguard Worker return Void();
452*4d7e907cSAndroid Build Coastguard Worker }
453*4d7e907cSAndroid Build Coastguard Worker
contextSendMessage(uint32_t id,const hidl_vec<uint8_t> & data)454*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::contextSendMessage(uint32_t id, const hidl_vec<uint8_t>& data) {
455*4d7e907cSAndroid Build Coastguard Worker uint32_t _id = id;
456*4d7e907cSAndroid Build Coastguard Worker const uint8_t* _dataPtr = data.data();
457*4d7e907cSAndroid Build Coastguard Worker size_t _dataSize = data.size();
458*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ContextSendMessage(mContext, _id, _dataPtr, _dataSize);
459*4d7e907cSAndroid Build Coastguard Worker return Void();
460*4d7e907cSAndroid Build Coastguard Worker }
461*4d7e907cSAndroid Build Coastguard Worker
contextInitToClient()462*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::contextInitToClient() {
463*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ContextInitToClient(mContext);
464*4d7e907cSAndroid Build Coastguard Worker return Void();
465*4d7e907cSAndroid Build Coastguard Worker }
466*4d7e907cSAndroid Build Coastguard Worker
contextDeinitToClient()467*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::contextDeinitToClient() {
468*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ContextDeinitToClient(mContext);
469*4d7e907cSAndroid Build Coastguard Worker return Void();
470*4d7e907cSAndroid Build Coastguard Worker }
471*4d7e907cSAndroid Build Coastguard Worker
contextFinish()472*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::contextFinish() {
473*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ContextFinish(mContext);
474*4d7e907cSAndroid Build Coastguard Worker return Void();
475*4d7e907cSAndroid Build Coastguard Worker }
476*4d7e907cSAndroid Build Coastguard Worker
contextLog()477*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::contextLog() {
478*4d7e907cSAndroid Build Coastguard Worker uint32_t _bits = 0;
479*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ContextDump(mContext, _bits);
480*4d7e907cSAndroid Build Coastguard Worker return Void();
481*4d7e907cSAndroid Build Coastguard Worker }
482*4d7e907cSAndroid Build Coastguard Worker
contextSetPriority(ThreadPriorities priority)483*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::contextSetPriority(ThreadPriorities priority) {
484*4d7e907cSAndroid Build Coastguard Worker RsThreadPriorities _priority = static_cast<RsThreadPriorities>(priority);
485*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ContextSetPriority(mContext, _priority);
486*4d7e907cSAndroid Build Coastguard Worker return Void();
487*4d7e907cSAndroid Build Coastguard Worker }
488*4d7e907cSAndroid Build Coastguard Worker
contextSetCacheDir(const hidl_string & cacheDir)489*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::contextSetCacheDir(const hidl_string& cacheDir) {
490*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ContextSetCacheDir(mContext, cacheDir.c_str(), cacheDir.size());
491*4d7e907cSAndroid Build Coastguard Worker return Void();
492*4d7e907cSAndroid Build Coastguard Worker }
493*4d7e907cSAndroid Build Coastguard Worker
assignName(ObjectBase obj,const hidl_string & name)494*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::assignName(ObjectBase obj, const hidl_string& name) {
495*4d7e907cSAndroid Build Coastguard Worker RsObjectBase _obj = hidl_to_rs<RsObjectBase>(obj);
496*4d7e907cSAndroid Build Coastguard Worker const hidl_string& _name = name;
497*4d7e907cSAndroid Build Coastguard Worker Device::getHal().AssignName(mContext, _obj, _name.c_str(), _name.size());
498*4d7e907cSAndroid Build Coastguard Worker return Void();
499*4d7e907cSAndroid Build Coastguard Worker }
500*4d7e907cSAndroid Build Coastguard Worker
getName(ObjectBase obj,getName_cb _hidl_cb)501*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::getName(ObjectBase obj, getName_cb _hidl_cb) {
502*4d7e907cSAndroid Build Coastguard Worker void* _obj = hidl_to_rs<void*>(obj);
503*4d7e907cSAndroid Build Coastguard Worker const char* _name = nullptr;
504*4d7e907cSAndroid Build Coastguard Worker Device::getHal().GetName(mContext, _obj, &_name);
505*4d7e907cSAndroid Build Coastguard Worker hidl_string name = _name;
506*4d7e907cSAndroid Build Coastguard Worker _hidl_cb(name);
507*4d7e907cSAndroid Build Coastguard Worker return Void();
508*4d7e907cSAndroid Build Coastguard Worker }
509*4d7e907cSAndroid Build Coastguard Worker
closureCreate(ScriptKernelID kernelID,Allocation returnValue,const hidl_vec<ScriptFieldID> & fieldIDS,const hidl_vec<int64_t> & values,const hidl_vec<int32_t> & sizes,const hidl_vec<Closure> & depClosures,const hidl_vec<ScriptFieldID> & depFieldIDS)510*4d7e907cSAndroid Build Coastguard Worker Return<Closure> Context::closureCreate(ScriptKernelID kernelID, Allocation returnValue, const hidl_vec<ScriptFieldID>& fieldIDS, const hidl_vec<int64_t>& values, const hidl_vec<int32_t>& sizes, const hidl_vec<Closure>& depClosures, const hidl_vec<ScriptFieldID>& depFieldIDS) {
511*4d7e907cSAndroid Build Coastguard Worker RsScriptKernelID _kernelID = hidl_to_rs<RsScriptKernelID>(kernelID);
512*4d7e907cSAndroid Build Coastguard Worker RsAllocation _returnValue = hidl_to_rs<RsAllocation>(returnValue);
513*4d7e907cSAndroid Build Coastguard Worker std::vector<RsScriptFieldID> _fieldIDS = hidl_to_rs<RsScriptFieldID>(fieldIDS, [](ScriptFieldID val) { return hidl_to_rs<RsScriptFieldID>(val); });
514*4d7e907cSAndroid Build Coastguard Worker int64_t* _valuesPtr = const_cast<int64_t*>(values.data());
515*4d7e907cSAndroid Build Coastguard Worker size_t _valuesLength = values.size();
516*4d7e907cSAndroid Build Coastguard Worker std::vector<int> _sizes = hidl_to_rs<int>(sizes, [](int32_t val) { return static_cast<int>(val); });
517*4d7e907cSAndroid Build Coastguard Worker std::vector<RsClosure> _depClosures = hidl_to_rs<RsClosure>(depClosures, [](Closure val) { return hidl_to_rs<RsClosure>(val); });
518*4d7e907cSAndroid Build Coastguard Worker std::vector<RsScriptFieldID> _depFieldIDS = hidl_to_rs<RsScriptFieldID>(depFieldIDS, [](ScriptFieldID val) { return hidl_to_rs<RsScriptFieldID>(val); });
519*4d7e907cSAndroid Build Coastguard Worker RsClosure _closure = Device::getHal().ClosureCreate(mContext, _kernelID, _returnValue, _fieldIDS.data(), _fieldIDS.size(), _valuesPtr, _valuesLength, _sizes.data(), _sizes.size(), _depClosures.data(), _depClosures.size(), _depFieldIDS.data(), _depFieldIDS.size());
520*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<Closure>(_closure);
521*4d7e907cSAndroid Build Coastguard Worker }
522*4d7e907cSAndroid Build Coastguard Worker
invokeClosureCreate(ScriptInvokeID invokeID,const hidl_vec<uint8_t> & params,const hidl_vec<ScriptFieldID> & fieldIDS,const hidl_vec<int64_t> & values,const hidl_vec<int32_t> & sizes)523*4d7e907cSAndroid Build Coastguard Worker Return<Closure> Context::invokeClosureCreate(ScriptInvokeID invokeID, const hidl_vec<uint8_t>& params, const hidl_vec<ScriptFieldID>& fieldIDS, const hidl_vec<int64_t>& values, const hidl_vec<int32_t>& sizes) {
524*4d7e907cSAndroid Build Coastguard Worker RsScriptInvokeID _invokeID = hidl_to_rs<RsScriptInvokeID>(invokeID);
525*4d7e907cSAndroid Build Coastguard Worker const void* _paramsPtr = params.data();
526*4d7e907cSAndroid Build Coastguard Worker size_t _paramsSize = params.size();
527*4d7e907cSAndroid Build Coastguard Worker std::vector<RsScriptFieldID> _fieldIDS = hidl_to_rs<RsScriptFieldID>(fieldIDS, [](ScriptFieldID val) { return hidl_to_rs<RsScriptFieldID>(val); });
528*4d7e907cSAndroid Build Coastguard Worker const int64_t* _valuesPtr = values.data();
529*4d7e907cSAndroid Build Coastguard Worker size_t _valuesLength = values.size();
530*4d7e907cSAndroid Build Coastguard Worker std::vector<int> _sizes = hidl_to_rs<int>(sizes, [](int32_t val) { return static_cast<int>(val); });
531*4d7e907cSAndroid Build Coastguard Worker RsClosure _closure = Device::getHal().InvokeClosureCreate(mContext, _invokeID, _paramsPtr, _paramsSize, _fieldIDS.data(), _fieldIDS.size(), _valuesPtr, _valuesLength, _sizes.data(), _sizes.size());
532*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<Closure>(_closure);
533*4d7e907cSAndroid Build Coastguard Worker }
534*4d7e907cSAndroid Build Coastguard Worker
closureSetArg(Closure closure,uint32_t index,Ptr value,int32_t size)535*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::closureSetArg(Closure closure, uint32_t index, Ptr value, int32_t size) {
536*4d7e907cSAndroid Build Coastguard Worker RsClosure _closure = hidl_to_rs<RsClosure>(closure);
537*4d7e907cSAndroid Build Coastguard Worker uint32_t _index = index;
538*4d7e907cSAndroid Build Coastguard Worker uintptr_t _value = hidl_to_rs<uintptr_t>(value);
539*4d7e907cSAndroid Build Coastguard Worker int _size = static_cast<int>(size);
540*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ClosureSetArg(mContext, _closure, _index, _value, _size);
541*4d7e907cSAndroid Build Coastguard Worker return Void();
542*4d7e907cSAndroid Build Coastguard Worker }
543*4d7e907cSAndroid Build Coastguard Worker
closureSetGlobal(Closure closure,ScriptFieldID fieldID,int64_t value,int32_t size)544*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::closureSetGlobal(Closure closure, ScriptFieldID fieldID, int64_t value, int32_t size) {
545*4d7e907cSAndroid Build Coastguard Worker RsClosure _closure = hidl_to_rs<RsClosure>(closure);
546*4d7e907cSAndroid Build Coastguard Worker RsScriptFieldID _fieldID = hidl_to_rs<RsScriptFieldID>(fieldID);
547*4d7e907cSAndroid Build Coastguard Worker int64_t _value = value;
548*4d7e907cSAndroid Build Coastguard Worker int _size = static_cast<int>(size);
549*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ClosureSetGlobal(mContext, _closure, _fieldID, _value, _size);
550*4d7e907cSAndroid Build Coastguard Worker return Void();
551*4d7e907cSAndroid Build Coastguard Worker }
552*4d7e907cSAndroid Build Coastguard Worker
scriptKernelIDCreate(Script script,int32_t slot,int32_t sig)553*4d7e907cSAndroid Build Coastguard Worker Return<ScriptKernelID> Context::scriptKernelIDCreate(Script script, int32_t slot, int32_t sig) {
554*4d7e907cSAndroid Build Coastguard Worker RsScript _script = hidl_to_rs<RsScript>(script);
555*4d7e907cSAndroid Build Coastguard Worker int _slot = static_cast<int>(slot);
556*4d7e907cSAndroid Build Coastguard Worker int _sig = static_cast<int>(sig);
557*4d7e907cSAndroid Build Coastguard Worker RsScriptKernelID _scriptKernelID = Device::getHal().ScriptKernelIDCreate(mContext, _script, _slot, _sig);
558*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<ScriptKernelID>(_scriptKernelID);
559*4d7e907cSAndroid Build Coastguard Worker }
560*4d7e907cSAndroid Build Coastguard Worker
scriptInvokeIDCreate(Script script,int32_t slot)561*4d7e907cSAndroid Build Coastguard Worker Return<ScriptInvokeID> Context::scriptInvokeIDCreate(Script script, int32_t slot) {
562*4d7e907cSAndroid Build Coastguard Worker RsScript _script = hidl_to_rs<RsScript>(script);
563*4d7e907cSAndroid Build Coastguard Worker int _slot = static_cast<int>(slot);
564*4d7e907cSAndroid Build Coastguard Worker RsScriptInvokeID _scriptInvokeID = Device::getHal().ScriptInvokeIDCreate(mContext, _script, _slot);
565*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<ScriptInvokeID>(_scriptInvokeID);
566*4d7e907cSAndroid Build Coastguard Worker }
567*4d7e907cSAndroid Build Coastguard Worker
scriptFieldIDCreate(Script script,int32_t slot)568*4d7e907cSAndroid Build Coastguard Worker Return<ScriptFieldID> Context::scriptFieldIDCreate(Script script, int32_t slot) {
569*4d7e907cSAndroid Build Coastguard Worker RsScript _script = hidl_to_rs<RsScript>(script);
570*4d7e907cSAndroid Build Coastguard Worker int _slot = static_cast<int>(slot);
571*4d7e907cSAndroid Build Coastguard Worker RsScriptFieldID _scriptFieldID = Device::getHal().ScriptFieldIDCreate(mContext, _script, _slot);
572*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<ScriptFieldID>(_scriptFieldID);
573*4d7e907cSAndroid Build Coastguard Worker }
574*4d7e907cSAndroid Build Coastguard Worker
scriptGroupCreate(const hidl_vec<ScriptKernelID> & kernels,const hidl_vec<ScriptKernelID> & srcK,const hidl_vec<ScriptKernelID> & dstK,const hidl_vec<ScriptFieldID> & dstF,const hidl_vec<Type> & types)575*4d7e907cSAndroid Build Coastguard Worker Return<ScriptGroup> Context::scriptGroupCreate(const hidl_vec<ScriptKernelID>& kernels, const hidl_vec<ScriptKernelID>& srcK, const hidl_vec<ScriptKernelID>& dstK, const hidl_vec<ScriptFieldID>& dstF, const hidl_vec<Type>& types) {
576*4d7e907cSAndroid Build Coastguard Worker std::vector<RsScriptKernelID> _kernels = hidl_to_rs<RsScriptKernelID>(kernels, [](ScriptFieldID val) { return hidl_to_rs<RsScriptKernelID>(val); });
577*4d7e907cSAndroid Build Coastguard Worker std::vector<RsScriptKernelID> _srcK = hidl_to_rs<RsScriptKernelID>(srcK, [](ScriptFieldID val) { return hidl_to_rs<RsScriptKernelID>(val); });
578*4d7e907cSAndroid Build Coastguard Worker std::vector<RsScriptKernelID> _dstK = hidl_to_rs<RsScriptKernelID>(dstK, [](ScriptFieldID val) { return hidl_to_rs<RsScriptKernelID>(val); });
579*4d7e907cSAndroid Build Coastguard Worker std::vector<RsScriptFieldID> _dstF = hidl_to_rs<RsScriptFieldID>(dstF, [](ScriptFieldID val) { return hidl_to_rs<RsScriptFieldID>(val); });
580*4d7e907cSAndroid Build Coastguard Worker std::vector<RsType> _types = hidl_to_rs<RsType>(types, [](Type val) { return hidl_to_rs<RsType>(val); });
581*4d7e907cSAndroid Build Coastguard Worker RsScriptGroup _scriptGroup = Device::getHal().ScriptGroupCreate(mContext, _kernels.data(), _kernels.size() * sizeof(RsScriptKernelID), _srcK.data(), _srcK.size() * sizeof(RsScriptKernelID), _dstK.data(), _dstK.size() * sizeof(RsScriptKernelID), _dstF.data(), _dstF.size() * sizeof(RsScriptFieldID), _types.data(), _types.size() * sizeof(RsType));
582*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<ScriptGroup>(_scriptGroup);
583*4d7e907cSAndroid Build Coastguard Worker }
584*4d7e907cSAndroid Build Coastguard Worker
scriptGroup2Create(const hidl_string & name,const hidl_string & cacheDir,const hidl_vec<Closure> & closures)585*4d7e907cSAndroid Build Coastguard Worker Return<ScriptGroup2> Context::scriptGroup2Create(const hidl_string& name, const hidl_string& cacheDir, const hidl_vec<Closure>& closures) {
586*4d7e907cSAndroid Build Coastguard Worker const hidl_string& _name = name;
587*4d7e907cSAndroid Build Coastguard Worker const hidl_string& _cacheDir = cacheDir;
588*4d7e907cSAndroid Build Coastguard Worker std::vector<RsClosure> _closures = hidl_to_rs<RsClosure>(closures, [](Closure val) { return hidl_to_rs<RsClosure>(val); });
589*4d7e907cSAndroid Build Coastguard Worker RsScriptGroup2 _scriptGroup2 = Device::getHal().ScriptGroup2Create(mContext, _name.c_str(), _name.size(), _cacheDir.c_str(), _cacheDir.size(), _closures.data(), _closures.size());
590*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<ScriptGroup2>(_scriptGroup2);
591*4d7e907cSAndroid Build Coastguard Worker }
592*4d7e907cSAndroid Build Coastguard Worker
scriptGroupSetOutput(ScriptGroup sg,ScriptKernelID kid,Allocation alloc)593*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptGroupSetOutput(ScriptGroup sg, ScriptKernelID kid, Allocation alloc) {
594*4d7e907cSAndroid Build Coastguard Worker RsScriptGroup _sg = hidl_to_rs<RsScriptGroup>(sg);
595*4d7e907cSAndroid Build Coastguard Worker RsScriptKernelID _kid = hidl_to_rs<RsScriptKernelID>(kid);
596*4d7e907cSAndroid Build Coastguard Worker RsAllocation _alloc = hidl_to_rs<RsAllocation>(alloc);
597*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptGroupSetOutput(mContext, _sg, _kid, _alloc);
598*4d7e907cSAndroid Build Coastguard Worker return Void();
599*4d7e907cSAndroid Build Coastguard Worker }
600*4d7e907cSAndroid Build Coastguard Worker
scriptGroupSetInput(ScriptGroup sg,ScriptKernelID kid,Allocation alloc)601*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptGroupSetInput(ScriptGroup sg, ScriptKernelID kid, Allocation alloc) {
602*4d7e907cSAndroid Build Coastguard Worker RsScriptGroup _sg = hidl_to_rs<RsScriptGroup>(sg);
603*4d7e907cSAndroid Build Coastguard Worker RsScriptKernelID _kid = hidl_to_rs<RsScriptKernelID>(kid);
604*4d7e907cSAndroid Build Coastguard Worker RsAllocation _alloc = hidl_to_rs<RsAllocation>(alloc);
605*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptGroupSetInput(mContext, _sg, _kid, _alloc);
606*4d7e907cSAndroid Build Coastguard Worker return Void();
607*4d7e907cSAndroid Build Coastguard Worker }
608*4d7e907cSAndroid Build Coastguard Worker
scriptGroupExecute(ScriptGroup sg)609*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptGroupExecute(ScriptGroup sg) {
610*4d7e907cSAndroid Build Coastguard Worker RsScriptGroup _sg = hidl_to_rs<RsScriptGroup>(sg);
611*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptGroupExecute(mContext, _sg);
612*4d7e907cSAndroid Build Coastguard Worker return Void();
613*4d7e907cSAndroid Build Coastguard Worker }
614*4d7e907cSAndroid Build Coastguard Worker
objDestroy(ObjectBase obj)615*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::objDestroy(ObjectBase obj) {
616*4d7e907cSAndroid Build Coastguard Worker RsAsyncVoidPtr _obj = hidl_to_rs<RsAsyncVoidPtr>(obj);
617*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ObjDestroy(mContext, _obj);
618*4d7e907cSAndroid Build Coastguard Worker return Void();
619*4d7e907cSAndroid Build Coastguard Worker }
620*4d7e907cSAndroid Build Coastguard Worker
samplerCreate(SamplerValue magFilter,SamplerValue minFilter,SamplerValue wrapS,SamplerValue wrapT,SamplerValue wrapR,float aniso)621*4d7e907cSAndroid Build Coastguard Worker Return<Sampler> Context::samplerCreate(SamplerValue magFilter, SamplerValue minFilter, SamplerValue wrapS, SamplerValue wrapT, SamplerValue wrapR, float aniso) {
622*4d7e907cSAndroid Build Coastguard Worker RsSamplerValue _magFilter = static_cast<RsSamplerValue>(magFilter);
623*4d7e907cSAndroid Build Coastguard Worker RsSamplerValue _minFilter = static_cast<RsSamplerValue>(minFilter);
624*4d7e907cSAndroid Build Coastguard Worker RsSamplerValue _wrapS = static_cast<RsSamplerValue>(wrapS);
625*4d7e907cSAndroid Build Coastguard Worker RsSamplerValue _wrapT = static_cast<RsSamplerValue>(wrapT);
626*4d7e907cSAndroid Build Coastguard Worker RsSamplerValue _wrapR = static_cast<RsSamplerValue>(wrapR);
627*4d7e907cSAndroid Build Coastguard Worker float _aniso = static_cast<float>(aniso);
628*4d7e907cSAndroid Build Coastguard Worker RsSampler _sampler = Device::getHal().SamplerCreate(mContext, _magFilter, _minFilter, _wrapS, _wrapT, _wrapR, _aniso);
629*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<Sampler>(_sampler);
630*4d7e907cSAndroid Build Coastguard Worker }
631*4d7e907cSAndroid Build Coastguard Worker
scriptBindAllocation(Script script,Allocation allocation,uint32_t slot)632*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptBindAllocation(Script script, Allocation allocation, uint32_t slot) {
633*4d7e907cSAndroid Build Coastguard Worker RsScript _script = hidl_to_rs<RsScript>(script);
634*4d7e907cSAndroid Build Coastguard Worker RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
635*4d7e907cSAndroid Build Coastguard Worker uint32_t _slot = slot;
636*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptBindAllocation(mContext, _script, _allocation, _slot);
637*4d7e907cSAndroid Build Coastguard Worker return Void();
638*4d7e907cSAndroid Build Coastguard Worker }
639*4d7e907cSAndroid Build Coastguard Worker
scriptSetTimeZone(Script script,const hidl_string & timeZone)640*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptSetTimeZone(Script script, const hidl_string& timeZone) {
641*4d7e907cSAndroid Build Coastguard Worker RsScript _script = hidl_to_rs<RsScript>(script);
642*4d7e907cSAndroid Build Coastguard Worker const hidl_string& _timeZone = timeZone;
643*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptSetTimeZone(mContext, _script, _timeZone.c_str(), _timeZone.size());
644*4d7e907cSAndroid Build Coastguard Worker return Void();
645*4d7e907cSAndroid Build Coastguard Worker }
646*4d7e907cSAndroid Build Coastguard Worker
scriptInvoke(Script vs,uint32_t slot)647*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptInvoke(Script vs, uint32_t slot) {
648*4d7e907cSAndroid Build Coastguard Worker RsScript _vs = hidl_to_rs<RsScript>(vs);
649*4d7e907cSAndroid Build Coastguard Worker uint32_t _slot = slot;
650*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptInvoke(mContext, _vs, _slot);
651*4d7e907cSAndroid Build Coastguard Worker return Void();
652*4d7e907cSAndroid Build Coastguard Worker }
653*4d7e907cSAndroid Build Coastguard Worker
scriptInvokeV(Script vs,uint32_t slot,const hidl_vec<uint8_t> & data)654*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptInvokeV(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data) {
655*4d7e907cSAndroid Build Coastguard Worker RsScript _vs = hidl_to_rs<RsScript>(vs);
656*4d7e907cSAndroid Build Coastguard Worker uint32_t _slot = slot;
657*4d7e907cSAndroid Build Coastguard Worker const void* _dataPtr = hidl_to_rs<const void*>(data.data());
658*4d7e907cSAndroid Build Coastguard Worker size_t _len = data.size();
659*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptInvokeV(mContext, _vs, _slot, _dataPtr, _len);
660*4d7e907cSAndroid Build Coastguard Worker return Void();
661*4d7e907cSAndroid Build Coastguard Worker }
662*4d7e907cSAndroid Build Coastguard Worker
scriptForEach(Script vs,uint32_t slot,const hidl_vec<Allocation> & vains,Allocation vaout,const hidl_vec<uint8_t> & params,Ptr sc)663*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptForEach(Script vs, uint32_t slot, const hidl_vec<Allocation>& vains, Allocation vaout, const hidl_vec<uint8_t>& params, Ptr sc) {
664*4d7e907cSAndroid Build Coastguard Worker RsScript _vs = hidl_to_rs<RsScript>(vs);
665*4d7e907cSAndroid Build Coastguard Worker uint32_t _slot = slot;
666*4d7e907cSAndroid Build Coastguard Worker std::vector<RsAllocation> _vains = hidl_to_rs<RsAllocation>(vains, [](Allocation val) { return hidl_to_rs<RsAllocation>(val); });
667*4d7e907cSAndroid Build Coastguard Worker RsAllocation _vaout = hidl_to_rs<RsAllocation>(vaout);
668*4d7e907cSAndroid Build Coastguard Worker const void* _paramsPtr = hidl_to_rs<const void*>(params.data());
669*4d7e907cSAndroid Build Coastguard Worker size_t _paramLen = params.size();
670*4d7e907cSAndroid Build Coastguard Worker const RsScriptCall* _sc = hidl_to_rs<const RsScriptCall*>(sc);
671*4d7e907cSAndroid Build Coastguard Worker size_t _scLen = _sc != nullptr ? sizeof(ScriptCall) : 0;
672*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptForEachMulti(mContext, _vs, _slot, _vains.data(), _vains.size(), _vaout, _paramsPtr, _paramLen, _sc, _scLen);
673*4d7e907cSAndroid Build Coastguard Worker return Void();
674*4d7e907cSAndroid Build Coastguard Worker }
675*4d7e907cSAndroid Build Coastguard Worker
scriptReduce(Script vs,uint32_t slot,const hidl_vec<Allocation> & vains,Allocation vaout,Ptr sc)676*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptReduce(Script vs, uint32_t slot, const hidl_vec<Allocation>& vains, Allocation vaout, Ptr sc) {
677*4d7e907cSAndroid Build Coastguard Worker RsScript _vs = hidl_to_rs<RsScript>(vs);
678*4d7e907cSAndroid Build Coastguard Worker uint32_t _slot = slot;
679*4d7e907cSAndroid Build Coastguard Worker std::vector<RsAllocation> _vains = hidl_to_rs<RsAllocation>(vains, [](Allocation val) { return hidl_to_rs<RsAllocation>(val); });
680*4d7e907cSAndroid Build Coastguard Worker RsAllocation _vaout = hidl_to_rs<RsAllocation>(vaout);
681*4d7e907cSAndroid Build Coastguard Worker const RsScriptCall* _sc = hidl_to_rs<const RsScriptCall*>(sc);
682*4d7e907cSAndroid Build Coastguard Worker size_t _scLen = _sc != nullptr ? sizeof(ScriptCall) : 0;
683*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptReduce(mContext, _vs, _slot, _vains.data(), _vains.size(), _vaout, _sc, _scLen);
684*4d7e907cSAndroid Build Coastguard Worker return Void();
685*4d7e907cSAndroid Build Coastguard Worker }
686*4d7e907cSAndroid Build Coastguard Worker
scriptSetVarI(Script vs,uint32_t slot,int32_t value)687*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptSetVarI(Script vs, uint32_t slot, int32_t value) {
688*4d7e907cSAndroid Build Coastguard Worker RsScript _vs = hidl_to_rs<RsScript>(vs);
689*4d7e907cSAndroid Build Coastguard Worker uint32_t _slot = slot;
690*4d7e907cSAndroid Build Coastguard Worker int _value = static_cast<int>(value);
691*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptSetVarI(mContext, _vs, _slot, _value);
692*4d7e907cSAndroid Build Coastguard Worker return Void();
693*4d7e907cSAndroid Build Coastguard Worker }
694*4d7e907cSAndroid Build Coastguard Worker
scriptSetVarObj(Script vs,uint32_t slot,ObjectBase obj)695*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptSetVarObj(Script vs, uint32_t slot, ObjectBase obj) {
696*4d7e907cSAndroid Build Coastguard Worker RsScript _vs = hidl_to_rs<RsScript>(vs);
697*4d7e907cSAndroid Build Coastguard Worker uint32_t _slot = slot;
698*4d7e907cSAndroid Build Coastguard Worker RsObjectBase _obj = hidl_to_rs<RsObjectBase>(obj);
699*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptSetVarObj(mContext, _vs, _slot, _obj);
700*4d7e907cSAndroid Build Coastguard Worker return Void();
701*4d7e907cSAndroid Build Coastguard Worker }
702*4d7e907cSAndroid Build Coastguard Worker
scriptSetVarJ(Script vs,uint32_t slot,int64_t value)703*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptSetVarJ(Script vs, uint32_t slot, int64_t value) {
704*4d7e907cSAndroid Build Coastguard Worker RsScript _vs = hidl_to_rs<RsScript>(vs);
705*4d7e907cSAndroid Build Coastguard Worker uint32_t _slot = slot;
706*4d7e907cSAndroid Build Coastguard Worker int64_t _value = static_cast<int64_t>(value);
707*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptSetVarJ(mContext, _vs, _slot, _value);
708*4d7e907cSAndroid Build Coastguard Worker return Void();
709*4d7e907cSAndroid Build Coastguard Worker }
710*4d7e907cSAndroid Build Coastguard Worker
scriptSetVarF(Script vs,uint32_t slot,float value)711*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptSetVarF(Script vs, uint32_t slot, float value) {
712*4d7e907cSAndroid Build Coastguard Worker RsScript _vs = hidl_to_rs<RsScript>(vs);
713*4d7e907cSAndroid Build Coastguard Worker uint32_t _slot = slot;
714*4d7e907cSAndroid Build Coastguard Worker float _value = value;
715*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptSetVarF(mContext, _vs, _slot, _value);
716*4d7e907cSAndroid Build Coastguard Worker return Void();
717*4d7e907cSAndroid Build Coastguard Worker }
718*4d7e907cSAndroid Build Coastguard Worker
scriptSetVarD(Script vs,uint32_t slot,double value)719*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptSetVarD(Script vs, uint32_t slot, double value) {
720*4d7e907cSAndroid Build Coastguard Worker RsScript _vs = hidl_to_rs<RsScript>(vs);
721*4d7e907cSAndroid Build Coastguard Worker uint32_t _slot = slot;
722*4d7e907cSAndroid Build Coastguard Worker double _value = value;
723*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptSetVarD(mContext, _vs, _slot, _value);
724*4d7e907cSAndroid Build Coastguard Worker return Void();
725*4d7e907cSAndroid Build Coastguard Worker }
726*4d7e907cSAndroid Build Coastguard Worker
scriptSetVarV(Script vs,uint32_t slot,const hidl_vec<uint8_t> & data)727*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptSetVarV(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data) {
728*4d7e907cSAndroid Build Coastguard Worker RsScript _vs = hidl_to_rs<RsScript>(vs);
729*4d7e907cSAndroid Build Coastguard Worker uint32_t _slot = slot;
730*4d7e907cSAndroid Build Coastguard Worker const void* _dataPtr = hidl_to_rs<const void*>(data.data());
731*4d7e907cSAndroid Build Coastguard Worker size_t _len = data.size();
732*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptSetVarV(mContext, _vs, _slot, _dataPtr, _len);
733*4d7e907cSAndroid Build Coastguard Worker return Void();
734*4d7e907cSAndroid Build Coastguard Worker }
735*4d7e907cSAndroid Build Coastguard Worker
scriptGetVarV(Script vs,uint32_t slot,Size len,scriptGetVarV_cb _hidl_cb)736*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptGetVarV(Script vs, uint32_t slot, Size len, scriptGetVarV_cb _hidl_cb) {
737*4d7e907cSAndroid Build Coastguard Worker RsScript _vs = hidl_to_rs<RsScript>(vs);
738*4d7e907cSAndroid Build Coastguard Worker uint32_t _slot = slot;
739*4d7e907cSAndroid Build Coastguard Worker size_t _len = static_cast<size_t>(len);
740*4d7e907cSAndroid Build Coastguard Worker std::vector<uint8_t> _data(_len);
741*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptGetVarV(mContext, _vs, _slot, _data.data(), _data.size());
742*4d7e907cSAndroid Build Coastguard Worker hidl_vec<uint8_t> data = _data;
743*4d7e907cSAndroid Build Coastguard Worker _hidl_cb(data);
744*4d7e907cSAndroid Build Coastguard Worker return Void();
745*4d7e907cSAndroid Build Coastguard Worker }
746*4d7e907cSAndroid Build Coastguard Worker
scriptSetVarVE(Script vs,uint32_t slot,const hidl_vec<uint8_t> & data,Element ve,const hidl_vec<uint32_t> & dims)747*4d7e907cSAndroid Build Coastguard Worker Return<void> Context::scriptSetVarVE(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data, Element ve, const hidl_vec<uint32_t>& dims) {
748*4d7e907cSAndroid Build Coastguard Worker RsScript _vs = hidl_to_rs<RsScript>(vs);
749*4d7e907cSAndroid Build Coastguard Worker uint32_t _slot = slot;
750*4d7e907cSAndroid Build Coastguard Worker const void* _dataPtr = hidl_to_rs<const void*>(data.data());
751*4d7e907cSAndroid Build Coastguard Worker size_t _len = data.size();
752*4d7e907cSAndroid Build Coastguard Worker RsElement _ve = hidl_to_rs<RsElement>(ve);
753*4d7e907cSAndroid Build Coastguard Worker const uint32_t* _dimsPtr = dims.data();
754*4d7e907cSAndroid Build Coastguard Worker size_t _dimLen = dims.size() * sizeof(uint32_t);
755*4d7e907cSAndroid Build Coastguard Worker Device::getHal().ScriptSetVarVE(mContext, _vs, _slot, _dataPtr, _len, _ve, _dimsPtr, _dimLen);
756*4d7e907cSAndroid Build Coastguard Worker return Void();
757*4d7e907cSAndroid Build Coastguard Worker }
758*4d7e907cSAndroid Build Coastguard Worker
scriptCCreate(const hidl_string & resName,const hidl_string & cacheDir,const hidl_vec<uint8_t> & text)759*4d7e907cSAndroid Build Coastguard Worker Return<Script> Context::scriptCCreate(const hidl_string& resName, const hidl_string& cacheDir, const hidl_vec<uint8_t>& text) {
760*4d7e907cSAndroid Build Coastguard Worker const hidl_string& _resName = resName;
761*4d7e907cSAndroid Build Coastguard Worker const hidl_string& _cacheDir = cacheDir;
762*4d7e907cSAndroid Build Coastguard Worker const char* _textPtr = hidl_to_rs<const char*>(text.data());
763*4d7e907cSAndroid Build Coastguard Worker size_t _textSize = text.size();
764*4d7e907cSAndroid Build Coastguard Worker RsScript _script = Device::getHal().ScriptCCreate(mContext, _resName.c_str(), _resName.size(), _cacheDir.c_str(), _cacheDir.size(), _textPtr, _textSize);
765*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<Script>(_script);
766*4d7e907cSAndroid Build Coastguard Worker }
767*4d7e907cSAndroid Build Coastguard Worker
scriptIntrinsicCreate(ScriptIntrinsicID id,Element elem)768*4d7e907cSAndroid Build Coastguard Worker Return<Script> Context::scriptIntrinsicCreate(ScriptIntrinsicID id, Element elem) {
769*4d7e907cSAndroid Build Coastguard Worker RsScriptIntrinsicID _id = static_cast<RsScriptIntrinsicID>(id);
770*4d7e907cSAndroid Build Coastguard Worker RsElement _elem = hidl_to_rs<RsElement>(elem);
771*4d7e907cSAndroid Build Coastguard Worker RsScript _script = Device::getHal().ScriptIntrinsicCreate(mContext, _id, _elem);
772*4d7e907cSAndroid Build Coastguard Worker return rs_to_hidl<Script>(_script);
773*4d7e907cSAndroid Build Coastguard Worker }
774*4d7e907cSAndroid Build Coastguard Worker
775*4d7e907cSAndroid Build Coastguard Worker
776*4d7e907cSAndroid Build Coastguard Worker // Methods from ::android::hidl::base::V1_0::IBase follow.
777*4d7e907cSAndroid Build Coastguard Worker
778*4d7e907cSAndroid Build Coastguard Worker
779*4d7e907cSAndroid Build Coastguard Worker } // namespace implementation
780*4d7e907cSAndroid Build Coastguard Worker } // namespace V1_0
781*4d7e907cSAndroid Build Coastguard Worker } // namespace renderscript
782*4d7e907cSAndroid Build Coastguard Worker } // namespace hardware
783*4d7e907cSAndroid Build Coastguard Worker } // namespace android
784