From 564711418d17bbd750a496d119cf0cfaefba2107 Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Mon, 21 May 2012 19:31:29 +0000 Subject: [PATCH] Fix for [#31418] Code review: OpenCL initialization * Moved OpenCL initialization to first use * cleaned up build files * display some debug lines only when debugging is enabled. --- .../compositor/intern/COM_WorkScheduler.cpp | 15 +++++++++------ .../blender/compositor/intern/COM_compositor.cpp | 2 ++ source/creator/CMakeLists.txt | 1 - 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/source/blender/compositor/intern/COM_WorkScheduler.cpp b/source/blender/compositor/intern/COM_WorkScheduler.cpp index c82a01a1e0a..406f0acf724 100644 --- a/source/blender/compositor/intern/COM_WorkScheduler.cpp +++ b/source/blender/compositor/intern/COM_WorkScheduler.cpp @@ -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; diff --git a/source/blender/compositor/intern/COM_compositor.cpp b/source/blender/compositor/intern/COM_compositor.cpp index bd967190987..e27bff4401e 100644 --- a/source/blender/compositor/intern/COM_compositor.cpp +++ b/source/blender/compositor/intern/COM_compositor.cpp @@ -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); diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index d76c2071dca..0f674b407e2 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -38,7 +38,6 @@ blender_include_dirs( ../blender/makesdna ../blender/gpu ../blender/windowmanager - ../blender/opencl ) if(WIN32)