oclHardware getOclHardware(cl_device_type type) { oclHardware hardware = {0, 0, 0, 0, 0, 0}; cl_platform_id platforms[16] = { 0 }; cl_device_id devices[16]; char platformName[256]; char deviceName[256]; cl_uint platformCount = 0; cl_int err = clGetPlatformIDs(0, 0, &platformCount); err = clGetPlatformIDs(16, platforms, &platformCount); if (err != CL_SUCCESS) { std::cout << oclErrorCode(err) << "\n"; return hardware; } for (cl_uint i = 0; i < platformCount; i++) { err = clGetPlatformInfo(platforms[i], CL_PLATFORM_NAME, 256, platformName, 0); if (err != CL_SUCCESS) { std::cout << oclErrorCode(err) << "\n"; return hardware; } cl_uint deviceCount = 0; err = clGetDeviceIDs(platforms[i], type, 16, devices, &deviceCount); //err = clGetDeviceIDs(platforms[i], CL_DEVICE_TYPE_CPU, 16, devices, &deviceCount); if ((err != CL_SUCCESS) || (deviceCount == 0)) { continue; } err = clGetDeviceInfo(devices[0], CL_DEVICE_NAME, 256, deviceName, 0); if (err != CL_SUCCESS) { std::cout << oclErrorCode(err) << "\n"; return hardware; } cl_context_properties contextData[3] = {CL_CONTEXT_PLATFORM, (cl_context_properties)platforms[i], 0}; cl_context context = clCreateContextFromType(contextData, type, 0, 0, &err); if (err != CL_SUCCESS) { continue; } cl_command_queue queue = clCreateCommandQueue(context, devices[0], 0, &err); if (err != CL_SUCCESS) { std::cout << oclErrorCode(err) << "\n"; return hardware; } hardware.mPlatform = platforms[i]; hardware.mContext = context; hardware.mDevice = devices[0]; hardware.mQueue = queue; getDeviceVersion(hardware); std::cout << "Platform = " << platformName << "\n"; std::cout << "Device = " << deviceName << "\n"; std::cout << "OpenCL Version = " << hardware.mMajorVersion << '.' << hardware.mMinorVersion << "\n"; return hardware; } return hardware; }
//----------------------------------------------------------------------------// void SoundDevices::filterDevicesMaxVer(int major, int minor) { int dMajor, dMinor; for (unsigned int i = 0; i < vDeviceInfo.size(); i++) { getDeviceVersion(i, &dMajor, &dMinor); if ((dMajor > major) || ((dMajor == major) && (dMinor > minor))) { vDeviceInfo[i].bSelected = false; } } }
bool isDeviceVersionHal2(int cameraId, status_t* status) { return getDeviceVersion(cameraId, status) >= CAMERA_DEVICE_API_VERSION_2_0; }