[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50552] trunk/blender/intern/cycles: Attempted fix for #32415: tighten up cycles opencl initialization checks to try to
Brecht Van Lommel
brechtvanlommel at pandora.be
Wed Sep 12 13:25:48 CEST 2012
Revision: 50552
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50552
Author: blendix
Date: 2012-09-12 11:25:47 +0000 (Wed, 12 Sep 2012)
Log Message:
-----------
Attempted fix for #32415: tighten up cycles opencl initialization checks to try to
avoid crashes. Don't think these should be needed but maybe it helps.
Modified Paths:
--------------
trunk/blender/intern/cycles/device/device_opencl.cpp
trunk/blender/intern/cycles/util/util_opencl.cpp
Modified: trunk/blender/intern/cycles/device/device_opencl.cpp
===================================================================
--- trunk/blender/intern/cycles/device/device_opencl.cpp 2012-09-12 11:09:27 UTC (rev 50551)
+++ trunk/blender/intern/cycles/device/device_opencl.cpp 2012-09-12 11:25:47 UTC (rev 50552)
@@ -739,29 +739,31 @@
void device_opencl_info(vector<DeviceInfo>& devices)
{
vector<cl_device_id> device_ids;
- cl_uint num_devices;
- cl_platform_id platform_id;
- cl_uint num_platforms;
+ cl_uint num_devices = 0;
+ vector<cl_platform_id> platform_ids;
+ cl_uint num_platforms = 0;
/* get devices */
if(clGetPlatformIDs(0, NULL, &num_platforms) != CL_SUCCESS || num_platforms == 0)
return;
+
+ platform_ids.resize(num_platforms);
- if(clGetPlatformIDs(1, &platform_id, NULL) != CL_SUCCESS)
+ if(clGetPlatformIDs(num_platforms, &platform_ids[0], NULL) != CL_SUCCESS)
return;
- if(clGetDeviceIDs(platform_id, CL_DEVICE_TYPE_GPU|CL_DEVICE_TYPE_ACCELERATOR, 0, NULL, &num_devices) != CL_SUCCESS)
+ if(clGetDeviceIDs(platform_ids[0], CL_DEVICE_TYPE_GPU|CL_DEVICE_TYPE_ACCELERATOR, 0, NULL, &num_devices) != CL_SUCCESS || num_devices == 0)
return;
device_ids.resize(num_devices);
- if(clGetDeviceIDs(platform_id, CL_DEVICE_TYPE_GPU|CL_DEVICE_TYPE_ACCELERATOR, num_devices, &device_ids[0], NULL) != CL_SUCCESS)
+ if(clGetDeviceIDs(platform_ids[0], CL_DEVICE_TYPE_GPU|CL_DEVICE_TYPE_ACCELERATOR, num_devices, &device_ids[0], NULL) != CL_SUCCESS)
return;
/* add devices */
for(int num = 0; num < num_devices; num++) {
cl_device_id device_id = device_ids[num];
- char name[1024];
+ char name[1024] = "\0";
if(clGetDeviceInfo(device_id, CL_DEVICE_NAME, sizeof(name), &name, NULL) != CL_SUCCESS)
continue;
Modified: trunk/blender/intern/cycles/util/util_opencl.cpp
===================================================================
--- trunk/blender/intern/cycles/util/util_opencl.cpp 2012-09-12 11:09:27 UTC (rev 50551)
+++ trunk/blender/intern/cycles/util/util_opencl.cpp 2012-09-12 11:25:47 UTC (rev 50552)
@@ -235,8 +235,10 @@
__clewEnqueueBarrier = (PFNCLENQUEUEBARRIER )CLCC_DYNLIB_IMPORT(module, "clEnqueueBarrier");
__clewGetExtensionFunctionAddress = (PFNCLGETEXTENSIONFUNCTIONADDRESS )CLCC_DYNLIB_IMPORT(module, "clGetExtensionFunctionAddress");
- if(__clewGetPlatformIDs == NULL)
- return 0;
+ if(__clewGetPlatformIDs == NULL) return 0;
+ if(__clewGetPlatformInfo == NULL) return 0;
+ if(__clewGetDeviceIDs == NULL) return 0;
+ if(__clewGetDeviceInfo == NULL) return 0;
return 1;
}
More information about the Bf-blender-cvs
mailing list