From bb4b4105125acb1aa8cc823375656b40e6de93e4 Mon Sep 17 00:00:00 2001 From: peng xiao Date: Thu, 25 Apr 2013 15:00:50 +0800 Subject: [PATCH 1/2] Add ocl::PlatformName to ocl::Info. --- modules/ocl/include/opencv2/ocl.hpp | 1 + modules/ocl/src/initialization.cpp | 14 ++++++++++++-- modules/ocl/test/main.cpp | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/modules/ocl/include/opencv2/ocl.hpp b/modules/ocl/include/opencv2/ocl.hpp index 7cc55b8335..745953d04c 100644 --- a/modules/ocl/include/opencv2/ocl.hpp +++ b/modules/ocl/include/opencv2/ocl.hpp @@ -103,6 +103,7 @@ namespace cv void release(); Info &operator = (const Info &m); std::vector DeviceName; + String PlatformName; }; //////////////////////////////// Initialization & Info //////////////////////// //this function may be obsoleted diff --git a/modules/ocl/src/initialization.cpp b/modules/ocl/src/initialization.cpp index 7dc8d57182..29d81aa1dd 100644 --- a/modules/ocl/src/initialization.cpp +++ b/modules/ocl/src/initialization.cpp @@ -127,7 +127,7 @@ namespace cv cl_platform_id oclplatform; std::vector devices; std::vector devName; - + String platName; cl_context oclcontext; cl_command_queue clCmdQueue; int devnum; @@ -298,10 +298,14 @@ namespace cv std::vector platforms(numPlatforms); openCLSafeCall(clGetPlatformIDs(numPlatforms, &platforms[0], 0)); - char deviceName[256]; int devcienums = 0; + + const static int max_name_length = 256; + char deviceName[max_name_length]; + char plfmName[max_name_length]; for (unsigned i = 0; i < numPlatforms; ++i) { + cl_uint numsdev; cl_int status = clGetDeviceIDs(platforms[i], devicetype, 0, NULL, &numsdev); if(status != CL_DEVICE_NOT_FOUND) @@ -314,6 +318,9 @@ namespace cv openCLSafeCall(clGetDeviceIDs(platforms[i], devicetype, numsdev, &devices[0], 0)); Info ocltmpinfo; + openCLSafeCall(clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, sizeof(plfmName), plfmName, NULL)); + ocltmpinfo.PlatformName = String(plfmName); + ocltmpinfo.impl->platName = String(plfmName); ocltmpinfo.impl->oclplatform = platforms[i]; for(unsigned j = 0; j < numsdev; ++j) { @@ -1035,6 +1042,7 @@ namespace cv impl->release(); impl = new Impl; DeviceName.clear(); + PlatformName.clear(); } Info::~Info() @@ -1048,6 +1056,7 @@ namespace cv impl->release(); impl = m.impl->copy(); DeviceName = m.DeviceName; + PlatformName = m.PlatformName; return *this; } @@ -1055,6 +1064,7 @@ namespace cv { impl = m.impl->copy(); DeviceName = m.DeviceName; + PlatformName = m.PlatformName; } }//namespace ocl diff --git a/modules/ocl/test/main.cpp b/modules/ocl/test/main.cpp index 820d577552..3b16cffdd1 100644 --- a/modules/ocl/test/main.cpp +++ b/modules/ocl/test/main.cpp @@ -117,7 +117,7 @@ int main(int argc, char **argv) } setDevice(oclinfo[pid], device); - + cout << "Platform name:" << oclinfo[pid].PlatformName << endl; cout << "Device type:" << type << endl << "Device name:" << oclinfo[pid].DeviceName[device] << endl; return RUN_ALL_TESTS(); } From 861de8a6e901f52465be3ae0e66f504c5fe537b1 Mon Sep 17 00:00:00 2001 From: peng xiao Date: Wed, 8 May 2013 17:19:34 +0800 Subject: [PATCH 2/2] CL_PLATFORM_VENDOR should be CL_PLATFORM_NAME. --- modules/ocl/src/initialization.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ocl/src/initialization.cpp b/modules/ocl/src/initialization.cpp index 29d81aa1dd..2b1baa6ffc 100644 --- a/modules/ocl/src/initialization.cpp +++ b/modules/ocl/src/initialization.cpp @@ -318,7 +318,7 @@ namespace cv openCLSafeCall(clGetDeviceIDs(platforms[i], devicetype, numsdev, &devices[0], 0)); Info ocltmpinfo; - openCLSafeCall(clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, sizeof(plfmName), plfmName, NULL)); + openCLSafeCall(clGetPlatformInfo(platforms[i], CL_PLATFORM_NAME, sizeof(plfmName), plfmName, NULL)); ocltmpinfo.PlatformName = String(plfmName); ocltmpinfo.impl->platName = String(plfmName); ocltmpinfo.impl->oclplatform = platforms[i];