rsDispatch.cpp revision 62e9af7113ca5a33e6da4608470034f691c792b9
18872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger/* 28872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger * Copyright (C) 2011-2012 The Android Open Source Project 38872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger * 48872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger * Licensed under the Apache License, Version 2.0 (the "License"); 58872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger * you may not use this file except in compliance with the License. 68872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger * You may obtain a copy of the License at 78872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger * 88872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger * http://www.apache.org/licenses/LICENSE-2.0 98872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger * 108872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger * Unless required by applicable law or agreed to in writing, software 118872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger * distributed under the License is distributed on an "AS IS" BASIS, 128872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger * See the License for the specific language governing permissions and 148872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger * limitations under the License. 158872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger */ 168872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger#define LOG_TAG "libDispatch" 17c190813b938ecf28d9e76b07098e9637ced8808eDerek Sollenberger#include <android/log.h> 18c190813b938ecf28d9e76b07098e9637ced8808eDerek Sollenberger 196f485569fa3d6047dcffd068aebf361e3598783cDerek Sollenberger#include "rsDispatch.h" 207de73858975fc4dbccfa1c188f6d1a12d39ce2c5Matt Sarett#include <dlfcn.h> 21c190813b938ecf28d9e76b07098e9637ced8808eDerek Sollenberger#include <limits.h> 22aed7f58fb05a25ce2112829e77c0eb5dd268e8a7sergeyv 23afc221499d943386256feb9db46c119ff834bf79Yuqian Li#define LOG_ERR(...) __android_log_print(ANDROID_LOG_ERROR, "RS Dispatch", __VA_ARGS__); 24021693b967a2c5556dddd183eb0247df4079e1adStan Iliev#define REDUCE_API_LEVEL INT_MAX 258872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger 2644dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarettbool loadSymbols(void* handle, dispatchTable& dispatchTab, int device_api) { 27ea70d22dc8dc5d61f075edf6d03f86f6a68169cdMatt Sarett#ifdef __LP64__ 286f485569fa3d6047dcffd068aebf361e3598783cDerek Sollenberger // Function to set the native lib path for 64bit compat lib. 29849911a9c4315fc552faa38516c842b2541b1909John Reck dispatchTab.SetNativeLibDir = (SetNativeLibDirFnPtr)dlsym(handle, "rsaContextSetNativeLibDir"); 30849911a9c4315fc552faa38516c842b2541b1909John Reck if (dispatchTab.SetNativeLibDir == NULL) { 31849911a9c4315fc552faa38516c842b2541b1909John Reck LOG_ERR("Couldn't initialize dispatchTab.SetNativeLibDir"); 326f485569fa3d6047dcffd068aebf361e3598783cDerek Sollenberger return false; 3362feb3a0b4690144a067080ab17beae160ea6320Matt Sarett } 34afc221499d943386256feb9db46c119ff834bf79Yuqian Li#endif 35849911a9c4315fc552faa38516c842b2541b1909John Reck dispatchTab.AllocationGetType = (AllocationGetTypeFnPtr)dlsym(handle, "rsaAllocationGetType"); 36849911a9c4315fc552faa38516c842b2541b1909John Reck if (dispatchTab.AllocationGetType == NULL) { 37f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.AllocationGetType"); 388872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3960126efd7d905ca24822765c6dafac17fef278abBen Wagner } 4060126efd7d905ca24822765c6dafac17fef278abBen Wagner dispatchTab.TypeGetNativeData = (TypeGetNativeDataFnPtr)dlsym(handle, "rsaTypeGetNativeData"); 418872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.TypeGetNativeData == NULL) { 428872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.TypeGetNativeData"); 43f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 44f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 45c1b33d665c8caf5760f68c45c6ca0baa649b832aJohn Reck dispatchTab.ElementGetNativeData = (ElementGetNativeDataFnPtr)dlsym(handle, "rsaElementGetNativeData"); 468872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ElementGetNativeData == NULL) { 478872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ElementGetNativeData"); 488872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 49ea70d22dc8dc5d61f075edf6d03f86f6a68169cdMatt Sarett } 50ea70d22dc8dc5d61f075edf6d03f86f6a68169cdMatt Sarett dispatchTab.ElementGetSubElements = (ElementGetSubElementsFnPtr)dlsym(handle, "rsaElementGetSubElements"); 518872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ElementGetSubElements == NULL) { 528872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ElementGetSubElements"); 53f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 54f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 55ea70d22dc8dc5d61f075edf6d03f86f6a68169cdMatt Sarett dispatchTab.DeviceCreate = (DeviceCreateFnPtr)dlsym(handle, "rsDeviceCreate"); 56ea70d22dc8dc5d61f075edf6d03f86f6a68169cdMatt Sarett if (dispatchTab.DeviceCreate == NULL) { 57ea70d22dc8dc5d61f075edf6d03f86f6a68169cdMatt Sarett LOG_ERR("Couldn't initialize dispatchTab.DeviceCreate"); 58ea70d22dc8dc5d61f075edf6d03f86f6a68169cdMatt Sarett return false; 59ea70d22dc8dc5d61f075edf6d03f86f6a68169cdMatt Sarett } 60f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.DeviceDestroy = (DeviceDestroyFnPtr)dlsym(handle, "rsDeviceDestroy"); 61c1b33d665c8caf5760f68c45c6ca0baa649b832aJohn Reck if (dispatchTab.DeviceDestroy == NULL) { 628242656f495847c50c9ceaea92839dce78218a75Romain Guy LOG_ERR("Couldn't initialize dispatchTab.DeviceDestroy"); 63ca9b703b8862b4b0a9c6134a0b3e0d1a89a9ae64Matt Sarett return false; 64ca9b703b8862b4b0a9c6134a0b3e0d1a89a9ae64Matt Sarett } 658242656f495847c50c9ceaea92839dce78218a75Romain Guy dispatchTab.DeviceSetConfig = (DeviceSetConfigFnPtr)dlsym(handle, "rsDeviceSetConfig"); 668242656f495847c50c9ceaea92839dce78218a75Romain Guy if (dispatchTab.DeviceSetConfig == NULL) { 67ea70d22dc8dc5d61f075edf6d03f86f6a68169cdMatt Sarett LOG_ERR("Couldn't initialize dispatchTab.DeviceSetConfig"); 688872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 698872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 70021693b967a2c5556dddd183eb0247df4079e1adStan Iliev dispatchTab.ContextCreate = (ContextCreateFnPtr)dlsym(handle, "rsContextCreate");; 71021693b967a2c5556dddd183eb0247df4079e1adStan Iliev if (dispatchTab.ContextCreate == NULL) { 72c190813b938ecf28d9e76b07098e9637ced8808eDerek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ContextCreate"); 736acfe16b5650446dbdcce3bd779b52fb6533a41eMike Reed return false; 746acfe16b5650446dbdcce3bd779b52fb6533a41eMike Reed } 756acfe16b5650446dbdcce3bd779b52fb6533a41eMike Reed dispatchTab.GetName = (GetNameFnPtr)dlsym(handle, "rsaGetName");; 766acfe16b5650446dbdcce3bd779b52fb6533a41eMike Reed if (dispatchTab.GetName == NULL) { 77c190813b938ecf28d9e76b07098e9637ced8808eDerek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.GetName"); 78c190813b938ecf28d9e76b07098e9637ced8808eDerek Sollenberger return false; 79c190813b938ecf28d9e76b07098e9637ced8808eDerek Sollenberger } 80c190813b938ecf28d9e76b07098e9637ced8808eDerek Sollenberger dispatchTab.ContextDestroy = (ContextDestroyFnPtr)dlsym(handle, "rsContextDestroy"); 818872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ContextDestroy == NULL) { 828872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ContextDestroy"); 838872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 848872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 85c1b33d665c8caf5760f68c45c6ca0baa649b832aJohn Reck dispatchTab.ContextGetMessage = (ContextGetMessageFnPtr)dlsym(handle, "rsContextGetMessage"); 868242656f495847c50c9ceaea92839dce78218a75Romain Guy if (dispatchTab.ContextGetMessage == NULL) { 87ca9b703b8862b4b0a9c6134a0b3e0d1a89a9ae64Matt Sarett LOG_ERR("Couldn't initialize dispatchTab.ContextGetMessage"); 88ca9b703b8862b4b0a9c6134a0b3e0d1a89a9ae64Matt Sarett return false; 898242656f495847c50c9ceaea92839dce78218a75Romain Guy } 908242656f495847c50c9ceaea92839dce78218a75Romain Guy dispatchTab.ContextPeekMessage = (ContextPeekMessageFnPtr)dlsym(handle, "rsContextPeekMessage"); 914f641d1e4586b027969052cc0ad6b65c1158e72eTony Mantler if (dispatchTab.ContextPeekMessage == NULL) { 924f641d1e4586b027969052cc0ad6b65c1158e72eTony Mantler LOG_ERR("Couldn't initialize dispatchTab.ContextPeekMessage"); 93ea70d22dc8dc5d61f075edf6d03f86f6a68169cdMatt Sarett return false; 94ea70d22dc8dc5d61f075edf6d03f86f6a68169cdMatt Sarett } 95ea70d22dc8dc5d61f075edf6d03f86f6a68169cdMatt Sarett dispatchTab.ContextSendMessage = (ContextSendMessageFnPtr)dlsym(handle, "rsContextSendMessage"); 964f641d1e4586b027969052cc0ad6b65c1158e72eTony Mantler if (dispatchTab.ContextSendMessage == NULL) { 978872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ContextSendMessage"); 98f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 998872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 1008872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ContextInitToClient = (ContextInitToClientFnPtr)dlsym(handle, "rsContextInitToClient"); 1018872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ContextInitToClient == NULL) { 1028872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ContextInitToClient"); 1038872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 1048872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 1058872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ContextDeinitToClient = (ContextDeinitToClientFnPtr)dlsym(handle, "rsContextDeinitToClient"); 106f35b989d26bb98900f6c5fa2e586326b30b6e161Leon Scroggins III if (dispatchTab.ContextDeinitToClient == NULL) { 1078872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ContextDeinitToClient"); 1088872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 1098872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 110f35b989d26bb98900f6c5fa2e586326b30b6e161Leon Scroggins III dispatchTab.TypeCreate = (TypeCreateFnPtr)dlsym(handle, "rsTypeCreate"); 1118872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.TypeCreate == NULL) { 1128872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.TypeCreate"); 1138872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 114f35b989d26bb98900f6c5fa2e586326b30b6e161Leon Scroggins III } 1158872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.AllocationCreateTyped = (AllocationCreateTypedFnPtr)dlsym(handle, "rsAllocationCreateTyped"); 1168872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.AllocationCreateTyped == NULL) { 1178872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.AllocationCreateTyped"); 1188872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 1198872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 1208872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.AllocationCreateFromBitmap = (AllocationCreateFromBitmapFnPtr)dlsym(handle, "rsAllocationCreateFromBitmap"); 1218872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.AllocationCreateFromBitmap == NULL) { 1228872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.AllocationCreateFromBitmap"); 1238872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 1248872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 125eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita dispatchTab.AllocationCubeCreateFromBitmap = (AllocationCubeCreateFromBitmapFnPtr)dlsym(handle, "rsAllocationCubeCreateFromBitmap"); 1268872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.AllocationCubeCreateFromBitmap == NULL) { 1278872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.AllocationCubeCreateFromBitmap"); 1288872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 1298872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 1308872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.AllocationGetSurface = (AllocationGetSurfaceFnPtr)dlsym(handle, "rsAllocationGetSurface"); 1315e27140f48a1ec0ae3890dca84bfa91bd32ecb3bFlorin Malita if (dispatchTab.AllocationGetSurface == NULL) { 1325e27140f48a1ec0ae3890dca84bfa91bd32ecb3bFlorin Malita LOG_ERR("Couldn't initialize dispatchTab.AllocationGetSurface"); 1335e27140f48a1ec0ae3890dca84bfa91bd32ecb3bFlorin Malita return false; 1345e27140f48a1ec0ae3890dca84bfa91bd32ecb3bFlorin Malita } 1358872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.AllocationSetSurface = (AllocationSetSurfaceFnPtr)dlsym(handle, "rsAllocationSetSurface"); 136f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.AllocationSetSurface == NULL) { 137f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.AllocationSetSurface"); 1388872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 1398872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 1408872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ContextFinish = (ContextFinishFnPtr)dlsym(handle, "rsContextFinish"); 1418872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ContextFinish == NULL) { 1428872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ContextFinish"); 143eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita return false; 144eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita } 1458872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ContextDump = (ContextDumpFnPtr)dlsym(handle, "rsContextDump"); 1468872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ContextDump == NULL) { 1478872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ContextDump"); 1488872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 1498872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 1508872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ContextSetPriority = (ContextSetPriorityFnPtr)dlsym(handle, "rsContextSetPriority"); 151f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.ContextSetPriority == NULL) { 1528872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ContextSetPriority"); 1538872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 154f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 1558872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.AssignName = (AssignNameFnPtr)dlsym(handle, "rsAssignName"); 1568872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.AssignName == NULL) { 1578872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.AssignName"); 1588872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 1598872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 160f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.ObjDestroy = (ObjDestroyFnPtr)dlsym(handle, "rsObjDestroy"); 161f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.ObjDestroy == NULL) { 1628872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ObjDestroy"); 1638872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 1648872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 1658872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ElementCreate = (ElementCreateFnPtr)dlsym(handle, "rsElementCreate"); 1668872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ElementCreate == NULL) { 1678872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ElementCreate"); 1688872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 1698872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 1708872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ElementCreate2 = (ElementCreate2FnPtr)dlsym(handle, "rsElementCreate2"); 171eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita if (dispatchTab.ElementCreate2 == NULL) { 172eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita LOG_ERR("Couldn't initialize dispatchTab.ElementCreate2"); 173eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita return false; 17483427ff2224c89cc1a590ea609206c95c8ee039eYuqian Li } 17583427ff2224c89cc1a590ea609206c95c8ee039eYuqian Li dispatchTab.AllocationCopyToBitmap = (AllocationCopyToBitmapFnPtr)dlsym(handle, "rsAllocationCopyToBitmap"); 17683427ff2224c89cc1a590ea609206c95c8ee039eYuqian Li if (dispatchTab.AllocationCopyToBitmap == NULL) { 17783427ff2224c89cc1a590ea609206c95c8ee039eYuqian Li LOG_ERR("Couldn't initialize dispatchTab.AllocationCopyToBitmap"); 178eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita return false; 179eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita } 180eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita dispatchTab.Allocation1DData = (Allocation1DDataFnPtr)dlsym(handle, "rsAllocation1DData"); 181eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita if (dispatchTab.Allocation1DData == NULL) { 182eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita LOG_ERR("Couldn't initialize dispatchTab.Allocation1DData"); 183eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita return false; 184eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita } 185eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita dispatchTab.Allocation1DElementData = (Allocation1DElementDataFnPtr)dlsym(handle, "rsAllocation1DElementData"); 1868872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.Allocation1DElementData == NULL) { 187eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita LOG_ERR("Couldn't initialize dispatchTab.Allocation1DElementData"); 188eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita return false; 189b8201195dfb2bae05faaf91b9b3d065e2f199929Derek Sollenberger } 190eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita dispatchTab.Allocation2DData = (Allocation2DDataFnPtr)dlsym(handle, "rsAllocation2DData"); 19168885e38b86405b333e3f8fd4ff0a104889147c4Stan Iliev if (dispatchTab.Allocation2DData == NULL) { 1928872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.Allocation2DData"); 1938872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 1948872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 195eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita dispatchTab.Allocation3DData = (Allocation3DDataFnPtr)dlsym(handle, "rsAllocation3DData"); 196eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita if (dispatchTab.Allocation3DData == NULL) { 197fd92ee4b731bee39f8b100cd138fb491de9d66eeYuqian Li LOG_ERR("Couldn't initialize dispatchTab.Allocation3DData"); 198fd92ee4b731bee39f8b100cd138fb491de9d66eeYuqian Li return false; 199fd92ee4b731bee39f8b100cd138fb491de9d66eeYuqian Li } 200eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita dispatchTab.AllocationGenerateMipmaps = (AllocationGenerateMipmapsFnPtr)dlsym(handle, "rsAllocationGenerateMipmaps"); 201fd92ee4b731bee39f8b100cd138fb491de9d66eeYuqian Li if (dispatchTab.AllocationGenerateMipmaps == NULL) { 2028872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.AllocationGenerateMipmaps"); 2038872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 204f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 205f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.AllocationRead = (AllocationReadFnPtr)dlsym(handle, "rsAllocationRead"); 2066e49c9f007c879f05b035c40c0ba543c00f9d0d0Mike Reed if (dispatchTab.AllocationRead == NULL) { 207f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.AllocationRead"); 2086e49c9f007c879f05b035c40c0ba543c00f9d0d0Mike Reed return false; 209f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 2106e49c9f007c879f05b035c40c0ba543c00f9d0d0Mike Reed dispatchTab.Allocation1DRead = (Allocation1DReadFnPtr)dlsym(handle, "rsAllocation1DRead"); 211f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.Allocation1DRead == NULL) { 212f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.Allocation1DRead"); 213f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 214f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 215f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.Allocation2DRead = (Allocation2DReadFnPtr)dlsym(handle, "rsAllocation2DRead"); 216f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.Allocation2DRead == NULL) { 217f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.Allocation2DRead"); 218f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 219f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 220f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.AllocationSyncAll = (AllocationSyncAllFnPtr)dlsym(handle, "rsAllocationSyncAll"); 221f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.AllocationSyncAll == NULL) { 222f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.AllocationSyncAll"); 223f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 224f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 225f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.AllocationResize1D = (AllocationResize1DFnPtr)dlsym(handle, "rsAllocationResize1D"); 226f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.AllocationResize1D == NULL) { 227f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.AllocationResize1D"); 228f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 229f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 230f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.AllocationCopy2DRange = (AllocationCopy2DRangeFnPtr)dlsym(handle, "rsAllocationCopy2DRange"); 231f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.AllocationCopy2DRange == NULL) { 232f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.AllocationCopy2DRange"); 233f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 234f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 2356e49c9f007c879f05b035c40c0ba543c00f9d0d0Mike Reed dispatchTab.AllocationCopy3DRange = (AllocationCopy3DRangeFnPtr)dlsym(handle, "rsAllocationCopy3DRange"); 2366e49c9f007c879f05b035c40c0ba543c00f9d0d0Mike Reed if (dispatchTab.AllocationCopy3DRange == NULL) { 2376e49c9f007c879f05b035c40c0ba543c00f9d0d0Mike Reed LOG_ERR("Couldn't initialize dispatchTab.AllocationCopy3DRange"); 238f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 239f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 240f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.SamplerCreate = (SamplerCreateFnPtr)dlsym(handle, "rsSamplerCreate"); 241f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.SamplerCreate == NULL) { 242f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.SamplerCreate"); 243f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 244f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 245f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.ScriptBindAllocation = (ScriptBindAllocationFnPtr)dlsym(handle, "rsScriptBindAllocation"); 246f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.ScriptBindAllocation == NULL) { 247f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.ScriptBindAllocation"); 248f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 249f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 250f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.ScriptSetTimeZone = (ScriptSetTimeZoneFnPtr)dlsym(handle, "rsScriptSetTimeZone"); 251f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.ScriptSetTimeZone == NULL) { 252f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.ScriptSetTimeZone"); 253f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 2548872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 2558872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ScriptInvoke = (ScriptInvokeFnPtr)dlsym(handle, "rsScriptInvoke"); 2568872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ScriptInvoke == NULL) { 2578872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptInvoke"); 258eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita return false; 2598872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 260eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita dispatchTab.ScriptInvokeV = (ScriptInvokeVFnPtr)dlsym(handle, "rsScriptInvokeV"); 2618872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ScriptInvokeV == NULL) { 2628872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptInvokeV"); 263eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita return false; 2648872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 265eecff56fed5dd5206acfbc5007b4912081b36d3bFlorin Malita dispatchTab.ScriptForEach = (ScriptForEachFnPtr)dlsym(handle, "rsScriptForEach"); 2668872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ScriptForEach == NULL) { 2678872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptForEach"); 2688872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 2698872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 270f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.ScriptSetVarI = (ScriptSetVarIFnPtr)dlsym(handle, "rsScriptSetVarI"); 271d1cbc1608906302130158acc4c72c82c89b49e10Ben Wagner if (dispatchTab.ScriptSetVarI == NULL) { 2728872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptSetVarI"); 2738872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 2748872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 2755e27140f48a1ec0ae3890dca84bfa91bd32ecb3bFlorin Malita dispatchTab.ScriptSetVarObj = (ScriptSetVarObjFnPtr)dlsym(handle, "rsScriptSetVarObj"); 2768872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ScriptSetVarObj == NULL) { 277f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.ScriptSetVarObj"); 2788872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 2798872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 280f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.ScriptSetVarJ = (ScriptSetVarJFnPtr)dlsym(handle, "rsScriptSetVarJ"); 2816e49c9f007c879f05b035c40c0ba543c00f9d0d0Mike Reed if (dispatchTab.ScriptSetVarJ == NULL) { 282f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.ScriptSetVarJ"); 283f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 284f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 285f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.ScriptSetVarF = (ScriptSetVarFFnPtr)dlsym(handle, "rsScriptSetVarF"); 286f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.ScriptSetVarF == NULL) { 2878872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptSetVarF"); 2888872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 2898872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 290f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.ScriptSetVarD = (ScriptSetVarDFnPtr)dlsym(handle, "rsScriptSetVarD"); 291f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.ScriptSetVarD == NULL) { 292f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.ScriptSetVarD"); 293f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 294f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 2958872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ScriptSetVarV = (ScriptSetVarVFnPtr)dlsym(handle, "rsScriptSetVarV"); 296f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.ScriptSetVarV == NULL) { 297f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.ScriptSetVarV"); 2988872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 299f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 3006acfe16b5650446dbdcce3bd779b52fb6533a41eMike Reed dispatchTab.ScriptGetVarV = (ScriptGetVarVFnPtr)dlsym(handle, "rsScriptGetVarV"); 3018872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ScriptGetVarV == NULL) { 3028872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptGetVarV"); 303f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 304f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 305f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.ScriptSetVarVE = (ScriptSetVarVEFnPtr)dlsym(handle, "rsScriptSetVarVE"); 306f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.ScriptSetVarVE == NULL) { 307f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev LOG_ERR("Couldn't initialize dispatchTab.ScriptSetVarVE"); 308f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev return false; 309f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev } 310f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev dispatchTab.ScriptCCreate = (ScriptCCreateFnPtr)dlsym(handle, "rsScriptCCreate"); 311f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.ScriptCCreate == NULL) { 3128872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptCCreate"); 3138872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3148872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3158872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ScriptIntrinsicCreate = (ScriptIntrinsicCreateFnPtr)dlsym(handle, "rsScriptIntrinsicCreate"); 3168872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ScriptIntrinsicCreate == NULL) { 3178872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptIntrinsicCreate"); 3188872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3198872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3208872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ScriptKernelIDCreate = (ScriptKernelIDCreateFnPtr)dlsym(handle, "rsScriptKernelIDCreate"); 3218872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ScriptKernelIDCreate == NULL) { 3228872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptKernelIDCreate"); 3238872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3248872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3258872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ScriptFieldIDCreate = (ScriptFieldIDCreateFnPtr)dlsym(handle, "rsScriptFieldIDCreate"); 3268872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ScriptFieldIDCreate == NULL) { 3278872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptFieldIDCreate"); 3288872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3298872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3308872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ScriptGroupCreate = (ScriptGroupCreateFnPtr)dlsym(handle, "rsScriptGroupCreate"); 3318872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ScriptGroupCreate == NULL) { 3328872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptGroupCreate"); 3338872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3348872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3358872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ScriptGroupSetOutput = (ScriptGroupSetOutputFnPtr)dlsym(handle, "rsScriptGroupSetOutput"); 3368872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ScriptGroupSetOutput == NULL) { 3378872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptGroupSetOutput"); 3388872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3398872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3408872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ScriptGroupSetInput = (ScriptGroupSetInputFnPtr)dlsym(handle, "rsScriptGroupSetInput"); 3418872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ScriptGroupSetInput == NULL) { 3428872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptGroupSetInput"); 3438872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3448872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3458872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ScriptGroupExecute = (ScriptGroupExecuteFnPtr)dlsym(handle, "rsScriptGroupExecute"); 3468872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ScriptGroupExecute == NULL) { 3478872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptGroupExecute"); 3488872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3498872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3508872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.AllocationIoSend = (AllocationIoSendFnPtr)dlsym(handle, "rsAllocationIoSend"); 3518872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.AllocationIoSend == NULL) { 3528872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.AllocationIoSend"); 3538872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3548872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3558872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.AllocationIoReceive = (AllocationIoReceiveFnPtr)dlsym(handle, "rsAllocationIoReceive"); 3565e4389823191aafff7422561f134dbdb391e0a2dMike Reed if (dispatchTab.AllocationIoReceive == NULL) { 3578872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.AllocationIoReceive"); 3588872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3598872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3608872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger // API_21 functions 3618872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (device_api >= 21) { 3628872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.AllocationGetPointer = (AllocationGetPointerFnPtr)dlsym(handle, "rsAllocationGetPointer"); 3638872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.AllocationGetPointer == NULL) { 3648872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.AllocationGetPointer"); 3658872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3668872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3678872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3688872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger // API_23 functions 3698872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (device_api >= 23) { 3708872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger // ScriptGroup V2 functions 3718872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ScriptInvokeIDCreate = (ScriptInvokeIDCreateFnPtr)dlsym(handle, "rsScriptInvokeIDCreate"); 3728872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ScriptInvokeIDCreate == NULL) { 3738872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptInvokeIDCreate"); 3748872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3758872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3768872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ClosureCreate = (ClosureCreateFnPtr)dlsym(handle, "rsClosureCreate"); 3778872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ClosureCreate == NULL) { 3788872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ClosureCreate"); 3798872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3808872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3818872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.InvokeClosureCreate = (InvokeClosureCreateFnPtr)dlsym(handle, "rsInvokeClosureCreate"); 3828872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.InvokeClosureCreate == NULL) { 3838872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.InvokeClosureCreate"); 3848872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 3856e49c9f007c879f05b035c40c0ba543c00f9d0d0Mike Reed } 3868872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ClosureSetArg = (ClosureSetArgFnPtr)dlsym(handle, "rsClosureSetArg"); 387f50806afb8982acbab4510a8d04bbcf13a2bcd9eStan Iliev if (dispatchTab.ClosureSetArg == NULL) { 3888872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ClosureSetArg"); 3895ec6a2878b2ad933c5da6fe2341c854155acc24cChris Craik return false; 3908872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 3918872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ClosureSetGlobal = (ClosureSetGlobalFnPtr)dlsym(handle, "rsClosureSetGlobal"); 3926e49c9f007c879f05b035c40c0ba543c00f9d0d0Mike Reed if (dispatchTab.ClosureSetGlobal == NULL) { 393f7d98f436cf1351cb479e0abd6af7056553a6fa9Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ClosureSetGlobal"); 394f7d98f436cf1351cb479e0abd6af7056553a6fa9Derek Sollenberger return false; 3955ec6a2878b2ad933c5da6fe2341c854155acc24cChris Craik } 3968872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.ScriptGroup2Create = (ScriptGroup2CreateFnPtr)dlsym(handle, "rsScriptGroup2Create"); 3978872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.ScriptGroup2Create == NULL) { 3988872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.ScriptGroup2Create"); 3998872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 4008872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 4018872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.AllocationElementData = (AllocationElementDataFnPtr)dlsym(handle, "rsAllocationElementData"); 402acb4099deff72c2c631f7110a405a3331d3e8b27Derek Sollenberger if (dispatchTab.AllocationElementData == NULL) { 403acb4099deff72c2c631f7110a405a3331d3e8b27Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.AllocationElementData"); 404acb4099deff72c2c631f7110a405a3331d3e8b27Derek Sollenberger return false; 405acb4099deff72c2c631f7110a405a3331d3e8b27Derek Sollenberger } 4068872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger dispatchTab.AllocationElementRead = (AllocationElementReadFnPtr)dlsym(handle, "rsAllocationElementRead"); 4078872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger if (dispatchTab.AllocationElementRead == NULL) { 4088872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize dispatchTab.AllocationElementRead"); 4098872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 4108872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 41144dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett dispatchTab.Allocation3DRead = (Allocation3DReadFnPtr)dlsym(handle, "rsAllocation3DRead"); 41244dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett if (dispatchTab.Allocation3DRead == NULL) { 41344dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett LOG_ERR("Couldn't initialize dispatchTab.Allocation3DRead"); 41444dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett return false; 41544dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett } 41644dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett dispatchTab.ScriptForEachMulti = (ScriptForEachMultiFnPtr)dlsym(handle, "rsScriptForEachMulti"); 41744dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett if (dispatchTab.ScriptForEachMulti == NULL) { 41844dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett LOG_ERR("Couldn't initialize dispatchTab.ScriptForEachMulti"); 41944dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett return false; 42044dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett } 42144dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett } 42244dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett // TODO: Update the API level when reduce is added. 42344dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett if (device_api >= REDUCE_API_LEVEL) { 42444dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett dispatchTab.ScriptReduce = (ScriptReduceFnPtr)dlsym(handle, "rsScriptReduce"); 42544dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett if (dispatchTab.ScriptReduce == nullptr) { 42644dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett LOG_ERR("Couldn't initialize dispatchTab.ScriptReduce"); 42744dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett return false; 42844dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett } 42944dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett } 43044dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett 43144dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett return true; 43244dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett 43344dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett} 43444dc270830758d5b0f5b099e7c0e308bdf027dfbMatt Sarett 4358872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger 4368872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenbergerbool loadIOSuppSyms(void* handleIO, ioSuppDT& ioDispatch){ 4378872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger ioDispatch.sAllocationSetSurface = (sAllocationSetSurfaceFnPtr)dlsym(handleIO, "AllocationSetSurface"); 438260ab726486317496bc12a57d599ea96dcde3284Mike Reed if (ioDispatch.sAllocationSetSurface == NULL) { 4398872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger LOG_ERR("Couldn't initialize ioDispatch.sAllocationSetSurface"); 4408872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger return false; 4418872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger } 442acb4099deff72c2c631f7110a405a3331d3e8b27Derek Sollenberger return true; 4438872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger} 4448872b38ef403cc2c44aca07d392f5e9426fd7f54Derek Sollenberger