Added Device:: isAMD,isIntel,isNvidia methods.
This commit is contained in:
parent
7ecbf45751
commit
c1dad2178c
@ -161,6 +161,18 @@ public:
|
|||||||
size_t imageMaxBufferSize() const;
|
size_t imageMaxBufferSize() const;
|
||||||
size_t imageMaxArraySize() const;
|
size_t imageMaxArraySize() const;
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
UNKNOWN_VENDOR=0,
|
||||||
|
AMD=1,
|
||||||
|
INTEL=2,
|
||||||
|
NVIDIA=3
|
||||||
|
};
|
||||||
|
|
||||||
|
bool isAMD() const;
|
||||||
|
bool isIntel() const;
|
||||||
|
bool isNvidia() const;
|
||||||
|
|
||||||
int maxClockFrequency() const;
|
int maxClockFrequency() const;
|
||||||
int maxComputeUnits() const;
|
int maxComputeUnits() const;
|
||||||
int maxConstantArgs() const;
|
int maxConstantArgs() const;
|
||||||
|
@ -1712,6 +1712,17 @@ 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);
|
||||||
|
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;
|
||||||
|
else
|
||||||
|
vendor_ = UNKNOWN_VENDOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename _TpCL, typename _TpOut>
|
template<typename _TpCL, typename _TpOut>
|
||||||
@ -1754,6 +1765,8 @@ struct Device::Impl
|
|||||||
int deviceVersionMajor_;
|
int deviceVersionMajor_;
|
||||||
int deviceVersionMinor_;
|
int deviceVersionMinor_;
|
||||||
String driverVersion_;
|
String driverVersion_;
|
||||||
|
String vendorName;
|
||||||
|
int vendor_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -1814,7 +1827,7 @@ String Device::version() const
|
|||||||
{ return p ? p->version_ : String(); }
|
{ return p ? p->version_ : String(); }
|
||||||
|
|
||||||
String Device::vendor() const
|
String Device::vendor() const
|
||||||
{ return p ? p->getStrProp(CL_DEVICE_VENDOR) : String(); }
|
{ return p ? p->vendorName : String(); }
|
||||||
|
|
||||||
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(); }
|
||||||
@ -1925,6 +1938,21 @@ 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; }
|
||||||
|
|
||||||
|
@ -583,9 +583,7 @@ bool HaarEvaluator::read(const FileNode& node, Size _origWinSize)
|
|||||||
localSize = lbufSize = Size(0, 0);
|
localSize = lbufSize = Size(0, 0);
|
||||||
if (ocl::haveOpenCL())
|
if (ocl::haveOpenCL())
|
||||||
{
|
{
|
||||||
String vname = ocl::Device::getDefault().vendor();
|
if (ocl::Device::getDefault().isAMD())
|
||||||
if (vname == "Advanced Micro Devices, Inc." ||
|
|
||||||
vname == "AMD")
|
|
||||||
{
|
{
|
||||||
localSize = Size(8, 8);
|
localSize = Size(8, 8);
|
||||||
lbufSize = Size(origWinSize.width + localSize.width,
|
lbufSize = Size(origWinSize.width + localSize.width,
|
||||||
@ -769,9 +767,7 @@ bool LBPEvaluator::read( const FileNode& node, Size _origWinSize )
|
|||||||
if (ocl::haveOpenCL())
|
if (ocl::haveOpenCL())
|
||||||
{
|
{
|
||||||
const ocl::Device& device = ocl::Device::getDefault();
|
const ocl::Device& device = ocl::Device::getDefault();
|
||||||
String vname = device.vendor();
|
if (device.isAMD() && !device.hostUnifiedMemory())
|
||||||
if ((vname == "Advanced Micro Devices, Inc." ||
|
|
||||||
vname == "AMD") && !device.hostUnifiedMemory())
|
|
||||||
localSize = Size(8, 8);
|
localSize = Size(8, 8);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user