From: dirk Date: Tue, 10 Dec 2013 22:36:32 +0000 (+0000) Subject: OpenCL fixes. X-Git-Tag: 7.0.1-0~3052 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7b1bb393845ce23b5acdb9171443b50fb822b027;p=imagemagick OpenCL fixes. --- diff --git a/MagickCore/opencl.c b/MagickCore/opencl.c index 65cfe465a..b4d9c859e 100644 --- a/MagickCore/opencl.c +++ b/MagickCore/opencl.c @@ -1339,7 +1339,7 @@ static ds_status initDSProfile(ds_profile** p, const char* version) { clGetPlatformIDs(numPlatforms, platforms, NULL); for (i = 0; i < (unsigned int)numPlatforms; i++) { cl_uint num; - clGetDeviceIDs(platforms[i], CL_DEVICE_TYPE_ALL, 0, NULL, &num); + clGetDeviceIDs(platforms[i], CL_DEVICE_TYPE_CPU | CL_DEVICE_TYPE_GPU, 0, NULL, &num); numDevices+=num; } } @@ -1378,23 +1378,24 @@ static ds_status initDSProfile(ds_profile** p, const char* version) { continue; break; } - clGetDeviceIDs(platforms[i], deviceType, numDevices, devices, &num); + if (clGetDeviceIDs(platforms[i], deviceType, numDevices, devices, &num) != CL_SUCCESS) + continue; for (j = 0; j < num; j++, next++) { size_t length; profile->devices[next].type = DS_DEVICE_OPENCL_DEVICE; profile->devices[next].oclDeviceID = devices[j]; - clGetDeviceInfo(profile->devices[next].oclDeviceID, CL_DEVICE_NAME - , 0, NULL, &length); - profile->devices[next].oclDeviceName = (char*)malloc(sizeof(char)*length); - clGetDeviceInfo(profile->devices[next].oclDeviceID, CL_DEVICE_NAME - , length, profile->devices[next].oclDeviceName, NULL); - - clGetDeviceInfo(profile->devices[next].oclDeviceID, CL_DRIVER_VERSION - , 0, NULL, &length); - profile->devices[next].oclDriverVersion = (char*)malloc(sizeof(char)*length); - clGetDeviceInfo(profile->devices[next].oclDeviceID, CL_DRIVER_VERSION + clGetDeviceInfo(profile->devices[next].oclDeviceID, CL_DEVICE_NAME + , 0, NULL, &length); + profile->devices[next].oclDeviceName = (char*)malloc(sizeof(char)*length); + clGetDeviceInfo(profile->devices[next].oclDeviceID, CL_DEVICE_NAME + , length, profile->devices[next].oclDeviceName, NULL); + + clGetDeviceInfo(profile->devices[next].oclDeviceID, CL_DRIVER_VERSION + , 0, NULL, &length); + profile->devices[next].oclDriverVersion = (char*)malloc(sizeof(char)*length); + clGetDeviceInfo(profile->devices[next].oclDeviceID, CL_DRIVER_VERSION , length, profile->devices[next].oclDriverVersion, NULL); clGetDeviceInfo(profile->devices[next].oclDeviceID, CL_DEVICE_MAX_CLOCK_FREQUENCY