rsDispatch.cpp revision 2bd78f2d3e0a94a98dc03502decadfd2e17a70c8
148d2eae90f08dc33754a9d280337249690a954d6Miao Wang/*
248d2eae90f08dc33754a9d280337249690a954d6Miao Wang * Copyright (C) 2011-2012 The Android Open Source Project
348d2eae90f08dc33754a9d280337249690a954d6Miao Wang *
448d2eae90f08dc33754a9d280337249690a954d6Miao Wang * Licensed under the Apache License, Version 2.0 (the "License");
548d2eae90f08dc33754a9d280337249690a954d6Miao Wang * you may not use this file except in compliance with the License.
648d2eae90f08dc33754a9d280337249690a954d6Miao Wang * You may obtain a copy of the License at
748d2eae90f08dc33754a9d280337249690a954d6Miao Wang *
848d2eae90f08dc33754a9d280337249690a954d6Miao Wang *      http://www.apache.org/licenses/LICENSE-2.0
948d2eae90f08dc33754a9d280337249690a954d6Miao Wang *
1048d2eae90f08dc33754a9d280337249690a954d6Miao Wang * Unless required by applicable law or agreed to in writing, software
1148d2eae90f08dc33754a9d280337249690a954d6Miao Wang * distributed under the License is distributed on an "AS IS" BASIS,
1248d2eae90f08dc33754a9d280337249690a954d6Miao Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1348d2eae90f08dc33754a9d280337249690a954d6Miao Wang * See the License for the specific language governing permissions and
1448d2eae90f08dc33754a9d280337249690a954d6Miao Wang * limitations under the License.
1548d2eae90f08dc33754a9d280337249690a954d6Miao Wang */
1648d2eae90f08dc33754a9d280337249690a954d6Miao Wang#define LOG_TAG "libDispatch"
1748d2eae90f08dc33754a9d280337249690a954d6Miao Wang#include <android/log.h>
1848d2eae90f08dc33754a9d280337249690a954d6Miao Wang
1948d2eae90f08dc33754a9d280337249690a954d6Miao Wang#include "rsDispatch.h"
2048d2eae90f08dc33754a9d280337249690a954d6Miao Wang#include <dlfcn.h>
2148d2eae90f08dc33754a9d280337249690a954d6Miao Wang
2248d2eae90f08dc33754a9d280337249690a954d6Miao Wang#define LOG_API(...)
2348d2eae90f08dc33754a9d280337249690a954d6Miao Wang
2448d2eae90f08dc33754a9d280337249690a954d6Miao Wangbool loadSymbols(void* handle, dispatchTable& dispatchTab) {
2548d2eae90f08dc33754a9d280337249690a954d6Miao Wang
2648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationGetType = (AllocationGetTypeFnPtr)dlsym(handle, "rsaAllocationGetType");
2748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationGetType == NULL) {
2848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationGetType");
2948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
3048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
3148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.TypeGetNativeData = (TypeGetNativeDataFnPtr)dlsym(handle, "rsaTypeGetNativeData");
3248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.TypeGetNativeData == NULL) {
3348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.TypeGetNativeData");
3448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
3548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
3648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ElementGetNativeData = (ElementGetNativeDataFnPtr)dlsym(handle, "rsaElementGetNativeData");
3748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ElementGetNativeData == NULL) {
3848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ElementGetNativeData");
3948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
4048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
4148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ElementGetSubElements = (ElementGetSubElementsFnPtr)dlsym(handle, "rsaElementGetSubElements");
4248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ElementGetSubElements == NULL) {
4348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ElementGetSubElements");
4448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
4548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
4648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.DeviceCreate = (DeviceCreateFnPtr)dlsym(handle, "rsDeviceCreate");
4748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.DeviceCreate == NULL) {
4848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.DeviceCreate");
4948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
5048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
5148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.DeviceDestroy = (DeviceDestroyFnPtr)dlsym(handle, "rsDeviceDestroy");
5248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.DeviceDestroy == NULL) {
5348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.DeviceDestroy");
5448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
5548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
5648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.DeviceSetConfig = (DeviceSetConfigFnPtr)dlsym(handle, "rsDeviceSetConfig");
5748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.DeviceSetConfig == NULL) {
5848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.DeviceSetConfig");
5948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
6048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
6148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ContextCreate = (ContextCreateFnPtr)dlsym(handle, "rsContextCreate");;
6248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ContextCreate == NULL) {
6348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ContextCreate");
6448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
6548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
6648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.GetName = (GetNameFnPtr)dlsym(handle, "rsaGetName");;
6748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.GetName == NULL) {
6848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.GetName");
6948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
7048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
7148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ContextDestroy = (ContextDestroyFnPtr)dlsym(handle, "rsContextDestroy");
7248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ContextDestroy == NULL) {
7348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ContextDestroy");
7448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
7548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
7648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ContextGetMessage = (ContextGetMessageFnPtr)dlsym(handle, "rsContextGetMessage");
7748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ContextGetMessage == NULL) {
7848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ContextGetMessage");
7948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
8048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
8148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ContextPeekMessage = (ContextPeekMessageFnPtr)dlsym(handle, "rsContextPeekMessage");
8248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ContextPeekMessage == NULL) {
8348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ContextPeekMessage");
8448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
8548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
8648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ContextSendMessage = (ContextSendMessageFnPtr)dlsym(handle, "rsContextSendMessage");
8748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ContextSendMessage == NULL) {
8848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ContextSendMessage");
8948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
9048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
9148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ContextInitToClient = (ContextInitToClientFnPtr)dlsym(handle, "rsContextInitToClient");
9248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ContextInitToClient == NULL) {
9348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ContextInitToClient");
9448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
9548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
9648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ContextDeinitToClient = (ContextDeinitToClientFnPtr)dlsym(handle, "rsContextDeinitToClient");
9748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ContextDeinitToClient == NULL) {
9848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ContextDeinitToClient");
9948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
10048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
10148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.TypeCreate = (TypeCreateFnPtr)dlsym(handle, "rsTypeCreate");
10248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.TypeCreate == NULL) {
10348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.TypeCreate");
10448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
10548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
10648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationCreateTyped = (AllocationCreateTypedFnPtr)dlsym(handle, "rsAllocationCreateTyped");
10748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationCreateTyped == NULL) {
10848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationCreateTyped");
10948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
11048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
11148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationCreateFromBitmap = (AllocationCreateFromBitmapFnPtr)dlsym(handle, "rsAllocationCreateFromBitmap");
11248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationCreateFromBitmap == NULL) {
11348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationCreateFromBitmap");
11448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
11548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
11648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationCubeCreateFromBitmap = (AllocationCubeCreateFromBitmapFnPtr)dlsym(handle, "rsAllocationCubeCreateFromBitmap");
11748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationCubeCreateFromBitmap == NULL) {
11848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationCubeCreateFromBitmap");
11948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
12048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
12148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationGetSurface = (AllocationGetSurfaceFnPtr)dlsym(handle, "rsAllocationGetSurface");
12248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationGetSurface == NULL) {
12348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationGetSurface");
12448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
12548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
12648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationSetSurface = (AllocationSetSurfaceFnPtr)dlsym(handle, "rsAllocationSetSurface");
12748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationSetSurface == NULL) {
12848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationSetSurface");
12948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
13048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
13148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ContextFinish = (ContextFinishFnPtr)dlsym(handle, "rsContextFinish");
13248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ContextFinish == NULL) {
13348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ContextFinish");
13448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
13548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
13648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ContextDump = (ContextDumpFnPtr)dlsym(handle, "rsContextDump");
13748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ContextDump == NULL) {
13848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ContextDump");
13948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
14048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
14148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ContextSetPriority = (ContextSetPriorityFnPtr)dlsym(handle, "rsContextSetPriority");
14248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ContextSetPriority == NULL) {
14348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ContextSetPriority");
14448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
14548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
14648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AssignName = (AssignNameFnPtr)dlsym(handle, "rsAssignName");
14748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AssignName == NULL) {
14848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AssignName");
14948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
15048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
15148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ObjDestroy = (ObjDestroyFnPtr)dlsym(handle, "rsObjDestroy");
15248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ObjDestroy == NULL) {
15348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ObjDestroy");
15448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
15548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
15648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ElementCreate = (ElementCreateFnPtr)dlsym(handle, "rsElementCreate");
15748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ElementCreate == NULL) {
15848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ElementCreate");
15948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
16048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
16148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ElementCreate2 = (ElementCreate2FnPtr)dlsym(handle, "rsElementCreate2");
16248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ElementCreate2 == NULL) {
16348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ElementCreate2");
16448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
16548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
16648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationCopyToBitmap = (AllocationCopyToBitmapFnPtr)dlsym(handle, "rsAllocationCopyToBitmap");
16748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationCopyToBitmap == NULL) {
16848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationCopyToBitmap");
16948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
17048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
17148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.Allocation1DData = (Allocation1DDataFnPtr)dlsym(handle, "rsAllocation1DData");
17248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.Allocation1DData == NULL) {
17348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.Allocation1DData");
17448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
17548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
17648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.Allocation1DElementData = (Allocation1DElementDataFnPtr)dlsym(handle, "rsAllocation1DElementData");
17748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.Allocation1DElementData == NULL) {
17848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.Allocation1DElementData");
17948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
18048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
18148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.Allocation2DData = (Allocation2DDataFnPtr)dlsym(handle, "rsAllocation2DData");
18248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.Allocation2DData == NULL) {
18348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.Allocation2DData");
18448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
18548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
18648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.Allocation3DData = (Allocation3DDataFnPtr)dlsym(handle, "rsAllocation3DData");
18748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.Allocation3DData == NULL) {
18848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.Allocation3DData");
18948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
19048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
19148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationGenerateMipmaps = (AllocationGenerateMipmapsFnPtr)dlsym(handle, "rsAllocationGenerateMipmaps");
19248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationGenerateMipmaps == NULL) {
19348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationGenerateMipmaps");
19448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
19548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
19648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationRead = (AllocationReadFnPtr)dlsym(handle, "rsAllocationRead");
19748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationRead == NULL) {
19848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationRead");
19948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
20048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
20148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.Allocation1DRead = (Allocation1DReadFnPtr)dlsym(handle, "rsAllocation1DRead");
20248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.Allocation1DRead == NULL) {
20348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.Allocation1DRead");
20448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
20548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
20648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.Allocation2DRead = (Allocation2DReadFnPtr)dlsym(handle, "rsAllocation2DRead");
20748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.Allocation2DRead == NULL) {
20848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.Allocation2DRead");
20948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
21048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
21148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationSyncAll = (AllocationSyncAllFnPtr)dlsym(handle, "rsAllocationSyncAll");
21248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationSyncAll == NULL) {
21348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationSyncAll");
21448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
21548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
21648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationResize1D = (AllocationResize1DFnPtr)dlsym(handle, "rsAllocationResize1D");
21748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationResize1D == NULL) {
21848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationResize1D");
21948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
22048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
22148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationCopy2DRange = (AllocationCopy2DRangeFnPtr)dlsym(handle, "rsAllocationCopy2DRange");
22248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationCopy2DRange == NULL) {
22348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationCopy2DRange");
22448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
22548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
22648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationCopy3DRange = (AllocationCopy3DRangeFnPtr)dlsym(handle, "rsAllocationCopy3DRange");
22748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationCopy3DRange == NULL) {
22848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationCopy3DRange");
22948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
23048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
23148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.SamplerCreate = (SamplerCreateFnPtr)dlsym(handle, "rsSamplerCreate");
23248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.SamplerCreate == NULL) {
23348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.SamplerCreate");
23448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
23548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
23648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptBindAllocation = (ScriptBindAllocationFnPtr)dlsym(handle, "rsScriptBindAllocation");
23748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptBindAllocation == NULL) {
23848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptBindAllocation");
23948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
24048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
24148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptSetTimeZone = (ScriptSetTimeZoneFnPtr)dlsym(handle, "rsScriptSetTimeZone");
24248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptSetTimeZone == NULL) {
24348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptSetTimeZone");
24448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
24548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
24648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptInvoke = (ScriptInvokeFnPtr)dlsym(handle, "rsScriptInvoke");
24748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptInvoke == NULL) {
24848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptInvoke");
24948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
25048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
25148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptInvokeV = (ScriptInvokeVFnPtr)dlsym(handle, "rsScriptInvokeV");
25248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptInvokeV == NULL) {
25348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptInvokeV");
25448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
25548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
25648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptForEach = (ScriptForEachFnPtr)dlsym(handle, "rsScriptForEach");
25748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptForEach == NULL) {
25848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptForEach");
25948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
26048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
26148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptSetVarI = (ScriptSetVarIFnPtr)dlsym(handle, "rsScriptSetVarI");
26248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptSetVarI == NULL) {
26348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptSetVarI");
26448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
26548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
26648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptSetVarObj = (ScriptSetVarObjFnPtr)dlsym(handle, "rsScriptSetVarObj");
26748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptSetVarObj == NULL) {
26848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptSetVarObj");
26948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
27048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
27148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptSetVarJ = (ScriptSetVarJFnPtr)dlsym(handle, "rsScriptSetVarJ");
27248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptSetVarJ == NULL) {
27348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptSetVarJ");
27448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
27548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
27648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptSetVarF = (ScriptSetVarFFnPtr)dlsym(handle, "rsScriptSetVarF");
27748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptSetVarF == NULL) {
27848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptSetVarF");
27948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
28048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
28148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptSetVarD = (ScriptSetVarDFnPtr)dlsym(handle, "rsScriptSetVarD");
28248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptSetVarD == NULL) {
28348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptSetVarD");
28448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
28548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
28648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptSetVarV = (ScriptSetVarVFnPtr)dlsym(handle, "rsScriptSetVarV");
28748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptSetVarV == NULL) {
28848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptSetVarV");
28948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
29048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
29148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptGetVarV = (ScriptGetVarVFnPtr)dlsym(handle, "rsScriptGetVarV");
29248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptGetVarV == NULL) {
29348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptGetVarV");
29448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
29548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
29648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptSetVarVE = (ScriptSetVarVEFnPtr)dlsym(handle, "rsScriptSetVarVE");
29748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptSetVarVE == NULL) {
29848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptSetVarVE");
29948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
30048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
30148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptCCreate = (ScriptCCreateFnPtr)dlsym(handle, "rsScriptCCreate");
30248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptCCreate == NULL) {
30348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptCCreate");
30448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
30548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
30648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptIntrinsicCreate = (ScriptIntrinsicCreateFnPtr)dlsym(handle, "rsScriptIntrinsicCreate");
30748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptIntrinsicCreate == NULL) {
30848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptIntrinsicCreate");
30948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
31048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
31148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptKernelIDCreate = (ScriptKernelIDCreateFnPtr)dlsym(handle, "rsScriptKernelIDCreate");
31248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptKernelIDCreate == NULL) {
31348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptKernelIDCreate");
31448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
31548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
31648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptFieldIDCreate = (ScriptFieldIDCreateFnPtr)dlsym(handle, "rsScriptFieldIDCreate");
31748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptFieldIDCreate == NULL) {
31848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptFieldIDCreate");
31948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
32048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
32148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptGroupCreate = (ScriptGroupCreateFnPtr)dlsym(handle, "rsScriptGroupCreate");
32248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptGroupCreate == NULL) {
32348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptGroupCreate");
32448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
32548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
32648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptGroupSetOutput = (ScriptGroupSetOutputFnPtr)dlsym(handle, "rsScriptGroupSetOutput");
32748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptGroupSetOutput == NULL) {
32848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptGroupSetOutput");
32948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
33048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
33148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptGroupSetInput = (ScriptGroupSetInputFnPtr)dlsym(handle, "rsScriptGroupSetInput");
33248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptGroupSetInput == NULL) {
33348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptGroupSetInput");
33448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
33548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
33648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.ScriptGroupExecute = (ScriptGroupExecuteFnPtr)dlsym(handle, "rsScriptGroupExecute");
33748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.ScriptGroupExecute == NULL) {
33848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.ScriptGroupExecute");
33948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
34048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
34148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationIoSend = (AllocationIoSendFnPtr)dlsym(handle, "rsAllocationIoSend");
34248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationIoSend == NULL) {
34348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationIoSend");
34448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
34548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
34648d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationIoReceive = (AllocationIoReceiveFnPtr)dlsym(handle, "rsAllocationIoReceive");
34748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationIoReceive == NULL) {
34848d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationIoReceive");
34948d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
35048d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
35148d2eae90f08dc33754a9d280337249690a954d6Miao Wang    dispatchTab.AllocationGetPointer = (AllocationGetPointerFnPtr)dlsym(handle, "rsAllocationGetPointer");
35248d2eae90f08dc33754a9d280337249690a954d6Miao Wang    if (dispatchTab.AllocationGetPointer == NULL) {
35348d2eae90f08dc33754a9d280337249690a954d6Miao Wang        LOG_API("Couldn't initialize dispatchTab.AllocationGetPointer");
35448d2eae90f08dc33754a9d280337249690a954d6Miao Wang        return false;
35548d2eae90f08dc33754a9d280337249690a954d6Miao Wang    }
35648d2eae90f08dc33754a9d280337249690a954d6Miao Wang
35748d2eae90f08dc33754a9d280337249690a954d6Miao Wang    return true;
35848d2eae90f08dc33754a9d280337249690a954d6Miao Wang}
35948d2eae90f08dc33754a9d280337249690a954d6Miao Wang
3602bd78f2d3e0a94a98dc03502decadfd2e17a70c8Miao Wang
3612bd78f2d3e0a94a98dc03502decadfd2e17a70c8Miao Wangbool loadIOSuppSyms(void* handleIO, ioSuppDT& ioDispatch){
3622bd78f2d3e0a94a98dc03502decadfd2e17a70c8Miao Wang    ioDispatch.sAllocationSetSurface = (sAllocationSetSurfaceFnPtr)dlsym(handleIO, "AllocationSetSurface");
3632bd78f2d3e0a94a98dc03502decadfd2e17a70c8Miao Wang    if (ioDispatch.sAllocationSetSurface == NULL) {
3642bd78f2d3e0a94a98dc03502decadfd2e17a70c8Miao Wang        LOG_API("Couldn't initialize ioDispatch.sAllocationSetSurface");
3652bd78f2d3e0a94a98dc03502decadfd2e17a70c8Miao Wang        return false;
3662bd78f2d3e0a94a98dc03502decadfd2e17a70c8Miao Wang    }
3672bd78f2d3e0a94a98dc03502decadfd2e17a70c8Miao Wang    return true;
3682bd78f2d3e0a94a98dc03502decadfd2e17a70c8Miao Wang}
369