Fix for [#31418] Code review: OpenCL initialization
authorJeroen Bakker <j.bakker@atmind.nl>
Mon, 21 May 2012 19:31:29 +0000 (19:31 +0000)
committerJeroen Bakker <j.bakker@atmind.nl>
Mon, 21 May 2012 19:31:29 +0000 (19:31 +0000)
 * Moved OpenCL initialization to first use
 * cleaned up build files
 * display some debug lines only when debugging is enabled.

source/blender/compositor/intern/COM_WorkScheduler.cpp
source/blender/compositor/intern/COM_compositor.cpp
source/creator/CMakeLists.txt

index c82a01a1e0a747169c2ed4334c87412e2e7ac6be..406f0acf7241645ab1edec6734aa3443c318534a 100644 (file)
@@ -29,6 +29,7 @@
 #include "OCL_opencl.h"
 #include "stdio.h"
 #include "COM_OpenCLKernels.cl.cpp"
+#include "BKE_global.h"
 
 #if COM_CURRENT_THREADING_MODEL == COM_TM_NOTHREAD
 #warning COM_CURRENT_THREADING_MODEL COM_TM_NOTHREAD is activated. Use only for debugging.
@@ -235,7 +236,7 @@ void WorkScheduler::initialize()
                cl_int error;
                error = clGetPlatformIDs(0, 0, &numberOfPlatforms);
                if (error != CL_SUCCESS) { printf("CLERROR[%d]: %s\n", error, clewErrorString(error));  }
-               printf("%d number of platforms\n", numberOfPlatforms);
+               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);
                unsigned int indexPlatform;
@@ -280,11 +281,13 @@ void WorkScheduler::initialize()
                        OpenCLDevice *clDevice = new OpenCLDevice(context, device, program);
                        clDevice->initialize(),
                        gpudevices.push_back(clDevice);
-                       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);
+                       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);
+                       }
                }
                delete cldevices;
                delete platforms;
index bd967190987f7cf9732e4821839aa2f71c84ab13..e27bff4401e5bdbff17b04f8eaa68a0151e6ed72 100644 (file)
@@ -29,6 +29,7 @@ extern "C" {
 #include "COM_compositor.h"
 #include "COM_ExecutionSystem.h"
 #include "COM_WorkScheduler.h"
+#include "OCL_opencl.h"
 
 static ThreadMutex *compositorMutex;
 void COM_execute(bNodeTree *editingtree, int rendering)
@@ -36,6 +37,7 @@ void COM_execute(bNodeTree *editingtree, int rendering)
        if (compositorMutex == NULL) { /// TODO: move to blender startup phase
                compositorMutex = new ThreadMutex();
                BLI_mutex_init(compositorMutex);
+               OCL_init();
                WorkScheduler::initialize(); ///TODO: call workscheduler.deinitialize somewhere
        }
        BLI_mutex_lock(compositorMutex);
index d76c2071dca8c0b6eebdc77eb6bd1e5ce2b2fb82..0f674b407e249f6c79784edf3e49c033429a3064 100644 (file)
@@ -38,7 +38,6 @@ blender_include_dirs(
        ../blender/makesdna
        ../blender/gpu
        ../blender/windowmanager
-       ../blender/opencl
 )
 
 if(WIN32)