Possible fix for [#36086] Activating the opencl option in the compositor causes blender crash

* Now OCL_init() returns error messages if the OpenCL library cannot be loaded.
This commit is contained in:
Thomas Dinges
2013-07-17 12:57:03 +00:00
parent a9eccaf85e
commit c7e2c3f5e1
4 changed files with 10 additions and 4 deletions

View File

@@ -28,7 +28,7 @@ extern "C" {
#endif
#include "intern/clew.h"
void OCL_init(void);
int OCL_init(void);
#ifdef __cplusplus
}

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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;