Home | History | Annotate | Download | only in default
      1 #include "Context.h"
      2 #include "Device.h"
      3 
      4 namespace android {
      5 namespace hardware {
      6 namespace renderscript {
      7 namespace V1_0 {
      8 namespace implementation {
      9 
     10 
     11 static dispatchTable loadHAL();
     12 dispatchTable Device::mDispatchHal = loadHAL();
     13 
     14 Device::Device() {
     15 }
     16 
     17 dispatchTable& Device::getHal() {
     18     return mDispatchHal;
     19 }
     20 
     21 
     22 // Methods from ::android::hardware::renderscript::V1_0::IDevice follow.
     23 
     24 Return<sp<IContext>> Device::contextCreate(uint32_t sdkVersion, ContextType ct, int32_t flags) {
     25     return new Context(sdkVersion, ct, flags);
     26 }
     27 
     28 
     29 // Methods from ::android::hidl::base::V1_0::IBase follow.
     30 
     31 IDevice* HIDL_FETCH_IDevice(const char* /* name */) {
     32     return new Device();
     33 }
     34 
     35 // Helper function
     36 dispatchTable loadHAL() {
     37 
     38     static_assert(sizeof(void*) <= sizeof(uint64_t), "RenderScript HIDL Error: sizeof(void*) > sizeof(uint64_t)");
     39     static_assert(sizeof(size_t) <= sizeof(uint64_t), "RenderScript HIDL Error: sizeof(size_t) > sizeof(uint64_t)");
     40 
     41     const char* filename = "libRS_internal.so";
     42     void* handle = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
     43 
     44     dispatchTable dispatchHal = {
     45         .SetNativeLibDir = (SetNativeLibDirFnPtr) nullptr,
     46 
     47         .Allocation1DData =
     48             (Allocation1DDataFnPtr)dlsym(handle, "rsAllocation1DData"),
     49         .Allocation1DElementData = (Allocation1DElementDataFnPtr) nullptr,
     50         .Allocation1DRead =
     51             (Allocation1DReadFnPtr)dlsym(handle, "rsAllocation1DRead"),
     52         .Allocation2DData =
     53             (Allocation2DDataFnPtr)dlsym(handle, "rsAllocation2DData"),
     54         .Allocation2DRead =
     55             (Allocation2DReadFnPtr)dlsym(handle, "rsAllocation2DRead"),
     56         .Allocation3DData =
     57             (Allocation3DDataFnPtr)dlsym(handle, "rsAllocation3DData"),
     58         .Allocation3DRead =
     59             (Allocation3DReadFnPtr)dlsym(handle, "rsAllocation3DRead"),
     60         .AllocationAdapterCreate = (AllocationAdapterCreateFnPtr)dlsym(
     61             handle, "rsAllocationAdapterCreate"),
     62         .AllocationAdapterOffset = (AllocationAdapterOffsetFnPtr)dlsym(
     63             handle, "rsAllocationAdapterOffset"),
     64         .AllocationCopy2DRange = (AllocationCopy2DRangeFnPtr)dlsym(
     65             handle, "rsAllocationCopy2DRange"),
     66         .AllocationCopy3DRange = (AllocationCopy3DRangeFnPtr)dlsym(
     67             handle, "rsAllocationCopy3DRange"),
     68         .AllocationCopyToBitmap = (AllocationCopyToBitmapFnPtr)dlsym(
     69             handle, "rsAllocationCopyToBitmap"),
     70         .AllocationCreateFromBitmap = (AllocationCreateFromBitmapFnPtr)dlsym(
     71             handle, "rsAllocationCreateFromBitmap"),
     72         .AllocationCreateStrided = (AllocationCreateStridedFnPtr)dlsym(
     73             handle, "rsAllocationCreateStrided"),
     74         .AllocationCreateTyped = (AllocationCreateTypedFnPtr)dlsym(
     75             handle, "rsAllocationCreateTyped"),
     76         .AllocationCubeCreateFromBitmap =
     77             (AllocationCubeCreateFromBitmapFnPtr)dlsym(
     78                 handle, "rsAllocationCubeCreateFromBitmap"),
     79         .AllocationElementData = (AllocationElementDataFnPtr)dlsym(
     80             handle, "rsAllocationElementData"),
     81         .AllocationElementRead = (AllocationElementReadFnPtr)dlsym(
     82             handle, "rsAllocationElementRead"),
     83         .AllocationGenerateMipmaps = (AllocationGenerateMipmapsFnPtr)dlsym(
     84             handle, "rsAllocationGenerateMipmaps"),
     85         .AllocationGetPointer =
     86             (AllocationGetPointerFnPtr)dlsym(handle, "rsAllocationGetPointer"),
     87         .AllocationGetSurface =
     88             (AllocationGetSurfaceFnPtr)dlsym(handle, "rsAllocationGetSurface"),
     89         .AllocationGetType =
     90             (AllocationGetTypeFnPtr)dlsym(handle, "rsaAllocationGetType"),
     91         .AllocationIoReceive =
     92             (AllocationIoReceiveFnPtr)dlsym(handle, "rsAllocationIoReceive"),
     93         .AllocationIoSend =
     94             (AllocationIoSendFnPtr)dlsym(handle, "rsAllocationIoSend"),
     95         .AllocationRead =
     96             (AllocationReadFnPtr)dlsym(handle, "rsAllocationRead"),
     97         .AllocationResize1D =
     98             (AllocationResize1DFnPtr)dlsym(handle, "rsAllocationResize1D"),
     99         .AllocationSetSurface =
    100             (AllocationSetSurfaceFnPtr)dlsym(handle, "rsAllocationSetSurface"),
    101         .AllocationSetupBufferQueue = (AllocationSetupBufferQueueFnPtr)dlsym(
    102             handle, "rsAllocationSetupBufferQueue"),
    103         .AllocationShareBufferQueue = (AllocationShareBufferQueueFnPtr)dlsym(
    104             handle, "rsAllocationShareBufferQueue"),
    105         .AllocationSyncAll =
    106             (AllocationSyncAllFnPtr)dlsym(handle, "rsAllocationSyncAll"),
    107         .AssignName = (AssignNameFnPtr)dlsym(handle, "rsAssignName"),
    108         .ClosureCreate = (ClosureCreateFnPtr)dlsym(handle, "rsClosureCreate"),
    109         .ClosureSetArg = (ClosureSetArgFnPtr)dlsym(handle, "rsClosureSetArg"),
    110         .ClosureSetGlobal =
    111             (ClosureSetGlobalFnPtr)dlsym(handle, "rsClosureSetGlobal"),
    112         .ContextCreateVendor =
    113             (ContextCreateVendorFnPtr)dlsym(handle, "rsContextCreateVendor"),
    114         .ContextDeinitToClient = (ContextDeinitToClientFnPtr)dlsym(
    115             handle, "rsContextDeinitToClient"),
    116         .ContextDestroy =
    117             (ContextDestroyFnPtr)dlsym(handle, "rsContextDestroy"),
    118         .ContextDump = (ContextDumpFnPtr)dlsym(handle, "rsContextDump"),
    119         .ContextFinish = (ContextFinishFnPtr)dlsym(handle, "rsContextFinish"),
    120         .ContextGetMessage =
    121             (ContextGetMessageFnPtr)dlsym(handle, "rsContextGetMessage"),
    122         .ContextInitToClient =
    123             (ContextInitToClientFnPtr)dlsym(handle, "rsContextInitToClient"),
    124         .ContextPeekMessage =
    125             (ContextPeekMessageFnPtr)dlsym(handle, "rsContextPeekMessage"),
    126         .ContextSendMessage =
    127             (ContextSendMessageFnPtr)dlsym(handle, "rsContextSendMessage"),
    128         .ContextSetCacheDir =
    129             (ContextSetCacheDirFnPtr)dlsym(handle, "rsContextSetCacheDir"),
    130         .ContextSetPriority =
    131             (ContextSetPriorityFnPtr)dlsym(handle, "rsContextSetPriority"),
    132         .DeviceCreate = (DeviceCreateFnPtr) nullptr,
    133         .DeviceDestroy = (DeviceDestroyFnPtr) nullptr,
    134         .DeviceSetConfig = (DeviceSetConfigFnPtr) nullptr,
    135         .ElementCreate2 =
    136             (ElementCreate2FnPtr)dlsym(handle, "rsElementCreate2"),
    137         .ElementCreate = (ElementCreateFnPtr)dlsym(handle, "rsElementCreate"),
    138         .ElementGetNativeData =
    139             (ElementGetNativeDataFnPtr)dlsym(handle, "rsaElementGetNativeData"),
    140         .ElementGetSubElements = (ElementGetSubElementsFnPtr)dlsym(
    141             handle, "rsaElementGetSubElements"),
    142         .GetName = (GetNameFnPtr)dlsym(handle, "rsaGetName"),
    143         .InvokeClosureCreate =
    144             (InvokeClosureCreateFnPtr)dlsym(handle, "rsInvokeClosureCreate"),
    145         .ObjDestroy = (ObjDestroyFnPtr)dlsym(handle, "rsObjDestroy"),
    146         .SamplerCreate = (SamplerCreateFnPtr)dlsym(handle, "rsSamplerCreate"),
    147         .ScriptBindAllocation =
    148             (ScriptBindAllocationFnPtr)dlsym(handle, "rsScriptBindAllocation"),
    149         .ScriptCCreate = (ScriptCCreateFnPtr)dlsym(handle, "rsScriptCCreate"),
    150         .ScriptFieldIDCreate =
    151             (ScriptFieldIDCreateFnPtr)dlsym(handle, "rsScriptFieldIDCreate"),
    152         .ScriptForEach = (ScriptForEachFnPtr) nullptr,
    153         .ScriptForEachMulti =
    154             (ScriptForEachMultiFnPtr)dlsym(handle, "rsScriptForEachMulti"),
    155         .ScriptGetVarV = (ScriptGetVarVFnPtr)dlsym(handle, "rsScriptGetVarV"),
    156         .ScriptGroup2Create =
    157             (ScriptGroup2CreateFnPtr)dlsym(handle, "rsScriptGroup2Create"),
    158         .ScriptGroupCreate =
    159             (ScriptGroupCreateFnPtr)dlsym(handle, "rsScriptGroupCreate"),
    160         .ScriptGroupExecute =
    161             (ScriptGroupExecuteFnPtr)dlsym(handle, "rsScriptGroupExecute"),
    162         .ScriptGroupSetInput =
    163             (ScriptGroupSetInputFnPtr)dlsym(handle, "rsScriptGroupSetInput"),
    164         .ScriptGroupSetOutput =
    165             (ScriptGroupSetOutputFnPtr)dlsym(handle, "rsScriptGroupSetOutput"),
    166         .ScriptIntrinsicCreate = (ScriptIntrinsicCreateFnPtr)dlsym(
    167             handle, "rsScriptIntrinsicCreate"),
    168         .ScriptInvoke = (ScriptInvokeFnPtr)dlsym(handle, "rsScriptInvoke"),
    169         .ScriptInvokeIDCreate =
    170             (ScriptInvokeIDCreateFnPtr)dlsym(handle, "rsScriptInvokeIDCreate"),
    171         .ScriptInvokeV = (ScriptInvokeVFnPtr)dlsym(handle, "rsScriptInvokeV"),
    172         .ScriptKernelIDCreate =
    173             (ScriptKernelIDCreateFnPtr)dlsym(handle, "rsScriptKernelIDCreate"),
    174         .ScriptReduce = (ScriptReduceFnPtr)dlsym(handle, "rsScriptReduce"),
    175         .ScriptSetTimeZone =
    176             (ScriptSetTimeZoneFnPtr)dlsym(handle, "rsScriptSetTimeZone"),
    177         .ScriptSetVarD = (ScriptSetVarDFnPtr)dlsym(handle, "rsScriptSetVarD"),
    178         .ScriptSetVarF = (ScriptSetVarFFnPtr)dlsym(handle, "rsScriptSetVarF"),
    179         .ScriptSetVarI = (ScriptSetVarIFnPtr)dlsym(handle, "rsScriptSetVarI"),
    180         .ScriptSetVarJ = (ScriptSetVarJFnPtr)dlsym(handle, "rsScriptSetVarJ"),
    181         .ScriptSetVarObj =
    182             (ScriptSetVarObjFnPtr)dlsym(handle, "rsScriptSetVarObj"),
    183         .ScriptSetVarVE =
    184             (ScriptSetVarVEFnPtr)dlsym(handle, "rsScriptSetVarVE"),
    185         .ScriptSetVarV = (ScriptSetVarVFnPtr)dlsym(handle, "rsScriptSetVarV"),
    186         .TypeCreate = (TypeCreateFnPtr)dlsym(handle, "rsTypeCreate"),
    187         .TypeGetNativeData =
    188             (TypeGetNativeDataFnPtr)dlsym(handle, "rsaTypeGetNativeData"),
    189     };
    190 
    191     return dispatchHal;
    192 }
    193 
    194 }  // namespace implementation
    195 }  // namespace V1_0
    196 }  // namespace renderscript
    197 }  // namespace hardware
    198 }  // namespace android
    199