String name() const;
String extensions() const;
String version() const;
- String vendor() const;
+ String vendorName() const;
String OpenCL_C_Version() const;
String OpenCLVersion() const;
int deviceVersionMajor() const;
enum
{
UNKNOWN_VENDOR=0,
- AMD=1,
- INTEL=2,
- NVIDIA=3
+ VENDOR_AMD=1,
+ VENDOR_INTEL=2,
+ VENDOR_NVIDIA=3
};
-
- bool isAMD() const;
- bool isIntel() const;
- bool isNvidia() const;
+ int vendorID() const;
+ inline bool isAMD() const { return vendorID() == VENDOR_AMD; };
+ inline bool isIntel() const { return vendorID() == VENDOR_INTEL; };
int maxClockFrequency() const;
int maxComputeUnits() const;
String deviceVersion_ = getStrProp(CL_DEVICE_VERSION);
parseDeviceVersion(deviceVersion_, deviceVersionMajor_, deviceVersionMinor_);
- vendorName = getStrProp(CL_DEVICE_VENDOR);
- if (vendorName == "Advanced Micro Devices, Inc." ||
- vendorName == "AMD")
- vendor_ = AMD;
- else if (vendorName == "Intel(R) Corporation")
- vendor_ = INTEL;
- else if (vendorName == "NVIDIA Corporation")
- vendor_ = NVIDIA;
+ vendorName_ = getStrProp(CL_DEVICE_VENDOR);
+ if (vendorName_ == "Advanced Micro Devices, Inc." ||
+ vendorName_ == "AMD")
+ vendorID_ = VENDOR_AMD;
+ else if (vendorName_ == "Intel(R) Corporation")
+ vendorID_ = VENDOR_INTEL;
+ else if (vendorName_ == "NVIDIA Corporation")
+ vendorID_ = VENDOR_NVIDIA;
else
- vendor_ = UNKNOWN_VENDOR;
+ vendorID_ = UNKNOWN_VENDOR;
}
template<typename _TpCL, typename _TpOut>
int deviceVersionMajor_;
int deviceVersionMinor_;
String driverVersion_;
- String vendorName;
- int vendor_;
+ String vendorName_;
+ int vendorID_;
};
String Device::version() const
{ return p ? p->version_ : String(); }
-String Device::vendor() const
-{ return p ? p->vendorName : String(); }
+String Device::vendorName() const
+{ return p ? p->vendorName_ : String(); }
+
+int Device::vendorID() const
+{ return p ? p->vendorID_ : 0; }
String Device::OpenCL_C_Version() const
{ return p ? p->getStrProp(CL_DEVICE_OPENCL_C_VERSION) : String(); }
{ CV_REQUIRE_OPENCL_1_2_ERROR; }
#endif
-bool Device::isAMD() const
-{
- return p->vendor_ == AMD;
-}
-
-bool Device::isIntel() const
-{
- return p->vendor_ == INTEL;
-}
-
-bool Device::isNvidia() const
-{
- return p->vendor_ == NVIDIA;
-}
-
int Device::maxClockFrequency() const
{ return p ? p->getProp<cl_uint, int>(CL_DEVICE_MAX_CLOCK_FREQUENCY) : 0; }
for( i = 0; i < n; i++ )
deviceList[i] = ctx.device(i).ptr();
+ Device device = Device::getDefault();
+ if (device.isAMD())
+ buildflags += " -D AMD_DEVICE";
+ else if (device.isIntel())
+ buildflags += " -D INTEL_DEVICE";
+
retval = clBuildProgram(handle, n,
(const cl_device_id*)deviceList,
buildflags.c_str(), 0, 0);