]> granicus.if.org Git - imagemagick/commitdiff
Added name of vendor to device information.
authordirk <dirk@git.imagemagick.org>
Tue, 20 Sep 2016 19:40:52 +0000 (21:40 +0200)
committerdirk <dirk@git.imagemagick.org>
Tue, 20 Sep 2016 19:40:52 +0000 (21:40 +0200)
MagickCore/opencl-private.h
MagickCore/opencl.c

index 1048a9f62390418040f58f0013769464b53ca81b..3b014537cdfaf39c5fc8d6ecf208ca009bc37a0f 100644 (file)
@@ -323,6 +323,9 @@ struct _MagickCLDevice
 
   ssize_t
     command_queues_index;
+
+  char
+    *vendor_name;
 };
 
 typedef struct _MagickCLEnv
index 6c03ecd2d70e532c6fa524dd8352ce51beac77d2..7c18bf8b89629850844942cbf6dda51bf3d83840 100644 (file)
@@ -116,6 +116,7 @@ typedef struct
   char
     *name,
     *platform_name,
+    *vendor_name,
     *version;
 
   cl_uint
@@ -168,6 +169,7 @@ static inline MagickBooleanType IsSameOpenCLDevice(MagickCLDevice a,
   MagickCLDevice b)
 {
   if ((LocaleCompare(a->platform_name,b->platform_name) == 0) &&
+      (LocaleCompare(a->vendor_name,b->vendor_name) == 0) &&
       (LocaleCompare(a->name,b->name) == 0) &&
       (LocaleCompare(a->version,b->version) == 0) &&
       (a->max_clock_frequency == b->max_clock_frequency) &&
@@ -181,6 +183,7 @@ static inline MagickBooleanType IsBenchmarkedOpenCLDevice(MagickCLDevice a,
   MagickCLDeviceBenchmark *b)
 {
   if ((LocaleCompare(a->platform_name,b->platform_name) == 0) &&
+      (LocaleCompare(a->vendor_name,b->vendor_name) == 0) &&
       (LocaleCompare(a->name,b->name) == 0) &&
       (LocaleCompare(a->version,b->version) == 0) &&
       (a->max_clock_frequency == b->max_clock_frequency) &&
@@ -802,6 +805,8 @@ static void LoadOpenCLDeviceBenchmark(MagickCLEnv clEnv,const char *xml)
 
         device_benchmark->platform_name=RelinquishMagickMemory(
           device_benchmark->platform_name);
+        device_benchmark->vendor_name=RelinquishMagickMemory(
+          device_benchmark->vendor_name);
         device_benchmark->name=RelinquishMagickMemory(device_benchmark->name);
         device_benchmark->version=RelinquishMagickMemory(
           device_benchmark->version);
@@ -855,6 +860,8 @@ static void LoadOpenCLDeviceBenchmark(MagickCLEnv clEnv,const char *xml)
       case 'V':
       case 'v':
       {
+        if (LocaleCompare((char *) keyword,"vendor") == 0)
+          device_benchmark->vendor_name=ConstantString(token);
         if (LocaleCompare((char *) keyword,"version") == 0)
           device_benchmark->version=ConstantString(token);
         break;
@@ -1128,9 +1135,10 @@ static void CacheOpenCLBenchmarks(MagickCLEnv clEnv)
       continue;
 
     if (device->score != MAGICKCORE_OPENCL_UNDEFINED_SCORE)
-      fprintf(cache_file,"  <device platform=\"%s\" name=\"%s\" version=\"%s\"\
- maxClockFrequency=\"%d\" maxComputeUnits=\"%d\" score=\"%.4g\"/>\n",
-        device->platform_name,device->name,device->version,
+      fprintf(cache_file,"  <device platform=\"%s\" vendor=\"%s\" name=\"%s\"\
+ version=\"%s\" maxClockFrequency=\"%d\" maxComputeUnits=\"%d\"\
+ score=\"%.4g\"/>\n",
+        device->platform_name,device->vendor_name,device->name,device->version,
         (int)device->max_clock_frequency,(int)device->max_compute_units,
         device->score);
   }
@@ -2232,6 +2240,13 @@ static void LoadOpenCLDevices(MagickCLEnv clEnv)
       openCL_library->clGetPlatformInfo(platforms[i],CL_PLATFORM_NAME,length,
         device->platform_name,NULL);
 
+      openCL_library->clGetPlatformInfo(platforms[i],CL_PLATFORM_VENDOR,0,NULL,
+        &length);
+      device->vendor_name=AcquireQuantumMemory(length,
+        sizeof(*device->vendor_name));
+      openCL_library->clGetPlatformInfo(platforms[i],CL_PLATFORM_VENDOR,length,
+        device->vendor_name,NULL);
+
       openCL_library->clGetDeviceInfo(devices[j],CL_DEVICE_NAME,0,NULL,
         &length);
       device->name=AcquireQuantumMemory(length,sizeof(*device->name));
@@ -2804,6 +2819,7 @@ static MagickCLDevice RelinquishMagickCLDevice(MagickCLDevice device)
     return((MagickCLDevice) NULL);
 
   device->platform_name=RelinquishMagickMemory(device->platform_name);
+  device->vendor_name=RelinquishMagickMemory(device->vendor_name);
   device->name=RelinquishMagickMemory(device->name);
   device->version=RelinquishMagickMemory(device->version);
   if (device->program != (cl_program) NULL)