diff options
-rw-r--r-- | intern/opencl/OCL_opencl.h | 2 | ||||
-rw-r--r-- | intern/opencl/intern/OCL_opencl.c | 4 | ||||
-rw-r--r-- | intern/opencl/intern/clew.c | 5 | ||||
-rw-r--r-- | source/blender/compositor/intern/COM_WorkScheduler.cpp | 3 |
4 files changed, 10 insertions, 4 deletions
diff --git a/intern/opencl/OCL_opencl.h b/intern/opencl/OCL_opencl.h index 4ee167b2fb4..733e3527197 100644 --- a/intern/opencl/OCL_opencl.h +++ b/intern/opencl/OCL_opencl.h @@ -28,7 +28,7 @@ extern "C" { #endif #include "intern/clew.h" -void OCL_init(void); +int OCL_init(void); #ifdef __cplusplus } diff --git a/intern/opencl/intern/OCL_opencl.c b/intern/opencl/intern/OCL_opencl.c index e3130e16bde..33a936896fd 100644 --- a/intern/opencl/intern/OCL_opencl.c +++ b/intern/opencl/intern/OCL_opencl.c @@ -22,7 +22,7 @@ #include "OCL_opencl.h" -void OCL_init(void) +int OCL_init(void) { #ifdef _WIN32 const char *path = "OpenCL.dll"; @@ -32,6 +32,6 @@ void OCL_init(void) const char *path = "libOpenCL.so"; #endif - clewInit(path); + return (clewInit(path) == CLEW_SUCCESS); } diff --git a/intern/opencl/intern/clew.c b/intern/opencl/intern/clew.c index d68eb17288f..1e31ebced0a 100644 --- a/intern/opencl/intern/clew.c +++ b/intern/opencl/intern/clew.c @@ -227,6 +227,11 @@ int clewInit(const char* path) __oclEnqueueWaitForEvents = (PFNCLENQUEUEWAITFOREVENTS )CLCC_DYNLIB_IMPORT(module, "clEnqueueWaitForEvents"); __oclEnqueueBarrier = (PFNCLENQUEUEBARRIER )CLCC_DYNLIB_IMPORT(module, "clEnqueueBarrier"); __oclGetExtensionFunctionAddress = (PFNCLGETEXTENSIONFUNCTIONADDRESS )CLCC_DYNLIB_IMPORT(module, "clGetExtensionFunctionAddress"); + + if(__oclGetPlatformIDs == NULL) return CLEW_ERROR_OPEN_FAILED; + if(__oclGetPlatformInfo == NULL) return CLEW_ERROR_OPEN_FAILED; + if(__oclGetDeviceIDs == NULL) return CLEW_ERROR_OPEN_FAILED; + if(__oclGetDeviceInfo == NULL) return CLEW_ERROR_OPEN_FAILED; return CLEW_SUCCESS; } diff --git a/source/blender/compositor/intern/COM_WorkScheduler.cpp b/source/blender/compositor/intern/COM_WorkScheduler.cpp index 402fa28e210..be9a3612a0b 100644 --- a/source/blender/compositor/intern/COM_WorkScheduler.cpp +++ b/source/blender/compositor/intern/COM_WorkScheduler.cpp @@ -304,7 +304,8 @@ void WorkScheduler::initialize(bool use_opencl) g_context = NULL; g_program = NULL; - OCL_init(); /* this will check and skip if already initialized */ + if(!OCL_init()) /* this will check for errors and skip if already initialized */ + return; if (clCreateContextFromType) { cl_uint numberOfPlatforms = 0; |