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