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:
@@ -28,7 +28,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#include "intern/clew.h"
|
||||
void OCL_init(void);
|
||||
int OCL_init(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user