Revision: 47245
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47245
Author:   mdewanchand
Date:     2012-05-30 21:09:50 +0000 (Wed, 30 May 2012)
Log Message:
-----------
Fix for 
[#31562] New compositor crashes due to incorrect opencl initialization

Modified Paths:
--------------
    trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp

Modified: trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp        
2012-05-30 19:21:22 UTC (rev 47244)
+++ trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp        
2012-05-30 21:09:50 UTC (rev 47245)
@@ -232,11 +232,10 @@
        context = NULL;
        program = NULL;
        if (clCreateContextFromType) {
-               cl_uint numberOfPlatforms;
+               cl_uint numberOfPlatforms = 0;
                cl_int error;
                error = clGetPlatformIDs(0, 0, &numberOfPlatforms);
                if (error != CL_SUCCESS) { printf("CLERROR[%d]: %s\n", error, 
clewErrorString(error));  }
-               numberOfPlatforms = 0;
                if (G.f & G_DEBUG) printf("%d number of platforms\n", 
numberOfPlatforms);
                cl_platform_id *platforms = new 
cl_platform_id[numberOfPlatforms];
                error = clGetPlatformIDs(numberOfPlatforms, platforms, 0);
@@ -265,7 +264,7 @@
                        error = clBuildProgram(program, totalNumberOfDevices, 
cldevices, 0, 0, 0);
                        if (error != CL_SUCCESS) { 
                                cl_int error2;
-                               size_t ret_val_size;
+                               size_t ret_val_size = 0;
                                printf("CLERROR[%d]: %s\n", error, 
clewErrorString(error));     
                                error2 = clGetProgramBuildInfo(program, 
cldevices[0], CL_PROGRAM_BUILD_LOG, 0, NULL, &ret_val_size);
                                if (error2 != CL_SUCCESS) { 
printf("CLERROR[%d]: %s\n", error, clewErrorString(error)); }
@@ -276,19 +275,20 @@
                                printf("%s", build_log);
                                delete build_log;
                                
-                       }
-                       unsigned int indexDevices;
-                       for (indexDevices = 0 ; indexDevices < 
totalNumberOfDevices ; indexDevices ++) {
-                               cl_device_id device = cldevices[indexDevices];
-                               OpenCLDevice *clDevice = new 
OpenCLDevice(context, device, program);
-                               clDevice->initialize(),
-                               gpudevices.push_back(clDevice);
-                               if (G.f & G_DEBUG) {
-                                       char resultString[32];
-                                       error = clGetDeviceInfo(device, 
CL_DEVICE_NAME, 32, resultString, 0);
-                                       printf("OPENCL_DEVICE: %s, ", 
resultString);
-                                       error = clGetDeviceInfo(device, 
CL_DEVICE_VENDOR, 32, resultString, 0);
-                                       printf("%s\n", resultString);
+                       } else {
+                               unsigned int indexDevices;
+                               for (indexDevices = 0 ; indexDevices < 
totalNumberOfDevices ; indexDevices ++) {
+                                       cl_device_id device = 
cldevices[indexDevices];
+                                       OpenCLDevice *clDevice = new 
OpenCLDevice(context, device, program);
+                                       clDevice->initialize(),
+                                       gpudevices.push_back(clDevice);
+                                       if (G.f & G_DEBUG) {
+                                               char resultString[32];
+                                               error = clGetDeviceInfo(device, 
CL_DEVICE_NAME, 32, resultString, 0);
+                                               printf("OPENCL_DEVICE: %s, ", 
resultString);
+                                               error = clGetDeviceInfo(device, 
CL_DEVICE_VENDOR, 32, resultString, 0);
+                                               printf("%s\n", resultString);
+                                       }
                                }
                        }
                }

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to