[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