Commit 8660588f authored by Alexander Karsakov's avatar Alexander Karsakov

Pass vendor macro to opencl kernel

parent c1dad217
...@@ -87,7 +87,7 @@ public: ...@@ -87,7 +87,7 @@ public:
String name() const; String name() const;
String extensions() const; String extensions() const;
String version() const; String version() const;
String vendor() const; String vendorName() const;
String OpenCL_C_Version() const; String OpenCL_C_Version() const;
String OpenCLVersion() const; String OpenCLVersion() const;
int deviceVersionMajor() const; int deviceVersionMajor() const;
...@@ -164,14 +164,13 @@ public: ...@@ -164,14 +164,13 @@ public:
enum enum
{ {
UNKNOWN_VENDOR=0, UNKNOWN_VENDOR=0,
AMD=1, VENDOR_AMD=1,
INTEL=2, VENDOR_INTEL=2,
NVIDIA=3 VENDOR_NVIDIA=3
}; };
int vendorID() const;
bool isAMD() const; inline bool isAMD() const { return vendorID() == VENDOR_AMD; };
bool isIntel() const; inline bool isIntel() const { return vendorID() == VENDOR_INTEL; };
bool isNvidia() const;
int maxClockFrequency() const; int maxClockFrequency() const;
int maxComputeUnits() const; int maxComputeUnits() const;
......
...@@ -1713,16 +1713,16 @@ struct Device::Impl ...@@ -1713,16 +1713,16 @@ struct Device::Impl
String deviceVersion_ = getStrProp(CL_DEVICE_VERSION); String deviceVersion_ = getStrProp(CL_DEVICE_VERSION);
parseDeviceVersion(deviceVersion_, deviceVersionMajor_, deviceVersionMinor_); parseDeviceVersion(deviceVersion_, deviceVersionMajor_, deviceVersionMinor_);
vendorName = getStrProp(CL_DEVICE_VENDOR); vendorName_ = getStrProp(CL_DEVICE_VENDOR);
if (vendorName == "Advanced Micro Devices, Inc." || if (vendorName_ == "Advanced Micro Devices, Inc." ||
vendorName == "AMD") vendorName_ == "AMD")
vendor_ = AMD; vendorID_ = VENDOR_AMD;
else if (vendorName == "Intel(R) Corporation") else if (vendorName_ == "Intel(R) Corporation")
vendor_ = INTEL; vendorID_ = VENDOR_INTEL;
else if (vendorName == "NVIDIA Corporation") else if (vendorName_ == "NVIDIA Corporation")
vendor_ = NVIDIA; vendorID_ = VENDOR_NVIDIA;
else else
vendor_ = UNKNOWN_VENDOR; vendorID_ = UNKNOWN_VENDOR;
} }
template<typename _TpCL, typename _TpOut> template<typename _TpCL, typename _TpOut>
...@@ -1765,8 +1765,8 @@ struct Device::Impl ...@@ -1765,8 +1765,8 @@ struct Device::Impl
int deviceVersionMajor_; int deviceVersionMajor_;
int deviceVersionMinor_; int deviceVersionMinor_;
String driverVersion_; String driverVersion_;
String vendorName; String vendorName_;
int vendor_; int vendorID_;
}; };
...@@ -1826,8 +1826,11 @@ String Device::extensions() const ...@@ -1826,8 +1826,11 @@ String Device::extensions() const
String Device::version() const String Device::version() const
{ return p ? p->version_ : String(); } { return p ? p->version_ : String(); }
String Device::vendor() const String Device::vendorName() const
{ return p ? p->vendorName : String(); } { return p ? p->vendorName_ : String(); }
int Device::vendorID() const
{ return p ? p->vendorID_ : 0; }
String Device::OpenCL_C_Version() const String Device::OpenCL_C_Version() const
{ return p ? p->getStrProp(CL_DEVICE_OPENCL_C_VERSION) : String(); } { return p ? p->getStrProp(CL_DEVICE_OPENCL_C_VERSION) : String(); }
...@@ -1938,21 +1941,6 @@ size_t Device::imageMaxArraySize() const ...@@ -1938,21 +1941,6 @@ size_t Device::imageMaxArraySize() const
{ CV_REQUIRE_OPENCL_1_2_ERROR; } { CV_REQUIRE_OPENCL_1_2_ERROR; }
#endif #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 int Device::maxClockFrequency() const
{ return p ? p->getProp<cl_uint, int>(CL_DEVICE_MAX_CLOCK_FREQUENCY) : 0; } { return p ? p->getProp<cl_uint, int>(CL_DEVICE_MAX_CLOCK_FREQUENCY) : 0; }
...@@ -3037,6 +3025,12 @@ struct Program::Impl ...@@ -3037,6 +3025,12 @@ struct Program::Impl
for( i = 0; i < n; i++ ) for( i = 0; i < n; i++ )
deviceList[i] = ctx.device(i).ptr(); 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, retval = clBuildProgram(handle, n,
(const cl_device_id*)deviceList, (const cl_device_id*)deviceList,
buildflags.c_str(), 0, 0); buildflags.c_str(), 0, 0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment